; LLVM IR from taichi-dev/taichi :: taichi/common (miniz)

; 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.tinfl_decompressor_tag = type { i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, [3 x i32], i64, i64, [3 x [1024 x i16]], [576 x i16], [64 x i16], [38 x i16], [288 x i8], [32 x i8], [19 x i8], [4 x i8], [457 x i8] }

@.str.12 = external hidden unnamed_addr constant [73 x i8], align 1
@tinfl_decompress.s_length_base = external hidden constant [31 x i16], align 16
@tinfl_decompress.s_length_extra = external hidden constant [31 x i8], align 16
@tinfl_decompress.s_dist_base = external hidden constant [32 x i16], align 16
@tinfl_decompress.s_dist_extra = external hidden constant [32 x i8], align 16
@tinfl_decompress.s_length_dezigzag = external hidden constant [19 x i8], align 16
@tinfl_decompress.s_min_table_sizes = external hidden constant [3 x i16], align 2
@.str.14 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [10 x i8], align 1
@__PRETTY_FUNCTION__.tinfl_decompress = external hidden unnamed_addr constant [131 x i8], align 1

; 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: nocallback nofree nounwind willreturn memory(argmem: write)
declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #1

; Function Attrs: nounwind uwtable
define dso_local i32 @tinfl_decompress(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %5, i32 noundef %6) #2 {
  %8 = alloca i32, align 4
  %9 = alloca ptr, align 8
  %10 = alloca ptr, align 8
  %11 = alloca ptr, align 8
  %12 = alloca ptr, align 8
  %13 = alloca ptr, align 8
  %14 = alloca ptr, align 8
  %15 = alloca i32, align 4
  %16 = alloca [3 x ptr], align 16
  %17 = alloca [3 x ptr], align 16
  %18 = alloca i32, align 4
  %19 = alloca i32, align 4
  %20 = alloca i32, align 4
  %21 = alloca i32, align 4
  %22 = alloca i32, align 4
  %23 = alloca i64, align 8
  %24 = alloca ptr, align 8
  %25 = alloca ptr, align 8
  %26 = alloca ptr, align 8
  %27 = alloca ptr, align 8
  %28 = alloca i64, align 8
  %29 = alloca i64, align 8
  %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 i64, align 8
  %36 = alloca ptr, align 8
  %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 ptr, align 8
  %44 = alloca ptr, align 8
  %45 = alloca ptr, align 8
  %46 = alloca i32, align 4
  %47 = alloca i32, align 4
  %48 = alloca i32, align 4
  %49 = alloca i32, align 4
  %50 = alloca i32, align 4
  %51 = alloca [17 x i32], align 16
  %52 = alloca [16 x i32], align 16
  %53 = alloca i32, align 4
  %54 = alloca i32, align 4
  %55 = alloca i32, align 4
  %56 = alloca i32, align 4
  %57 = alloca i16, align 2
  %58 = alloca i32, align 4
  %59 = alloca i32, align 4
  %60 = alloca i32, align 4
  %61 = alloca i32, align 4
  %62 = alloca i32, align 4
  %63 = alloca ptr, align 8
  %64 = alloca i32, align 4
  %65 = alloca i32, align 4
  %66 = alloca i32, align 4
  %67 = alloca i32, align 4
  %68 = alloca i32, align 4
  %69 = alloca i32, align 4
  %70 = alloca i32, align 4
  %71 = alloca i32, align 4
  %72 = alloca i32, align 4
  %73 = alloca i32, align 4
  %74 = alloca i32, align 4
  %75 = alloca i32, align 4
  %76 = alloca i32, align 4
  %77 = alloca i32, align 4
  %78 = alloca i32, align 4
  %79 = alloca ptr, align 8
  %80 = alloca i64, align 8
  %81 = alloca i32, align 4
  %82 = alloca i32, align 4
  %83 = alloca i32, align 4
  %84 = alloca i64, align 8
  store ptr %0, ptr %9, align 8, !tbaa !5
  store ptr %1, ptr %10, align 8, !tbaa !5
  store ptr %2, ptr %11, align 8, !tbaa !5
  store ptr %3, ptr %12, align 8, !tbaa !5
  store ptr %4, ptr %13, align 8, !tbaa !5
  store ptr %5, ptr %14, align 8, !tbaa !5
  store i32 %6, ptr %15, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 24, ptr %16) #5
  call void @llvm.lifetime.start.p0(i64 24, ptr %17) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #5
  store i32 -1, ptr %18, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #5
  %85 = load ptr, ptr %10, align 8, !tbaa !5
  store ptr %85, ptr %24, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #5
  %86 = load ptr, ptr %10, align 8, !tbaa !5
  %87 = load ptr, ptr %11, align 8, !tbaa !5
  %88 = load i64, ptr %87, align 8, !tbaa !11
  %89 = getelementptr inbounds i8, ptr %86, i64 %88
  store ptr %89, ptr %25, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #5
  %90 = load ptr, ptr %13, align 8, !tbaa !5
  store ptr %90, ptr %26, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #5
  %91 = load ptr, ptr %13, align 8, !tbaa !5
  %92 = icmp ne ptr %91, null
  br i1 %92, label %93, label %98

93:                                               ; preds = %7
  %94 = load ptr, ptr %13, align 8, !tbaa !5
  %95 = load ptr, ptr %14, align 8, !tbaa !5
  %96 = load i64, ptr %95, align 8, !tbaa !11
  %97 = getelementptr inbounds i8, ptr %94, i64 %96
  br label %99

98:                                               ; preds = %7
  br label %99

99:                                               ; preds = %98, %93
  %100 = phi ptr [ %97, %93 ], [ null, %98 ]
  store ptr %100, ptr %27, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #5
  %101 = load i32, ptr %15, align 4, !tbaa !9
  %102 = and i32 %101, 4
  %103 = icmp ne i32 %102, 0
  br i1 %103, label %104, label %105

104:                                              ; preds = %99
  br label %115

105:                                              ; preds = %99
  %106 = load ptr, ptr %13, align 8, !tbaa !5
  %107 = load ptr, ptr %12, align 8, !tbaa !5
  %108 = ptrtoint ptr %106 to i64
  %109 = ptrtoint ptr %107 to i64
  %110 = sub i64 %108, %109
  %111 = load ptr, ptr %14, align 8, !tbaa !5
  %112 = load i64, ptr %111, align 8, !tbaa !11
  %113 = add i64 %110, %112
  %114 = sub i64 %113, 1
  br label %115

115:                                              ; preds = %105, %104
  %116 = phi i64 [ -1, %104 ], [ %114, %105 ]
  store i64 %116, ptr %28, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #5
  %117 = load i64, ptr %28, align 8, !tbaa !11
  %118 = add i64 %117, 1
  %119 = load i64, ptr %28, align 8, !tbaa !11
  %120 = and i64 %118, %119
  %121 = icmp ne i64 %120, 0
  br i1 %121, label %126, label %122

122:                                              ; preds = %115
  %123 = load ptr, ptr %13, align 8, !tbaa !5
  %124 = load ptr, ptr %12, align 8, !tbaa !5
  %125 = icmp ult ptr %123, %124
  br i1 %125, label %126, label %129

126:                                              ; preds = %122, %115
  %127 = load ptr, ptr %14, align 8, !tbaa !5
  store i64 0, ptr %127, align 8, !tbaa !11
  %128 = load ptr, ptr %11, align 8, !tbaa !5
  store i64 0, ptr %128, align 8, !tbaa !11
  store i32 -3, ptr %8, align 4
  store i32 1, ptr %30, align 4
  br label %2913

129:                                              ; preds = %122
  %130 = load ptr, ptr %9, align 8, !tbaa !5
  %131 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %130, i32 0, i32 15
  %132 = getelementptr inbounds [576 x i16], ptr %131, i64 0, i64 0
  %133 = getelementptr inbounds [3 x ptr], ptr %16, i64 0, i64 0
  store ptr %132, ptr %133, align 16, !tbaa !5
  %134 = load ptr, ptr %9, align 8, !tbaa !5
  %135 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %134, i32 0, i32 16
  %136 = getelementptr inbounds [64 x i16], ptr %135, i64 0, i64 0
  %137 = getelementptr inbounds [3 x ptr], ptr %16, i64 0, i64 1
  store ptr %136, ptr %137, align 8, !tbaa !5
  %138 = load ptr, ptr %9, align 8, !tbaa !5
  %139 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %138, i32 0, i32 17
  %140 = getelementptr inbounds [38 x i16], ptr %139, i64 0, i64 0
  %141 = getelementptr inbounds [3 x ptr], ptr %16, i64 0, i64 2
  store ptr %140, ptr %141, align 16, !tbaa !5
  %142 = load ptr, ptr %9, align 8, !tbaa !5
  %143 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %142, i32 0, i32 18
  %144 = getelementptr inbounds [288 x i8], ptr %143, i64 0, i64 0
  %145 = getelementptr inbounds [3 x ptr], ptr %17, i64 0, i64 0
  store ptr %144, ptr %145, align 16, !tbaa !5
  %146 = load ptr, ptr %9, align 8, !tbaa !5
  %147 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %146, i32 0, i32 19
  %148 = getelementptr inbounds [32 x i8], ptr %147, i64 0, i64 0
  %149 = getelementptr inbounds [3 x ptr], ptr %17, i64 0, i64 1
  store ptr %148, ptr %149, align 8, !tbaa !5
  %150 = load ptr, ptr %9, align 8, !tbaa !5
  %151 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %150, i32 0, i32 20
  %152 = getelementptr inbounds [19 x i8], ptr %151, i64 0, i64 0
  %153 = getelementptr inbounds [3 x ptr], ptr %17, i64 0, i64 2
  store ptr %152, ptr %153, align 16, !tbaa !5
  %154 = load ptr, ptr %9, align 8, !tbaa !5
  %155 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %154, i32 0, i32 1
  %156 = load i32, ptr %155, align 4, !tbaa !13
  store i32 %156, ptr %19, align 4, !tbaa !9
  %157 = load ptr, ptr %9, align 8, !tbaa !5
  %158 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %157, i32 0, i32 12
  %159 = load i64, ptr %158, align 8, !tbaa !15
  store i64 %159, ptr %23, align 8, !tbaa !11
  %160 = load ptr, ptr %9, align 8, !tbaa !5
  %161 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %160, i32 0, i32 8
  %162 = load i32, ptr %161, align 8, !tbaa !16
  store i32 %162, ptr %20, align 4, !tbaa !9
  %163 = load ptr, ptr %9, align 8, !tbaa !5
  %164 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %163, i32 0, i32 9
  %165 = load i32, ptr %164, align 4, !tbaa !17
  store i32 %165, ptr %21, align 4, !tbaa !9
  %166 = load ptr, ptr %9, align 8, !tbaa !5
  %167 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %166, i32 0, i32 10
  %168 = load i32, ptr %167, align 8, !tbaa !18
  store i32 %168, ptr %22, align 4, !tbaa !9
  %169 = load ptr, ptr %9, align 8, !tbaa !5
  %170 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %169, i32 0, i32 13
  %171 = load i64, ptr %170, align 8, !tbaa !19
  store i64 %171, ptr %29, align 8, !tbaa !11
  %172 = load ptr, ptr %9, align 8, !tbaa !5
  %173 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %172, i32 0, i32 0
  %174 = load i32, ptr %173, align 8, !tbaa !20
  switch i32 %174, label %2694 [
    i32 0, label %175
    i32 1, label %202
    i32 2, label %228
    i32 36, label %301
    i32 3, label %328
    i32 5, label %395
    i32 6, label %458
    i32 7, label %511
    i32 39, label %562
    i32 51, label %596
    i32 52, label %637
    i32 9, label %660
    i32 38, label %677
    i32 10, label %765
    i32 11, label %857
    i32 14, label %965
    i32 35, label %1108
    i32 16, label %1368
    i32 17, label %1485
    i32 18, label %1517
    i32 21, label %1610
    i32 23, label %1751
    i32 24, label %1857
    i32 25, label %2053
    i32 26, label %2182
    i32 27, label %2309
    i32 37, label %2379
    i32 53, label %2421
    i32 32, label %2519
    i32 41, label %2612
    i32 42, label %2660
    i32 34, label %2689
  ]

175:                                              ; preds = %129
  %176 = load ptr, ptr %9, align 8, !tbaa !5
  %177 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %176, i32 0, i32 3
  store i32 0, ptr %177, align 4, !tbaa !21
  %178 = load ptr, ptr %9, align 8, !tbaa !5
  %179 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %178, i32 0, i32 2
  store i32 0, ptr %179, align 8, !tbaa !22
  store i32 0, ptr %22, align 4, !tbaa !9
  store i32 0, ptr %21, align 4, !tbaa !9
  store i32 0, ptr %20, align 4, !tbaa !9
  store i32 0, ptr %19, align 4, !tbaa !9
  store i64 0, ptr %23, align 8, !tbaa !11
  %180 = load ptr, ptr %9, align 8, !tbaa !5
  %181 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %180, i32 0, i32 7
  store i32 1, ptr %181, align 4, !tbaa !23
  %182 = load ptr, ptr %9, align 8, !tbaa !5
  %183 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %182, i32 0, i32 4
  store i32 1, ptr %183, align 8, !tbaa !24
  %184 = load i32, ptr %15, align 4, !tbaa !9
  %185 = and i32 %184, 1
  %186 = icmp ne i32 %185, 0
  br i1 %186, label %187, label %307

187:                                              ; preds = %175
  br label %188

188:                                              ; preds = %187
  br label %189

189:                                              ; preds = %204, %188
  %190 = load ptr, ptr %24, align 8, !tbaa !5
  %191 = load ptr, ptr %25, align 8, !tbaa !5
  %192 = icmp uge ptr %190, %191
  br i1 %192, label %193, label %205

193:                                              ; preds = %189
  br label %194

194:                                              ; preds = %193
  %195 = load i32, ptr %15, align 4, !tbaa !9
  %196 = and i32 %195, 2
  %197 = icmp ne i32 %196, 0
  %198 = zext i1 %197 to i64
  %199 = select i1 %197, i32 1, i32 -4
  store i32 %199, ptr %18, align 4, !tbaa !9
  %200 = load ptr, ptr %9, align 8, !tbaa !5
  %201 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %200, i32 0, i32 0
  store i32 1, ptr %201, align 8, !tbaa !20
  br label %2695

202:                                              ; preds = %129
  br label %203

203:                                              ; preds = %202
  br label %204

204:                                              ; preds = %203
  br label %189, !llvm.loop !25

205:                                              ; preds = %189
  %206 = load ptr, ptr %24, align 8, !tbaa !5
  %207 = getelementptr inbounds i8, ptr %206, i32 1
  store ptr %207, ptr %24, align 8, !tbaa !5
  %208 = load i8, ptr %206, align 1, !tbaa !27
  %209 = zext i8 %208 to i32
  %210 = load ptr, ptr %9, align 8, !tbaa !5
  %211 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %210, i32 0, i32 2
  store i32 %209, ptr %211, align 8, !tbaa !22
  br label %212

212:                                              ; preds = %205
  br label %213

213:                                              ; preds = %212
  br label %214

214:                                              ; preds = %213
  br label %215

215:                                              ; preds = %230, %214
  %216 = load ptr, ptr %24, align 8, !tbaa !5
  %217 = load ptr, ptr %25, align 8, !tbaa !5
  %218 = icmp uge ptr %216, %217
  br i1 %218, label %219, label %231

219:                                              ; preds = %215
  br label %220

220:                                              ; preds = %219
  %221 = load i32, ptr %15, align 4, !tbaa !9
  %222 = and i32 %221, 2
  %223 = icmp ne i32 %222, 0
  %224 = zext i1 %223 to i64
  %225 = select i1 %223, i32 1, i32 -4
  store i32 %225, ptr %18, align 4, !tbaa !9
  %226 = load ptr, ptr %9, align 8, !tbaa !5
  %227 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %226, i32 0, i32 0
  store i32 2, ptr %227, align 8, !tbaa !20
  br label %2695

228:                                              ; preds = %129
  br label %229

229:                                              ; preds = %228
  br label %230

230:                                              ; preds = %229
  br label %215, !llvm.loop !28

231:                                              ; preds = %215
  %232 = load ptr, ptr %24, align 8, !tbaa !5
  %233 = getelementptr inbounds i8, ptr %232, i32 1
  store ptr %233, ptr %24, align 8, !tbaa !5
  %234 = load i8, ptr %232, align 1, !tbaa !27
  %235 = zext i8 %234 to i32
  %236 = load ptr, ptr %9, align 8, !tbaa !5
  %237 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %236, i32 0, i32 3
  store i32 %235, ptr %237, align 4, !tbaa !21
  br label %238

238:                                              ; preds = %231
  br label %239

239:                                              ; preds = %238
  %240 = load ptr, ptr %9, align 8, !tbaa !5
  %241 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %240, i32 0, i32 2
  %242 = load i32, ptr %241, align 8, !tbaa !22
  %243 = mul i32 %242, 256
  %244 = load ptr, ptr %9, align 8, !tbaa !5
  %245 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %244, i32 0, i32 3
  %246 = load i32, ptr %245, align 4, !tbaa !21
  %247 = add i32 %243, %246
  %248 = urem i32 %247, 31
  %249 = icmp ne i32 %248, 0
  br i1 %249, label %262, label %250

250:                                              ; preds = %239
  %251 = load ptr, ptr %9, align 8, !tbaa !5
  %252 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %251, i32 0, i32 3
  %253 = load i32, ptr %252, align 4, !tbaa !21
  %254 = and i32 %253, 32
  %255 = icmp ne i32 %254, 0
  br i1 %255, label %262, label %256

256:                                              ; preds = %250
  %257 = load ptr, ptr %9, align 8, !tbaa !5
  %258 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %257, i32 0, i32 2
  %259 = load i32, ptr %258, align 8, !tbaa !22
  %260 = and i32 %259, 15
  %261 = icmp ne i32 %260, 8
  br label %262

262:                                              ; preds = %256, %250, %239
  %263 = phi i1 [ true, %250 ], [ true, %239 ], [ %261, %256 ]
  %264 = zext i1 %263 to i32
  store i32 %264, ptr %21, align 4, !tbaa !9
  %265 = load i32, ptr %15, align 4, !tbaa !9
  %266 = and i32 %265, 4
  %267 = icmp ne i32 %266, 0
  br i1 %267, label %292, label %268

268:                                              ; preds = %262
  %269 = load ptr, ptr %9, align 8, !tbaa !5
  %270 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %269, i32 0, i32 2
  %271 = load i32, ptr %270, align 8, !tbaa !22
  %272 = lshr i32 %271, 4
  %273 = add i32 8, %272
  %274 = shl i32 1, %273
  %275 = icmp ugt i32 %274, 32768
  br i1 %275, label %287, label %276

276:                                              ; preds = %268
  %277 = load i64, ptr %28, align 8, !tbaa !11
  %278 = add i64 %277, 1
  %279 = load ptr, ptr %9, align 8, !tbaa !5
  %280 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %279, i32 0, i32 2
  %281 = load i32, ptr %280, align 8, !tbaa !22
  %282 = lshr i32 %281, 4
  %283 = add i32 8, %282
  %284 = zext i32 %283 to i64
  %285 = shl i64 1, %284
  %286 = icmp ult i64 %278, %285
  br label %287

287:                                              ; preds = %276, %268
  %288 = phi i1 [ true, %268 ], [ %286, %276 ]
  %289 = zext i1 %288 to i32
  %290 = load i32, ptr %21, align 4, !tbaa !9
  %291 = or i32 %290, %289
  store i32 %291, ptr %21, align 4, !tbaa !9
  br label %292

292:                                              ; preds = %287, %262
  %293 = load i32, ptr %21, align 4, !tbaa !9
  %294 = icmp ne i32 %293, 0
  br i1 %294, label %295, label %306

295:                                              ; preds = %292
  br label %296

296:                                              ; preds = %295
  br label %297

297:                                              ; preds = %303, %296
  br label %298

298:                                              ; preds = %297
  store i32 -1, ptr %18, align 4, !tbaa !9
  %299 = load ptr, ptr %9, align 8, !tbaa !5
  %300 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %299, i32 0, i32 0
  store i32 36, ptr %300, align 8, !tbaa !20
  br label %2695

301:                                              ; preds = %129
  br label %302

302:                                              ; preds = %301
  br label %303

303:                                              ; preds = %302
  br label %297

304:                                              ; No predecessors!
  br label %305

305:                                              ; preds = %304
  br label %306

306:                                              ; preds = %305, %292
  br label %307

307:                                              ; preds = %306, %175
  br label %308

308:                                              ; preds = %2490, %307
  br label %309

309:                                              ; preds = %308
  %310 = load i32, ptr %19, align 4, !tbaa !9
  %311 = icmp ult i32 %310, 3
  br i1 %311, label %312, label %351

312:                                              ; preds = %309
  br label %313

313:                                              ; preds = %347, %312
  br label %314

314:                                              ; preds = %313
  br label %315

315:                                              ; preds = %330, %314
  %316 = load ptr, ptr %24, align 8, !tbaa !5
  %317 = load ptr, ptr %25, align 8, !tbaa !5
  %318 = icmp uge ptr %316, %317
  br i1 %318, label %319, label %331

319:                                              ; preds = %315
  br label %320

320:                                              ; preds = %319
  %321 = load i32, ptr %15, align 4, !tbaa !9
  %322 = and i32 %321, 2
  %323 = icmp ne i32 %322, 0
  %324 = zext i1 %323 to i64
  %325 = select i1 %323, i32 1, i32 -4
  store i32 %325, ptr %18, align 4, !tbaa !9
  %326 = load ptr, ptr %9, align 8, !tbaa !5
  %327 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %326, i32 0, i32 0
  store i32 3, ptr %327, align 8, !tbaa !20
  br label %2695

328:                                              ; preds = %129
  br label %329

329:                                              ; preds = %328
  br label %330

330:                                              ; preds = %329
  br label %315, !llvm.loop !29

331:                                              ; preds = %315
  %332 = load ptr, ptr %24, align 8, !tbaa !5
  %333 = getelementptr inbounds i8, ptr %332, i32 1
  store ptr %333, ptr %24, align 8, !tbaa !5
  %334 = load i8, ptr %332, align 1, !tbaa !27
  %335 = zext i8 %334 to i32
  store i32 %335, ptr %31, align 4, !tbaa !9
  br label %336

336:                                              ; preds = %331
  br label %337

337:                                              ; preds = %336
  %338 = load i32, ptr %31, align 4, !tbaa !9
  %339 = zext i32 %338 to i64
  %340 = load i32, ptr %19, align 4, !tbaa !9
  %341 = zext i32 %340 to i64
  %342 = shl i64 %339, %341
  %343 = load i64, ptr %23, align 8, !tbaa !11
  %344 = or i64 %343, %342
  store i64 %344, ptr %23, align 8, !tbaa !11
  %345 = load i32, ptr %19, align 4, !tbaa !9
  %346 = add i32 %345, 8
  store i32 %346, ptr %19, align 4, !tbaa !9
  br label %347

347:                                              ; preds = %337
  %348 = load i32, ptr %19, align 4, !tbaa !9
  %349 = icmp ult i32 %348, 3
  br i1 %349, label %313, label %350, !llvm.loop !30

350:                                              ; preds = %347
  br label %351

351:                                              ; preds = %350, %309
  %352 = load i64, ptr %23, align 8, !tbaa !11
  %353 = and i64 %352, 7
  %354 = trunc i64 %353 to i32
  %355 = load ptr, ptr %9, align 8, !tbaa !5
  %356 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %355, i32 0, i32 5
  store i32 %354, ptr %356, align 4, !tbaa !31
  %357 = load i64, ptr %23, align 8, !tbaa !11
  %358 = lshr i64 %357, 3
  store i64 %358, ptr %23, align 8, !tbaa !11
  %359 = load i32, ptr %19, align 4, !tbaa !9
  %360 = sub i32 %359, 3
  store i32 %360, ptr %19, align 4, !tbaa !9
  br label %361

361:                                              ; preds = %351
  br label %362

362:                                              ; preds = %361
  %363 = load ptr, ptr %9, align 8, !tbaa !5
  %364 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %363, i32 0, i32 5
  %365 = load i32, ptr %364, align 4, !tbaa !31
  %366 = lshr i32 %365, 1
  %367 = load ptr, ptr %9, align 8, !tbaa !5
  %368 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %367, i32 0, i32 6
  store i32 %366, ptr %368, align 8, !tbaa !32
  %369 = load ptr, ptr %9, align 8, !tbaa !5
  %370 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %369, i32 0, i32 6
  %371 = load i32, ptr %370, align 8, !tbaa !32
  %372 = icmp eq i32 %371, 0
  br i1 %372, label %373, label %754

373:                                              ; preds = %362
  br label %374

374:                                              ; preds = %373
  %375 = load i32, ptr %19, align 4, !tbaa !9
  %376 = load i32, ptr %19, align 4, !tbaa !9
  %377 = and i32 %376, 7
  %378 = icmp ult i32 %375, %377
  br i1 %378, label %379, label %420

379:                                              ; preds = %374
  br label %380

380:                                              ; preds = %414, %379
  br label %381

381:                                              ; preds = %380
  br label %382

382:                                              ; preds = %397, %381
  %383 = load ptr, ptr %24, align 8, !tbaa !5
  %384 = load ptr, ptr %25, align 8, !tbaa !5
  %385 = icmp uge ptr %383, %384
  br i1 %385, label %386, label %398

386:                                              ; preds = %382
  br label %387

387:                                              ; preds = %386
  %388 = load i32, ptr %15, align 4, !tbaa !9
  %389 = and i32 %388, 2
  %390 = icmp ne i32 %389, 0
  %391 = zext i1 %390 to i64
  %392 = select i1 %390, i32 1, i32 -4
  store i32 %392, ptr %18, align 4, !tbaa !9
  %393 = load ptr, ptr %9, align 8, !tbaa !5
  %394 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %393, i32 0, i32 0
  store i32 5, ptr %394, align 8, !tbaa !20
  br label %2695

395:                                              ; preds = %129
  br label %396

396:                                              ; preds = %395
  br label %397

397:                                              ; preds = %396
  br label %382, !llvm.loop !33

398:                                              ; preds = %382
  %399 = load ptr, ptr %24, align 8, !tbaa !5
  %400 = getelementptr inbounds i8, ptr %399, i32 1
  store ptr %400, ptr %24, align 8, !tbaa !5
  %401 = load i8, ptr %399, align 1, !tbaa !27
  %402 = zext i8 %401 to i32
  store i32 %402, ptr %32, align 4, !tbaa !9
  br label %403

403:                                              ; preds = %398
  br label %404

404:                                              ; preds = %403
  %405 = load i32, ptr %32, align 4, !tbaa !9
  %406 = zext i32 %405 to i64
  %407 = load i32, ptr %19, align 4, !tbaa !9
  %408 = zext i32 %407 to i64
  %409 = shl i64 %406, %408
  %410 = load i64, ptr %23, align 8, !tbaa !11
  %411 = or i64 %410, %409
  store i64 %411, ptr %23, align 8, !tbaa !11
  %412 = load i32, ptr %19, align 4, !tbaa !9
  %413 = add i32 %412, 8
  store i32 %413, ptr %19, align 4, !tbaa !9
  br label %414

414:                                              ; preds = %404
  %415 = load i32, ptr %19, align 4, !tbaa !9
  %416 = load i32, ptr %19, align 4, !tbaa !9
  %417 = and i32 %416, 7
  %418 = icmp ult i32 %415, %417
  br i1 %418, label %380, label %419, !llvm.loop !34

419:                                              ; preds = %414
  br label %420

420:                                              ; preds = %419, %374
  %421 = load i32, ptr %19, align 4, !tbaa !9
  %422 = and i32 %421, 7
  %423 = load i64, ptr %23, align 8, !tbaa !11
  %424 = zext i32 %422 to i64
  %425 = lshr i64 %423, %424
  store i64 %425, ptr %23, align 8, !tbaa !11
  %426 = load i32, ptr %19, align 4, !tbaa !9
  %427 = and i32 %426, 7
  %428 = load i32, ptr %19, align 4, !tbaa !9
  %429 = sub i32 %428, %427
  store i32 %429, ptr %19, align 4, !tbaa !9
  br label %430

430:                                              ; preds = %420
  br label %431

431:                                              ; preds = %430
  store i32 0, ptr %21, align 4, !tbaa !9
  br label %432

432:                                              ; preds = %526, %431
  %433 = load i32, ptr %21, align 4, !tbaa !9
  %434 = icmp ult i32 %433, 4
  br i1 %434, label %435, label %529

435:                                              ; preds = %432
  %436 = load i32, ptr %19, align 4, !tbaa !9
  %437 = icmp ne i32 %436, 0
  br i1 %437, label %438, label %496

438:                                              ; preds = %435
  br label %439

439:                                              ; preds = %438
  %440 = load i32, ptr %19, align 4, !tbaa !9
  %441 = icmp ult i32 %440, 8
  br i1 %441, label %442, label %481

442:                                              ; preds = %439
  br label %443

443:                                              ; preds = %477, %442
  br label %444

444:                                              ; preds = %443
  br label %445

445:                                              ; preds = %460, %444
  %446 = load ptr, ptr %24, align 8, !tbaa !5
  %447 = load ptr, ptr %25, align 8, !tbaa !5
  %448 = icmp uge ptr %446, %447
  br i1 %448, label %449, label %461

449:                                              ; preds = %445
  br label %450

450:                                              ; preds = %449
  %451 = load i32, ptr %15, align 4, !tbaa !9
  %452 = and i32 %451, 2
  %453 = icmp ne i32 %452, 0
  %454 = zext i1 %453 to i64
  %455 = select i1 %453, i32 1, i32 -4
  store i32 %455, ptr %18, align 4, !tbaa !9
  %456 = load ptr, ptr %9, align 8, !tbaa !5
  %457 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %456, i32 0, i32 0
  store i32 6, ptr %457, align 8, !tbaa !20
  br label %2695

458:                                              ; preds = %129
  br label %459

459:                                              ; preds = %458
  br label %460

460:                                              ; preds = %459
  br label %445, !llvm.loop !35

461:                                              ; preds = %445
  %462 = load ptr, ptr %24, align 8, !tbaa !5
  %463 = getelementptr inbounds i8, ptr %462, i32 1
  store ptr %463, ptr %24, align 8, !tbaa !5
  %464 = load i8, ptr %462, align 1, !tbaa !27
  %465 = zext i8 %464 to i32
  store i32 %465, ptr %33, align 4, !tbaa !9
  br label %466

466:                                              ; preds = %461
  br label %467

467:                                              ; preds = %466
  %468 = load i32, ptr %33, align 4, !tbaa !9
  %469 = zext i32 %468 to i64
  %470 = load i32, ptr %19, align 4, !tbaa !9
  %471 = zext i32 %470 to i64
  %472 = shl i64 %469, %471
  %473 = load i64, ptr %23, align 8, !tbaa !11
  %474 = or i64 %473, %472
  store i64 %474, ptr %23, align 8, !tbaa !11
  %475 = load i32, ptr %19, align 4, !tbaa !9
  %476 = add i32 %475, 8
  store i32 %476, ptr %19, align 4, !tbaa !9
  br label %477

477:                                              ; preds = %467
  %478 = load i32, ptr %19, align 4, !tbaa !9
  %479 = icmp ult i32 %478, 8
  br i1 %479, label %443, label %480, !llvm.loop !36

480:                                              ; preds = %477
  br label %481

481:                                              ; preds = %480, %439
  %482 = load i64, ptr %23, align 8, !tbaa !11
  %483 = and i64 %482, 255
  %484 = trunc i64 %483 to i8
  %485 = load ptr, ptr %9, align 8, !tbaa !5
  %486 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %485, i32 0, i32 21
  %487 = load i32, ptr %21, align 4, !tbaa !9
  %488 = zext i32 %487 to i64
  %489 = getelementptr inbounds [4 x i8], ptr %486, i64 0, i64 %488
  store i8 %484, ptr %489, align 1, !tbaa !27
  %490 = load i64, ptr %23, align 8, !tbaa !11
  %491 = lshr i64 %490, 8
  store i64 %491, ptr %23, align 8, !tbaa !11
  %492 = load i32, ptr %19, align 4, !tbaa !9
  %493 = sub i32 %492, 8
  store i32 %493, ptr %19, align 4, !tbaa !9
  br label %494

494:                                              ; preds = %481
  br label %495

495:                                              ; preds = %494
  br label %525

496:                                              ; preds = %435
  br label %497

497:                                              ; preds = %496
  br label %498

498:                                              ; preds = %513, %497
  %499 = load ptr, ptr %24, align 8, !tbaa !5
  %500 = load ptr, ptr %25, align 8, !tbaa !5
  %501 = icmp uge ptr %499, %500
  br i1 %501, label %502, label %514

502:                                              ; preds = %498
  br label %503

503:                                              ; preds = %502
  %504 = load i32, ptr %15, align 4, !tbaa !9
  %505 = and i32 %504, 2
  %506 = icmp ne i32 %505, 0
  %507 = zext i1 %506 to i64
  %508 = select i1 %506, i32 1, i32 -4
  store i32 %508, ptr %18, align 4, !tbaa !9
  %509 = load ptr, ptr %9, align 8, !tbaa !5
  %510 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %509, i32 0, i32 0
  store i32 7, ptr %510, align 8, !tbaa !20
  br label %2695

511:                                              ; preds = %129
  br label %512

512:                                              ; preds = %511
  br label %513

513:                                              ; preds = %512
  br label %498, !llvm.loop !37

514:                                              ; preds = %498
  %515 = load ptr, ptr %24, align 8, !tbaa !5
  %516 = getelementptr inbounds i8, ptr %515, i32 1
  store ptr %516, ptr %24, align 8, !tbaa !5
  %517 = load i8, ptr %515, align 1, !tbaa !27
  %518 = load ptr, ptr %9, align 8, !tbaa !5
  %519 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %518, i32 0, i32 21
  %520 = load i32, ptr %21, align 4, !tbaa !9
  %521 = zext i32 %520 to i64
  %522 = getelementptr inbounds [4 x i8], ptr %519, i64 0, i64 %521
  store i8 %517, ptr %522, align 1, !tbaa !27
  br label %523

523:                                              ; preds = %514
  br label %524

524:                                              ; preds = %523
  br label %525

525:                                              ; preds = %524, %495
  br label %526

526:                                              ; preds = %525
  %527 = load i32, ptr %21, align 4, !tbaa !9
  %528 = add i32 %527, 1
  store i32 %528, ptr %21, align 4, !tbaa !9
  br label %432, !llvm.loop !38

529:                                              ; preds = %432
  %530 = load ptr, ptr %9, align 8, !tbaa !5
  %531 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %530, i32 0, i32 21
  %532 = getelementptr inbounds [4 x i8], ptr %531, i64 0, i64 0
  %533 = load i8, ptr %532, align 1, !tbaa !27
  %534 = zext i8 %533 to i32
  %535 = load ptr, ptr %9, align 8, !tbaa !5
  %536 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %535, i32 0, i32 21
  %537 = getelementptr inbounds [4 x i8], ptr %536, i64 0, i64 1
  %538 = load i8, ptr %537, align 1, !tbaa !27
  %539 = zext i8 %538 to i32
  %540 = shl i32 %539, 8
  %541 = or i32 %534, %540
  store i32 %541, ptr %21, align 4, !tbaa !9
  %542 = load ptr, ptr %9, align 8, !tbaa !5
  %543 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %542, i32 0, i32 21
  %544 = getelementptr inbounds [4 x i8], ptr %543, i64 0, i64 2
  %545 = load i8, ptr %544, align 1, !tbaa !27
  %546 = zext i8 %545 to i32
  %547 = load ptr, ptr %9, align 8, !tbaa !5
  %548 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %547, i32 0, i32 21
  %549 = getelementptr inbounds [4 x i8], ptr %548, i64 0, i64 3
  %550 = load i8, ptr %549, align 1, !tbaa !27
  %551 = zext i8 %550 to i32
  %552 = shl i32 %551, 8
  %553 = or i32 %546, %552
  %554 = xor i32 65535, %553
  %555 = icmp ne i32 %541, %554
  br i1 %555, label %556, label %567

556:                                              ; preds = %529
  br label %557

557:                                              ; preds = %556
  br label %558

558:                                              ; preds = %564, %557
  br label %559

559:                                              ; preds = %558
  store i32 -1, ptr %18, align 4, !tbaa !9
  %560 = load ptr, ptr %9, align 8, !tbaa !5
  %561 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %560, i32 0, i32 0
  store i32 39, ptr %561, align 8, !tbaa !20
  br label %2695

562:                                              ; preds = %129
  br label %563

563:                                              ; preds = %562
  br label %564

564:                                              ; preds = %563
  br label %558

565:                                              ; No predecessors!
  br label %566

566:                                              ; preds = %565
  br label %567

567:                                              ; preds = %566, %529
  br label %568

568:                                              ; preds = %640, %567
  %569 = load i32, ptr %21, align 4, !tbaa !9
  %570 = icmp ne i32 %569, 0
  br i1 %570, label %571, label %574

571:                                              ; preds = %568
  %572 = load i32, ptr %19, align 4, !tbaa !9
  %573 = icmp ne i32 %572, 0
  br label %574

574:                                              ; preds = %571, %568
  %575 = phi i1 [ false, %568 ], [ %573, %571 ]
  br i1 %575, label %576, label %647

576:                                              ; preds = %574
  br label %577

577:                                              ; preds = %576
  %578 = load i32, ptr %19, align 4, !tbaa !9
  %579 = icmp ult i32 %578, 8
  br i1 %579, label %580, label %619

580:                                              ; preds = %577
  br label %581

581:                                              ; preds = %615, %580
  br label %582

582:                                              ; preds = %581
  br label %583

583:                                              ; preds = %598, %582
  %584 = load ptr, ptr %24, align 8, !tbaa !5
  %585 = load ptr, ptr %25, align 8, !tbaa !5
  %586 = icmp uge ptr %584, %585
  br i1 %586, label %587, label %599

587:                                              ; preds = %583
  br label %588

588:                                              ; preds = %587
  %589 = load i32, ptr %15, align 4, !tbaa !9
  %590 = and i32 %589, 2
  %591 = icmp ne i32 %590, 0
  %592 = zext i1 %591 to i64
  %593 = select i1 %591, i32 1, i32 -4
  store i32 %593, ptr %18, align 4, !tbaa !9
  %594 = load ptr, ptr %9, align 8, !tbaa !5
  %595 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %594, i32 0, i32 0
  store i32 51, ptr %595, align 8, !tbaa !20
  br label %2695

596:                                              ; preds = %129
  br label %597

597:                                              ; preds = %596
  br label %598

598:                                              ; preds = %597
  br label %583, !llvm.loop !39

599:                                              ; preds = %583
  %600 = load ptr, ptr %24, align 8, !tbaa !5
  %601 = getelementptr inbounds i8, ptr %600, i32 1
  store ptr %601, ptr %24, align 8, !tbaa !5
  %602 = load i8, ptr %600, align 1, !tbaa !27
  %603 = zext i8 %602 to i32
  store i32 %603, ptr %34, align 4, !tbaa !9
  br label %604

604:                                              ; preds = %599
  br label %605

605:                                              ; preds = %604
  %606 = load i32, ptr %34, align 4, !tbaa !9
  %607 = zext i32 %606 to i64
  %608 = load i32, ptr %19, align 4, !tbaa !9
  %609 = zext i32 %608 to i64
  %610 = shl i64 %607, %609
  %611 = load i64, ptr %23, align 8, !tbaa !11
  %612 = or i64 %611, %610
  store i64 %612, ptr %23, align 8, !tbaa !11
  %613 = load i32, ptr %19, align 4, !tbaa !9
  %614 = add i32 %613, 8
  store i32 %614, ptr %19, align 4, !tbaa !9
  br label %615

615:                                              ; preds = %605
  %616 = load i32, ptr %19, align 4, !tbaa !9
  %617 = icmp ult i32 %616, 8
  br i1 %617, label %581, label %618, !llvm.loop !40

618:                                              ; preds = %615
  br label %619

619:                                              ; preds = %618, %577
  %620 = load i64, ptr %23, align 8, !tbaa !11
  %621 = and i64 %620, 255
  %622 = trunc i64 %621 to i32
  store i32 %622, ptr %20, align 4, !tbaa !9
  %623 = load i64, ptr %23, align 8, !tbaa !11
  %624 = lshr i64 %623, 8
  store i64 %624, ptr %23, align 8, !tbaa !11
  %625 = load i32, ptr %19, align 4, !tbaa !9
  %626 = sub i32 %625, 8
  store i32 %626, ptr %19, align 4, !tbaa !9
  br label %627

627:                                              ; preds = %619
  br label %628

628:                                              ; preds = %627
  br label %629

629:                                              ; preds = %639, %628
  %630 = load ptr, ptr %26, align 8, !tbaa !5
  %631 = load ptr, ptr %27, align 8, !tbaa !5
  %632 = icmp uge ptr %630, %631
  br i1 %632, label %633, label %640

633:                                              ; preds = %629
  br label %634

634:                                              ; preds = %633
  store i32 2, ptr %18, align 4, !tbaa !9
  %635 = load ptr, ptr %9, align 8, !tbaa !5
  %636 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %635, i32 0, i32 0
  store i32 52, ptr %636, align 8, !tbaa !20
  br label %2695

637:                                              ; preds = %129
  br label %638

638:                                              ; preds = %637
  br label %639

639:                                              ; preds = %638
  br label %629, !llvm.loop !41

640:                                              ; preds = %629
  %641 = load i32, ptr %20, align 4, !tbaa !9
  %642 = trunc i32 %641 to i8
  %643 = load ptr, ptr %26, align 8, !tbaa !5
  %644 = getelementptr inbounds i8, ptr %643, i32 1
  store ptr %644, ptr %26, align 8, !tbaa !5
  store i8 %642, ptr %643, align 1, !tbaa !27
  %645 = load i32, ptr %21, align 4, !tbaa !9
  %646 = add i32 %645, -1
  store i32 %646, ptr %21, align 4, !tbaa !9
  br label %568, !llvm.loop !42

647:                                              ; preds = %574
  br label %648

648:                                              ; preds = %738, %647
  %649 = load i32, ptr %21, align 4, !tbaa !9
  %650 = icmp ne i32 %649, 0
  br i1 %650, label %651, label %753

651:                                              ; preds = %648
  br label %652

652:                                              ; preds = %662, %651
  %653 = load ptr, ptr %26, align 8, !tbaa !5
  %654 = load ptr, ptr %27, align 8, !tbaa !5
  %655 = icmp uge ptr %653, %654
  br i1 %655, label %656, label %663

656:                                              ; preds = %652
  br label %657

657:                                              ; preds = %656
  store i32 2, ptr %18, align 4, !tbaa !9
  %658 = load ptr, ptr %9, align 8, !tbaa !5
  %659 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %658, i32 0, i32 0
  store i32 9, ptr %659, align 8, !tbaa !20
  br label %2695

660:                                              ; preds = %129
  br label %661

661:                                              ; preds = %660
  br label %662

662:                                              ; preds = %661
  br label %652, !llvm.loop !43

663:                                              ; preds = %652
  br label %664

664:                                              ; preds = %679, %663
  %665 = load ptr, ptr %24, align 8, !tbaa !5
  %666 = load ptr, ptr %25, align 8, !tbaa !5
  %667 = icmp uge ptr %665, %666
  br i1 %667, label %668, label %680

668:                                              ; preds = %664
  br label %669

669:                                              ; preds = %668
  %670 = load i32, ptr %15, align 4, !tbaa !9
  %671 = and i32 %670, 2
  %672 = icmp ne i32 %671, 0
  %673 = zext i1 %672 to i64
  %674 = select i1 %672, i32 1, i32 -4
  store i32 %674, ptr %18, align 4, !tbaa !9
  %675 = load ptr, ptr %9, align 8, !tbaa !5
  %676 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %675, i32 0, i32 0
  store i32 38, ptr %676, align 8, !tbaa !20
  br label %2695

677:                                              ; preds = %129
  br label %678

678:                                              ; preds = %677
  br label %679

679:                                              ; preds = %678
  br label %664, !llvm.loop !44

680:                                              ; preds = %664
  %681 = load ptr, ptr %27, align 8, !tbaa !5
  %682 = load ptr, ptr %26, align 8, !tbaa !5
  %683 = ptrtoint ptr %681 to i64
  %684 = ptrtoint ptr %682 to i64
  %685 = sub i64 %683, %684
  %686 = load ptr, ptr %25, align 8, !tbaa !5
  %687 = load ptr, ptr %24, align 8, !tbaa !5
  %688 = ptrtoint ptr %686 to i64
  %689 = ptrtoint ptr %687 to i64
  %690 = sub i64 %688, %689
  %691 = icmp ult i64 %685, %690
  br i1 %691, label %692, label %698

692:                                              ; preds = %680
  %693 = load ptr, ptr %27, align 8, !tbaa !5
  %694 = load ptr, ptr %26, align 8, !tbaa !5
  %695 = ptrtoint ptr %693 to i64
  %696 = ptrtoint ptr %694 to i64
  %697 = sub i64 %695, %696
  br label %704

698:                                              ; preds = %680
  %699 = load ptr, ptr %25, align 8, !tbaa !5
  %700 = load ptr, ptr %24, align 8, !tbaa !5
  %701 = ptrtoint ptr %699 to i64
  %702 = ptrtoint ptr %700 to i64
  %703 = sub i64 %701, %702
  br label %704

704:                                              ; preds = %698, %692
  %705 = phi i64 [ %697, %692 ], [ %703, %698 ]
  %706 = load i32, ptr %21, align 4, !tbaa !9
  %707 = zext i32 %706 to i64
  %708 = icmp ult i64 %705, %707
  br i1 %708, label %709, label %735

709:                                              ; preds = %704
  %710 = load ptr, ptr %27, align 8, !tbaa !5
  %711 = load ptr, ptr %26, align 8, !tbaa !5
  %712 = ptrtoint ptr %710 to i64
  %713 = ptrtoint ptr %711 to i64
  %714 = sub i64 %712, %713
  %715 = load ptr, ptr %25, align 8, !tbaa !5
  %716 = load ptr, ptr %24, align 8, !tbaa !5
  %717 = ptrtoint ptr %715 to i64
  %718 = ptrtoint ptr %716 to i64
  %719 = sub i64 %717, %718
  %720 = icmp ult i64 %714, %719
  br i1 %720, label %721, label %727

721:                                              ; preds = %709
  %722 = load ptr, ptr %27, align 8, !tbaa !5
  %723 = load ptr, ptr %26, align 8, !tbaa !5
  %724 = ptrtoint ptr %722 to i64
  %725 = ptrtoint ptr %723 to i64
  %726 = sub i64 %724, %725
  br label %733

727:                                              ; preds = %709
  %728 = load ptr, ptr %25, align 8, !tbaa !5
  %729 = load ptr, ptr %24, align 8, !tbaa !5
  %730 = ptrtoint ptr %728 to i64
  %731 = ptrtoint ptr %729 to i64
  %732 = sub i64 %730, %731
  br label %733

733:                                              ; preds = %727, %721
  %734 = phi i64 [ %726, %721 ], [ %732, %727 ]
  br label %738

735:                                              ; preds = %704
  %736 = load i32, ptr %21, align 4, !tbaa !9
  %737 = zext i32 %736 to i64
  br label %738

738:                                              ; preds = %735, %733
  %739 = phi i64 [ %734, %733 ], [ %737, %735 ]
  store i64 %739, ptr %35, align 8, !tbaa !11
  %740 = load ptr, ptr %26, align 8, !tbaa !5
  %741 = load ptr, ptr %24, align 8, !tbaa !5
  %742 = load i64, ptr %35, align 8, !tbaa !11
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %740, ptr align 1 %741, i64 %742, i1 false)
  %743 = load i64, ptr %35, align 8, !tbaa !11
  %744 = load ptr, ptr %24, align 8, !tbaa !5
  %745 = getelementptr inbounds i8, ptr %744, i64 %743
  store ptr %745, ptr %24, align 8, !tbaa !5
  %746 = load i64, ptr %35, align 8, !tbaa !11
  %747 = load ptr, ptr %26, align 8, !tbaa !5
  %748 = getelementptr inbounds i8, ptr %747, i64 %746
  store ptr %748, ptr %26, align 8, !tbaa !5
  %749 = load i64, ptr %35, align 8, !tbaa !11
  %750 = trunc i64 %749 to i32
  %751 = load i32, ptr %21, align 4, !tbaa !9
  %752 = sub i32 %751, %750
  store i32 %752, ptr %21, align 4, !tbaa !9
  br label %648, !llvm.loop !45

753:                                              ; preds = %648
  br label %2489

754:                                              ; preds = %362
  %755 = load ptr, ptr %9, align 8, !tbaa !5
  %756 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %755, i32 0, i32 6
  %757 = load i32, ptr %756, align 8, !tbaa !32
  %758 = icmp eq i32 %757, 3
  br i1 %758, label %759, label %770

759:                                              ; preds = %754
  br label %760

760:                                              ; preds = %759
  br label %761

761:                                              ; preds = %767, %760
  br label %762

762:                                              ; preds = %761
  store i32 -1, ptr %18, align 4, !tbaa !9
  %763 = load ptr, ptr %9, align 8, !tbaa !5
  %764 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %763, i32 0, i32 0
  store i32 10, ptr %764, align 8, !tbaa !20
  br label %2695

765:                                              ; preds = %129
  br label %766

766:                                              ; preds = %765
  br label %767

767:                                              ; preds = %766
  br label %761

768:                                              ; No predecessors!
  br label %769

769:                                              ; preds = %768
  br label %2488

770:                                              ; preds = %754
  %771 = load ptr, ptr %9, align 8, !tbaa !5
  %772 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %771, i32 0, i32 6
  %773 = load i32, ptr %772, align 8, !tbaa !32
  %774 = icmp eq i32 %773, 1
  br i1 %774, label %775, label %828

775:                                              ; preds = %770
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #5
  %776 = load ptr, ptr %9, align 8, !tbaa !5
  %777 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %776, i32 0, i32 18
  %778 = getelementptr inbounds [288 x i8], ptr %777, i64 0, i64 0
  store ptr %778, ptr %36, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %37) #5
  %779 = load ptr, ptr %9, align 8, !tbaa !5
  %780 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %779, i32 0, i32 11
  %781 = getelementptr inbounds [3 x i32], ptr %780, i64 0, i64 0
  store i32 288, ptr %781, align 4, !tbaa !9
  %782 = load ptr, ptr %9, align 8, !tbaa !5
  %783 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %782, i32 0, i32 11
  %784 = getelementptr inbounds [3 x i32], ptr %783, i64 0, i64 1
  store i32 32, ptr %784, align 4, !tbaa !9
  %785 = load ptr, ptr %9, align 8, !tbaa !5
  %786 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %785, i32 0, i32 19
  %787 = getelementptr inbounds [32 x i8], ptr %786, i64 0, i64 0
  call void @llvm.memset.p0.i64(ptr align 4 %787, i8 5, i64 32, i1 false)
  store i32 0, ptr %37, align 4, !tbaa !9
  br label %788

788:                                              ; preds = %794, %775
  %789 = load i32, ptr %37, align 4, !tbaa !9
  %790 = icmp ule i32 %789, 143
  br i1 %790, label %791, label %797

791:                                              ; preds = %788
  %792 = load ptr, ptr %36, align 8, !tbaa !5
  %793 = getelementptr inbounds i8, ptr %792, i32 1
  store ptr %793, ptr %36, align 8, !tbaa !5
  store i8 8, ptr %792, align 1, !tbaa !27
  br label %794

794:                                              ; preds = %791
  %795 = load i32, ptr %37, align 4, !tbaa !9
  %796 = add i32 %795, 1
  store i32 %796, ptr %37, align 4, !tbaa !9
  br label %788, !llvm.loop !46

797:                                              ; preds = %788
  br label %798

798:                                              ; preds = %804, %797
  %799 = load i32, ptr %37, align 4, !tbaa !9
  %800 = icmp ule i32 %799, 255
  br i1 %800, label %801, label %807

801:                                              ; preds = %798
  %802 = load ptr, ptr %36, align 8, !tbaa !5
  %803 = getelementptr inbounds i8, ptr %802, i32 1
  store ptr %803, ptr %36, align 8, !tbaa !5
  store i8 9, ptr %802, align 1, !tbaa !27
  br label %804

804:                                              ; preds = %801
  %805 = load i32, ptr %37, align 4, !tbaa !9
  %806 = add i32 %805, 1
  store i32 %806, ptr %37, align 4, !tbaa !9
  br label %798, !llvm.loop !47

807:                                              ; preds = %798
  br label %808

808:                                              ; preds = %814, %807
  %809 = load i32, ptr %37, align 4, !tbaa !9
  %810 = icmp ule i32 %809, 279
  br i1 %810, label %811, label %817

811:                                              ; preds = %808
  %812 = load ptr, ptr %36, align 8, !tbaa !5
  %813 = getelementptr inbounds i8, ptr %812, i32 1
  store ptr %813, ptr %36, align 8, !tbaa !5
  store i8 7, ptr %812, align 1, !tbaa !27
  br label %814

814:                                              ; preds = %811
  %815 = load i32, ptr %37, align 4, !tbaa !9
  %816 = add i32 %815, 1
  store i32 %816, ptr %37, align 4, !tbaa !9
  br label %808, !llvm.loop !48

817:                                              ; preds = %808
  br label %818

818:                                              ; preds = %824, %817
  %819 = load i32, ptr %37, align 4, !tbaa !9
  %820 = icmp ule i32 %819, 287
  br i1 %820, label %821, label %827

821:                                              ; preds = %818
  %822 = load ptr, ptr %36, align 8, !tbaa !5
  %823 = getelementptr inbounds i8, ptr %822, i32 1
  store ptr %823, ptr %36, align 8, !tbaa !5
  store i8 8, ptr %822, align 1, !tbaa !27
  br label %824

824:                                              ; preds = %821
  %825 = load i32, ptr %37, align 4, !tbaa !9
  %826 = add i32 %825, 1
  store i32 %826, ptr %37, align 4, !tbaa !9
  br label %818, !llvm.loop !49

827:                                              ; preds = %818
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #5
  br label %1015

828:                                              ; preds = %770
  store i32 0, ptr %21, align 4, !tbaa !9
  br label %829

829:                                              ; preds = %931, %828
  %830 = load i32, ptr %21, align 4, !tbaa !9
  %831 = icmp ult i32 %830, 3
  br i1 %831, label %832, label %934

832:                                              ; preds = %829
  br label %833

833:                                              ; preds = %832
  %834 = load i32, ptr %19, align 4, !tbaa !9
  %835 = load i32, ptr %21, align 4, !tbaa !9
  %836 = zext i32 %835 to i64
  %837 = getelementptr inbounds [4 x i8], ptr @.str.14, i64 0, i64 %836
  %838 = load i8, ptr %837, align 1, !tbaa !27
  %839 = sext i8 %838 to i32
  %840 = icmp ult i32 %834, %839
  br i1 %840, label %841, label %885

841:                                              ; preds = %833
  br label %842

842:                                              ; preds = %876, %841
  br label %843

843:                                              ; preds = %842
  br label %844

844:                                              ; preds = %859, %843
  %845 = load ptr, ptr %24, align 8, !tbaa !5
  %846 = load ptr, ptr %25, align 8, !tbaa !5
  %847 = icmp uge ptr %845, %846
  br i1 %847, label %848, label %860

848:                                              ; preds = %844
  br label %849

849:                                              ; preds = %848
  %850 = load i32, ptr %15, align 4, !tbaa !9
  %851 = and i32 %850, 2
  %852 = icmp ne i32 %851, 0
  %853 = zext i1 %852 to i64
  %854 = select i1 %852, i32 1, i32 -4
  store i32 %854, ptr %18, align 4, !tbaa !9
  %855 = load ptr, ptr %9, align 8, !tbaa !5
  %856 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %855, i32 0, i32 0
  store i32 11, ptr %856, align 8, !tbaa !20
  br label %2695

857:                                              ; preds = %129
  br label %858

858:                                              ; preds = %857
  br label %859

859:                                              ; preds = %858
  br label %844, !llvm.loop !50

860:                                              ; preds = %844
  %861 = load ptr, ptr %24, align 8, !tbaa !5
  %862 = getelementptr inbounds i8, ptr %861, i32 1
  store ptr %862, ptr %24, align 8, !tbaa !5
  %863 = load i8, ptr %861, align 1, !tbaa !27
  %864 = zext i8 %863 to i32
  store i32 %864, ptr %38, align 4, !tbaa !9
  br label %865

865:                                              ; preds = %860
  br label %866

866:                                              ; preds = %865
  %867 = load i32, ptr %38, align 4, !tbaa !9
  %868 = zext i32 %867 to i64
  %869 = load i32, ptr %19, align 4, !tbaa !9
  %870 = zext i32 %869 to i64
  %871 = shl i64 %868, %870
  %872 = load i64, ptr %23, align 8, !tbaa !11
  %873 = or i64 %872, %871
  store i64 %873, ptr %23, align 8, !tbaa !11
  %874 = load i32, ptr %19, align 4, !tbaa !9
  %875 = add i32 %874, 8
  store i32 %875, ptr %19, align 4, !tbaa !9
  br label %876

876:                                              ; preds = %866
  %877 = load i32, ptr %19, align 4, !tbaa !9
  %878 = load i32, ptr %21, align 4, !tbaa !9
  %879 = zext i32 %878 to i64
  %880 = getelementptr inbounds [4 x i8], ptr @.str.14, i64 0, i64 %879
  %881 = load i8, ptr %880, align 1, !tbaa !27
  %882 = sext i8 %881 to i32
  %883 = icmp ult i32 %877, %882
  br i1 %883, label %842, label %884, !llvm.loop !51

884:                                              ; preds = %876
  br label %885

885:                                              ; preds = %884, %833
  %886 = load i64, ptr %23, align 8, !tbaa !11
  %887 = load i32, ptr %21, align 4, !tbaa !9
  %888 = zext i32 %887 to i64
  %889 = getelementptr inbounds [4 x i8], ptr @.str.14, i64 0, i64 %888
  %890 = load i8, ptr %889, align 1, !tbaa !27
  %891 = sext i8 %890 to i32
  %892 = shl i32 1, %891
  %893 = sub nsw i32 %892, 1
  %894 = sext i32 %893 to i64
  %895 = and i64 %886, %894
  %896 = trunc i64 %895 to i32
  %897 = load ptr, ptr %9, align 8, !tbaa !5
  %898 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %897, i32 0, i32 11
  %899 = load i32, ptr %21, align 4, !tbaa !9
  %900 = zext i32 %899 to i64
  %901 = getelementptr inbounds [3 x i32], ptr %898, i64 0, i64 %900
  store i32 %896, ptr %901, align 4, !tbaa !9
  %902 = load i32, ptr %21, align 4, !tbaa !9
  %903 = zext i32 %902 to i64
  %904 = getelementptr inbounds [4 x i8], ptr @.str.14, i64 0, i64 %903
  %905 = load i8, ptr %904, align 1, !tbaa !27
  %906 = sext i8 %905 to i32
  %907 = load i64, ptr %23, align 8, !tbaa !11
  %908 = zext i32 %906 to i64
  %909 = lshr i64 %907, %908
  store i64 %909, ptr %23, align 8, !tbaa !11
  %910 = load i32, ptr %21, align 4, !tbaa !9
  %911 = zext i32 %910 to i64
  %912 = getelementptr inbounds [4 x i8], ptr @.str.14, i64 0, i64 %911
  %913 = load i8, ptr %912, align 1, !tbaa !27
  %914 = sext i8 %913 to i32
  %915 = load i32, ptr %19, align 4, !tbaa !9
  %916 = sub i32 %915, %914
  store i32 %916, ptr %19, align 4, !tbaa !9
  br label %917

917:                                              ; preds = %885
  br label %918

918:                                              ; preds = %917
  %919 = load i32, ptr %21, align 4, !tbaa !9
  %920 = zext i32 %919 to i64
  %921 = getelementptr inbounds [3 x i16], ptr @tinfl_decompress.s_min_table_sizes, i64 0, i64 %920
  %922 = load i16, ptr %921, align 2, !tbaa !52
  %923 = zext i16 %922 to i32
  %924 = load ptr, ptr %9, align 8, !tbaa !5
  %925 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %924, i32 0, i32 11
  %926 = load i32, ptr %21, align 4, !tbaa !9
  %927 = zext i32 %926 to i64
  %928 = getelementptr inbounds [3 x i32], ptr %925, i64 0, i64 %927
  %929 = load i32, ptr %928, align 4, !tbaa !9
  %930 = add i32 %929, %923
  store i32 %930, ptr %928, align 4, !tbaa !9
  br label %931

931:                                              ; preds = %918
  %932 = load i32, ptr %21, align 4, !tbaa !9
  %933 = add i32 %932, 1
  store i32 %933, ptr %21, align 4, !tbaa !9
  br label %829, !llvm.loop !54

934:                                              ; preds = %829
  %935 = load ptr, ptr %9, align 8, !tbaa !5
  %936 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %935, i32 0, i32 20
  %937 = getelementptr inbounds [19 x i8], ptr %936, i64 0, i64 0
  call void @llvm.memset.p0.i64(ptr align 4 %937, i8 0, i64 19, i1 false)
  store i32 0, ptr %21, align 4, !tbaa !9
  br label %938

938:                                              ; preds = %1008, %934
  %939 = load i32, ptr %21, align 4, !tbaa !9
  %940 = load ptr, ptr %9, align 8, !tbaa !5
  %941 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %940, i32 0, i32 11
  %942 = getelementptr inbounds [3 x i32], ptr %941, i64 0, i64 2
  %943 = load i32, ptr %942, align 4, !tbaa !9
  %944 = icmp ult i32 %939, %943
  br i1 %944, label %945, label %1011

945:                                              ; preds = %938
  br label %946

946:                                              ; preds = %945
  %947 = load i32, ptr %19, align 4, !tbaa !9
  %948 = icmp ult i32 %947, 3
  br i1 %948, label %949, label %988

949:                                              ; preds = %946
  br label %950

950:                                              ; preds = %984, %949
  br label %951

951:                                              ; preds = %950
  br label %952

952:                                              ; preds = %967, %951
  %953 = load ptr, ptr %24, align 8, !tbaa !5
  %954 = load ptr, ptr %25, align 8, !tbaa !5
  %955 = icmp uge ptr %953, %954
  br i1 %955, label %956, label %968

956:                                              ; preds = %952
  br label %957

957:                                              ; preds = %956
  %958 = load i32, ptr %15, align 4, !tbaa !9
  %959 = and i32 %958, 2
  %960 = icmp ne i32 %959, 0
  %961 = zext i1 %960 to i64
  %962 = select i1 %960, i32 1, i32 -4
  store i32 %962, ptr %18, align 4, !tbaa !9
  %963 = load ptr, ptr %9, align 8, !tbaa !5
  %964 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %963, i32 0, i32 0
  store i32 14, ptr %964, align 8, !tbaa !20
  br label %2695

965:                                              ; preds = %129
  br label %966

966:                                              ; preds = %965
  br label %967

967:                                              ; preds = %966
  br label %952, !llvm.loop !55

968:                                              ; preds = %952
  %969 = load ptr, ptr %24, align 8, !tbaa !5
  %970 = getelementptr inbounds i8, ptr %969, i32 1
  store ptr %970, ptr %24, align 8, !tbaa !5
  %971 = load i8, ptr %969, align 1, !tbaa !27
  %972 = zext i8 %971 to i32
  store i32 %972, ptr %40, align 4, !tbaa !9
  br label %973

973:                                              ; preds = %968
  br label %974

974:                                              ; preds = %973
  %975 = load i32, ptr %40, align 4, !tbaa !9
  %976 = zext i32 %975 to i64
  %977 = load i32, ptr %19, align 4, !tbaa !9
  %978 = zext i32 %977 to i64
  %979 = shl i64 %976, %978
  %980 = load i64, ptr %23, align 8, !tbaa !11
  %981 = or i64 %980, %979
  store i64 %981, ptr %23, align 8, !tbaa !11
  %982 = load i32, ptr %19, align 4, !tbaa !9
  %983 = add i32 %982, 8
  store i32 %983, ptr %19, align 4, !tbaa !9
  br label %984

984:                                              ; preds = %974
  %985 = load i32, ptr %19, align 4, !tbaa !9
  %986 = icmp ult i32 %985, 3
  br i1 %986, label %950, label %987, !llvm.loop !56

987:                                              ; preds = %984
  br label %988

988:                                              ; preds = %987, %946
  %989 = load i64, ptr %23, align 8, !tbaa !11
  %990 = and i64 %989, 7
  %991 = trunc i64 %990 to i32
  store i32 %991, ptr %39, align 4, !tbaa !9
  %992 = load i64, ptr %23, align 8, !tbaa !11
  %993 = lshr i64 %992, 3
  store i64 %993, ptr %23, align 8, !tbaa !11
  %994 = load i32, ptr %19, align 4, !tbaa !9
  %995 = sub i32 %994, 3
  store i32 %995, ptr %19, align 4, !tbaa !9
  br label %996

996:                                              ; preds = %988
  br label %997

997:                                              ; preds = %996
  %998 = load i32, ptr %39, align 4, !tbaa !9
  %999 = trunc i32 %998 to i8
  %1000 = load ptr, ptr %9, align 8, !tbaa !5
  %1001 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %1000, i32 0, i32 20
  %1002 = load i32, ptr %21, align 4, !tbaa !9
  %1003 = zext i32 %1002 to i64
  %1004 = getelementptr inbounds [19 x i8], ptr @tinfl_decompress.s_length_dezigzag, i64 0, i64 %1003
  %1005 = load i8, ptr %1004, align 1, !tbaa !27
  %1006 = zext i8 %1005 to i64
  %1007 = getelementptr inbounds [19 x i8], ptr %1001, i64 0, i64 %1006
  store i8 %999, ptr %1007, align 1, !tbaa !27
  br label %1008

1008:                                             ; preds = %997
  %1009 = load i32, ptr %21, align 4, !tbaa !9
  %1010 = add i32 %1009, 1
  store i32 %1010, ptr %21, align 4, !tbaa !9
  br label %938, !llvm.loop !57

1011:                                             ; preds = %938
  %1012 = load ptr, ptr %9, align 8, !tbaa !5
  %1013 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %1012, i32 0, i32 11
  %1014 = getelementptr inbounds [3 x i32], ptr %1013, i64 0, i64 2
  store i32 19, ptr %1014, align 4, !tbaa !9
  br label %1015

1015:                                             ; preds = %1011, %827
  br label %1016

1016:                                             ; preds = %1645, %1015
  %1017 = load ptr, ptr %9, align 8, !tbaa !5
  %1018 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %1017, i32 0, i32 6
  %1019 = load i32, ptr %1018, align 8, !tbaa !32
  %1020 = icmp sge i32 %1019, 0
  br i1 %1020, label %1021, label %1650

1021:                                             ; preds = %1016
  %1022 = load ptr, ptr %9, align 8, !tbaa !5
  %1023 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %1022, i32 0, i32 14
  %1024 = load ptr, ptr %9, align 8, !tbaa !5
  %1025 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %1024, i32 0, i32 6
  %1026 = load i32, ptr %1025, align 8, !tbaa !32
  %1027 = zext i32 %1026 to i64
  %1028 = getelementptr inbounds [3 x [1024 x i16]], ptr %1023, i64 0, i64 %1027
  %1029 = getelementptr inbounds [1024 x i16], ptr %1028, i64 0, i64 0
  store ptr %1029, ptr %43, align 8, !tbaa !5
  %1030 = load ptr, ptr %9, align 8, !tbaa !5
  %1031 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %1030, i32 0, i32 6
  %1032 = load i32, ptr %1031, align 8, !tbaa !32
  %1033 = zext i32 %1032 to i64
  %1034 = getelementptr inbounds [3 x ptr], ptr %16, i64 0, i64 %1033
  %1035 = load ptr, ptr %1034, align 8, !tbaa !5
  store ptr %1035, ptr %44, align 8, !tbaa !5
  %1036 = load ptr, ptr %9, align 8, !tbaa !5
  %1037 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %1036, i32 0, i32 6
  %1038 = load i32, ptr %1037, align 8, !tbaa !32
  %1039 = zext i32 %1038 to i64
  %1040 = getelementptr inbounds [3 x ptr], ptr %17, i64 0, i64 %1039
  %1041 = load ptr, ptr %1040, align 8, !tbaa !5
  store ptr %1041, ptr %45, align 8, !tbaa !5
  %1042 = getelementptr inbounds [16 x i32], ptr %52, i64 0, i64 0
  call void @llvm.memset.p0.i64(ptr align 16 %1042, i8 0, i64 64, i1 false)
  %1043 = load ptr, ptr %43, align 8, !tbaa !5
  call void @llvm.memset.p0.i64(ptr align 2 %1043, i8 0, i64 2048, i1 false)
  %1044 = load ptr, ptr %9, align 8, !tbaa !5
  call void @tinfl_clear_tree(ptr noundef %1044)
  store i32 0, ptr %46, align 4, !tbaa !9
  br label %1045

1045:                                             ; preds = %1066, %1021
  %1046 = load i32, ptr %46, align 4, !tbaa !9
  %1047 = load ptr, ptr %9, align 8, !tbaa !5
  %1048 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %1047, i32 0, i32 11
  %1049 = load ptr, ptr %9, align 8, !tbaa !5
  %1050 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %1049, i32 0, i32 6
  %1051 = load i32, ptr %1050, align 8, !tbaa !32
  %1052 = zext i32 %1051 to i64
  %1053 = getelementptr inbounds [3 x i32], ptr %1048, i64 0, i64 %1052
  %1054 = load i32, ptr %1053, align 4, !tbaa !9
  %1055 = icmp ult i32 %1046, %1054
  br i1 %1055, label %1056, label %1069

1056:                                             ; preds = %1045
  %1057 = load ptr, ptr %45, align 8, !tbaa !5
  %1058 = load i32, ptr %46, align 4, !tbaa !9
  %1059 = zext i32 %1058 to i64
  %1060 = getelementptr inbounds i8, ptr %1057, i64 %1059
  %1061 = load i8, ptr %1060, align 1, !tbaa !27
  %1062 = zext i8 %1061 to i64
  %1063 = getelementptr inbounds [16 x i32], ptr %52, i64 0, i64 %1062
  %1064 = load i32, ptr %1063, align 4, !tbaa !9
  %1065 = add i32 %1064, 1
  store i32 %1065, ptr %1063, align 4, !tbaa !9
  br label %1066

1066:                                             ; preds = %1056
  %1067 = load i32, ptr %46, align 4, !tbaa !9
  %1068 = add i32 %1067, 1
  store i32 %1068, ptr %46, align 4, !tbaa !9
  br label %1045, !llvm.loop !58

1069:                                             ; preds = %1045
  store i32 0, ptr %48, align 4, !tbaa !9
  store i32 0, ptr %49, align 4, !tbaa !9
  %1070 = getelementptr inbounds [17 x i32], ptr %51, i64 0, i64 1
  store i32 0, ptr %1070, align 4, !tbaa !9
  %1071 = getelementptr inbounds [17 x i32], ptr %51, i64 0, i64 0
  store i32 0, ptr %1071, align 16, !tbaa !9
  store i32 1, ptr %46, align 4, !tbaa !9
  br label %1072

1072:                                             ; preds = %1093, %1069
  %1073 = load i32, ptr %46, align 4, !tbaa !9
  %1074 = icmp ule i32 %1073, 15
  br i1 %1074, label %1075, label %1096

1075:                                             ; preds = %1072
  %1076 = load i32, ptr %46, align 4, !tbaa !9
  %1077 = zext i32 %1076 to i64
  %1078 = getelementptr inbounds [16 x i32], ptr %52, i64 0, i64 %1077
  %1079 = load i32, ptr %1078, align 4, !tbaa !9
  %1080 = load i32, ptr %48, align 4, !tbaa !9
  %1081 = add i32 %1080, %1079
  store i32 %1081, ptr %48, align 4, !tbaa !9
  %1082 = load i32, ptr %49, align 4, !tbaa !9
  %1083 = load i32, ptr %46, align 4, !tbaa !9
  %1084 = zext i32 %1083 to i64
  %1085 = getelementptr inbounds [16 x i32], ptr %52, i64 0, i64 %1084
  %1086 = load i32, ptr %1085, align 4, !tbaa !9
  %1087 = add i32 %1082, %1086
  %1088 = shl i32 %1087, 1
  store i32 %1088, ptr %49, align 4, !tbaa !9
  %1089 = load i32, ptr %46, align 4, !tbaa !9
  %1090 = add i32 %1089, 1
  %1091 = zext i32 %1090 to i64
  %1092 = getelementptr inbounds [17 x i32], ptr %51, i64 0, i64 %1091
  store i32 %1088, ptr %1092, align 4, !tbaa !9
  br label %1093

1093:                                             ; preds = %1075
  %1094 = load i32, ptr %46, align 4, !tbaa !9
  %1095 = add i32 %1094, 1
  store i32 %1095, ptr %46, align 4, !tbaa !9
  br label %1072, !llvm.loop !59

1096:                                             ; preds = %1072
  %1097 = load i32, ptr %49, align 4, !tbaa !9
  %1098 = icmp ne i32 65536, %1097
  br i1 %1098, label %1099, label %1113

1099:                                             ; preds = %1096
  %1100 = load i32, ptr %48, align 4, !tbaa !9
  %1101 = icmp ugt i32 %1100, 1
  br i1 %1101, label %1102, label %1113

1102:                                             ; preds = %1099
  br label %1103

1103:                                             ; preds = %1102
  br label %1104

1104:                                             ; preds = %1110, %1103
  br label %1105

1105:                                             ; preds = %1104
  store i32 -1, ptr %18, align 4, !tbaa !9
  %1106 = load ptr, ptr %9, align 8, !tbaa !5
  %1107 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %1106, i32 0, i32 0
  store i32 35, ptr %1107, align 8, !tbaa !20
  br label %2695

1108:                                             ; preds = %129
  br label %1109

1109:                                             ; preds = %1108
  br label %1110

1110:                                             ; preds = %1109
  br label %1104

1111:                                             ; No predecessors!
  br label %1112

1112:                                             ; preds = %1111
  br label %1113

1113:                                             ; preds = %1112, %1099, %1096
  store i32 -1, ptr %41, align 4, !tbaa !9
  store i32 0, ptr %50, align 4, !tbaa !9
  br label %1114

1114:                                             ; preds = %1262, %1113
  %1115 = load i32, ptr %50, align 4, !tbaa !9
  %1116 = load ptr, ptr %9, align 8, !tbaa !5
  %1117 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %1116, i32 0, i32 11
  %1118 = load ptr, ptr %9, align 8, !tbaa !5
  %1119 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %1118, i32 0, i32 6
  %1120 = load i32, ptr %1119, align 8, !tbaa !32
  %1121 = zext i32 %1120 to i64
  %1122 = getelementptr inbounds [3 x i32], ptr %1117, i64 0, i64 %1121
  %1123 = load i32, ptr %1122, align 4, !tbaa !9
  %1124 = icmp ult i32 %1115, %1123
  br i1 %1124, label %1125, label %1265

1125:                                             ; preds = %1114
  call void @llvm.lifetime.start.p0(i64 4, ptr %53) #5
  store i32 0, ptr %53, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %54) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %55) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %56) #5
  %1126 = load ptr, ptr %45, align 8, !tbaa !5
  %1127 = load i32, ptr %50, align 4, !tbaa !9
  %1128 = zext i32 %1127 to i64
  %1129 = getelementptr inbounds i8, ptr %1126, i64 %1128
  %1130 = load i8, ptr %1129, align 1, !tbaa !27
  %1131 = zext i8 %1130 to i32
  store i32 %1131, ptr %56, align 4, !tbaa !9
  %1132 = load i32, ptr %56, align 4, !tbaa !9
  %1133 = icmp ne i32 %1132, 0
  br i1 %1133, label %1135, label %1134

1134:                                             ; preds = %1125
  store i32 156, ptr %30, align 4
  br label %1259

1135:                                             ; preds = %1125
  %1136 = load i32, ptr %56, align 4, !tbaa !9
  %1137 = zext i32 %1136 to i64
  %1138 = getelementptr inbounds [17 x i32], ptr %51, i64 0, i64 %1137
  %1139 = load i32, ptr %1138, align 4, !tbaa !9
  %1140 = add i32 %1139, 1
  store i32 %1140, ptr %1138, align 4, !tbaa !9
  store i32 %1139, ptr %55, align 4, !tbaa !9
  %1141 = load i32, ptr %56, align 4, !tbaa !9
  store i32 %1141, ptr %54, align 4, !tbaa !9
  br label %1142

1142:                                             ; preds = %1151, %1135
  %1143 = load i32, ptr %54, align 4, !tbaa !9
  %1144 = icmp ugt i32 %1143, 0
  br i1 %1144, label %1145, label %1156

1145:                                             ; preds = %1142
  %1146 = load i32, ptr %53, align 4, !tbaa !9
  %1147 = shl i32 %1146, 1
  %1148 = load i32, ptr %55, align 4, !tbaa !9
  %1149 = and i32 %1148, 1
  %1150 = or i32 %1147, %1149
  store i32 %1150, ptr %53, align 4, !tbaa !9
  br label %1151

1151:                                             ; preds = %1145
  %1152 = load i32, ptr %54, align 4, !tbaa !9
  %1153 = add i32 %1152, -1
  store i32 %1153, ptr %54, align 4, !tbaa !9
  %1154 = load i32, ptr %55, align 4, !tbaa !9
  %1155 = lshr i32 %1154, 1
  store i32 %1155, ptr %55, align 4, !tbaa !9
  br label %1142, !llvm.loop !60

1156:                                             ; preds = %1142
  %1157 = load i32, ptr %56, align 4, !tbaa !9
  %1158 = icmp ule i32 %1157, 10
  br i1 %1158, label %1159, label %1179

1159:                                             ; preds = %1156
  call void @llvm.lifetime.start.p0(i64 2, ptr %57) #5
  %1160 = load i32, ptr %56, align 4, !tbaa !9
  %1161 = shl i32 %1160, 9
  %1162 = load i32, ptr %50, align 4, !tbaa !9
  %1163 = or i32 %1161, %1162
  %1164 = trunc i32 %1163 to i16
  store i16 %1164, ptr %57, align 2, !tbaa !52
  br label %1165

1165:                                             ; preds = %1168, %1159
  %1166 = load i32, ptr %53, align 4, !tbaa !9
  %1167 = icmp ult i32 %1166, 1024
  br i1 %1167, label %1168, label %1178

1168:                                             ; preds = %1165
  %1169 = load i16, ptr %57, align 2, !tbaa !52
  %1170 = load ptr, ptr %43, align 8, !tbaa !5
  %1171 = load i32, ptr %53, align 4, !tbaa !9
  %1172 = zext i32 %1171 to i64
  %1173 = getelementptr inbounds i16, ptr %1170, i64 %1172
  store i16 %1169, ptr %1173, align 2, !tbaa !52
  %1174 = load i32, ptr %56, align 4, !tbaa !9
  %1175 = shl i32 1, %1174
  %1176 = load i32, ptr %53, align 4, !tbaa !9
  %1177 = add i32 %1176, %1175
  store i32 %1177, ptr %53, align 4, !tbaa !9
  br label %1165, !llvm.loop !61

1178:                                             ; preds = %1165
  store i32 156, ptr %30, align 4
  call void @llvm.lifetime.end.p0(i64 2, ptr %57) #5
  br label %1259

1179:                                             ; preds = %1156
  %1180 = load ptr, ptr %43, align 8, !tbaa !5
  %1181 = load i32, ptr %53, align 4, !tbaa !9
  %1182 = and i32 %1181, 1023
  %1183 = zext i32 %1182 to i64
  %1184 = getelementptr inbounds i16, ptr %1180, i64 %1183
  %1185 = load i16, ptr %1184, align 2, !tbaa !52
  %1186 = sext i16 %1185 to i32
  store i32 %1186, ptr %42, align 4, !tbaa !9
  %1187 = icmp eq i32 0, %1186
  br i1 %1187, label %1188, label %1199

1188:                                             ; preds = %1179
  %1189 = load i32, ptr %41, align 4, !tbaa !9
  %1190 = trunc i32 %1189 to i16
  %1191 = load ptr, ptr %43, align 8, !tbaa !5
  %1192 = load i32, ptr %53, align 4, !tbaa !9
  %1193 = and i32 %1192, 1023
  %1194 = zext i32 %1193 to i64
  %1195 = getelementptr inbounds i16, ptr %1191, i64 %1194
  store i16 %1190, ptr %1195, align 2, !tbaa !52
  %1196 = load i32, ptr %41, align 4, !tbaa !9
  store i32 %1196, ptr %42, align 4, !tbaa !9
  %1197 = load i32, ptr %41, align 4, !tbaa !9
  %1198 = sub nsw i32 %1197, 2
  store i32 %1198, ptr %41, align 4, !tbaa !9
  br label %1199

1199:                                             ; preds = %1188, %1179
  %1200 = load i32, ptr %53, align 4, !tbaa !9
  %1201 = lshr i32 %1200, 9
  store i32 %1201, ptr %53, align 4, !tbaa !9
  %1202 = load i32, ptr %56, align 4, !tbaa !9
  store i32 %1202, ptr %47, align 4, !tbaa !9
  br label %1203

1203:                                             ; preds = %1242, %1199
  %1204 = load i32, ptr %47, align 4, !tbaa !9
  %1205 = icmp ugt i32 %1204, 11
  br i1 %1205, label %1206, label %1245

1206:                                             ; preds = %1203
  %1207 = load i32, ptr %53, align 4, !tbaa !9
  %1208 = lshr i32 %1207, 1
  store i32 %1208, ptr %53, align 4, !tbaa !9
  %1209 = and i32 %1208, 1
  %1210 = load i32, ptr %42, align 4, !tbaa !9
  %1211 = sub i32 %1210, %1209
  store i32 %1211, ptr %42, align 4, !tbaa !9
  %1212 = load ptr, ptr %44, align 8, !tbaa !5
  %1213 = load i32, ptr %42, align 4, !tbaa !9
  %1214 = sub nsw i32 0, %1213
  %1215 = sub nsw i32 %1214, 1
  %1216 = sext i32 %1215 to i64
  %1217 = getelementptr inbounds i16, ptr %1212, i64 %1216
  %1218 = load i16, ptr %1217, align 2, !tbaa !52
  %1219 = icmp ne i16 %1218, 0
  br i1 %1219, label %1232, label %1220

1220:                                             ; preds = %1206
  %1221 = load i32, ptr %41, align 4, !tbaa !9
  %1222 = trunc i32 %1221 to i16
  %1223 = load ptr, ptr %44, align 8, !tbaa !5
  %1224 = load i32, ptr %42, align 4, !tbaa !9
  %1225 = sub nsw i32 0, %1224
  %1226 = sub nsw i32 %1225, 1
  %1227 = sext i32 %1226 to i64
  %1228 = getelementptr inbounds i16, ptr %1223, i64 %1227
  store i16 %1222, ptr %1228, align 2, !tbaa !52
  %1229 = load i32, ptr %41, align 4, !tbaa !9
  store i32 %1229, ptr %42, align 4, !tbaa !9
  %1230 = load i32, ptr %41, align 4, !tbaa !9
  %1231 = sub nsw i32 %1230, 2
  store i32 %1231, ptr %41, align 4, !tbaa !9
  br label %1241

1232:                                             ; preds = %1206
  %1233 = load ptr, ptr %44, align 8, !tbaa !5
  %1234 = load i32, ptr %42, align 4, !tbaa !9
  %1235 = sub nsw i32 0, %1234
  %1236 = sub nsw i32 %1235, 1
  %1237 = sext i32 %1236 to i64
  %1238 = getelementptr inbounds i16, ptr %1233, i64 %1237
  %1239 = load i16, ptr %1238, align 2, !tbaa !52
  %1240 = sext i16 %1239 to i32
  store i32 %1240, ptr %42, align 4, !tbaa !9
  br label %1241

1241:                                             ; preds = %1232, %1220
  br label %1242

1242:                                             ; preds = %1241
  %1243 = load i32, ptr %47, align 4, !tbaa !9
  %1244 = add i32 %1243, -1
  store i32 %1244, ptr %47, align 4, !tbaa !9
  br label %1203, !llvm.loop !62

1245:                                             ; preds = %1203
  %1246 = load i32, ptr %53, align 4, !tbaa !9
  %1247 = lshr i32 %1246, 1
  store i32 %1247, ptr %53, align 4, !tbaa !9
  %1248 = and i32 %1247, 1
  %1249 = load i32, ptr %42, align 4, !tbaa !9
  %1250 = sub i32 %1249, %1248
  store i32 %1250, ptr %42, align 4, !tbaa !9
  %1251 = load i32, ptr %50, align 4, !tbaa !9
  %1252 = trunc i32 %1251 to i16
  %1253 = load ptr, ptr %44, align 8, !tbaa !5
  %1254 = load i32, ptr %42, align 4, !tbaa !9
  %1255 = sub nsw i32 0, %1254
  %1256 = sub nsw i32 %1255, 1
  %1257 = sext i32 %1256 to i64
  %1258 = getelementptr inbounds i16, ptr %1253, i64 %1257
  store i16 %1252, ptr %1258, align 2, !tbaa !52
  store i32 0, ptr %30, align 4
  br label %1259

1259:                                             ; preds = %1245, %1178, %1134
  call void @llvm.lifetime.end.p0(i64 4, ptr %56) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %54) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %53) #5
  %1260 = load i32, ptr %30, align 4
  switch i32 %1260, label %2915 [
    i32 0, label %1261
    i32 156, label %1262
  ]

1261:                                             ; preds = %1259
  br label %1262

1262:                                             ; preds = %1261, %1259
  %1263 = load i32, ptr %50, align 4, !tbaa !9
  %1264 = add i32 %1263, 1
  store i32 %1264, ptr %50, align 4, !tbaa !9
  br label %1114, !llvm.loop !63

1265:                                             ; preds = %1114
  %1266 = load ptr, ptr %9, align 8, !tbaa !5
  %1267 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %1266, i32 0, i32 6
  %1268 = load i32, ptr %1267, align 8, !tbaa !32
  %1269 = icmp eq i32 %1268, 2
  br i1 %1269, label %1270, label %1644

1270:                                             ; preds = %1265
  store i32 0, ptr %21, align 4, !tbaa !9
  br label %1271

1271:                                             ; preds = %1584, %1464, %1270
  %1272 = load i32, ptr %21, align 4, !tbaa !9
  %1273 = load ptr, ptr %9, align 8, !tbaa !5
  %1274 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %1273, i32 0, i32 11
  %1275 = getelementptr inbounds [3 x i32], ptr %1274, i64 0, i64 0
  %1276 = load i32, ptr %1275, align 4, !tbaa !9
  %1277 = load ptr, ptr %9, align 8, !tbaa !5
  %1278 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %1277, i32 0, i32 11
  %1279 = getelementptr inbounds [3 x i32], ptr %1278, i64 0, i64 1
  %1280 = load i32, ptr %1279, align 4, !tbaa !9
  %1281 = add i32 %1276, %1280
  %1282 = icmp ult i32 %1272, %1281
  br i1 %1282, label %1283, label %1592

1283:                                             ; preds = %1271
  br label %1284

1284:                                             ; preds = %1283
  %1285 = load i32, ptr %19, align 4, !tbaa !9
  %1286 = icmp ult i32 %1285, 15
  br i1 %1286, label %1287, label %1415

1287:                                             ; preds = %1284
  %1288 = load ptr, ptr %25, align 8, !tbaa !5
  %1289 = load ptr, ptr %24, align 8, !tbaa !5
  %1290 = ptrtoint ptr %1288 to i64
  %1291 = ptrtoint ptr %1289 to i64
  %1292 = sub i64 %1290, %1291
  %1293 = icmp slt i64 %1292, 2
  br i1 %1293, label %1294, label %1391

1294:                                             ; preds = %1287
  br label %1295

1295:                                             ; preds = %1387, %1294
  %1296 = load ptr, ptr %9, align 8, !tbaa !5
  %1297 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %1296, i32 0, i32 14
  %1298 = getelementptr inbounds [3 x [1024 x i16]], ptr %1297, i64 0, i64 2
  %1299 = load i64, ptr %23, align 8, !tbaa !11
  %1300 = and i64 %1299, 1023
  %1301 = getelementptr inbounds [1024 x i16], ptr %1298, i64 0, i64 %1300
  %1302 = load i16, ptr %1301, align 2, !tbaa !52
  %1303 = sext i16 %1302 to i32
  store i32 %1303, ptr %59, align 4, !tbaa !9
  %1304 = load i32, ptr %59, align 4, !tbaa !9
  %1305 = icmp sge i32 %1304, 0
  br i1 %1305, label %1306, label %1317

1306:                                             ; preds = %1295
  %1307 = load i32, ptr %59, align 4, !tbaa !9
  %1308 = ashr i32 %1307, 9
  store i32 %1308, ptr %60, align 4, !tbaa !9
  %1309 = load i32, ptr %60, align 4, !tbaa !9
  %1310 = icmp ne i32 %1309, 0
  br i1 %1310, label %1311, label %1316

1311:                                             ; preds = %1306
  %1312 = load i32, ptr %19, align 4, !tbaa !9
  %1313 = load i32, ptr %60, align 4, !tbaa !9
  %1314 = icmp uge i32 %1312, %1313
  br i1 %1314, label %1315, label %1316

1315:                                             ; preds = %1311
  br label %1390

1316:                                             ; preds = %1311, %1306
  br label %1353

1317:                                             ; preds = %1295
  %1318 = load i32, ptr %19, align 4, !tbaa !9
  %1319 = icmp ugt i32 %1318, 10
  br i1 %1319, label %1320, label %1352

1320:                                             ; preds = %1317
  store i32 10, ptr %60, align 4, !tbaa !9
  br label %1321

1321:                                             ; preds = %1345, %1320
  %1322 = load ptr, ptr %9, align 8, !tbaa !5
  %1323 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %1322, i32 0, i32 17
  %1324 = load i32, ptr %59, align 4, !tbaa !9
  %1325 = xor i32 %1324, -1
  %1326 = sext i32 %1325 to i64
  %1327 = load i64, ptr %23, align 8, !tbaa !11
  %1328 = load i32, ptr %60, align 4, !tbaa !9
  %1329 = add i32 %1328, 1
  store i32 %1329, ptr %60, align 4, !tbaa !9
  %1330 = zext i32 %1328 to i64
  %1331 = lshr i64 %1327, %1330
  %1332 = and i64 %1331, 1
  %1333 = add i64 %1326, %1332
  %1334 = getelementptr inbounds [38 x i16], ptr %1323, i64 0, i64 %1333
  %1335 = load i16, ptr %1334, align 2, !tbaa !52
  %1336 = sext i16 %1335 to i32
  store i32 %1336, ptr %59, align 4, !tbaa !9
  br label %1337

1337:                                             ; preds = %1321
  %1338 = load i32, ptr %59, align 4, !tbaa !9
  %1339 = icmp slt i32 %1338, 0
  br i1 %1339, label %1340, label %1345

1340:                                             ; preds = %1337
  %1341 = load i32, ptr %19, align 4, !tbaa !9
  %1342 = load i32, ptr %60, align 4, !tbaa !9
  %1343 = add i32 %1342, 1
  %1344 = icmp uge i32 %1341, %1343
  br label %1345

1345:                                             ; preds = %1340, %1337
  %1346 = phi i1 [ false, %1337 ], [ %1344, %1340 ]
  br i1 %1346, label %1321, label %1347, !llvm.loop !64

1347:                                             ; preds = %1345
  %1348 = load i32, ptr %59, align 4, !tbaa !9
  %1349 = icmp sge i32 %1348, 0
  br i1 %1349, label %1350, label %1351

1350:                                             ; preds = %1347
  br label %1390

1351:                                             ; preds = %1347
  br label %1352

1352:                                             ; preds = %1351, %1317
  br label %1353

1353:                                             ; preds = %1352, %1316
  br label %1354

1354:                                             ; preds = %1353
  br label %1355

1355:                                             ; preds = %1370, %1354
  %1356 = load ptr, ptr %24, align 8, !tbaa !5
  %1357 = load ptr, ptr %25, align 8, !tbaa !5
  %1358 = icmp uge ptr %1356, %1357
  br i1 %1358, label %1359, label %1371

1359:                                             ; preds = %1355
  br label %1360

1360:                                             ; preds = %1359
  %1361 = load i32, ptr %15, align 4, !tbaa !9
  %1362 = and i32 %1361, 2
  %1363 = icmp ne i32 %1362, 0
  %1364 = zext i1 %1363 to i64
  %1365 = select i1 %1363, i32 1, i32 -4
  store i32 %1365, ptr %18, align 4, !tbaa !9
  %1366 = load ptr, ptr %9, align 8, !tbaa !5
  %1367 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %1366, i32 0, i32 0
  store i32 16, ptr %1367, align 8, !tbaa !20
  br label %2695

1368:                                             ; preds = %129
  br label %1369

1369:                                             ; preds = %1368
  br label %1370

1370:                                             ; preds = %1369
  br label %1355, !llvm.loop !65

1371:                                             ; preds = %1355
  %1372 = load ptr, ptr %24, align 8, !tbaa !5
  %1373 = getelementptr inbounds i8, ptr %1372, i32 1
  store ptr %1373, ptr %24, align 8, !tbaa !5
  %1374 = load i8, ptr %1372, align 1, !tbaa !27
  %1375 = zext i8 %1374 to i32
  store i32 %1375, ptr %61, align 4, !tbaa !9
  br label %1376

1376:                                             ; preds = %1371
  br label %1377

1377:                                             ; preds = %1376
  %1378 = load i32, ptr %61, align 4, !tbaa !9
  %1379 = zext i32 %1378 to i64
  %1380 = load i32, ptr %19, align 4, !tbaa !9
  %1381 = zext i32 %1380 to i64
  %1382 = shl i64 %1379, %1381
  %1383 = load i64, ptr %23, align 8, !tbaa !11
  %1384 = or i64 %1383, %1382
  store i64 %1384, ptr %23, align 8, !tbaa !11
  %1385 = load i32, ptr %19, align 4, !tbaa !9
  %1386 = add i32 %1385, 8
  store i32 %1386, ptr %19, align 4, !tbaa !9
  br label %1387

1387:                                             ; preds = %1377
  %1388 = load i32, ptr %19, align 4, !tbaa !9
  %1389 = icmp ult i32 %1388, 15
  br i1 %1389, label %1295, label %1390, !llvm.loop !66

1390:                                             ; preds = %1387, %1350, %1315
  br label %1414

1391:                                             ; preds = %1287
  %1392 = load ptr, ptr %24, align 8, !tbaa !5
  %1393 = getelementptr inbounds i8, ptr %1392, i64 0
  %1394 = load i8, ptr %1393, align 1, !tbaa !27
  %1395 = zext i8 %1394 to i64
  %1396 = load i32, ptr %19, align 4, !tbaa !9
  %1397 = zext i32 %1396 to i64
  %1398 = shl i64 %1395, %1397
  %1399 = load ptr, ptr %24, align 8, !tbaa !5
  %1400 = getelementptr inbounds i8, ptr %1399, i64 1
  %1401 = load i8, ptr %1400, align 1, !tbaa !27
  %1402 = zext i8 %1401 to i64
  %1403 = load i32, ptr %19, align 4, !tbaa !9
  %1404 = add i32 %1403, 8
  %1405 = zext i32 %1404 to i64
  %1406 = shl i64 %1402, %1405
  %1407 = or i64 %1398, %1406
  %1408 = load i64, ptr %23, align 8, !tbaa !11
  %1409 = or i64 %1408, %1407
  store i64 %1409, ptr %23, align 8, !tbaa !11
  %1410 = load ptr, ptr %24, align 8, !tbaa !5
  %1411 = getelementptr inbounds i8, ptr %1410, i64 2
  store ptr %1411, ptr %24, align 8, !tbaa !5
  %1412 = load i32, ptr %19, align 4, !tbaa !9
  %1413 = add i32 %1412, 16
  store i32 %1413, ptr %19, align 4, !tbaa !9
  br label %1414

1414:                                             ; preds = %1391, %1390
  br label %1415

1415:                                             ; preds = %1414, %1284
  %1416 = load ptr, ptr %9, align 8, !tbaa !5
  %1417 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %1416, i32 0, i32 14
  %1418 = getelementptr inbounds [3 x [1024 x i16]], ptr %1417, i64 0, i64 2
  %1419 = load i64, ptr %23, align 8, !tbaa !11
  %1420 = and i64 %1419, 1023
  %1421 = getelementptr inbounds [1024 x i16], ptr %1418, i64 0, i64 %1420
  %1422 = load i16, ptr %1421, align 2, !tbaa !52
  %1423 = sext i16 %1422 to i32
  store i32 %1423, ptr %59, align 4, !tbaa !9
  %1424 = icmp sge i32 %1423, 0
  br i1 %1424, label %1425, label %1430

1425:                                             ; preds = %1415
  %1426 = load i32, ptr %59, align 4, !tbaa !9
  %1427 = ashr i32 %1426, 9
  store i32 %1427, ptr %60, align 4, !tbaa !9
  %1428 = load i32, ptr %59, align 4, !tbaa !9
  %1429 = and i32 %1428, 511
  store i32 %1429, ptr %59, align 4, !tbaa !9
  br label %1451

1430:                                             ; preds = %1415
  store i32 10, ptr %60, align 4, !tbaa !9
  br label %1431

1431:                                             ; preds = %1447, %1430
  %1432 = load ptr, ptr %9, align 8, !tbaa !5
  %1433 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %1432, i32 0, i32 17
  %1434 = load i32, ptr %59, align 4, !tbaa !9
  %1435 = xor i32 %1434, -1
  %1436 = sext i32 %1435 to i64
  %1437 = load i64, ptr %23, align 8, !tbaa !11
  %1438 = load i32, ptr %60, align 4, !tbaa !9
  %1439 = add i32 %1438, 1
  store i32 %1439, ptr %60, align 4, !tbaa !9
  %1440 = zext i32 %1438 to i64
  %1441 = lshr i64 %1437, %1440
  %1442 = and i64 %1441, 1
  %1443 = add i64 %1436, %1442
  %1444 = getelementptr inbounds [38 x i16], ptr %1433, i64 0, i64 %1443
  %1445 = load i16, ptr %1444, align 2, !tbaa !52
  %1446 = sext i16 %1445 to i32
  store i32 %1446, ptr %59, align 4, !tbaa !9
  br label %1447

1447:                                             ; preds = %1431
  %1448 = load i32, ptr %59, align 4, !tbaa !9
  %1449 = icmp slt i32 %1448, 0
  br i1 %1449, label %1431, label %1450, !llvm.loop !67

1450:                                             ; preds = %1447
  br label %1451

1451:                                             ; preds = %1450, %1425
  %1452 = load i32, ptr %59, align 4, !tbaa !9
  store i32 %1452, ptr %20, align 4, !tbaa !9
  %1453 = load i32, ptr %60, align 4, !tbaa !9
  %1454 = load i64, ptr %23, align 8, !tbaa !11
  %1455 = zext i32 %1453 to i64
  %1456 = lshr i64 %1454, %1455
  store i64 %1456, ptr %23, align 8, !tbaa !11
  %1457 = load i32, ptr %60, align 4, !tbaa !9
  %1458 = load i32, ptr %19, align 4, !tbaa !9
  %1459 = sub i32 %1458, %1457
  store i32 %1459, ptr %19, align 4, !tbaa !9
  br label %1460

1460:                                             ; preds = %1451
  br label %1461

1461:                                             ; preds = %1460
  %1462 = load i32, ptr %20, align 4, !tbaa !9
  %1463 = icmp ult i32 %1462, 16
  br i1 %1463, label %1464, label %1473

1464:                                             ; preds = %1461
  %1465 = load i32, ptr %20, align 4, !tbaa !9
  %1466 = trunc i32 %1465 to i8
  %1467 = load ptr, ptr %9, align 8, !tbaa !5
  %1468 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %1467, i32 0, i32 22
  %1469 = load i32, ptr %21, align 4, !tbaa !9
  %1470 = add i32 %1469, 1
  store i32 %1470, ptr %21, align 4, !tbaa !9
  %1471 = zext i32 %1469 to i64
  %1472 = getelementptr inbounds [457 x i8], ptr %1468, i64 0, i64 %1471
  store i8 %1466, ptr %1472, align 1, !tbaa !27
  br label %1271, !llvm.loop !68

1473:                                             ; preds = %1461
  %1474 = load i32, ptr %20, align 4, !tbaa !9
  %1475 = icmp eq i32 %1474, 16
  br i1 %1475, label %1476, label %1490

1476:                                             ; preds = %1473
  %1477 = load i32, ptr %21, align 4, !tbaa !9
  %1478 = icmp ne i32 %1477, 0
  br i1 %1478, label %1490, label %1479

1479:                                             ; preds = %1476
  br label %1480

1480:                                             ; preds = %1479
  br label %1481

1481:                                             ; preds = %1487, %1480
  br label %1482

1482:                                             ; preds = %1481
  store i32 -1, ptr %18, align 4, !tbaa !9
  %1483 = load ptr, ptr %9, align 8, !tbaa !5
  %1484 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %1483, i32 0, i32 0
  store i32 17, ptr %1484, align 8, !tbaa !20
  br label %2695

1485:                                             ; preds = %129
  br label %1486

1486:                                             ; preds = %1485
  br label %1487

1487:                                             ; preds = %1486
  br label %1481

1488:                                             ; No predecessors!
  br label %1489

1489:                                             ; preds = %1488
  br label %1490

1490:                                             ; preds = %1489, %1476, %1473
  %1491 = load i32, ptr %20, align 4, !tbaa !9
  %1492 = sub i32 %1491, 16
  %1493 = zext i32 %1492 to i64
  %1494 = getelementptr inbounds [4 x i8], ptr @.str.15, i64 0, i64 %1493
  %1495 = load i8, ptr %1494, align 1, !tbaa !27
  %1496 = sext i8 %1495 to i32
  store i32 %1496, ptr %22, align 4, !tbaa !9
  br label %1497

1497:                                             ; preds = %1490
  %1498 = load i32, ptr %19, align 4, !tbaa !9
  %1499 = load i32, ptr %22, align 4, !tbaa !9
  %1500 = icmp ult i32 %1498, %1499
  br i1 %1500, label %1501, label %1541

1501:                                             ; preds = %1497
  br label %1502

1502:                                             ; preds = %1536, %1501
  br label %1503

1503:                                             ; preds = %1502
  br label %1504

1504:                                             ; preds = %1519, %1503
  %1505 = load ptr, ptr %24, align 8, !tbaa !5
  %1506 = load ptr, ptr %25, align 8, !tbaa !5
  %1507 = icmp uge ptr %1505, %1506
  br i1 %1507, label %1508, label %1520

1508:                                             ; preds = %1504
  br label %1509

1509:                                             ; preds = %1508
  %1510 = load i32, ptr %15, align 4, !tbaa !9
  %1511 = and i32 %1510, 2
  %1512 = icmp ne i32 %1511, 0
  %1513 = zext i1 %1512 to i64
  %1514 = select i1 %1512, i32 1, i32 -4
  store i32 %1514, ptr %18, align 4, !tbaa !9
  %1515 = load ptr, ptr %9, align 8, !tbaa !5
  %1516 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %1515, i32 0, i32 0
  store i32 18, ptr %1516, align 8, !tbaa !20
  br label %2695

1517:                                             ; preds = %129
  br label %1518

1518:                                             ; preds = %1517
  br label %1519

1519:                                             ; preds = %1518
  br label %1504, !llvm.loop !69

1520:                                             ; preds = %1504
  %1521 = load ptr, ptr %24, align 8, !tbaa !5
  %1522 = getelementptr inbounds i8, ptr %1521, i32 1
  store ptr %1522, ptr %24, align 8, !tbaa !5
  %1523 = load i8, ptr %1521, align 1, !tbaa !27
  %1524 = zext i8 %1523 to i32
  store i32 %1524, ptr %62, align 4, !tbaa !9
  br label %1525

1525:                                             ; preds = %1520
  br label %1526

1526:                                             ; preds = %1525
  %1527 = load i32, ptr %62, align 4, !tbaa !9
  %1528 = zext i32 %1527 to i64
  %1529 = load i32, ptr %19, align 4, !tbaa !9
  %1530 = zext i32 %1529 to i64
  %1531 = shl i64 %1528, %1530
  %1532 = load i64, ptr %23, align 8, !tbaa !11
  %1533 = or i64 %1532, %1531
  store i64 %1533, ptr %23, align 8, !tbaa !11
  %1534 = load i32, ptr %19, align 4, !tbaa !9
  %1535 = add i32 %1534, 8
  store i32 %1535, ptr %19, align 4, !tbaa !9
  br label %1536

1536:                                             ; preds = %1526
  %1537 = load i32, ptr %19, align 4, !tbaa !9
  %1538 = load i32, ptr %22, align 4, !tbaa !9
  %1539 = icmp ult i32 %1537, %1538
  br i1 %1539, label %1502, label %1540, !llvm.loop !70

1540:                                             ; preds = %1536
  br label %1541

1541:                                             ; preds = %1540, %1497
  %1542 = load i64, ptr %23, align 8, !tbaa !11
  %1543 = load i32, ptr %22, align 4, !tbaa !9
  %1544 = shl i32 1, %1543
  %1545 = sub nsw i32 %1544, 1
  %1546 = sext i32 %1545 to i64
  %1547 = and i64 %1542, %1546
  %1548 = trunc i64 %1547 to i32
  store i32 %1548, ptr %58, align 4, !tbaa !9
  %1549 = load i32, ptr %22, align 4, !tbaa !9
  %1550 = load i64, ptr %23, align 8, !tbaa !11
  %1551 = zext i32 %1549 to i64
  %1552 = lshr i64 %1550, %1551
  store i64 %1552, ptr %23, align 8, !tbaa !11
  %1553 = load i32, ptr %22, align 4, !tbaa !9
  %1554 = load i32, ptr %19, align 4, !tbaa !9
  %1555 = sub i32 %1554, %1553
  store i32 %1555, ptr %19, align 4, !tbaa !9
  br label %1556

1556:                                             ; preds = %1541
  br label %1557

1557:                                             ; preds = %1556
  %1558 = load i32, ptr %20, align 4, !tbaa !9
  %1559 = sub i32 %1558, 16
  %1560 = zext i32 %1559 to i64
  %1561 = getelementptr inbounds [4 x i8], ptr @.str.16, i64 0, i64 %1560
  %1562 = load i8, ptr %1561, align 1, !tbaa !27
  %1563 = sext i8 %1562 to i32
  %1564 = load i32, ptr %58, align 4, !tbaa !9
  %1565 = add i32 %1564, %1563
  store i32 %1565, ptr %58, align 4, !tbaa !9
  %1566 = load ptr, ptr %9, align 8, !tbaa !5
  %1567 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %1566, i32 0, i32 22
  %1568 = getelementptr inbounds [457 x i8], ptr %1567, i64 0, i64 0
  %1569 = load i32, ptr %21, align 4, !tbaa !9
  %1570 = zext i32 %1569 to i64
  %1571 = getelementptr inbounds i8, ptr %1568, i64 %1570
  %1572 = load i32, ptr %20, align 4, !tbaa !9
  %1573 = icmp eq i32 %1572, 16
  br i1 %1573, label %1574, label %1583

1574:                                             ; preds = %1557
  %1575 = load ptr, ptr %9, align 8, !tbaa !5
  %1576 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %1575, i32 0, i32 22
  %1577 = load i32, ptr %21, align 4, !tbaa !9
  %1578 = sub i32 %1577, 1
  %1579 = zext i32 %1578 to i64
  %1580 = getelementptr inbounds [457 x i8], ptr %1576, i64 0, i64 %1579
  %1581 = load i8, ptr %1580, align 1, !tbaa !27
  %1582 = zext i8 %1581 to i32
  br label %1584

1583:                                             ; preds = %1557
  br label %1584

1584:                                             ; preds = %1583, %1574
  %1585 = phi i32 [ %1582, %1574 ], [ 0, %1583 ]
  %1586 = trunc i32 %1585 to i8
  %1587 = load i32, ptr %58, align 4, !tbaa !9
  %1588 = zext i32 %1587 to i64
  call void @llvm.memset.p0.i64(ptr align 1 %1571, i8 %1586, i64 %1588, i1 false)
  %1589 = load i32, ptr %58, align 4, !tbaa !9
  %1590 = load i32, ptr %21, align 4, !tbaa !9
  %1591 = add i32 %1590, %1589
  store i32 %1591, ptr %21, align 4, !tbaa !9
  br label %1271, !llvm.loop !68

1592:                                             ; preds = %1271
  %1593 = load ptr, ptr %9, align 8, !tbaa !5
  %1594 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %1593, i32 0, i32 11
  %1595 = getelementptr inbounds [3 x i32], ptr %1594, i64 0, i64 0
  %1596 = load i32, ptr %1595, align 4, !tbaa !9
  %1597 = load ptr, ptr %9, align 8, !tbaa !5
  %1598 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %1597, i32 0, i32 11
  %1599 = getelementptr inbounds [3 x i32], ptr %1598, i64 0, i64 1
  %1600 = load i32, ptr %1599, align 4, !tbaa !9
  %1601 = add i32 %1596, %1600
  %1602 = load i32, ptr %21, align 4, !tbaa !9
  %1603 = icmp ne i32 %1601, %1602
  br i1 %1603, label %1604, label %1615

1604:                                             ; preds = %1592
  br label %1605

1605:                                             ; preds = %1604
  br label %1606

1606:                                             ; preds = %1612, %1605
  br label %1607

1607:                                             ; preds = %1606
  store i32 -1, ptr %18, align 4, !tbaa !9
  %1608 = load ptr, ptr %9, align 8, !tbaa !5
  %1609 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %1608, i32 0, i32 0
  store i32 21, ptr %1609, align 8, !tbaa !20
  br label %2695

1610:                                             ; preds = %129
  br label %1611

1611:                                             ; preds = %1610
  br label %1612

1612:                                             ; preds = %1611
  br label %1606

1613:                                             ; No predecessors!
  br label %1614

1614:                                             ; preds = %1613
  br label %1615

1615:                                             ; preds = %1614, %1592
  %1616 = load ptr, ptr %9, align 8, !tbaa !5
  %1617 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %1616, i32 0, i32 18
  %1618 = getelementptr inbounds [288 x i8], ptr %1617, i64 0, i64 0
  %1619 = load ptr, ptr %9, align 8, !tbaa !5
  %1620 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %1619, i32 0, i32 22
  %1621 = getelementptr inbounds [457 x i8], ptr %1620, i64 0, i64 0
  %1622 = load ptr, ptr %9, align 8, !tbaa !5
  %1623 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %1622, i32 0, i32 11
  %1624 = getelementptr inbounds [3 x i32], ptr %1623, i64 0, i64 0
  %1625 = load i32, ptr %1624, align 4, !tbaa !9
  %1626 = zext i32 %1625 to i64
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %1618, ptr align 1 %1621, i64 %1626, i1 false)
  %1627 = load ptr, ptr %9, align 8, !tbaa !5
  %1628 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %1627, i32 0, i32 19
  %1629 = getelementptr inbounds [32 x i8], ptr %1628, i64 0, i64 0
  %1630 = load ptr, ptr %9, align 8, !tbaa !5
  %1631 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %1630, i32 0, i32 22
  %1632 = getelementptr inbounds [457 x i8], ptr %1631, i64 0, i64 0
  %1633 = load ptr, ptr %9, align 8, !tbaa !5
  %1634 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %1633, i32 0, i32 11
  %1635 = getelementptr inbounds [3 x i32], ptr %1634, i64 0, i64 0
  %1636 = load i32, ptr %1635, align 4, !tbaa !9
  %1637 = zext i32 %1636 to i64
  %1638 = getelementptr inbounds i8, ptr %1632, i64 %1637
  %1639 = load ptr, ptr %9, align 8, !tbaa !5
  %1640 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %1639, i32 0, i32 11
  %1641 = getelementptr inbounds [3 x i32], ptr %1640, i64 0, i64 1
  %1642 = load i32, ptr %1641, align 4, !tbaa !9
  %1643 = zext i32 %1642 to i64
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %1629, ptr align 1 %1638, i64 %1643, i1 false)
  br label %1644

1644:                                             ; preds = %1615, %1265
  br label %1645

1645:                                             ; preds = %1644
  %1646 = load ptr, ptr %9, align 8, !tbaa !5
  %1647 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %1646, i32 0, i32 6
  %1648 = load i32, ptr %1647, align 8, !tbaa !32
  %1649 = add i32 %1648, -1
  store i32 %1649, ptr %1647, align 8, !tbaa !32
  br label %1016, !llvm.loop !71

1650:                                             ; preds = %1016
  br label %1651

1651:                                             ; preds = %2486, %2437, %1650
  br label %1652

1652:                                             ; preds = %2011, %1651
  %1653 = load ptr, ptr %25, align 8, !tbaa !5
  %1654 = load ptr, ptr %24, align 8, !tbaa !5
  %1655 = ptrtoint ptr %1653 to i64
  %1656 = ptrtoint ptr %1654 to i64
  %1657 = sub i64 %1655, %1656
  %1658 = icmp slt i64 %1657, 4
  br i1 %1658, label %1666, label %1659

1659:                                             ; preds = %1652
  %1660 = load ptr, ptr %27, align 8, !tbaa !5
  %1661 = load ptr, ptr %26, align 8, !tbaa !5
  %1662 = ptrtoint ptr %1660 to i64
  %1663 = ptrtoint ptr %1661 to i64
  %1664 = sub i64 %1662, %1663
  %1665 = icmp slt i64 %1664, 2
  br i1 %1665, label %1666, label %1865

1666:                                             ; preds = %1659, %1652
  br label %1667

1667:                                             ; preds = %1666
  %1668 = load i32, ptr %19, align 4, !tbaa !9
  %1669 = icmp ult i32 %1668, 15
  br i1 %1669, label %1670, label %1798

1670:                                             ; preds = %1667
  %1671 = load ptr, ptr %25, align 8, !tbaa !5
  %1672 = load ptr, ptr %24, align 8, !tbaa !5
  %1673 = ptrtoint ptr %1671 to i64
  %1674 = ptrtoint ptr %1672 to i64
  %1675 = sub i64 %1673, %1674
  %1676 = icmp slt i64 %1675, 2
  br i1 %1676, label %1677, label %1774

1677:                                             ; preds = %1670
  br label %1678

1678:                                             ; preds = %1770, %1677
  %1679 = load ptr, ptr %9, align 8, !tbaa !5
  %1680 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %1679, i32 0, i32 14
  %1681 = getelementptr inbounds [3 x [1024 x i16]], ptr %1680, i64 0, i64 0
  %1682 = load i64, ptr %23, align 8, !tbaa !11
  %1683 = and i64 %1682, 1023
  %1684 = getelementptr inbounds [1024 x i16], ptr %1681, i64 0, i64 %1683
  %1685 = load i16, ptr %1684, align 2, !tbaa !52
  %1686 = sext i16 %1685 to i32
  store i32 %1686, ptr %64, align 4, !tbaa !9
  %1687 = load i32, ptr %64, align 4, !tbaa !9
  %1688 = icmp sge i32 %1687, 0
  br i1 %1688, label %1689, label %1700

1689:                                             ; preds = %1678
  %1690 = load i32, ptr %64, align 4, !tbaa !9
  %1691 = ashr i32 %1690, 9
  store i32 %1691, ptr %65, align 4, !tbaa !9
  %1692 = load i32, ptr %65, align 4, !tbaa !9
  %1693 = icmp ne i32 %1692, 0
  br i1 %1693, label %1694, label %1699

1694:                                             ; preds = %1689
  %1695 = load i32, ptr %19, align 4, !tbaa !9
  %1696 = load i32, ptr %65, align 4, !tbaa !9
  %1697 = icmp uge i32 %1695, %1696
  br i1 %1697, label %1698, label %1699

1698:                                             ; preds = %1694
  br label %1773

1699:                                             ; preds = %1694, %1689
  br label %1736

1700:                                             ; preds = %1678
  %1701 = load i32, ptr %19, align 4, !tbaa !9
  %1702 = icmp ugt i32 %1701, 10
  br i1 %1702, label %1703, label %1735

1703:                                             ; preds = %1700
  store i32 10, ptr %65, align 4, !tbaa !9
  br label %1704

1704:                                             ; preds = %1728, %1703
  %1705 = load ptr, ptr %9, align 8, !tbaa !5
  %1706 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %1705, i32 0, i32 15
  %1707 = load i32, ptr %64, align 4, !tbaa !9
  %1708 = xor i32 %1707, -1
  %1709 = sext i32 %1708 to i64
  %1710 = load i64, ptr %23, align 8, !tbaa !11
  %1711 = load i32, ptr %65, align 4, !tbaa !9
  %1712 = add i32 %1711, 1
  store i32 %1712, ptr %65, align 4, !tbaa !9
  %1713 = zext i32 %1711 to i64
  %1714 = lshr i64 %1710, %1713
  %1715 = and i64 %1714, 1
  %1716 = add i64 %1709, %1715
  %1717 = getelementptr inbounds [576 x i16], ptr %1706, i64 0, i64 %1716
  %1718 = load i16, ptr %1717, align 2, !tbaa !52
  %1719 = sext i16 %1718 to i32
  store i32 %1719, ptr %64, align 4, !tbaa !9
  br label %1720

1720:                                             ; preds = %1704
  %1721 = load i32, ptr %64, align 4, !tbaa !9
  %1722 = icmp slt i32 %1721, 0
  br i1 %1722, label %1723, label %1728

1723:                                             ; preds = %1720
  %1724 = load i32, ptr %19, align 4, !tbaa !9
  %1725 = load i32, ptr %65, align 4, !tbaa !9
  %1726 = add i32 %1725, 1
  %1727 = icmp uge i32 %1724, %1726
  br label %1728

1728:                                             ; preds = %1723, %1720
  %1729 = phi i1 [ false, %1720 ], [ %1727, %1723 ]
  br i1 %1729, label %1704, label %1730, !llvm.loop !72

1730:                                             ; preds = %1728
  %1731 = load i32, ptr %64, align 4, !tbaa !9
  %1732 = icmp sge i32 %1731, 0
  br i1 %1732, label %1733, label %1734

1733:                                             ; preds = %1730
  br label %1773

1734:                                             ; preds = %1730
  br label %1735

1735:                                             ; preds = %1734, %1700
  br label %1736

1736:                                             ; preds = %1735, %1699
  br label %1737

1737:                                             ; preds = %1736
  br label %1738

1738:                                             ; preds = %1753, %1737
  %1739 = load ptr, ptr %24, align 8, !tbaa !5
  %1740 = load ptr, ptr %25, align 8, !tbaa !5
  %1741 = icmp uge ptr %1739, %1740
  br i1 %1741, label %1742, label %1754

1742:                                             ; preds = %1738
  br label %1743

1743:                                             ; preds = %1742
  %1744 = load i32, ptr %15, align 4, !tbaa !9
  %1745 = and i32 %1744, 2
  %1746 = icmp ne i32 %1745, 0
  %1747 = zext i1 %1746 to i64
  %1748 = select i1 %1746, i32 1, i32 -4
  store i32 %1748, ptr %18, align 4, !tbaa !9
  %1749 = load ptr, ptr %9, align 8, !tbaa !5
  %1750 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %1749, i32 0, i32 0
  store i32 23, ptr %1750, align 8, !tbaa !20
  br label %2695

1751:                                             ; preds = %129
  br label %1752

1752:                                             ; preds = %1751
  br label %1753

1753:                                             ; preds = %1752
  br label %1738, !llvm.loop !73

1754:                                             ; preds = %1738
  %1755 = load ptr, ptr %24, align 8, !tbaa !5
  %1756 = getelementptr inbounds i8, ptr %1755, i32 1
  store ptr %1756, ptr %24, align 8, !tbaa !5
  %1757 = load i8, ptr %1755, align 1, !tbaa !27
  %1758 = zext i8 %1757 to i32
  store i32 %1758, ptr %66, align 4, !tbaa !9
  br label %1759

1759:                                             ; preds = %1754
  br label %1760

1760:                                             ; preds = %1759
  %1761 = load i32, ptr %66, align 4, !tbaa !9
  %1762 = zext i32 %1761 to i64
  %1763 = load i32, ptr %19, align 4, !tbaa !9
  %1764 = zext i32 %1763 to i64
  %1765 = shl i64 %1762, %1764
  %1766 = load i64, ptr %23, align 8, !tbaa !11
  %1767 = or i64 %1766, %1765
  store i64 %1767, ptr %23, align 8, !tbaa !11
  %1768 = load i32, ptr %19, align 4, !tbaa !9
  %1769 = add i32 %1768, 8
  store i32 %1769, ptr %19, align 4, !tbaa !9
  br label %1770

1770:                                             ; preds = %1760
  %1771 = load i32, ptr %19, align 4, !tbaa !9
  %1772 = icmp ult i32 %1771, 15
  br i1 %1772, label %1678, label %1773, !llvm.loop !74

1773:                                             ; preds = %1770, %1733, %1698
  br label %1797

1774:                                             ; preds = %1670
  %1775 = load ptr, ptr %24, align 8, !tbaa !5
  %1776 = getelementptr inbounds i8, ptr %1775, i64 0
  %1777 = load i8, ptr %1776, align 1, !tbaa !27
  %1778 = zext i8 %1777 to i64
  %1779 = load i32, ptr %19, align 4, !tbaa !9
  %1780 = zext i32 %1779 to i64
  %1781 = shl i64 %1778, %1780
  %1782 = load ptr, ptr %24, align 8, !tbaa !5
  %1783 = getelementptr inbounds i8, ptr %1782, i64 1
  %1784 = load i8, ptr %1783, align 1, !tbaa !27
  %1785 = zext i8 %1784 to i64
  %1786 = load i32, ptr %19, align 4, !tbaa !9
  %1787 = add i32 %1786, 8
  %1788 = zext i32 %1787 to i64
  %1789 = shl i64 %1785, %1788
  %1790 = or i64 %1781, %1789
  %1791 = load i64, ptr %23, align 8, !tbaa !11
  %1792 = or i64 %1791, %1790
  store i64 %1792, ptr %23, align 8, !tbaa !11
  %1793 = load ptr, ptr %24, align 8, !tbaa !5
  %1794 = getelementptr inbounds i8, ptr %1793, i64 2
  store ptr %1794, ptr %24, align 8, !tbaa !5
  %1795 = load i32, ptr %19, align 4, !tbaa !9
  %1796 = add i32 %1795, 16
  store i32 %1796, ptr %19, align 4, !tbaa !9
  br label %1797

1797:                                             ; preds = %1774, %1773
  br label %1798

1798:                                             ; preds = %1797, %1667
  %1799 = load ptr, ptr %9, align 8, !tbaa !5
  %1800 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %1799, i32 0, i32 14
  %1801 = getelementptr inbounds [3 x [1024 x i16]], ptr %1800, i64 0, i64 0
  %1802 = load i64, ptr %23, align 8, !tbaa !11
  %1803 = and i64 %1802, 1023
  %1804 = getelementptr inbounds [1024 x i16], ptr %1801, i64 0, i64 %1803
  %1805 = load i16, ptr %1804, align 2, !tbaa !52
  %1806 = sext i16 %1805 to i32
  store i32 %1806, ptr %64, align 4, !tbaa !9
  %1807 = icmp sge i32 %1806, 0
  br i1 %1807, label %1808, label %1813

1808:                                             ; preds = %1798
  %1809 = load i32, ptr %64, align 4, !tbaa !9
  %1810 = ashr i32 %1809, 9
  store i32 %1810, ptr %65, align 4, !tbaa !9
  %1811 = load i32, ptr %64, align 4, !tbaa !9
  %1812 = and i32 %1811, 511
  store i32 %1812, ptr %64, align 4, !tbaa !9
  br label %1834

1813:                                             ; preds = %1798
  store i32 10, ptr %65, align 4, !tbaa !9
  br label %1814

1814:                                             ; preds = %1830, %1813
  %1815 = load ptr, ptr %9, align 8, !tbaa !5
  %1816 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %1815, i32 0, i32 15
  %1817 = load i32, ptr %64, align 4, !tbaa !9
  %1818 = xor i32 %1817, -1
  %1819 = sext i32 %1818 to i64
  %1820 = load i64, ptr %23, align 8, !tbaa !11
  %1821 = load i32, ptr %65, align 4, !tbaa !9
  %1822 = add i32 %1821, 1
  store i32 %1822, ptr %65, align 4, !tbaa !9
  %1823 = zext i32 %1821 to i64
  %1824 = lshr i64 %1820, %1823
  %1825 = and i64 %1824, 1
  %1826 = add i64 %1819, %1825
  %1827 = getelementptr inbounds [576 x i16], ptr %1816, i64 0, i64 %1826
  %1828 = load i16, ptr %1827, align 2, !tbaa !52
  %1829 = sext i16 %1828 to i32
  store i32 %1829, ptr %64, align 4, !tbaa !9
  br label %1830

1830:                                             ; preds = %1814
  %1831 = load i32, ptr %64, align 4, !tbaa !9
  %1832 = icmp slt i32 %1831, 0
  br i1 %1832, label %1814, label %1833, !llvm.loop !75

1833:                                             ; preds = %1830
  br label %1834

1834:                                             ; preds = %1833, %1808
  %1835 = load i32, ptr %64, align 4, !tbaa !9
  store i32 %1835, ptr %21, align 4, !tbaa !9
  %1836 = load i32, ptr %65, align 4, !tbaa !9
  %1837 = load i64, ptr %23, align 8, !tbaa !11
  %1838 = zext i32 %1836 to i64
  %1839 = lshr i64 %1837, %1838
  store i64 %1839, ptr %23, align 8, !tbaa !11
  %1840 = load i32, ptr %65, align 4, !tbaa !9
  %1841 = load i32, ptr %19, align 4, !tbaa !9
  %1842 = sub i32 %1841, %1840
  store i32 %1842, ptr %19, align 4, !tbaa !9
  br label %1843

1843:                                             ; preds = %1834
  br label %1844

1844:                                             ; preds = %1843
  %1845 = load i32, ptr %21, align 4, !tbaa !9
  %1846 = icmp uge i32 %1845, 256
  br i1 %1846, label %1847, label %1848

1847:                                             ; preds = %1844
  br label %2012

1848:                                             ; preds = %1844
  br label %1849

1849:                                             ; preds = %1859, %1848
  %1850 = load ptr, ptr %26, align 8, !tbaa !5
  %1851 = load ptr, ptr %27, align 8, !tbaa !5
  %1852 = icmp uge ptr %1850, %1851
  br i1 %1852, label %1853, label %1860

1853:                                             ; preds = %1849
  br label %1854

1854:                                             ; preds = %1853
  store i32 2, ptr %18, align 4, !tbaa !9
  %1855 = load ptr, ptr %9, align 8, !tbaa !5
  %1856 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %1855, i32 0, i32 0
  store i32 24, ptr %1856, align 8, !tbaa !20
  br label %2695

1857:                                             ; preds = %129
  br label %1858

1858:                                             ; preds = %1857
  br label %1859

1859:                                             ; preds = %1858
  br label %1849, !llvm.loop !76

1860:                                             ; preds = %1849
  %1861 = load i32, ptr %21, align 4, !tbaa !9
  %1862 = trunc i32 %1861 to i8
  %1863 = load ptr, ptr %26, align 8, !tbaa !5
  %1864 = getelementptr inbounds i8, ptr %1863, i32 1
  store ptr %1864, ptr %26, align 8, !tbaa !5
  store i8 %1862, ptr %1863, align 1, !tbaa !27
  br label %2011

1865:                                             ; preds = %1659
  call void @llvm.lifetime.start.p0(i64 4, ptr %67) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %68) #5
  %1866 = load i32, ptr %19, align 4, !tbaa !9
  %1867 = icmp ult i32 %1866, 30
  br i1 %1867, label %1868, label %1901

1868:                                             ; preds = %1865
  %1869 = load ptr, ptr %24, align 8, !tbaa !5
  %1870 = getelementptr inbounds i8, ptr %1869, i64 0
  %1871 = load i8, ptr %1870, align 1, !tbaa !27
  %1872 = zext i8 %1871 to i32
  %1873 = load ptr, ptr %24, align 8, !tbaa !5
  %1874 = getelementptr inbounds i8, ptr %1873, i64 1
  %1875 = load i8, ptr %1874, align 1, !tbaa !27
  %1876 = zext i8 %1875 to i32
  %1877 = shl i32 %1876, 8
  %1878 = or i32 %1872, %1877
  %1879 = load ptr, ptr %24, align 8, !tbaa !5
  %1880 = getelementptr inbounds i8, ptr %1879, i64 2
  %1881 = load i8, ptr %1880, align 1, !tbaa !27
  %1882 = zext i8 %1881 to i32
  %1883 = shl i32 %1882, 16
  %1884 = or i32 %1878, %1883
  %1885 = load ptr, ptr %24, align 8, !tbaa !5
  %1886 = getelementptr inbounds i8, ptr %1885, i64 3
  %1887 = load i8, ptr %1886, align 1, !tbaa !27
  %1888 = zext i8 %1887 to i32
  %1889 = shl i32 %1888, 24
  %1890 = or i32 %1884, %1889
  %1891 = zext i32 %1890 to i64
  %1892 = load i32, ptr %19, align 4, !tbaa !9
  %1893 = zext i32 %1892 to i64
  %1894 = shl i64 %1891, %1893
  %1895 = load i64, ptr %23, align 8, !tbaa !11
  %1896 = or i64 %1895, %1894
  store i64 %1896, ptr %23, align 8, !tbaa !11
  %1897 = load ptr, ptr %24, align 8, !tbaa !5
  %1898 = getelementptr inbounds i8, ptr %1897, i64 4
  store ptr %1898, ptr %24, align 8, !tbaa !5
  %1899 = load i32, ptr %19, align 4, !tbaa !9
  %1900 = add i32 %1899, 32
  store i32 %1900, ptr %19, align 4, !tbaa !9
  br label %1901

1901:                                             ; preds = %1868, %1865
  %1902 = load ptr, ptr %9, align 8, !tbaa !5
  %1903 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %1902, i32 0, i32 14
  %1904 = getelementptr inbounds [3 x [1024 x i16]], ptr %1903, i64 0, i64 0
  %1905 = load i64, ptr %23, align 8, !tbaa !11
  %1906 = and i64 %1905, 1023
  %1907 = getelementptr inbounds [1024 x i16], ptr %1904, i64 0, i64 %1906
  %1908 = load i16, ptr %1907, align 2, !tbaa !52
  %1909 = sext i16 %1908 to i32
  store i32 %1909, ptr %67, align 4, !tbaa !9
  %1910 = icmp sge i32 %1909, 0
  br i1 %1910, label %1911, label %1914

1911:                                             ; preds = %1901
  %1912 = load i32, ptr %67, align 4, !tbaa !9
  %1913 = ashr i32 %1912, 9
  store i32 %1913, ptr %68, align 4, !tbaa !9
  br label %1935

1914:                                             ; preds = %1901
  store i32 10, ptr %68, align 4, !tbaa !9
  br label %1915

1915:                                             ; preds = %1931, %1914
  %1916 = load ptr, ptr %9, align 8, !tbaa !5
  %1917 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %1916, i32 0, i32 15
  %1918 = load i32, ptr %67, align 4, !tbaa !9
  %1919 = xor i32 %1918, -1
  %1920 = sext i32 %1919 to i64
  %1921 = load i64, ptr %23, align 8, !tbaa !11
  %1922 = load i32, ptr %68, align 4, !tbaa !9
  %1923 = add i32 %1922, 1
  store i32 %1923, ptr %68, align 4, !tbaa !9
  %1924 = zext i32 %1922 to i64
  %1925 = lshr i64 %1921, %1924
  %1926 = and i64 %1925, 1
  %1927 = add i64 %1920, %1926
  %1928 = getelementptr inbounds [576 x i16], ptr %1917, i64 0, i64 %1927
  %1929 = load i16, ptr %1928, align 2, !tbaa !52
  %1930 = sext i16 %1929 to i32
  store i32 %1930, ptr %67, align 4, !tbaa !9
  br label %1931

1931:                                             ; preds = %1915
  %1932 = load i32, ptr %67, align 4, !tbaa !9
  %1933 = icmp slt i32 %1932, 0
  br i1 %1933, label %1915, label %1934, !llvm.loop !77

1934:                                             ; preds = %1931
  br label %1935

1935:                                             ; preds = %1934, %1911
  %1936 = load i32, ptr %67, align 4, !tbaa !9
  store i32 %1936, ptr %21, align 4, !tbaa !9
  %1937 = load i32, ptr %68, align 4, !tbaa !9
  %1938 = load i64, ptr %23, align 8, !tbaa !11
  %1939 = zext i32 %1937 to i64
  %1940 = lshr i64 %1938, %1939
  store i64 %1940, ptr %23, align 8, !tbaa !11
  %1941 = load i32, ptr %68, align 4, !tbaa !9
  %1942 = load i32, ptr %19, align 4, !tbaa !9
  %1943 = sub i32 %1942, %1941
  store i32 %1943, ptr %19, align 4, !tbaa !9
  %1944 = load i32, ptr %21, align 4, !tbaa !9
  %1945 = and i32 %1944, 256
  %1946 = icmp ne i32 %1945, 0
  br i1 %1946, label %1947, label %1948

1947:                                             ; preds = %1935
  store i32 205, ptr %30, align 4
  br label %2008

1948:                                             ; preds = %1935
  %1949 = load ptr, ptr %9, align 8, !tbaa !5
  %1950 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %1949, i32 0, i32 14
  %1951 = getelementptr inbounds [3 x [1024 x i16]], ptr %1950, i64 0, i64 0
  %1952 = load i64, ptr %23, align 8, !tbaa !11
  %1953 = and i64 %1952, 1023
  %1954 = getelementptr inbounds [1024 x i16], ptr %1951, i64 0, i64 %1953
  %1955 = load i16, ptr %1954, align 2, !tbaa !52
  %1956 = sext i16 %1955 to i32
  store i32 %1956, ptr %67, align 4, !tbaa !9
  %1957 = icmp sge i32 %1956, 0
  br i1 %1957, label %1958, label %1961

1958:                                             ; preds = %1948
  %1959 = load i32, ptr %67, align 4, !tbaa !9
  %1960 = ashr i32 %1959, 9
  store i32 %1960, ptr %68, align 4, !tbaa !9
  br label %1982

1961:                                             ; preds = %1948
  store i32 10, ptr %68, align 4, !tbaa !9
  br label %1962

1962:                                             ; preds = %1978, %1961
  %1963 = load ptr, ptr %9, align 8, !tbaa !5
  %1964 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %1963, i32 0, i32 15
  %1965 = load i32, ptr %67, align 4, !tbaa !9
  %1966 = xor i32 %1965, -1
  %1967 = sext i32 %1966 to i64
  %1968 = load i64, ptr %23, align 8, !tbaa !11
  %1969 = load i32, ptr %68, align 4, !tbaa !9
  %1970 = add i32 %1969, 1
  store i32 %1970, ptr %68, align 4, !tbaa !9
  %1971 = zext i32 %1969 to i64
  %1972 = lshr i64 %1968, %1971
  %1973 = and i64 %1972, 1
  %1974 = add i64 %1967, %1973
  %1975 = getelementptr inbounds [576 x i16], ptr %1964, i64 0, i64 %1974
  %1976 = load i16, ptr %1975, align 2, !tbaa !52
  %1977 = sext i16 %1976 to i32
  store i32 %1977, ptr %67, align 4, !tbaa !9
  br label %1978

1978:                                             ; preds = %1962
  %1979 = load i32, ptr %67, align 4, !tbaa !9
  %1980 = icmp slt i32 %1979, 0
  br i1 %1980, label %1962, label %1981, !llvm.loop !78

1981:                                             ; preds = %1978
  br label %1982

1982:                                             ; preds = %1981, %1958
  %1983 = load i32, ptr %68, align 4, !tbaa !9
  %1984 = load i64, ptr %23, align 8, !tbaa !11
  %1985 = zext i32 %1983 to i64
  %1986 = lshr i64 %1984, %1985
  store i64 %1986, ptr %23, align 8, !tbaa !11
  %1987 = load i32, ptr %68, align 4, !tbaa !9
  %1988 = load i32, ptr %19, align 4, !tbaa !9
  %1989 = sub i32 %1988, %1987
  store i32 %1989, ptr %19, align 4, !tbaa !9
  %1990 = load i32, ptr %21, align 4, !tbaa !9
  %1991 = trunc i32 %1990 to i8
  %1992 = load ptr, ptr %26, align 8, !tbaa !5
  %1993 = getelementptr inbounds i8, ptr %1992, i64 0
  store i8 %1991, ptr %1993, align 1, !tbaa !27
  %1994 = load i32, ptr %67, align 4, !tbaa !9
  %1995 = and i32 %1994, 256
  %1996 = icmp ne i32 %1995, 0
  br i1 %1996, label %1997, label %2001

1997:                                             ; preds = %1982
  %1998 = load ptr, ptr %26, align 8, !tbaa !5
  %1999 = getelementptr inbounds i8, ptr %1998, i32 1
  store ptr %1999, ptr %26, align 8, !tbaa !5
  %2000 = load i32, ptr %67, align 4, !tbaa !9
  store i32 %2000, ptr %21, align 4, !tbaa !9
  store i32 205, ptr %30, align 4
  br label %2008

2001:                                             ; preds = %1982
  %2002 = load i32, ptr %67, align 4, !tbaa !9
  %2003 = trunc i32 %2002 to i8
  %2004 = load ptr, ptr %26, align 8, !tbaa !5
  %2005 = getelementptr inbounds i8, ptr %2004, i64 1
  store i8 %2003, ptr %2005, align 1, !tbaa !27
  %2006 = load ptr, ptr %26, align 8, !tbaa !5
  %2007 = getelementptr inbounds i8, ptr %2006, i64 2
  store ptr %2007, ptr %26, align 8, !tbaa !5
  store i32 0, ptr %30, align 4
  br label %2008

2008:                                             ; preds = %2001, %1997, %1947
  call void @llvm.lifetime.end.p0(i64 4, ptr %68) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %67) #5
  %2009 = load i32, ptr %30, align 4
  switch i32 %2009, label %2915 [
    i32 0, label %2010
    i32 205, label %2012
  ]

2010:                                             ; preds = %2008
  br label %2011

2011:                                             ; preds = %2010, %1860
  br label %1652

2012:                                             ; preds = %2008, %1847
  %2013 = load i32, ptr %21, align 4, !tbaa !9
  %2014 = and i32 %2013, 511
  store i32 %2014, ptr %21, align 4, !tbaa !9
  %2015 = icmp eq i32 %2014, 256
  br i1 %2015, label %2016, label %2017

2016:                                             ; preds = %2012
  br label %2487

2017:                                             ; preds = %2012
  %2018 = load i32, ptr %21, align 4, !tbaa !9
  %2019 = sub i32 %2018, 257
  %2020 = zext i32 %2019 to i64
  %2021 = getelementptr inbounds [31 x i8], ptr @tinfl_decompress.s_length_extra, i64 0, i64 %2020
  %2022 = load i8, ptr %2021, align 1, !tbaa !27
  %2023 = zext i8 %2022 to i32
  store i32 %2023, ptr %22, align 4, !tbaa !9
  %2024 = load i32, ptr %21, align 4, !tbaa !9
  %2025 = sub i32 %2024, 257
  %2026 = zext i32 %2025 to i64
  %2027 = getelementptr inbounds [31 x i16], ptr @tinfl_decompress.s_length_base, i64 0, i64 %2026
  %2028 = load i16, ptr %2027, align 2, !tbaa !52
  %2029 = zext i16 %2028 to i32
  store i32 %2029, ptr %21, align 4, !tbaa !9
  %2030 = load i32, ptr %22, align 4, !tbaa !9
  %2031 = icmp ne i32 %2030, 0
  br i1 %2031, label %2032, label %2097

2032:                                             ; preds = %2017
  br label %2033

2033:                                             ; preds = %2032
  %2034 = load i32, ptr %19, align 4, !tbaa !9
  %2035 = load i32, ptr %22, align 4, !tbaa !9
  %2036 = icmp ult i32 %2034, %2035
  br i1 %2036, label %2037, label %2077

2037:                                             ; preds = %2033
  br label %2038

2038:                                             ; preds = %2072, %2037
  br label %2039

2039:                                             ; preds = %2038
  br label %2040

2040:                                             ; preds = %2055, %2039
  %2041 = load ptr, ptr %24, align 8, !tbaa !5
  %2042 = load ptr, ptr %25, align 8, !tbaa !5
  %2043 = icmp uge ptr %2041, %2042
  br i1 %2043, label %2044, label %2056

2044:                                             ; preds = %2040
  br label %2045

2045:                                             ; preds = %2044
  %2046 = load i32, ptr %15, align 4, !tbaa !9
  %2047 = and i32 %2046, 2
  %2048 = icmp ne i32 %2047, 0
  %2049 = zext i1 %2048 to i64
  %2050 = select i1 %2048, i32 1, i32 -4
  store i32 %2050, ptr %18, align 4, !tbaa !9
  %2051 = load ptr, ptr %9, align 8, !tbaa !5
  %2052 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %2051, i32 0, i32 0
  store i32 25, ptr %2052, align 8, !tbaa !20
  br label %2695

2053:                                             ; preds = %129
  br label %2054

2054:                                             ; preds = %2053
  br label %2055

2055:                                             ; preds = %2054
  br label %2040, !llvm.loop !79

2056:                                             ; preds = %2040
  %2057 = load ptr, ptr %24, align 8, !tbaa !5
  %2058 = getelementptr inbounds i8, ptr %2057, i32 1
  store ptr %2058, ptr %24, align 8, !tbaa !5
  %2059 = load i8, ptr %2057, align 1, !tbaa !27
  %2060 = zext i8 %2059 to i32
  store i32 %2060, ptr %70, align 4, !tbaa !9
  br label %2061

2061:                                             ; preds = %2056
  br label %2062

2062:                                             ; preds = %2061
  %2063 = load i32, ptr %70, align 4, !tbaa !9
  %2064 = zext i32 %2063 to i64
  %2065 = load i32, ptr %19, align 4, !tbaa !9
  %2066 = zext i32 %2065 to i64
  %2067 = shl i64 %2064, %2066
  %2068 = load i64, ptr %23, align 8, !tbaa !11
  %2069 = or i64 %2068, %2067
  store i64 %2069, ptr %23, align 8, !tbaa !11
  %2070 = load i32, ptr %19, align 4, !tbaa !9
  %2071 = add i32 %2070, 8
  store i32 %2071, ptr %19, align 4, !tbaa !9
  br label %2072

2072:                                             ; preds = %2062
  %2073 = load i32, ptr %19, align 4, !tbaa !9
  %2074 = load i32, ptr %22, align 4, !tbaa !9
  %2075 = icmp ult i32 %2073, %2074
  br i1 %2075, label %2038, label %2076, !llvm.loop !80

2076:                                             ; preds = %2072
  br label %2077

2077:                                             ; preds = %2076, %2033
  %2078 = load i64, ptr %23, align 8, !tbaa !11
  %2079 = load i32, ptr %22, align 4, !tbaa !9
  %2080 = shl i32 1, %2079
  %2081 = sub nsw i32 %2080, 1
  %2082 = sext i32 %2081 to i64
  %2083 = and i64 %2078, %2082
  %2084 = trunc i64 %2083 to i32
  store i32 %2084, ptr %69, align 4, !tbaa !9
  %2085 = load i32, ptr %22, align 4, !tbaa !9
  %2086 = load i64, ptr %23, align 8, !tbaa !11
  %2087 = zext i32 %2085 to i64
  %2088 = lshr i64 %2086, %2087
  store i64 %2088, ptr %23, align 8, !tbaa !11
  %2089 = load i32, ptr %22, align 4, !tbaa !9
  %2090 = load i32, ptr %19, align 4, !tbaa !9
  %2091 = sub i32 %2090, %2089
  store i32 %2091, ptr %19, align 4, !tbaa !9
  br label %2092

2092:                                             ; preds = %2077
  br label %2093

2093:                                             ; preds = %2092
  %2094 = load i32, ptr %69, align 4, !tbaa !9
  %2095 = load i32, ptr %21, align 4, !tbaa !9
  %2096 = add i32 %2095, %2094
  store i32 %2096, ptr %21, align 4, !tbaa !9
  br label %2097

2097:                                             ; preds = %2093, %2017
  br label %2098

2098:                                             ; preds = %2097
  %2099 = load i32, ptr %19, align 4, !tbaa !9
  %2100 = icmp ult i32 %2099, 15
  br i1 %2100, label %2101, label %2229

2101:                                             ; preds = %2098
  %2102 = load ptr, ptr %25, align 8, !tbaa !5
  %2103 = load ptr, ptr %24, align 8, !tbaa !5
  %2104 = ptrtoint ptr %2102 to i64
  %2105 = ptrtoint ptr %2103 to i64
  %2106 = sub i64 %2104, %2105
  %2107 = icmp slt i64 %2106, 2
  br i1 %2107, label %2108, label %2205

2108:                                             ; preds = %2101
  br label %2109

2109:                                             ; preds = %2201, %2108
  %2110 = load ptr, ptr %9, align 8, !tbaa !5
  %2111 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %2110, i32 0, i32 14
  %2112 = getelementptr inbounds [3 x [1024 x i16]], ptr %2111, i64 0, i64 1
  %2113 = load i64, ptr %23, align 8, !tbaa !11
  %2114 = and i64 %2113, 1023
  %2115 = getelementptr inbounds [1024 x i16], ptr %2112, i64 0, i64 %2114
  %2116 = load i16, ptr %2115, align 2, !tbaa !52
  %2117 = sext i16 %2116 to i32
  store i32 %2117, ptr %71, align 4, !tbaa !9
  %2118 = load i32, ptr %71, align 4, !tbaa !9
  %2119 = icmp sge i32 %2118, 0
  br i1 %2119, label %2120, label %2131

2120:                                             ; preds = %2109
  %2121 = load i32, ptr %71, align 4, !tbaa !9
  %2122 = ashr i32 %2121, 9
  store i32 %2122, ptr %72, align 4, !tbaa !9
  %2123 = load i32, ptr %72, align 4, !tbaa !9
  %2124 = icmp ne i32 %2123, 0
  br i1 %2124, label %2125, label %2130

2125:                                             ; preds = %2120
  %2126 = load i32, ptr %19, align 4, !tbaa !9
  %2127 = load i32, ptr %72, align 4, !tbaa !9
  %2128 = icmp uge i32 %2126, %2127
  br i1 %2128, label %2129, label %2130

2129:                                             ; preds = %2125
  br label %2204

2130:                                             ; preds = %2125, %2120
  br label %2167

2131:                                             ; preds = %2109
  %2132 = load i32, ptr %19, align 4, !tbaa !9
  %2133 = icmp ugt i32 %2132, 10
  br i1 %2133, label %2134, label %2166

2134:                                             ; preds = %2131
  store i32 10, ptr %72, align 4, !tbaa !9
  br label %2135

2135:                                             ; preds = %2159, %2134
  %2136 = load ptr, ptr %9, align 8, !tbaa !5
  %2137 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %2136, i32 0, i32 16
  %2138 = load i32, ptr %71, align 4, !tbaa !9
  %2139 = xor i32 %2138, -1
  %2140 = sext i32 %2139 to i64
  %2141 = load i64, ptr %23, align 8, !tbaa !11
  %2142 = load i32, ptr %72, align 4, !tbaa !9
  %2143 = add i32 %2142, 1
  store i32 %2143, ptr %72, align 4, !tbaa !9
  %2144 = zext i32 %2142 to i64
  %2145 = lshr i64 %2141, %2144
  %2146 = and i64 %2145, 1
  %2147 = add i64 %2140, %2146
  %2148 = getelementptr inbounds [64 x i16], ptr %2137, i64 0, i64 %2147
  %2149 = load i16, ptr %2148, align 2, !tbaa !52
  %2150 = sext i16 %2149 to i32
  store i32 %2150, ptr %71, align 4, !tbaa !9
  br label %2151

2151:                                             ; preds = %2135
  %2152 = load i32, ptr %71, align 4, !tbaa !9
  %2153 = icmp slt i32 %2152, 0
  br i1 %2153, label %2154, label %2159

2154:                                             ; preds = %2151
  %2155 = load i32, ptr %19, align 4, !tbaa !9
  %2156 = load i32, ptr %72, align 4, !tbaa !9
  %2157 = add i32 %2156, 1
  %2158 = icmp uge i32 %2155, %2157
  br label %2159

2159:                                             ; preds = %2154, %2151
  %2160 = phi i1 [ false, %2151 ], [ %2158, %2154 ]
  br i1 %2160, label %2135, label %2161, !llvm.loop !81

2161:                                             ; preds = %2159
  %2162 = load i32, ptr %71, align 4, !tbaa !9
  %2163 = icmp sge i32 %2162, 0
  br i1 %2163, label %2164, label %2165

2164:                                             ; preds = %2161
  br label %2204

2165:                                             ; preds = %2161
  br label %2166

2166:                                             ; preds = %2165, %2131
  br label %2167

2167:                                             ; preds = %2166, %2130
  br label %2168

2168:                                             ; preds = %2167
  br label %2169

2169:                                             ; preds = %2184, %2168
  %2170 = load ptr, ptr %24, align 8, !tbaa !5
  %2171 = load ptr, ptr %25, align 8, !tbaa !5
  %2172 = icmp uge ptr %2170, %2171
  br i1 %2172, label %2173, label %2185

2173:                                             ; preds = %2169
  br label %2174

2174:                                             ; preds = %2173
  %2175 = load i32, ptr %15, align 4, !tbaa !9
  %2176 = and i32 %2175, 2
  %2177 = icmp ne i32 %2176, 0
  %2178 = zext i1 %2177 to i64
  %2179 = select i1 %2177, i32 1, i32 -4
  store i32 %2179, ptr %18, align 4, !tbaa !9
  %2180 = load ptr, ptr %9, align 8, !tbaa !5
  %2181 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %2180, i32 0, i32 0
  store i32 26, ptr %2181, align 8, !tbaa !20
  br label %2695

2182:                                             ; preds = %129
  br label %2183

2183:                                             ; preds = %2182
  br label %2184

2184:                                             ; preds = %2183
  br label %2169, !llvm.loop !82

2185:                                             ; preds = %2169
  %2186 = load ptr, ptr %24, align 8, !tbaa !5
  %2187 = getelementptr inbounds i8, ptr %2186, i32 1
  store ptr %2187, ptr %24, align 8, !tbaa !5
  %2188 = load i8, ptr %2186, align 1, !tbaa !27
  %2189 = zext i8 %2188 to i32
  store i32 %2189, ptr %73, align 4, !tbaa !9
  br label %2190

2190:                                             ; preds = %2185
  br label %2191

2191:                                             ; preds = %2190
  %2192 = load i32, ptr %73, align 4, !tbaa !9
  %2193 = zext i32 %2192 to i64
  %2194 = load i32, ptr %19, align 4, !tbaa !9
  %2195 = zext i32 %2194 to i64
  %2196 = shl i64 %2193, %2195
  %2197 = load i64, ptr %23, align 8, !tbaa !11
  %2198 = or i64 %2197, %2196
  store i64 %2198, ptr %23, align 8, !tbaa !11
  %2199 = load i32, ptr %19, align 4, !tbaa !9
  %2200 = add i32 %2199, 8
  store i32 %2200, ptr %19, align 4, !tbaa !9
  br label %2201

2201:                                             ; preds = %2191
  %2202 = load i32, ptr %19, align 4, !tbaa !9
  %2203 = icmp ult i32 %2202, 15
  br i1 %2203, label %2109, label %2204, !llvm.loop !83

2204:                                             ; preds = %2201, %2164, %2129
  br label %2228

2205:                                             ; preds = %2101
  %2206 = load ptr, ptr %24, align 8, !tbaa !5
  %2207 = getelementptr inbounds i8, ptr %2206, i64 0
  %2208 = load i8, ptr %2207, align 1, !tbaa !27
  %2209 = zext i8 %2208 to i64
  %2210 = load i32, ptr %19, align 4, !tbaa !9
  %2211 = zext i32 %2210 to i64
  %2212 = shl i64 %2209, %2211
  %2213 = load ptr, ptr %24, align 8, !tbaa !5
  %2214 = getelementptr inbounds i8, ptr %2213, i64 1
  %2215 = load i8, ptr %2214, align 1, !tbaa !27
  %2216 = zext i8 %2215 to i64
  %2217 = load i32, ptr %19, align 4, !tbaa !9
  %2218 = add i32 %2217, 8
  %2219 = zext i32 %2218 to i64
  %2220 = shl i64 %2216, %2219
  %2221 = or i64 %2212, %2220
  %2222 = load i64, ptr %23, align 8, !tbaa !11
  %2223 = or i64 %2222, %2221
  store i64 %2223, ptr %23, align 8, !tbaa !11
  %2224 = load ptr, ptr %24, align 8, !tbaa !5
  %2225 = getelementptr inbounds i8, ptr %2224, i64 2
  store ptr %2225, ptr %24, align 8, !tbaa !5
  %2226 = load i32, ptr %19, align 4, !tbaa !9
  %2227 = add i32 %2226, 16
  store i32 %2227, ptr %19, align 4, !tbaa !9
  br label %2228

2228:                                             ; preds = %2205, %2204
  br label %2229

2229:                                             ; preds = %2228, %2098
  %2230 = load ptr, ptr %9, align 8, !tbaa !5
  %2231 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %2230, i32 0, i32 14
  %2232 = getelementptr inbounds [3 x [1024 x i16]], ptr %2231, i64 0, i64 1
  %2233 = load i64, ptr %23, align 8, !tbaa !11
  %2234 = and i64 %2233, 1023
  %2235 = getelementptr inbounds [1024 x i16], ptr %2232, i64 0, i64 %2234
  %2236 = load i16, ptr %2235, align 2, !tbaa !52
  %2237 = sext i16 %2236 to i32
  store i32 %2237, ptr %71, align 4, !tbaa !9
  %2238 = icmp sge i32 %2237, 0
  br i1 %2238, label %2239, label %2244

2239:                                             ; preds = %2229
  %2240 = load i32, ptr %71, align 4, !tbaa !9
  %2241 = ashr i32 %2240, 9
  store i32 %2241, ptr %72, align 4, !tbaa !9
  %2242 = load i32, ptr %71, align 4, !tbaa !9
  %2243 = and i32 %2242, 511
  store i32 %2243, ptr %71, align 4, !tbaa !9
  br label %2265

2244:                                             ; preds = %2229
  store i32 10, ptr %72, align 4, !tbaa !9
  br label %2245

2245:                                             ; preds = %2261, %2244
  %2246 = load ptr, ptr %9, align 8, !tbaa !5
  %2247 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %2246, i32 0, i32 16
  %2248 = load i32, ptr %71, align 4, !tbaa !9
  %2249 = xor i32 %2248, -1
  %2250 = sext i32 %2249 to i64
  %2251 = load i64, ptr %23, align 8, !tbaa !11
  %2252 = load i32, ptr %72, align 4, !tbaa !9
  %2253 = add i32 %2252, 1
  store i32 %2253, ptr %72, align 4, !tbaa !9
  %2254 = zext i32 %2252 to i64
  %2255 = lshr i64 %2251, %2254
  %2256 = and i64 %2255, 1
  %2257 = add i64 %2250, %2256
  %2258 = getelementptr inbounds [64 x i16], ptr %2247, i64 0, i64 %2257
  %2259 = load i16, ptr %2258, align 2, !tbaa !52
  %2260 = sext i16 %2259 to i32
  store i32 %2260, ptr %71, align 4, !tbaa !9
  br label %2261

2261:                                             ; preds = %2245
  %2262 = load i32, ptr %71, align 4, !tbaa !9
  %2263 = icmp slt i32 %2262, 0
  br i1 %2263, label %2245, label %2264, !llvm.loop !84

2264:                                             ; preds = %2261
  br label %2265

2265:                                             ; preds = %2264, %2239
  %2266 = load i32, ptr %71, align 4, !tbaa !9
  store i32 %2266, ptr %20, align 4, !tbaa !9
  %2267 = load i32, ptr %72, align 4, !tbaa !9
  %2268 = load i64, ptr %23, align 8, !tbaa !11
  %2269 = zext i32 %2267 to i64
  %2270 = lshr i64 %2268, %2269
  store i64 %2270, ptr %23, align 8, !tbaa !11
  %2271 = load i32, ptr %72, align 4, !tbaa !9
  %2272 = load i32, ptr %19, align 4, !tbaa !9
  %2273 = sub i32 %2272, %2271
  store i32 %2273, ptr %19, align 4, !tbaa !9
  br label %2274

2274:                                             ; preds = %2265
  br label %2275

2275:                                             ; preds = %2274
  %2276 = load i32, ptr %20, align 4, !tbaa !9
  %2277 = zext i32 %2276 to i64
  %2278 = getelementptr inbounds [32 x i8], ptr @tinfl_decompress.s_dist_extra, i64 0, i64 %2277
  %2279 = load i8, ptr %2278, align 1, !tbaa !27
  %2280 = zext i8 %2279 to i32
  store i32 %2280, ptr %22, align 4, !tbaa !9
  %2281 = load i32, ptr %20, align 4, !tbaa !9
  %2282 = zext i32 %2281 to i64
  %2283 = getelementptr inbounds [32 x i16], ptr @tinfl_decompress.s_dist_base, i64 0, i64 %2282
  %2284 = load i16, ptr %2283, align 2, !tbaa !52
  %2285 = zext i16 %2284 to i32
  store i32 %2285, ptr %20, align 4, !tbaa !9
  %2286 = load i32, ptr %22, align 4, !tbaa !9
  %2287 = icmp ne i32 %2286, 0
  br i1 %2287, label %2288, label %2353

2288:                                             ; preds = %2275
  br label %2289

2289:                                             ; preds = %2288
  %2290 = load i32, ptr %19, align 4, !tbaa !9
  %2291 = load i32, ptr %22, align 4, !tbaa !9
  %2292 = icmp ult i32 %2290, %2291
  br i1 %2292, label %2293, label %2333

2293:                                             ; preds = %2289
  br label %2294

2294:                                             ; preds = %2328, %2293
  br label %2295

2295:                                             ; preds = %2294
  br label %2296

2296:                                             ; preds = %2311, %2295
  %2297 = load ptr, ptr %24, align 8, !tbaa !5
  %2298 = load ptr, ptr %25, align 8, !tbaa !5
  %2299 = icmp uge ptr %2297, %2298
  br i1 %2299, label %2300, label %2312

2300:                                             ; preds = %2296
  br label %2301

2301:                                             ; preds = %2300
  %2302 = load i32, ptr %15, align 4, !tbaa !9
  %2303 = and i32 %2302, 2
  %2304 = icmp ne i32 %2303, 0
  %2305 = zext i1 %2304 to i64
  %2306 = select i1 %2304, i32 1, i32 -4
  store i32 %2306, ptr %18, align 4, !tbaa !9
  %2307 = load ptr, ptr %9, align 8, !tbaa !5
  %2308 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %2307, i32 0, i32 0
  store i32 27, ptr %2308, align 8, !tbaa !20
  br label %2695

2309:                                             ; preds = %129
  br label %2310

2310:                                             ; preds = %2309
  br label %2311

2311:                                             ; preds = %2310
  br label %2296, !llvm.loop !85

2312:                                             ; preds = %2296
  %2313 = load ptr, ptr %24, align 8, !tbaa !5
  %2314 = getelementptr inbounds i8, ptr %2313, i32 1
  store ptr %2314, ptr %24, align 8, !tbaa !5
  %2315 = load i8, ptr %2313, align 1, !tbaa !27
  %2316 = zext i8 %2315 to i32
  store i32 %2316, ptr %75, align 4, !tbaa !9
  br label %2317

2317:                                             ; preds = %2312
  br label %2318

2318:                                             ; preds = %2317
  %2319 = load i32, ptr %75, align 4, !tbaa !9
  %2320 = zext i32 %2319 to i64
  %2321 = load i32, ptr %19, align 4, !tbaa !9
  %2322 = zext i32 %2321 to i64
  %2323 = shl i64 %2320, %2322
  %2324 = load i64, ptr %23, align 8, !tbaa !11
  %2325 = or i64 %2324, %2323
  store i64 %2325, ptr %23, align 8, !tbaa !11
  %2326 = load i32, ptr %19, align 4, !tbaa !9
  %2327 = add i32 %2326, 8
  store i32 %2327, ptr %19, align 4, !tbaa !9
  br label %2328

2328:                                             ; preds = %2318
  %2329 = load i32, ptr %19, align 4, !tbaa !9
  %2330 = load i32, ptr %22, align 4, !tbaa !9
  %2331 = icmp ult i32 %2329, %2330
  br i1 %2331, label %2294, label %2332, !llvm.loop !86

2332:                                             ; preds = %2328
  br label %2333

2333:                                             ; preds = %2332, %2289
  %2334 = load i64, ptr %23, align 8, !tbaa !11
  %2335 = load i32, ptr %22, align 4, !tbaa !9
  %2336 = shl i32 1, %2335
  %2337 = sub nsw i32 %2336, 1
  %2338 = sext i32 %2337 to i64
  %2339 = and i64 %2334, %2338
  %2340 = trunc i64 %2339 to i32
  store i32 %2340, ptr %74, align 4, !tbaa !9
  %2341 = load i32, ptr %22, align 4, !tbaa !9
  %2342 = load i64, ptr %23, align 8, !tbaa !11
  %2343 = zext i32 %2341 to i64
  %2344 = lshr i64 %2342, %2343
  store i64 %2344, ptr %23, align 8, !tbaa !11
  %2345 = load i32, ptr %22, align 4, !tbaa !9
  %2346 = load i32, ptr %19, align 4, !tbaa !9
  %2347 = sub i32 %2346, %2345
  store i32 %2347, ptr %19, align 4, !tbaa !9
  br label %2348

2348:                                             ; preds = %2333
  br label %2349

2349:                                             ; preds = %2348
  %2350 = load i32, ptr %74, align 4, !tbaa !9
  %2351 = load i32, ptr %20, align 4, !tbaa !9
  %2352 = add i32 %2351, %2350
  store i32 %2352, ptr %20, align 4, !tbaa !9
  br label %2353

2353:                                             ; preds = %2349, %2275
  %2354 = load ptr, ptr %26, align 8, !tbaa !5
  %2355 = load ptr, ptr %12, align 8, !tbaa !5
  %2356 = ptrtoint ptr %2354 to i64
  %2357 = ptrtoint ptr %2355 to i64
  %2358 = sub i64 %2356, %2357
  store i64 %2358, ptr %29, align 8, !tbaa !11
  %2359 = load i32, ptr %20, align 4, !tbaa !9
  %2360 = icmp eq i32 %2359, 0
  br i1 %2360, label %2369, label %2361

2361:                                             ; preds = %2353
  %2362 = load i32, ptr %20, align 4, !tbaa !9
  %2363 = zext i32 %2362 to i64
  %2364 = load i64, ptr %29, align 8, !tbaa !11
  %2365 = icmp ugt i64 %2363, %2364
  br i1 %2365, label %2369, label %2366

2366:                                             ; preds = %2361
  %2367 = load i64, ptr %29, align 8, !tbaa !11
  %2368 = icmp eq i64 %2367, 0
  br i1 %2368, label %2369, label %2384

2369:                                             ; preds = %2366, %2361, %2353
  %2370 = load i32, ptr %15, align 4, !tbaa !9
  %2371 = and i32 %2370, 4
  %2372 = icmp ne i32 %2371, 0
  br i1 %2372, label %2373, label %2384

2373:                                             ; preds = %2369
  br label %2374

2374:                                             ; preds = %2373
  br label %2375

2375:                                             ; preds = %2381, %2374
  br label %2376

2376:                                             ; preds = %2375
  store i32 -1, ptr %18, align 4, !tbaa !9
  %2377 = load ptr, ptr %9, align 8, !tbaa !5
  %2378 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %2377, i32 0, i32 0
  store i32 37, ptr %2378, align 8, !tbaa !20
  br label %2695

2379:                                             ; preds = %129
  br label %2380

2380:                                             ; preds = %2379
  br label %2381

2381:                                             ; preds = %2380
  br label %2375

2382:                                             ; No predecessors!
  br label %2383

2383:                                             ; preds = %2382
  br label %2384

2384:                                             ; preds = %2383, %2369, %2366
  %2385 = load ptr, ptr %12, align 8, !tbaa !5
  %2386 = load i64, ptr %29, align 8, !tbaa !11
  %2387 = load i32, ptr %20, align 4, !tbaa !9
  %2388 = zext i32 %2387 to i64
  %2389 = sub i64 %2386, %2388
  %2390 = load i64, ptr %28, align 8, !tbaa !11
  %2391 = and i64 %2389, %2390
  %2392 = getelementptr inbounds i8, ptr %2385, i64 %2391
  store ptr %2392, ptr %63, align 8, !tbaa !5
  %2393 = load ptr, ptr %26, align 8, !tbaa !5
  %2394 = load ptr, ptr %63, align 8, !tbaa !5
  %2395 = icmp ugt ptr %2393, %2394
  br i1 %2395, label %2396, label %2398

2396:                                             ; preds = %2384
  %2397 = load ptr, ptr %26, align 8, !tbaa !5
  br label %2400

2398:                                             ; preds = %2384
  %2399 = load ptr, ptr %63, align 8, !tbaa !5
  br label %2400

2400:                                             ; preds = %2398, %2396
  %2401 = phi ptr [ %2397, %2396 ], [ %2399, %2398 ]
  %2402 = load i32, ptr %21, align 4, !tbaa !9
  %2403 = zext i32 %2402 to i64
  %2404 = getelementptr inbounds i8, ptr %2401, i64 %2403
  %2405 = load ptr, ptr %27, align 8, !tbaa !5
  %2406 = icmp ugt ptr %2404, %2405
  br i1 %2406, label %2407, label %2438

2407:                                             ; preds = %2400
  br label %2408

2408:                                             ; preds = %2424, %2407
  %2409 = load i32, ptr %21, align 4, !tbaa !9
  %2410 = add i32 %2409, -1
  store i32 %2410, ptr %21, align 4, !tbaa !9
  %2411 = icmp ne i32 %2409, 0
  br i1 %2411, label %2412, label %2437

2412:                                             ; preds = %2408
  br label %2413

2413:                                             ; preds = %2423, %2412
  %2414 = load ptr, ptr %26, align 8, !tbaa !5
  %2415 = load ptr, ptr %27, align 8, !tbaa !5
  %2416 = icmp uge ptr %2414, %2415
  br i1 %2416, label %2417, label %2424

2417:                                             ; preds = %2413
  br label %2418

2418:                                             ; preds = %2417
  store i32 2, ptr %18, align 4, !tbaa !9
  %2419 = load ptr, ptr %9, align 8, !tbaa !5
  %2420 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %2419, i32 0, i32 0
  store i32 53, ptr %2420, align 8, !tbaa !20
  br label %2695

2421:                                             ; preds = %129
  br label %2422

2422:                                             ; preds = %2421
  br label %2423

2423:                                             ; preds = %2422
  br label %2413, !llvm.loop !87

2424:                                             ; preds = %2413
  %2425 = load ptr, ptr %12, align 8, !tbaa !5
  %2426 = load i64, ptr %29, align 8, !tbaa !11
  %2427 = add i64 %2426, 1
  store i64 %2427, ptr %29, align 8, !tbaa !11
  %2428 = load i32, ptr %20, align 4, !tbaa !9
  %2429 = zext i32 %2428 to i64
  %2430 = sub i64 %2426, %2429
  %2431 = load i64, ptr %28, align 8, !tbaa !11
  %2432 = and i64 %2430, %2431
  %2433 = getelementptr inbounds i8, ptr %2425, i64 %2432
  %2434 = load i8, ptr %2433, align 1, !tbaa !27
  %2435 = load ptr, ptr %26, align 8, !tbaa !5
  %2436 = getelementptr inbounds i8, ptr %2435, i32 1
  store ptr %2436, ptr %26, align 8, !tbaa !5
  store i8 %2434, ptr %2435, align 1, !tbaa !27
  br label %2408, !llvm.loop !88

2437:                                             ; preds = %2408
  br label %1651

2438:                                             ; preds = %2400
  br label %2439

2439:                                             ; preds = %2442, %2438
  %2440 = load i32, ptr %21, align 4, !tbaa !9
  %2441 = icmp ugt i32 %2440, 2
  br i1 %2441, label %2442, label %2464

2442:                                             ; preds = %2439
  %2443 = load ptr, ptr %63, align 8, !tbaa !5
  %2444 = getelementptr inbounds i8, ptr %2443, i64 0
  %2445 = load i8, ptr %2444, align 1, !tbaa !27
  %2446 = load ptr, ptr %26, align 8, !tbaa !5
  %2447 = getelementptr inbounds i8, ptr %2446, i64 0
  store i8 %2445, ptr %2447, align 1, !tbaa !27
  %2448 = load ptr, ptr %63, align 8, !tbaa !5
  %2449 = getelementptr inbounds i8, ptr %2448, i64 1
  %2450 = load i8, ptr %2449, align 1, !tbaa !27
  %2451 = load ptr, ptr %26, align 8, !tbaa !5
  %2452 = getelementptr inbounds i8, ptr %2451, i64 1
  store i8 %2450, ptr %2452, align 1, !tbaa !27
  %2453 = load ptr, ptr %63, align 8, !tbaa !5
  %2454 = getelementptr inbounds i8, ptr %2453, i64 2
  %2455 = load i8, ptr %2454, align 1, !tbaa !27
  %2456 = load ptr, ptr %26, align 8, !tbaa !5
  %2457 = getelementptr inbounds i8, ptr %2456, i64 2
  store i8 %2455, ptr %2457, align 1, !tbaa !27
  %2458 = load ptr, ptr %26, align 8, !tbaa !5
  %2459 = getelementptr inbounds i8, ptr %2458, i64 3
  store ptr %2459, ptr %26, align 8, !tbaa !5
  %2460 = load ptr, ptr %63, align 8, !tbaa !5
  %2461 = getelementptr inbounds i8, ptr %2460, i64 3
  store ptr %2461, ptr %63, align 8, !tbaa !5
  %2462 = load i32, ptr %21, align 4, !tbaa !9
  %2463 = sub i32 %2462, 3
  store i32 %2463, ptr %21, align 4, !tbaa !9
  br label %2439, !llvm.loop !89

2464:                                             ; preds = %2439
  %2465 = load i32, ptr %21, align 4, !tbaa !9
  %2466 = icmp ugt i32 %2465, 0
  br i1 %2466, label %2467, label %2486

2467:                                             ; preds = %2464
  %2468 = load ptr, ptr %63, align 8, !tbaa !5
  %2469 = getelementptr inbounds i8, ptr %2468, i64 0
  %2470 = load i8, ptr %2469, align 1, !tbaa !27
  %2471 = load ptr, ptr %26, align 8, !tbaa !5
  %2472 = getelementptr inbounds i8, ptr %2471, i64 0
  store i8 %2470, ptr %2472, align 1, !tbaa !27
  %2473 = load i32, ptr %21, align 4, !tbaa !9
  %2474 = icmp ugt i32 %2473, 1
  br i1 %2474, label %2475, label %2481

2475:                                             ; preds = %2467
  %2476 = load ptr, ptr %63, align 8, !tbaa !5
  %2477 = getelementptr inbounds i8, ptr %2476, i64 1
  %2478 = load i8, ptr %2477, align 1, !tbaa !27
  %2479 = load ptr, ptr %26, align 8, !tbaa !5
  %2480 = getelementptr inbounds i8, ptr %2479, i64 1
  store i8 %2478, ptr %2480, align 1, !tbaa !27
  br label %2481

2481:                                             ; preds = %2475, %2467
  %2482 = load i32, ptr %21, align 4, !tbaa !9
  %2483 = load ptr, ptr %26, align 8, !tbaa !5
  %2484 = zext i32 %2482 to i64
  %2485 = getelementptr inbounds i8, ptr %2483, i64 %2484
  store ptr %2485, ptr %26, align 8, !tbaa !5
  br label %2486

2486:                                             ; preds = %2481, %2464
  br label %1651

2487:                                             ; preds = %2016
  br label %2488

2488:                                             ; preds = %2487, %769
  br label %2489

2489:                                             ; preds = %2488, %753
  br label %2490

2490:                                             ; preds = %2489
  %2491 = load ptr, ptr %9, align 8, !tbaa !5
  %2492 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %2491, i32 0, i32 5
  %2493 = load i32, ptr %2492, align 4, !tbaa !31
  %2494 = and i32 %2493, 1
  %2495 = icmp ne i32 %2494, 0
  %2496 = xor i1 %2495, true
  br i1 %2496, label %308, label %2497, !llvm.loop !90

2497:                                             ; preds = %2490
  br label %2498

2498:                                             ; preds = %2497
  %2499 = load i32, ptr %19, align 4, !tbaa !9
  %2500 = load i32, ptr %19, align 4, !tbaa !9
  %2501 = and i32 %2500, 7
  %2502 = icmp ult i32 %2499, %2501
  br i1 %2502, label %2503, label %2544

2503:                                             ; preds = %2498
  br label %2504

2504:                                             ; preds = %2538, %2503
  br label %2505

2505:                                             ; preds = %2504
  br label %2506

2506:                                             ; preds = %2521, %2505
  %2507 = load ptr, ptr %24, align 8, !tbaa !5
  %2508 = load ptr, ptr %25, align 8, !tbaa !5
  %2509 = icmp uge ptr %2507, %2508
  br i1 %2509, label %2510, label %2522

2510:                                             ; preds = %2506
  br label %2511

2511:                                             ; preds = %2510
  %2512 = load i32, ptr %15, align 4, !tbaa !9
  %2513 = and i32 %2512, 2
  %2514 = icmp ne i32 %2513, 0
  %2515 = zext i1 %2514 to i64
  %2516 = select i1 %2514, i32 1, i32 -4
  store i32 %2516, ptr %18, align 4, !tbaa !9
  %2517 = load ptr, ptr %9, align 8, !tbaa !5
  %2518 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %2517, i32 0, i32 0
  store i32 32, ptr %2518, align 8, !tbaa !20
  br label %2695

2519:                                             ; preds = %129
  br label %2520

2520:                                             ; preds = %2519
  br label %2521

2521:                                             ; preds = %2520
  br label %2506, !llvm.loop !91

2522:                                             ; preds = %2506
  %2523 = load ptr, ptr %24, align 8, !tbaa !5
  %2524 = getelementptr inbounds i8, ptr %2523, i32 1
  store ptr %2524, ptr %24, align 8, !tbaa !5
  %2525 = load i8, ptr %2523, align 1, !tbaa !27
  %2526 = zext i8 %2525 to i32
  store i32 %2526, ptr %76, align 4, !tbaa !9
  br label %2527

2527:                                             ; preds = %2522
  br label %2528

2528:                                             ; preds = %2527
  %2529 = load i32, ptr %76, align 4, !tbaa !9
  %2530 = zext i32 %2529 to i64
  %2531 = load i32, ptr %19, align 4, !tbaa !9
  %2532 = zext i32 %2531 to i64
  %2533 = shl i64 %2530, %2532
  %2534 = load i64, ptr %23, align 8, !tbaa !11
  %2535 = or i64 %2534, %2533
  store i64 %2535, ptr %23, align 8, !tbaa !11
  %2536 = load i32, ptr %19, align 4, !tbaa !9
  %2537 = add i32 %2536, 8
  store i32 %2537, ptr %19, align 4, !tbaa !9
  br label %2538

2538:                                             ; preds = %2528
  %2539 = load i32, ptr %19, align 4, !tbaa !9
  %2540 = load i32, ptr %19, align 4, !tbaa !9
  %2541 = and i32 %2540, 7
  %2542 = icmp ult i32 %2539, %2541
  br i1 %2542, label %2504, label %2543, !llvm.loop !92

2543:                                             ; preds = %2538
  br label %2544

2544:                                             ; preds = %2543, %2498
  %2545 = load i32, ptr %19, align 4, !tbaa !9
  %2546 = and i32 %2545, 7
  %2547 = load i64, ptr %23, align 8, !tbaa !11
  %2548 = zext i32 %2546 to i64
  %2549 = lshr i64 %2547, %2548
  store i64 %2549, ptr %23, align 8, !tbaa !11
  %2550 = load i32, ptr %19, align 4, !tbaa !9
  %2551 = and i32 %2550, 7
  %2552 = load i32, ptr %19, align 4, !tbaa !9
  %2553 = sub i32 %2552, %2551
  store i32 %2553, ptr %19, align 4, !tbaa !9
  br label %2554

2554:                                             ; preds = %2544
  br label %2555

2555:                                             ; preds = %2554
  br label %2556

2556:                                             ; preds = %2565, %2555
  %2557 = load ptr, ptr %24, align 8, !tbaa !5
  %2558 = load ptr, ptr %10, align 8, !tbaa !5
  %2559 = icmp ugt ptr %2557, %2558
  br i1 %2559, label %2560, label %2563

2560:                                             ; preds = %2556
  %2561 = load i32, ptr %19, align 4, !tbaa !9
  %2562 = icmp uge i32 %2561, 8
  br label %2563

2563:                                             ; preds = %2560, %2556
  %2564 = phi i1 [ false, %2556 ], [ %2562, %2560 ]
  br i1 %2564, label %2565, label %2570

2565:                                             ; preds = %2563
  %2566 = load ptr, ptr %24, align 8, !tbaa !5
  %2567 = getelementptr inbounds i8, ptr %2566, i32 -1
  store ptr %2567, ptr %24, align 8, !tbaa !5
  %2568 = load i32, ptr %19, align 4, !tbaa !9
  %2569 = sub i32 %2568, 8
  store i32 %2569, ptr %19, align 4, !tbaa !9
  br label %2556, !llvm.loop !93

2570:                                             ; preds = %2563
  %2571 = load i32, ptr %19, align 4, !tbaa !9
  %2572 = zext i32 %2571 to i64
  %2573 = shl i64 -1, %2572
  %2574 = xor i64 %2573, -1
  %2575 = load i64, ptr %23, align 8, !tbaa !11
  %2576 = and i64 %2575, %2574
  store i64 %2576, ptr %23, align 8, !tbaa !11
  %2577 = load i32, ptr %19, align 4, !tbaa !9
  %2578 = icmp ne i32 %2577, 0
  br i1 %2578, label %2580, label %2579

2579:                                             ; preds = %2570
  br label %2581

2580:                                             ; preds = %2570
  call void @__assert_fail(ptr noundef @.str.17, ptr noundef @.str.12, i32 noundef 2948, ptr noundef @__PRETTY_FUNCTION__.tinfl_decompress) #6
  unreachable

2581:                                             ; preds = %2579
  %2582 = load i32, ptr %15, align 4, !tbaa !9
  %2583 = and i32 %2582, 1
  %2584 = icmp ne i32 %2583, 0
  br i1 %2584, label %2585, label %2683

2585:                                             ; preds = %2581
  store i32 0, ptr %21, align 4, !tbaa !9
  br label %2586

2586:                                             ; preds = %2679, %2585
  %2587 = load i32, ptr %21, align 4, !tbaa !9
  %2588 = icmp ult i32 %2587, 4
  br i1 %2588, label %2589, label %2682

2589:                                             ; preds = %2586
  %2590 = load i32, ptr %19, align 4, !tbaa !9
  %2591 = icmp ne i32 %2590, 0
  br i1 %2591, label %2592, label %2645

2592:                                             ; preds = %2589
  br label %2593

2593:                                             ; preds = %2592
  %2594 = load i32, ptr %19, align 4, !tbaa !9
  %2595 = icmp ult i32 %2594, 8
  br i1 %2595, label %2596, label %2635

2596:                                             ; preds = %2593
  br label %2597

2597:                                             ; preds = %2631, %2596
  br label %2598

2598:                                             ; preds = %2597
  br label %2599

2599:                                             ; preds = %2614, %2598
  %2600 = load ptr, ptr %24, align 8, !tbaa !5
  %2601 = load ptr, ptr %25, align 8, !tbaa !5
  %2602 = icmp uge ptr %2600, %2601
  br i1 %2602, label %2603, label %2615

2603:                                             ; preds = %2599
  br label %2604

2604:                                             ; preds = %2603
  %2605 = load i32, ptr %15, align 4, !tbaa !9
  %2606 = and i32 %2605, 2
  %2607 = icmp ne i32 %2606, 0
  %2608 = zext i1 %2607 to i64
  %2609 = select i1 %2607, i32 1, i32 -4
  store i32 %2609, ptr %18, align 4, !tbaa !9
  %2610 = load ptr, ptr %9, align 8, !tbaa !5
  %2611 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %2610, i32 0, i32 0
  store i32 41, ptr %2611, align 8, !tbaa !20
  br label %2695

2612:                                             ; preds = %129
  br label %2613

2613:                                             ; preds = %2612
  br label %2614

2614:                                             ; preds = %2613
  br label %2599, !llvm.loop !94

2615:                                             ; preds = %2599
  %2616 = load ptr, ptr %24, align 8, !tbaa !5
  %2617 = getelementptr inbounds i8, ptr %2616, i32 1
  store ptr %2617, ptr %24, align 8, !tbaa !5
  %2618 = load i8, ptr %2616, align 1, !tbaa !27
  %2619 = zext i8 %2618 to i32
  store i32 %2619, ptr %78, align 4, !tbaa !9
  br label %2620

2620:                                             ; preds = %2615
  br label %2621

2621:                                             ; preds = %2620
  %2622 = load i32, ptr %78, align 4, !tbaa !9
  %2623 = zext i32 %2622 to i64
  %2624 = load i32, ptr %19, align 4, !tbaa !9
  %2625 = zext i32 %2624 to i64
  %2626 = shl i64 %2623, %2625
  %2627 = load i64, ptr %23, align 8, !tbaa !11
  %2628 = or i64 %2627, %2626
  store i64 %2628, ptr %23, align 8, !tbaa !11
  %2629 = load i32, ptr %19, align 4, !tbaa !9
  %2630 = add i32 %2629, 8
  store i32 %2630, ptr %19, align 4, !tbaa !9
  br label %2631

2631:                                             ; preds = %2621
  %2632 = load i32, ptr %19, align 4, !tbaa !9
  %2633 = icmp ult i32 %2632, 8
  br i1 %2633, label %2597, label %2634, !llvm.loop !95

2634:                                             ; preds = %2631
  br label %2635

2635:                                             ; preds = %2634, %2593
  %2636 = load i64, ptr %23, align 8, !tbaa !11
  %2637 = and i64 %2636, 255
  %2638 = trunc i64 %2637 to i32
  store i32 %2638, ptr %77, align 4, !tbaa !9
  %2639 = load i64, ptr %23, align 8, !tbaa !11
  %2640 = lshr i64 %2639, 8
  store i64 %2640, ptr %23, align 8, !tbaa !11
  %2641 = load i32, ptr %19, align 4, !tbaa !9
  %2642 = sub i32 %2641, 8
  store i32 %2642, ptr %19, align 4, !tbaa !9
  br label %2643

2643:                                             ; preds = %2635
  br label %2644

2644:                                             ; preds = %2643
  br label %2670

2645:                                             ; preds = %2589
  br label %2646

2646:                                             ; preds = %2645
  br label %2647

2647:                                             ; preds = %2662, %2646
  %2648 = load ptr, ptr %24, align 8, !tbaa !5
  %2649 = load ptr, ptr %25, align 8, !tbaa !5
  %2650 = icmp uge ptr %2648, %2649
  br i1 %2650, label %2651, label %2663

2651:                                             ; preds = %2647
  br label %2652

2652:                                             ; preds = %2651
  %2653 = load i32, ptr %15, align 4, !tbaa !9
  %2654 = and i32 %2653, 2
  %2655 = icmp ne i32 %2654, 0
  %2656 = zext i1 %2655 to i64
  %2657 = select i1 %2655, i32 1, i32 -4
  store i32 %2657, ptr %18, align 4, !tbaa !9
  %2658 = load ptr, ptr %9, align 8, !tbaa !5
  %2659 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %2658, i32 0, i32 0
  store i32 42, ptr %2659, align 8, !tbaa !20
  br label %2695

2660:                                             ; preds = %129
  br label %2661

2661:                                             ; preds = %2660
  br label %2662

2662:                                             ; preds = %2661
  br label %2647, !llvm.loop !96

2663:                                             ; preds = %2647
  %2664 = load ptr, ptr %24, align 8, !tbaa !5
  %2665 = getelementptr inbounds i8, ptr %2664, i32 1
  store ptr %2665, ptr %24, align 8, !tbaa !5
  %2666 = load i8, ptr %2664, align 1, !tbaa !27
  %2667 = zext i8 %2666 to i32
  store i32 %2667, ptr %77, align 4, !tbaa !9
  br label %2668

2668:                                             ; preds = %2663
  br label %2669

2669:                                             ; preds = %2668
  br label %2670

2670:                                             ; preds = %2669, %2644
  %2671 = load ptr, ptr %9, align 8, !tbaa !5
  %2672 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %2671, i32 0, i32 4
  %2673 = load i32, ptr %2672, align 8, !tbaa !24
  %2674 = shl i32 %2673, 8
  %2675 = load i32, ptr %77, align 4, !tbaa !9
  %2676 = or i32 %2674, %2675
  %2677 = load ptr, ptr %9, align 8, !tbaa !5
  %2678 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %2677, i32 0, i32 4
  store i32 %2676, ptr %2678, align 8, !tbaa !24
  br label %2679

2679:                                             ; preds = %2670
  %2680 = load i32, ptr %21, align 4, !tbaa !9
  %2681 = add i32 %2680, 1
  store i32 %2681, ptr %21, align 4, !tbaa !9
  br label %2586, !llvm.loop !97

2682:                                             ; preds = %2586
  br label %2683

2683:                                             ; preds = %2682, %2581
  br label %2684

2684:                                             ; preds = %2683
  br label %2685

2685:                                             ; preds = %2691, %2684
  br label %2686

2686:                                             ; preds = %2685
  store i32 0, ptr %18, align 4, !tbaa !9
  %2687 = load ptr, ptr %9, align 8, !tbaa !5
  %2688 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %2687, i32 0, i32 0
  store i32 34, ptr %2688, align 8, !tbaa !20
  br label %2695

2689:                                             ; preds = %129
  br label %2690

2690:                                             ; preds = %2689
  br label %2691

2691:                                             ; preds = %2690
  br label %2685

2692:                                             ; No predecessors!
  br label %2693

2693:                                             ; preds = %2692
  br label %2694

2694:                                             ; preds = %2693, %129
  br label %2695

2695:                                             ; preds = %2694, %2686, %2652, %2604, %2511, %2418, %2376, %2301, %2174, %2045, %1854, %1743, %1607, %1509, %1482, %1360, %1105, %957, %849, %762, %669, %657, %634, %588, %559, %503, %450, %387, %320, %298, %220, %194
  %2696 = load i32, ptr %18, align 4, !tbaa !9
  %2697 = icmp ne i32 %2696, 1
  br i1 %2697, label %2698, label %2717

2698:                                             ; preds = %2695
  %2699 = load i32, ptr %18, align 4, !tbaa !9
  %2700 = icmp ne i32 %2699, -4
  br i1 %2700, label %2701, label %2717

2701:                                             ; preds = %2698
  br label %2702

2702:                                             ; preds = %2711, %2701
  %2703 = load ptr, ptr %24, align 8, !tbaa !5
  %2704 = load ptr, ptr %10, align 8, !tbaa !5
  %2705 = icmp ugt ptr %2703, %2704
  br i1 %2705, label %2706, label %2709

2706:                                             ; preds = %2702
  %2707 = load i32, ptr %19, align 4, !tbaa !9
  %2708 = icmp uge i32 %2707, 8
  br label %2709

2709:                                             ; preds = %2706, %2702
  %2710 = phi i1 [ false, %2702 ], [ %2708, %2706 ]
  br i1 %2710, label %2711, label %2716

2711:                                             ; preds = %2709
  %2712 = load ptr, ptr %24, align 8, !tbaa !5
  %2713 = getelementptr inbounds i8, ptr %2712, i32 -1
  store ptr %2713, ptr %24, align 8, !tbaa !5
  %2714 = load i32, ptr %19, align 4, !tbaa !9
  %2715 = sub i32 %2714, 8
  store i32 %2715, ptr %19, align 4, !tbaa !9
  br label %2702, !llvm.loop !98

2716:                                             ; preds = %2709
  br label %2717

2717:                                             ; preds = %2716, %2698, %2695
  %2718 = load i32, ptr %19, align 4, !tbaa !9
  %2719 = load ptr, ptr %9, align 8, !tbaa !5
  %2720 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %2719, i32 0, i32 1
  store i32 %2718, ptr %2720, align 4, !tbaa !13
  %2721 = load i64, ptr %23, align 8, !tbaa !11
  %2722 = load i32, ptr %19, align 4, !tbaa !9
  %2723 = zext i32 %2722 to i64
  %2724 = shl i64 -1, %2723
  %2725 = xor i64 %2724, -1
  %2726 = and i64 %2721, %2725
  %2727 = load ptr, ptr %9, align 8, !tbaa !5
  %2728 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %2727, i32 0, i32 12
  store i64 %2726, ptr %2728, align 8, !tbaa !15
  %2729 = load i32, ptr %20, align 4, !tbaa !9
  %2730 = load ptr, ptr %9, align 8, !tbaa !5
  %2731 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %2730, i32 0, i32 8
  store i32 %2729, ptr %2731, align 8, !tbaa !16
  %2732 = load i32, ptr %21, align 4, !tbaa !9
  %2733 = load ptr, ptr %9, align 8, !tbaa !5
  %2734 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %2733, i32 0, i32 9
  store i32 %2732, ptr %2734, align 4, !tbaa !17
  %2735 = load i32, ptr %22, align 4, !tbaa !9
  %2736 = load ptr, ptr %9, align 8, !tbaa !5
  %2737 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %2736, i32 0, i32 10
  store i32 %2735, ptr %2737, align 8, !tbaa !18
  %2738 = load i64, ptr %29, align 8, !tbaa !11
  %2739 = load ptr, ptr %9, align 8, !tbaa !5
  %2740 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %2739, i32 0, i32 13
  store i64 %2738, ptr %2740, align 8, !tbaa !19
  %2741 = load ptr, ptr %24, align 8, !tbaa !5
  %2742 = load ptr, ptr %10, align 8, !tbaa !5
  %2743 = ptrtoint ptr %2741 to i64
  %2744 = ptrtoint ptr %2742 to i64
  %2745 = sub i64 %2743, %2744
  %2746 = load ptr, ptr %11, align 8, !tbaa !5
  store i64 %2745, ptr %2746, align 8, !tbaa !11
  %2747 = load ptr, ptr %26, align 8, !tbaa !5
  %2748 = load ptr, ptr %13, align 8, !tbaa !5
  %2749 = ptrtoint ptr %2747 to i64
  %2750 = ptrtoint ptr %2748 to i64
  %2751 = sub i64 %2749, %2750
  %2752 = load ptr, ptr %14, align 8, !tbaa !5
  store i64 %2751, ptr %2752, align 8, !tbaa !11
  %2753 = load i32, ptr %15, align 4, !tbaa !9
  %2754 = and i32 %2753, 9
  %2755 = icmp ne i32 %2754, 0
  br i1 %2755, label %2756, label %2911

2756:                                             ; preds = %2717
  %2757 = load i32, ptr %18, align 4, !tbaa !9
  %2758 = icmp sge i32 %2757, 0
  br i1 %2758, label %2759, label %2911

2759:                                             ; preds = %2756
  call void @llvm.lifetime.start.p0(i64 8, ptr %79) #5
  %2760 = load ptr, ptr %13, align 8, !tbaa !5
  store ptr %2760, ptr %79, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %80) #5
  %2761 = load ptr, ptr %14, align 8, !tbaa !5
  %2762 = load i64, ptr %2761, align 8, !tbaa !11
  store i64 %2762, ptr %80, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %81) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %82) #5
  %2763 = load ptr, ptr %9, align 8, !tbaa !5
  %2764 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %2763, i32 0, i32 7
  %2765 = load i32, ptr %2764, align 4, !tbaa !23
  %2766 = and i32 %2765, 65535
  store i32 %2766, ptr %82, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %83) #5
  %2767 = load ptr, ptr %9, align 8, !tbaa !5
  %2768 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %2767, i32 0, i32 7
  %2769 = load i32, ptr %2768, align 4, !tbaa !23
  %2770 = lshr i32 %2769, 16
  store i32 %2770, ptr %83, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %84) #5
  %2771 = load i64, ptr %80, align 8, !tbaa !11
  %2772 = urem i64 %2771, 5552
  store i64 %2772, ptr %84, align 8, !tbaa !11
  br label %2773

2773:                                             ; preds = %2880, %2759
  %2774 = load i64, ptr %80, align 8, !tbaa !11
  %2775 = icmp ne i64 %2774, 0
  br i1 %2775, label %2776, label %2888

2776:                                             ; preds = %2773
  store i32 0, ptr %81, align 4, !tbaa !9
  br label %2777

2777:                                             ; preds = %2856, %2776
  %2778 = load i32, ptr %81, align 4, !tbaa !9
  %2779 = add i32 %2778, 7
  %2780 = zext i32 %2779 to i64
  %2781 = load i64, ptr %84, align 8, !tbaa !11
  %2782 = icmp ult i64 %2780, %2781
  br i1 %2782, label %2783, label %2861

2783:                                             ; preds = %2777
  %2784 = load ptr, ptr %79, align 8, !tbaa !5
  %2785 = getelementptr inbounds i8, ptr %2784, i64 0
  %2786 = load i8, ptr %2785, align 1, !tbaa !27
  %2787 = zext i8 %2786 to i32
  %2788 = load i32, ptr %82, align 4, !tbaa !9
  %2789 = add i32 %2788, %2787
  store i32 %2789, ptr %82, align 4, !tbaa !9
  %2790 = load i32, ptr %82, align 4, !tbaa !9
  %2791 = load i32, ptr %83, align 4, !tbaa !9
  %2792 = add i32 %2791, %2790
  store i32 %2792, ptr %83, align 4, !tbaa !9
  %2793 = load ptr, ptr %79, align 8, !tbaa !5
  %2794 = getelementptr inbounds i8, ptr %2793, i64 1
  %2795 = load i8, ptr %2794, align 1, !tbaa !27
  %2796 = zext i8 %2795 to i32
  %2797 = load i32, ptr %82, align 4, !tbaa !9
  %2798 = add i32 %2797, %2796
  store i32 %2798, ptr %82, align 4, !tbaa !9
  %2799 = load i32, ptr %82, align 4, !tbaa !9
  %2800 = load i32, ptr %83, align 4, !tbaa !9
  %2801 = add i32 %2800, %2799
  store i32 %2801, ptr %83, align 4, !tbaa !9
  %2802 = load ptr, ptr %79, align 8, !tbaa !5
  %2803 = getelementptr inbounds i8, ptr %2802, i64 2
  %2804 = load i8, ptr %2803, align 1, !tbaa !27
  %2805 = zext i8 %2804 to i32
  %2806 = load i32, ptr %82, align 4, !tbaa !9
  %2807 = add i32 %2806, %2805
  store i32 %2807, ptr %82, align 4, !tbaa !9
  %2808 = load i32, ptr %82, align 4, !tbaa !9
  %2809 = load i32, ptr %83, align 4, !tbaa !9
  %2810 = add i32 %2809, %2808
  store i32 %2810, ptr %83, align 4, !tbaa !9
  %2811 = load ptr, ptr %79, align 8, !tbaa !5
  %2812 = getelementptr inbounds i8, ptr %2811, i64 3
  %2813 = load i8, ptr %2812, align 1, !tbaa !27
  %2814 = zext i8 %2813 to i32
  %2815 = load i32, ptr %82, align 4, !tbaa !9
  %2816 = add i32 %2815, %2814
  store i32 %2816, ptr %82, align 4, !tbaa !9
  %2817 = load i32, ptr %82, align 4, !tbaa !9
  %2818 = load i32, ptr %83, align 4, !tbaa !9
  %2819 = add i32 %2818, %2817
  store i32 %2819, ptr %83, align 4, !tbaa !9
  %2820 = load ptr, ptr %79, align 8, !tbaa !5
  %2821 = getelementptr inbounds i8, ptr %2820, i64 4
  %2822 = load i8, ptr %2821, align 1, !tbaa !27
  %2823 = zext i8 %2822 to i32
  %2824 = load i32, ptr %82, align 4, !tbaa !9
  %2825 = add i32 %2824, %2823
  store i32 %2825, ptr %82, align 4, !tbaa !9
  %2826 = load i32, ptr %82, align 4, !tbaa !9
  %2827 = load i32, ptr %83, align 4, !tbaa !9
  %2828 = add i32 %2827, %2826
  store i32 %2828, ptr %83, align 4, !tbaa !9
  %2829 = load ptr, ptr %79, align 8, !tbaa !5
  %2830 = getelementptr inbounds i8, ptr %2829, i64 5
  %2831 = load i8, ptr %2830, align 1, !tbaa !27
  %2832 = zext i8 %2831 to i32
  %2833 = load i32, ptr %82, align 4, !tbaa !9
  %2834 = add i32 %2833, %2832
  store i32 %2834, ptr %82, align 4, !tbaa !9
  %2835 = load i32, ptr %82, align 4, !tbaa !9
  %2836 = load i32, ptr %83, align 4, !tbaa !9
  %2837 = add i32 %2836, %2835
  store i32 %2837, ptr %83, align 4, !tbaa !9
  %2838 = load ptr, ptr %79, align 8, !tbaa !5
  %2839 = getelementptr inbounds i8, ptr %2838, i64 6
  %2840 = load i8, ptr %2839, align 1, !tbaa !27
  %2841 = zext i8 %2840 to i32
  %2842 = load i32, ptr %82, align 4, !tbaa !9
  %2843 = add i32 %2842, %2841
  store i32 %2843, ptr %82, align 4, !tbaa !9
  %2844 = load i32, ptr %82, align 4, !tbaa !9
  %2845 = load i32, ptr %83, align 4, !tbaa !9
  %2846 = add i32 %2845, %2844
  store i32 %2846, ptr %83, align 4, !tbaa !9
  %2847 = load ptr, ptr %79, align 8, !tbaa !5
  %2848 = getelementptr inbounds i8, ptr %2847, i64 7
  %2849 = load i8, ptr %2848, align 1, !tbaa !27
  %2850 = zext i8 %2849 to i32
  %2851 = load i32, ptr %82, align 4, !tbaa !9
  %2852 = add i32 %2851, %2850
  store i32 %2852, ptr %82, align 4, !tbaa !9
  %2853 = load i32, ptr %82, align 4, !tbaa !9
  %2854 = load i32, ptr %83, align 4, !tbaa !9
  %2855 = add i32 %2854, %2853
  store i32 %2855, ptr %83, align 4, !tbaa !9
  br label %2856

2856:                                             ; preds = %2783
  %2857 = load i32, ptr %81, align 4, !tbaa !9
  %2858 = add i32 %2857, 8
  store i32 %2858, ptr %81, align 4, !tbaa !9
  %2859 = load ptr, ptr %79, align 8, !tbaa !5
  %2860 = getelementptr inbounds i8, ptr %2859, i64 8
  store ptr %2860, ptr %79, align 8, !tbaa !5
  br label %2777, !llvm.loop !99

2861:                                             ; preds = %2777
  br label %2862

2862:                                             ; preds = %2877, %2861
  %2863 = load i32, ptr %81, align 4, !tbaa !9
  %2864 = zext i32 %2863 to i64
  %2865 = load i64, ptr %84, align 8, !tbaa !11
  %2866 = icmp ult i64 %2864, %2865
  br i1 %2866, label %2867, label %2880

2867:                                             ; preds = %2862
  %2868 = load ptr, ptr %79, align 8, !tbaa !5
  %2869 = getelementptr inbounds i8, ptr %2868, i32 1
  store ptr %2869, ptr %79, align 8, !tbaa !5
  %2870 = load i8, ptr %2868, align 1, !tbaa !27
  %2871 = zext i8 %2870 to i32
  %2872 = load i32, ptr %82, align 4, !tbaa !9
  %2873 = add i32 %2872, %2871
  store i32 %2873, ptr %82, align 4, !tbaa !9
  %2874 = load i32, ptr %82, align 4, !tbaa !9
  %2875 = load i32, ptr %83, align 4, !tbaa !9
  %2876 = add i32 %2875, %2874
  store i32 %2876, ptr %83, align 4, !tbaa !9
  br label %2877

2877:                                             ; preds = %2867
  %2878 = load i32, ptr %81, align 4, !tbaa !9
  %2879 = add i32 %2878, 1
  store i32 %2879, ptr %81, align 4, !tbaa !9
  br label %2862, !llvm.loop !100

2880:                                             ; preds = %2862
  %2881 = load i32, ptr %82, align 4, !tbaa !9
  %2882 = urem i32 %2881, 65521
  store i32 %2882, ptr %82, align 4, !tbaa !9
  %2883 = load i32, ptr %83, align 4, !tbaa !9
  %2884 = urem i32 %2883, 65521
  store i32 %2884, ptr %83, align 4, !tbaa !9
  %2885 = load i64, ptr %84, align 8, !tbaa !11
  %2886 = load i64, ptr %80, align 8, !tbaa !11
  %2887 = sub i64 %2886, %2885
  store i64 %2887, ptr %80, align 8, !tbaa !11
  store i64 5552, ptr %84, align 8, !tbaa !11
  br label %2773, !llvm.loop !101

2888:                                             ; preds = %2773
  %2889 = load i32, ptr %83, align 4, !tbaa !9
  %2890 = shl i32 %2889, 16
  %2891 = load i32, ptr %82, align 4, !tbaa !9
  %2892 = add i32 %2890, %2891
  %2893 = load ptr, ptr %9, align 8, !tbaa !5
  %2894 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %2893, i32 0, i32 7
  store i32 %2892, ptr %2894, align 4, !tbaa !23
  %2895 = load i32, ptr %18, align 4, !tbaa !9
  %2896 = icmp eq i32 %2895, 0
  br i1 %2896, label %2897, label %2910

2897:                                             ; preds = %2888
  %2898 = load i32, ptr %15, align 4, !tbaa !9
  %2899 = and i32 %2898, 1
  %2900 = icmp ne i32 %2899, 0
  br i1 %2900, label %2901, label %2910

2901:                                             ; preds = %2897
  %2902 = load ptr, ptr %9, align 8, !tbaa !5
  %2903 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %2902, i32 0, i32 7
  %2904 = load i32, ptr %2903, align 4, !tbaa !23
  %2905 = load ptr, ptr %9, align 8, !tbaa !5
  %2906 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %2905, i32 0, i32 4
  %2907 = load i32, ptr %2906, align 8, !tbaa !24
  %2908 = icmp ne i32 %2904, %2907
  br i1 %2908, label %2909, label %2910

2909:                                             ; preds = %2901
  store i32 -2, ptr %18, align 4, !tbaa !9
  br label %2910

2910:                                             ; preds = %2909, %2901, %2897, %2888
  call void @llvm.lifetime.end.p0(i64 8, ptr %84) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %83) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %82) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %81) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %80) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %79) #5
  br label %2911

2911:                                             ; preds = %2910, %2756, %2717
  %2912 = load i32, ptr %18, align 4, !tbaa !9
  store i32 %2912, ptr %8, align 4
  store i32 1, ptr %30, align 4
  br label %2913

2913:                                             ; preds = %2911, %126
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #5
  call void @llvm.lifetime.end.p0(i64 24, ptr %17) #5
  call void @llvm.lifetime.end.p0(i64 24, ptr %16) #5
  %2914 = load i32, ptr %8, align 4
  ret i32 %2914

2915:                                             ; preds = %2008, %1259
  unreachable
}

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

; Function Attrs: noreturn nounwind
declare void @__assert_fail(ptr noundef, ptr noundef, i32 noundef, ptr noundef) #4

; Function Attrs: nounwind uwtable
declare hidden void @tinfl_clear_tree(ptr noundef) #2

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #2 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #4 = { noreturn nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { nounwind }
attributes #6 = { noreturn 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, !12, i64 0}
!12 = !{!"long", !7, i64 0}
!13 = !{!14, !10, i64 4}
!14 = !{!"tinfl_decompressor_tag", !10, i64 0, !10, 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, !7, i64 44, !12, i64 56, !12, i64 64, !7, i64 72, !7, i64 6216, !7, i64 7368, !7, i64 7496, !7, i64 7572, !7, i64 7860, !7, i64 7892, !7, i64 7911, !7, i64 7915}
!15 = !{!14, !12, i64 56}
!16 = !{!14, !10, i64 32}
!17 = !{!14, !10, i64 36}
!18 = !{!14, !10, i64 40}
!19 = !{!14, !12, i64 64}
!20 = !{!14, !10, i64 0}
!21 = !{!14, !10, i64 12}
!22 = !{!14, !10, i64 8}
!23 = !{!14, !10, i64 28}
!24 = !{!14, !10, i64 16}
!25 = distinct !{!25, !26}
!26 = !{!"llvm.loop.mustprogress"}
!27 = !{!7, !7, i64 0}
!28 = distinct !{!28, !26}
!29 = distinct !{!29, !26}
!30 = distinct !{!30, !26}
!31 = !{!14, !10, i64 20}
!32 = !{!14, !10, i64 24}
!33 = distinct !{!33, !26}
!34 = distinct !{!34, !26}
!35 = distinct !{!35, !26}
!36 = distinct !{!36, !26}
!37 = distinct !{!37, !26}
!38 = distinct !{!38, !26}
!39 = distinct !{!39, !26}
!40 = distinct !{!40, !26}
!41 = distinct !{!41, !26}
!42 = distinct !{!42, !26}
!43 = distinct !{!43, !26}
!44 = distinct !{!44, !26}
!45 = distinct !{!45, !26}
!46 = distinct !{!46, !26}
!47 = distinct !{!47, !26}
!48 = distinct !{!48, !26}
!49 = distinct !{!49, !26}
!50 = distinct !{!50, !26}
!51 = distinct !{!51, !26}
!52 = !{!53, !53, i64 0}
!53 = !{!"short", !7, i64 0}
!54 = distinct !{!54, !26}
!55 = distinct !{!55, !26}
!56 = distinct !{!56, !26}
!57 = distinct !{!57, !26}
!58 = distinct !{!58, !26}
!59 = distinct !{!59, !26}
!60 = distinct !{!60, !26}
!61 = distinct !{!61, !26}
!62 = distinct !{!62, !26}
!63 = distinct !{!63, !26}
!64 = distinct !{!64, !26}
!65 = distinct !{!65, !26}
!66 = distinct !{!66, !26}
!67 = distinct !{!67, !26}
!68 = distinct !{!68, !26}
!69 = distinct !{!69, !26}
!70 = distinct !{!70, !26}
!71 = distinct !{!71, !26}
!72 = distinct !{!72, !26}
!73 = distinct !{!73, !26}
!74 = distinct !{!74, !26}
!75 = distinct !{!75, !26}
!76 = distinct !{!76, !26}
!77 = distinct !{!77, !26}
!78 = distinct !{!78, !26}
!79 = distinct !{!79, !26}
!80 = distinct !{!80, !26}
!81 = distinct !{!81, !26}
!82 = distinct !{!82, !26}
!83 = distinct !{!83, !26}
!84 = distinct !{!84, !26}
!85 = distinct !{!85, !26}
!86 = distinct !{!86, !26}
!87 = distinct !{!87, !26}
!88 = distinct !{!88, !26}
!89 = distinct !{!89, !26}
!90 = distinct !{!90, !26}
!91 = distinct !{!91, !26}
!92 = distinct !{!92, !26}
!93 = distinct !{!93, !26}
!94 = distinct !{!94, !26}
!95 = distinct !{!95, !26}
!96 = distinct !{!96, !26}
!97 = distinct !{!97, !26}
!98 = distinct !{!98, !26}
!99 = distinct !{!99, !26}
!100 = distinct !{!100, !26}
!101 = distinct !{!101, !26}


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

@.str.12 = external hidden unnamed_addr constant [73 x i8], align 1
@tinfl_decompress.s_length_base = external hidden local_unnamed_addr constant [31 x i16], align 16
@tinfl_decompress.s_length_extra = external hidden local_unnamed_addr constant [31 x i8], align 16
@tinfl_decompress.s_dist_base = external hidden local_unnamed_addr constant [32 x i16], align 16
@tinfl_decompress.s_dist_extra = external hidden local_unnamed_addr constant [32 x i8], align 16
@tinfl_decompress.s_length_dezigzag = external hidden local_unnamed_addr constant [19 x i8], align 16
@tinfl_decompress.s_min_table_sizes = external hidden local_unnamed_addr constant [3 x i16], align 2
@.str.14 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [10 x i8], align 1
@__PRETTY_FUNCTION__.tinfl_decompress = external hidden unnamed_addr constant [131 x i8], align 1

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

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

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

; Function Attrs: nounwind uwtable
define dso_local range(i32 -4, 3) i32 @tinfl_decompress(ptr noundef %0, ptr noundef %1, ptr nocapture noundef %2, ptr noundef %3, ptr noundef %4, ptr nocapture noundef %5, i32 noundef %6) local_unnamed_addr #2 {
  %8 = ptrtoint ptr %1 to i64
  %9 = alloca [3 x ptr], align 16
  %10 = alloca [3 x ptr], align 16
  %11 = alloca [17 x i32], align 16
  %12 = alloca [16 x i32], align 16
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %9) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %10) #6
  %13 = load i64, ptr %2, align 8, !tbaa !5
  %14 = getelementptr inbounds i8, ptr %1, i64 %13
  %.not = icmp eq ptr %4, null
  br i1 %.not, label %18, label %15

15:                                               ; preds = %7
  %16 = load i64, ptr %5, align 8, !tbaa !5
  %17 = getelementptr inbounds i8, ptr %4, i64 %16
  br label %18

18:                                               ; preds = %7, %15
  %19 = phi ptr [ %17, %15 ], [ null, %7 ]
  %20 = and i32 %6, 4
  %.not1544 = icmp eq i32 %20, 0
  br i1 %.not1544, label %21, label %28

21:                                               ; preds = %18
  %22 = ptrtoint ptr %4 to i64
  %23 = ptrtoint ptr %3 to i64
  %24 = load i64, ptr %5, align 8, !tbaa !5
  %25 = xor i64 %23, -1
  %26 = add i64 %25, %22
  %27 = add i64 %26, %24
  br label %28

28:                                               ; preds = %18, %21
  %29 = phi i64 [ %27, %21 ], [ -1, %18 ]
  %30 = add i64 %29, 1
  %31 = and i64 %30, %29
  %.not1545 = icmp ne i64 %31, 0
  %32 = icmp ult ptr %4, %3
  %or.cond1622 = or i1 %32, %.not1545
  br i1 %or.cond1622, label %33, label %34

33:                                               ; preds = %28
  store i64 0, ptr %5, align 8, !tbaa !5
  store i64 0, ptr %2, align 8, !tbaa !5
  br label %1251

34:                                               ; preds = %28
  %35 = getelementptr inbounds i8, ptr %0, i64 6216
  store ptr %35, ptr %9, align 16, !tbaa !9
  %36 = getelementptr inbounds i8, ptr %0, i64 7368
  %37 = getelementptr inbounds i8, ptr %9, i64 8
  store ptr %36, ptr %37, align 8, !tbaa !9
  %38 = getelementptr inbounds i8, ptr %0, i64 7496
  %39 = getelementptr inbounds i8, ptr %9, i64 16
  store ptr %38, ptr %39, align 16, !tbaa !9
  %40 = getelementptr i8, ptr %0, i64 7572
  store ptr %40, ptr %10, align 16, !tbaa !9
  %41 = getelementptr inbounds i8, ptr %0, i64 7860
  %42 = getelementptr inbounds i8, ptr %10, i64 8
  store ptr %41, ptr %42, align 8, !tbaa !9
  %43 = getelementptr inbounds i8, ptr %0, i64 7892
  %44 = getelementptr inbounds i8, ptr %10, i64 16
  store ptr %43, ptr %44, align 16, !tbaa !9
  %45 = getelementptr inbounds i8, ptr %0, i64 4
  %46 = load i32, ptr %45, align 4, !tbaa !11
  %.84.fr1956 = freeze i32 %46
  %47 = getelementptr inbounds i8, ptr %0, i64 56
  %48 = load i64, ptr %47, align 8, !tbaa !14
  %49 = getelementptr inbounds i8, ptr %0, i64 32
  %50 = load i32, ptr %49, align 8, !tbaa !15
  %51 = getelementptr inbounds i8, ptr %0, i64 36
  %52 = load i32, ptr %51, align 4, !tbaa !16
  %53 = getelementptr inbounds i8, ptr %0, i64 40
  %54 = load i32, ptr %53, align 8, !tbaa !17
  %55 = getelementptr inbounds i8, ptr %0, i64 64
  %56 = load i64, ptr %55, align 8, !tbaa !18
  %57 = load i32, ptr %0, align 8, !tbaa !19
  switch i32 %57, label %.thread1659 [
    i32 0, label %58
    i32 1, label %64
    i32 2, label %75
    i32 36, label %1133
    i32 3, label %105
    i32 5, label %134
    i32 6, label %156
    i32 7, label %175
    i32 39, label %1133
    i32 51, label %206
    i32 52, label %221
    i32 9, label %228
    i32 38, label %232
    i32 10, label %1133
    i32 11, label %262
    i32 14, label %298
    i32 35, label %1133
    i32 16, label %573
    i32 17, label %1133
    i32 18, label %642
    i32 21, label %1133
    i32 23, label %727
    i32 24, label %778
    i32 25, label %864
    i32 26, label %918
    i32 27, label %979
    i32 37, label %1133
    i32 53, label %1030
    i32 32, label %1075
    i32 41, label %1104
    i32 42, label %1121
    i32 34, label %1132
  ], !llvm.loop !20

58:                                               ; preds = %34
  %59 = getelementptr inbounds i8, ptr %0, i64 12
  store i32 0, ptr %59, align 4, !tbaa !22
  %60 = getelementptr inbounds i8, ptr %0, i64 8
  store i32 0, ptr %60, align 8, !tbaa !23
  %61 = getelementptr inbounds i8, ptr %0, i64 28
  store i32 1, ptr %61, align 4, !tbaa !24
  %62 = getelementptr inbounds i8, ptr %0, i64 16
  store i32 1, ptr %62, align 8, !tbaa !25
  %63 = and i32 %6, 1
  %.not1550 = icmp eq i32 %63, 0
  br i1 %.not1550, label %101, label %64

64:                                               ; preds = %34, %58
  %.01090 = phi i64 [ %48, %34 ], [ 0, %58 ]
  %.01009 = phi i32 [ %54, %34 ], [ 0, %58 ]
  %.0920 = phi i32 [ %52, %34 ], [ 0, %58 ]
  %.0841 = phi i32 [ %50, %34 ], [ 0, %58 ]
  %.0838 = phi i32 [ %.84.fr1956, %34 ], [ 0, %58 ]
  %.not1551 = icmp sgt i64 %13, 0
  br i1 %.not1551, label %67, label %65

65:                                               ; preds = %64
  %66 = and i32 %6, 2
  %.not1618 = icmp eq i32 %66, 0
  store i32 1, ptr %0, align 8, !tbaa !19
  %spec.select1677 = select i1 %.not1618, i32 -4, i32 1
  br label %.thread1659

67:                                               ; preds = %64
  %68 = getelementptr inbounds i8, ptr %1, i64 1
  %69 = load i8, ptr %1, align 1, !tbaa !26
  %70 = zext i8 %69 to i32
  %71 = getelementptr inbounds i8, ptr %0, i64 8
  store i32 %70, ptr %71, align 8, !tbaa !23
  br label %72

72:                                               ; preds = %75, %67
  %.01182 = phi ptr [ %1, %75 ], [ %68, %67 ]
  %.11091 = phi i64 [ %48, %75 ], [ %.01090, %67 ]
  %.11010 = phi i32 [ %54, %75 ], [ %.01009, %67 ]
  %.1921 = phi i32 [ %52, %75 ], [ %.0920, %67 ]
  %.1842 = phi i32 [ %50, %75 ], [ %.0841, %67 ]
  %.1839 = phi i32 [ %.84.fr1956, %75 ], [ %.0838, %67 ]
  %.not1552 = icmp ult ptr %.01182, %14
  br i1 %.not1552, label %76, label %73

73:                                               ; preds = %72
  %74 = and i32 %6, 2
  %.not1617 = icmp eq i32 %74, 0
  store i32 2, ptr %0, align 8, !tbaa !19
  %spec.select1679 = select i1 %.not1617, i32 -4, i32 1
  br label %.thread1659

75:                                               ; preds = %34
  br label %72, !llvm.loop !27

76:                                               ; preds = %72
  %77 = getelementptr inbounds i8, ptr %.01182, i64 1
  %78 = load i8, ptr %.01182, align 1, !tbaa !26
  %79 = zext i8 %78 to i32
  %80 = getelementptr inbounds i8, ptr %0, i64 12
  store i32 %79, ptr %80, align 4, !tbaa !22
  %81 = getelementptr inbounds i8, ptr %0, i64 8
  %82 = load i32, ptr %81, align 8, !tbaa !23
  %83 = shl i32 %82, 8
  %84 = or disjoint i32 %83, %79
  %85 = urem i32 %84, 31
  %86 = and i32 %79, 32
  %87 = or disjoint i32 %85, %86
  %or.cond1623 = icmp ne i32 %87, 0
  %88 = and i32 %82, 15
  %89 = icmp ne i32 %88, 8
  %90 = select i1 %or.cond1623, i1 true, i1 %89
  br i1 %.not1544, label %91, label %100

91:                                               ; preds = %76
  %92 = lshr i32 %82, 4
  %93 = shl nuw i32 256, %92
  %94 = icmp ugt i32 %93, 32768
  %95 = add nuw nsw i32 %92, 8
  %96 = zext nneg i32 %95 to i64
  %.highbits = lshr i64 %30, %96
  %97 = icmp eq i64 %.highbits, 0
  %98 = select i1 %94, i1 true, i1 %97
  %99 = or i1 %90, %98
  br i1 %99, label %1133, label %101

100:                                              ; preds = %76
  br i1 %90, label %1133, label %101

101:                                              ; preds = %58, %100, %91, %1069
  %.01355 = phi i64 [ %.641419, %1069 ], [ %56, %91 ], [ %56, %100 ], [ %56, %58 ]
  %.01274 = phi ptr [ %.691343, %1069 ], [ %4, %91 ], [ %4, %100 ], [ %4, %58 ]
  %.31185 = phi ptr [ %.701252, %1069 ], [ %77, %91 ], [ %77, %100 ], [ %1, %58 ]
  %.41094 = phi i64 [ %.721162, %1069 ], [ %.11091, %91 ], [ %.11091, %100 ], [ 0, %58 ]
  %.41013 = phi i32 [ %.691078, %1069 ], [ %.11010, %91 ], [ %.11010, %100 ], [ 0, %58 ]
  %.5925 = phi i32 [ %.71991, %1069 ], [ 0, %91 ], [ 0, %100 ], [ 0, %58 ]
  %.4845 = phi i32 [ %.67908, %1069 ], [ %.1842, %91 ], [ %.1842, %100 ], [ 0, %58 ]
  %.4 = phi i32 [ %.72, %1069 ], [ %.1839, %91 ], [ %.1839, %100 ], [ 0, %58 ]
  %102 = icmp ult i32 %.4, 3
  br i1 %102, label %.preheader2125, label %.loopexit2126

.preheader2125:                                   ; preds = %101, %105
  %.21357.ph = phi i64 [ %.01355, %101 ], [ %56, %105 ]
  %.21276.ph = phi ptr [ %.01274, %101 ], [ %4, %105 ]
  %.51187.ph = phi ptr [ %.31185, %101 ], [ %1, %105 ]
  %.61096.ph = phi i64 [ %.41094, %101 ], [ %48, %105 ]
  %.61015.ph = phi i32 [ %.41013, %101 ], [ %54, %105 ]
  %.7927.ph = phi i32 [ %.5925, %101 ], [ %52, %105 ]
  %.6847.ph = phi i32 [ %.4845, %101 ], [ %50, %105 ]
  %.6.ph = phi i32 [ %.4, %101 ], [ %.84.fr1956, %105 ]
  %.not1555 = icmp ult ptr %.51187.ph, %14
  br i1 %.not1555, label %106, label %103

103:                                              ; preds = %115, %.preheader2125
  %.51187.lcssa = phi ptr [ %.51187.ph, %.preheader2125 ], [ %107, %115 ]
  %.61096.lcssa = phi i64 [ %.61096.ph, %.preheader2125 ], [ %112, %115 ]
  %.6.lcssa = phi i32 [ %.6.ph, %.preheader2125 ], [ %113, %115 ]
  %104 = and i32 %6, 2
  %.not1616 = icmp eq i32 %104, 0
  store i32 3, ptr %0, align 8, !tbaa !19
  %spec.select1681 = select i1 %.not1616, i32 -4, i32 1
  br label %.thread1659

105:                                              ; preds = %34
  br label %.preheader2125, !llvm.loop !28

106:                                              ; preds = %.preheader2125
  %107 = getelementptr inbounds i8, ptr %.51187.ph, i64 1
  %108 = load i8, ptr %.51187.ph, align 1, !tbaa !26
  %109 = zext i8 %108 to i64
  %110 = zext nneg i32 %.6.ph to i64
  %111 = shl i64 %109, %110
  %112 = or i64 %111, %.61096.ph
  %113 = add i32 %.6.ph, 8
  %114 = icmp ult i32 %113, 3
  br i1 %114, label %115, label %.loopexit2126, !llvm.loop !29

115:                                              ; preds = %106
  %.not1555.1 = icmp ult ptr %107, %14
  br i1 %.not1555.1, label %116, label %103

116:                                              ; preds = %115
  %117 = getelementptr inbounds i8, ptr %.51187.ph, i64 2
  %118 = load i8, ptr %107, align 1, !tbaa !26
  %119 = zext i8 %118 to i64
  %120 = zext nneg i32 %113 to i64
  %121 = shl nuw nsw i64 %119, %120
  %122 = or i64 %121, %.61096.ph
  %123 = add nsw i32 %.6.ph, 16
  br label %.loopexit2126

.loopexit2126:                                    ; preds = %106, %116, %101
  %.31358 = phi i64 [ %.01355, %101 ], [ %.21357.ph, %116 ], [ %.21357.ph, %106 ]
  %.31277 = phi ptr [ %.01274, %101 ], [ %.21276.ph, %116 ], [ %.21276.ph, %106 ]
  %.61188 = phi ptr [ %.31185, %101 ], [ %107, %106 ], [ %117, %116 ]
  %.71097 = phi i64 [ %.41094, %101 ], [ %112, %106 ], [ %122, %116 ]
  %.71016 = phi i32 [ %.41013, %101 ], [ %.61015.ph, %116 ], [ %.61015.ph, %106 ]
  %.8928 = phi i32 [ %.5925, %101 ], [ %.7927.ph, %116 ], [ %.7927.ph, %106 ]
  %.7848 = phi i32 [ %.4845, %101 ], [ %.6847.ph, %116 ], [ %.6847.ph, %106 ]
  %.7 = phi i32 [ %.4, %101 ], [ %113, %106 ], [ %123, %116 ]
  %124 = trunc i64 %.71097 to i32
  %125 = and i32 %124, 7
  %126 = getelementptr inbounds i8, ptr %0, i64 20
  store i32 %125, ptr %126, align 4, !tbaa !30
  %127 = lshr i64 %.71097, 3
  %128 = add i32 %.7, -3
  %129 = lshr i32 %125, 1
  %130 = getelementptr inbounds i8, ptr %0, i64 24
  store i32 %129, ptr %130, align 8, !tbaa !31
  %131 = icmp ult i32 %125, 2
  br i1 %131, label %143, label %246

132:                                              ; preds = %134
  %133 = and i32 %6, 2
  %.not1549 = icmp eq i32 %133, 0
  store i32 5, ptr %0, align 8, !tbaa !19
  %spec.select1683 = select i1 %.not1549, i32 -4, i32 1
  br label %.thread1659

134:                                              ; preds = %34
  %.not1548 = icmp sgt i64 %13, 0
  br i1 %.not1548, label %135, label %132

135:                                              ; preds = %134
  %136 = getelementptr inbounds i8, ptr %1, i64 1
  %137 = load i8, ptr %1, align 1, !tbaa !26
  %138 = zext i8 %137 to i64
  %139 = zext nneg i32 %.84.fr1956 to i64
  %140 = shl i64 %138, %139
  %141 = or i64 %140, %48
  %142 = add i32 %.84.fr1956, 8
  br label %143

143:                                              ; preds = %.loopexit2126, %135
  %.61361 = phi i64 [ %56, %135 ], [ %.31358, %.loopexit2126 ]
  %.61280 = phi ptr [ %4, %135 ], [ %.31277, %.loopexit2126 ]
  %.91191 = phi ptr [ %136, %135 ], [ %.61188, %.loopexit2126 ]
  %.101100 = phi i64 [ %141, %135 ], [ %127, %.loopexit2126 ]
  %.101019 = phi i32 [ %54, %135 ], [ %.71016, %.loopexit2126 ]
  %.10851 = phi i32 [ %50, %135 ], [ %.7848, %.loopexit2126 ]
  %.10 = phi i32 [ %142, %135 ], [ %128, %.loopexit2126 ]
  %144 = and i32 %.10, 7
  %145 = zext nneg i32 %144 to i64
  %146 = lshr i64 %.101100, %145
  %147 = and i32 %.10, -8
  br label %148

148:                                              ; preds = %182, %143
  %.71362 = phi i64 [ %.61361, %143 ], [ %.121367, %182 ]
  %.71281 = phi ptr [ %.61280, %143 ], [ %.121286, %182 ]
  %.101192 = phi ptr [ %.91191, %143 ], [ %.151197, %182 ]
  %.111101 = phi i64 [ %146, %143 ], [ %.161106, %182 ]
  %.111020 = phi i32 [ %.101019, %143 ], [ %.161025, %182 ]
  %.11931 = phi i32 [ 0, %143 ], [ %183, %182 ]
  %.11852 = phi i32 [ %.10851, %143 ], [ %.16857, %182 ]
  %.11 = phi i32 [ %147, %143 ], [ %.16, %182 ]
  %149 = icmp ult i32 %.11931, 4
  br i1 %149, label %150, label %184

150:                                              ; preds = %148
  %.not1611 = icmp eq i32 %.11, 0
  br i1 %.not1611, label %172, label %151

151:                                              ; preds = %150
  %152 = icmp ult i32 %.11, 8
  br i1 %152, label %.preheader2018, label %.loopexit2019

.preheader2018:                                   ; preds = %156, %151
  %.91364.ph = phi i64 [ %.71362, %151 ], [ %56, %156 ]
  %.91283.ph = phi ptr [ %.71281, %151 ], [ %4, %156 ]
  %.121194.ph = phi ptr [ %.101192, %151 ], [ %1, %156 ]
  %.131103.ph = phi i64 [ %.111101, %151 ], [ %48, %156 ]
  %.131022.ph = phi i32 [ %.111020, %151 ], [ %54, %156 ]
  %.13933.ph = phi i32 [ %.11931, %151 ], [ %52, %156 ]
  %.13854.ph = phi i32 [ %.11852, %151 ], [ %50, %156 ]
  %.13.ph = phi i32 [ %.11, %151 ], [ %.84.fr1956, %156 ]
  br label %153

153:                                              ; preds = %.preheader2018, %157
  %.121194 = phi ptr [ %158, %157 ], [ %.121194.ph, %.preheader2018 ]
  %.131103 = phi i64 [ %163, %157 ], [ %.131103.ph, %.preheader2018 ]
  %.13 = phi i32 [ %164, %157 ], [ %.13.ph, %.preheader2018 ]
  %.not1614 = icmp ult ptr %.121194, %14
  br i1 %.not1614, label %157, label %154

154:                                              ; preds = %153
  %155 = and i32 %6, 2
  %.not1615 = icmp eq i32 %155, 0
  store i32 6, ptr %0, align 8, !tbaa !19
  %spec.select1685 = select i1 %.not1615, i32 -4, i32 1
  br label %.thread1659

156:                                              ; preds = %34
  br label %.preheader2018, !llvm.loop !32

157:                                              ; preds = %153
  %158 = getelementptr inbounds i8, ptr %.121194, i64 1
  %159 = load i8, ptr %.121194, align 1, !tbaa !26
  %160 = zext i8 %159 to i64
  %161 = zext nneg i32 %.13 to i64
  %162 = shl i64 %160, %161
  %163 = or i64 %162, %.131103
  %164 = add i32 %.13, 8
  %165 = icmp ugt i32 %.13, -9
  br i1 %165, label %153, label %.loopexit2019, !llvm.loop !33

.loopexit2019:                                    ; preds = %157, %151
  %.101365 = phi i64 [ %.71362, %151 ], [ %.91364.ph, %157 ]
  %.101284 = phi ptr [ %.71281, %151 ], [ %.91283.ph, %157 ]
  %.131195 = phi ptr [ %.101192, %151 ], [ %158, %157 ]
  %.141104 = phi i64 [ %.111101, %151 ], [ %163, %157 ]
  %.141023 = phi i32 [ %.111020, %151 ], [ %.131022.ph, %157 ]
  %.14934 = phi i32 [ %.11931, %151 ], [ %.13933.ph, %157 ]
  %.14855 = phi i32 [ %.11852, %151 ], [ %.13854.ph, %157 ]
  %.14 = phi i32 [ %.11, %151 ], [ %164, %157 ]
  %166 = trunc i64 %.141104 to i8
  %167 = getelementptr inbounds i8, ptr %0, i64 7911
  %168 = zext i32 %.14934 to i64
  %169 = getelementptr inbounds [4 x i8], ptr %167, i64 0, i64 %168
  store i8 %166, ptr %169, align 1, !tbaa !26
  %170 = lshr i64 %.141104, 8
  %171 = add i32 %.14, -8
  br label %182

172:                                              ; preds = %150, %175
  %.111366 = phi i64 [ %.71362, %150 ], [ %56, %175 ]
  %.111285 = phi ptr [ %.71281, %150 ], [ %4, %175 ]
  %.141196 = phi ptr [ %.101192, %150 ], [ %1, %175 ]
  %.151105 = phi i64 [ %.111101, %150 ], [ %48, %175 ]
  %.151024 = phi i32 [ %.111020, %150 ], [ %54, %175 ]
  %.15935 = phi i32 [ %.11931, %150 ], [ %52, %175 ]
  %.15856 = phi i32 [ %.11852, %150 ], [ %50, %175 ]
  %.15 = phi i32 [ 0, %150 ], [ %.84.fr1956, %175 ]
  %.not1612 = icmp ult ptr %.141196, %14
  br i1 %.not1612, label %176, label %173

173:                                              ; preds = %172
  %174 = and i32 %6, 2
  %.not1613 = icmp eq i32 %174, 0
  store i32 7, ptr %0, align 8, !tbaa !19
  %spec.select1687 = select i1 %.not1613, i32 -4, i32 1
  br label %.thread1659

175:                                              ; preds = %34
  br label %172, !llvm.loop !34

176:                                              ; preds = %172
  %177 = getelementptr inbounds i8, ptr %.141196, i64 1
  %178 = load i8, ptr %.141196, align 1, !tbaa !26
  %179 = getelementptr inbounds i8, ptr %0, i64 7911
  %180 = zext i32 %.15935 to i64
  %181 = getelementptr inbounds [4 x i8], ptr %179, i64 0, i64 %180
  store i8 %178, ptr %181, align 1, !tbaa !26
  br label %182

182:                                              ; preds = %.loopexit2019, %176
  %.121367 = phi i64 [ %.101365, %.loopexit2019 ], [ %.111366, %176 ]
  %.121286 = phi ptr [ %.101284, %.loopexit2019 ], [ %.111285, %176 ]
  %.151197 = phi ptr [ %.131195, %.loopexit2019 ], [ %177, %176 ]
  %.161106 = phi i64 [ %170, %.loopexit2019 ], [ %.151105, %176 ]
  %.161025 = phi i32 [ %.141023, %.loopexit2019 ], [ %.151024, %176 ]
  %.16936 = phi i32 [ %.14934, %.loopexit2019 ], [ %.15935, %176 ]
  %.16857 = phi i32 [ %.14855, %.loopexit2019 ], [ %.15856, %176 ]
  %.16 = phi i32 [ %171, %.loopexit2019 ], [ %.15, %176 ]
  %183 = add i32 %.16936, 1
  br label %148, !llvm.loop !35

184:                                              ; preds = %148
  %185 = getelementptr inbounds i8, ptr %0, i64 7911
  %186 = load i8, ptr %185, align 1, !tbaa !26
  %187 = zext i8 %186 to i32
  %188 = getelementptr inbounds i8, ptr %0, i64 7912
  %189 = load i8, ptr %188, align 1, !tbaa !26
  %190 = zext i8 %189 to i32
  %191 = shl nuw nsw i32 %190, 8
  %192 = or disjoint i32 %191, %187
  %193 = getelementptr inbounds i8, ptr %0, i64 7913
  %194 = load i16, ptr %193, align 1
  %195 = zext i16 %194 to i32
  %196 = xor i32 %192, %195
  %.not1595 = icmp eq i32 %196, 65535
  br i1 %.not1595, label %197, label %1133

197:                                              ; preds = %184, %222
  %.141369 = phi i64 [ %.71362, %184 ], [ %.181373, %222 ]
  %.141288 = phi ptr [ %.71281, %184 ], [ %224, %222 ]
  %.171199 = phi ptr [ %.101192, %184 ], [ %.211203, %222 ]
  %.181108 = phi i64 [ %.111101, %184 ], [ %.221112, %222 ]
  %.181027 = phi i32 [ %.111020, %184 ], [ %.221031, %222 ]
  %.18938 = phi i32 [ %192, %184 ], [ %225, %222 ]
  %.18859 = phi i32 [ %.11852, %184 ], [ %.21862, %222 ]
  %.18 = phi i32 [ %.11, %184 ], [ %.22, %222 ]
  %198 = icmp ne i32 %.18938, 0
  %199 = icmp ne i32 %.18, 0
  %200 = select i1 %198, i1 %199, i1 false
  br i1 %200, label %201, label %226

201:                                              ; preds = %197
  %202 = icmp ult i32 %.18, 8
  br i1 %202, label %.preheader2026, label %.loopexit2027

.preheader2026:                                   ; preds = %206, %201
  %.161371.ph = phi i64 [ %.141369, %201 ], [ %56, %206 ]
  %.161290.ph = phi ptr [ %.141288, %201 ], [ %4, %206 ]
  %.191201.ph = phi ptr [ %.171199, %201 ], [ %1, %206 ]
  %.201110.ph = phi i64 [ %.181108, %201 ], [ %48, %206 ]
  %.201029.ph = phi i32 [ %.181027, %201 ], [ %54, %206 ]
  %.20940.ph = phi i32 [ %.18938, %201 ], [ %52, %206 ]
  %.20861.ph = phi i32 [ %.18859, %201 ], [ %50, %206 ]
  %.20.ph = phi i32 [ %.18, %201 ], [ %.84.fr1956, %206 ]
  br label %203

203:                                              ; preds = %.preheader2026, %207
  %.191201 = phi ptr [ %208, %207 ], [ %.191201.ph, %.preheader2026 ]
  %.201110 = phi i64 [ %213, %207 ], [ %.201110.ph, %.preheader2026 ]
  %.20 = phi i32 [ %214, %207 ], [ %.20.ph, %.preheader2026 ]
  %.not1608 = icmp ult ptr %.191201, %14
  br i1 %.not1608, label %207, label %204

204:                                              ; preds = %203
  %205 = and i32 %6, 2
  %.not1610 = icmp eq i32 %205, 0
  store i32 51, ptr %0, align 8, !tbaa !19
  %spec.select1689 = select i1 %.not1610, i32 -4, i32 1
  br label %.thread1659

206:                                              ; preds = %34
  br label %.preheader2026, !llvm.loop !36

207:                                              ; preds = %203
  %208 = getelementptr inbounds i8, ptr %.191201, i64 1
  %209 = load i8, ptr %.191201, align 1, !tbaa !26
  %210 = zext i8 %209 to i64
  %211 = zext nneg i32 %.20 to i64
  %212 = shl i64 %210, %211
  %213 = or i64 %212, %.201110
  %214 = add i32 %.20, 8
  %215 = icmp ugt i32 %.20, -9
  br i1 %215, label %203, label %.loopexit2027, !llvm.loop !37

.loopexit2027:                                    ; preds = %207, %201
  %.171372 = phi i64 [ %.141369, %201 ], [ %.161371.ph, %207 ]
  %.171291 = phi ptr [ %.141288, %201 ], [ %.161290.ph, %207 ]
  %.201202 = phi ptr [ %.171199, %201 ], [ %208, %207 ]
  %.211111 = phi i64 [ %.181108, %201 ], [ %213, %207 ]
  %.211030 = phi i32 [ %.181027, %201 ], [ %.201029.ph, %207 ]
  %.21941 = phi i32 [ %.18938, %201 ], [ %.20940.ph, %207 ]
  %.21 = phi i32 [ %.18, %201 ], [ %214, %207 ]
  %216 = trunc i64 %.211111 to i32
  %217 = and i32 %216, 255
  %218 = lshr i64 %.211111, 8
  %219 = add i32 %.21, -8
  br label %220

220:                                              ; preds = %221, %.loopexit2027
  %.181373 = phi i64 [ %.171372, %.loopexit2027 ], [ %56, %221 ]
  %.181292 = phi ptr [ %.171291, %.loopexit2027 ], [ %4, %221 ]
  %.211203 = phi ptr [ %.201202, %.loopexit2027 ], [ %1, %221 ]
  %.221112 = phi i64 [ %218, %.loopexit2027 ], [ %48, %221 ]
  %.221031 = phi i32 [ %.211030, %.loopexit2027 ], [ %54, %221 ]
  %.22942 = phi i32 [ %.21941, %.loopexit2027 ], [ %52, %221 ]
  %.21862 = phi i32 [ %217, %.loopexit2027 ], [ %50, %221 ]
  %.22 = phi i32 [ %219, %.loopexit2027 ], [ %.84.fr1956, %221 ]
  %.not1609 = icmp ult ptr %.181292, %19
  br i1 %.not1609, label %222, label %1133

221:                                              ; preds = %34
  br label %220, !llvm.loop !38

222:                                              ; preds = %220
  %223 = trunc i32 %.21862 to i8
  %224 = getelementptr inbounds i8, ptr %.181292, i64 1
  store i8 %223, ptr %.181292, align 1, !tbaa !26
  %225 = add i32 %.22942, -1
  br label %197, !llvm.loop !39

226:                                              ; preds = %197, %233
  %.191374 = phi i64 [ %.141369, %197 ], [ %.211376, %233 ]
  %.191293 = phi ptr [ %.141288, %197 ], [ %243, %233 ]
  %.221204 = phi ptr [ %.171199, %197 ], [ %242, %233 ]
  %.231113 = phi i64 [ %.181108, %197 ], [ %.251115, %233 ]
  %.231032 = phi i32 [ %.181027, %197 ], [ %.251034, %233 ]
  %.23943 = phi i32 [ %.18938, %197 ], [ %245, %233 ]
  %.22863 = phi i32 [ %.18859, %197 ], [ %.24865, %233 ]
  %.23 = phi i32 [ %.18, %197 ], [ %.25, %233 ]
  %.not1596 = icmp eq i32 %.23943, 0
  br i1 %.not1596, label %1069, label %227

227:                                              ; preds = %226, %228
  %.201375 = phi i64 [ %.191374, %226 ], [ %56, %228 ]
  %.201294 = phi ptr [ %.191293, %226 ], [ %4, %228 ]
  %.231205 = phi ptr [ %.221204, %226 ], [ %1, %228 ]
  %.241114 = phi i64 [ %.231113, %226 ], [ %48, %228 ]
  %.241033 = phi i32 [ %.231032, %226 ], [ %54, %228 ]
  %.24944 = phi i32 [ %.23943, %226 ], [ %52, %228 ]
  %.23864 = phi i32 [ %.22863, %226 ], [ %50, %228 ]
  %.24 = phi i32 [ %.23, %226 ], [ %.84.fr1956, %228 ]
  %.not1605 = icmp ult ptr %.201294, %19
  br i1 %.not1605, label %229, label %1133

228:                                              ; preds = %34
  br label %227, !llvm.loop !40

229:                                              ; preds = %227, %232
  %.211376 = phi i64 [ %.201375, %227 ], [ %56, %232 ]
  %.211295 = phi ptr [ %.201294, %227 ], [ %4, %232 ]
  %.241206 = phi ptr [ %.231205, %227 ], [ %1, %232 ]
  %.251115 = phi i64 [ %.241114, %227 ], [ %48, %232 ]
  %.251034 = phi i32 [ %.241033, %227 ], [ %54, %232 ]
  %.25945 = phi i32 [ %.24944, %227 ], [ %52, %232 ]
  %.24865 = phi i32 [ %.23864, %227 ], [ %50, %232 ]
  %.25 = phi i32 [ %.24, %227 ], [ %.84.fr1956, %232 ]
  %.not1606 = icmp ult ptr %.241206, %14
  br i1 %.not1606, label %233, label %230

230:                                              ; preds = %229
  %231 = and i32 %6, 2
  %.not1607 = icmp eq i32 %231, 0
  store i32 38, ptr %0, align 8, !tbaa !19
  %spec.select1691 = select i1 %.not1607, i32 -4, i32 1
  br label %.thread1659

232:                                              ; preds = %34
  br label %229, !llvm.loop !41

233:                                              ; preds = %229
  %234 = ptrtoint ptr %19 to i64
  %235 = ptrtoint ptr %.211295 to i64
  %236 = sub i64 %234, %235
  %237 = ptrtoint ptr %14 to i64
  %238 = ptrtoint ptr %.241206 to i64
  %239 = sub i64 %237, %238
  %. = tail call i64 @llvm.umin.i64(i64 %236, i64 %239)
  %240 = zext i32 %.25945 to i64
  %241 = tail call i64 @llvm.umin.i64(i64 %., i64 %240)
  tail call void @llvm.memcpy.p0.p0.i64(ptr align 1 %.211295, ptr align 1 %.241206, i64 %241, i1 false)
  %242 = getelementptr inbounds i8, ptr %.241206, i64 %241
  %243 = getelementptr inbounds i8, ptr %.211295, i64 %241
  %244 = trunc nuw i64 %241 to i32
  %245 = sub i32 %.25945, %244
  br label %226, !llvm.loop !42

246:                                              ; preds = %.loopexit2126
  switch i32 %129, label %249 [
    i32 3, label %1133
    i32 1, label %.lr.ph1765.preheader
  ]

.lr.ph1765.preheader:                             ; preds = %246
  %247 = getelementptr inbounds i8, ptr %0, i64 44
  store i32 288, ptr %247, align 4, !tbaa !43
  %248 = getelementptr inbounds i8, ptr %0, i64 48
  store i32 32, ptr %248, align 4, !tbaa !43
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(32) %41, i8 5, i64 32, i1 false)
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 1 dereferenceable(144) %40, i8 8, i64 144, i1 false), !tbaa !26
  %scevgep = getelementptr i8, ptr %0, i64 7716
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 1 dereferenceable(112) %scevgep, i8 9, i64 112, i1 false), !tbaa !26
  %scevgep1884 = getelementptr i8, ptr %0, i64 7828
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 1 dereferenceable(24) %scevgep1884, i8 7, i64 24, i1 false), !tbaa !26
  %scevgep1885 = getelementptr i8, ptr %0, i64 7852
  store i64 578721382704613384, ptr %scevgep1885, align 1
  br label %.loopexit1736

249:                                              ; preds = %246, %.loopexit2043
  %.231378 = phi i64 [ %.261381, %.loopexit2043 ], [ %.31358, %246 ]
  %.231297 = phi ptr [ %.261300, %.loopexit2043 ], [ %.31277, %246 ]
  %.261208 = phi ptr [ %.291211, %.loopexit2043 ], [ %.61188, %246 ]
  %.271117 = phi i64 [ %282, %.loopexit2043 ], [ %127, %246 ]
  %.271036 = phi i32 [ %.301039, %.loopexit2043 ], [ %.71016, %246 ]
  %.27947 = phi i32 [ %288, %.loopexit2043 ], [ 0, %246 ]
  %.26867 = phi i32 [ %.29870, %.loopexit2043 ], [ %.7848, %246 ]
  %.27 = phi i32 [ %283, %.loopexit2043 ], [ %128, %246 ]
  %250 = icmp ult i32 %.27947, 3
  br i1 %250, label %251, label %289

251:                                              ; preds = %249
  %252 = zext nneg i32 %.27947 to i64
  %253 = getelementptr inbounds [4 x i8], ptr @.str.14, i64 0, i64 %252
  %254 = load i8, ptr %253, align 1, !tbaa !26
  %255 = sext i8 %254 to i32
  %256 = icmp ult i32 %.27, %255
  br i1 %256, label %.preheader2042, label %.loopexit2043

.preheader2042:                                   ; preds = %262, %251
  %.251380.ph = phi i64 [ %.231378, %251 ], [ %56, %262 ]
  %.251299.ph = phi ptr [ %.231297, %251 ], [ %4, %262 ]
  %.281210.ph = phi ptr [ %.261208, %251 ], [ %1, %262 ]
  %.291119.ph = phi i64 [ %.271117, %251 ], [ %48, %262 ]
  %.291038.ph = phi i32 [ %.271036, %251 ], [ %54, %262 ]
  %.29949.ph = phi i32 [ %.27947, %251 ], [ %52, %262 ]
  %.28869.ph = phi i32 [ %.26867, %251 ], [ %50, %262 ]
  %.29.ph = phi i32 [ %.27, %251 ], [ %.84.fr1956, %262 ]
  %257 = zext i32 %.29949.ph to i64
  %258 = getelementptr inbounds [4 x i8], ptr @.str.14, i64 0, i64 %257
  br label %259

259:                                              ; preds = %.preheader2042, %263
  %.281210 = phi ptr [ %264, %263 ], [ %.281210.ph, %.preheader2042 ]
  %.291119 = phi i64 [ %269, %263 ], [ %.291119.ph, %.preheader2042 ]
  %.29 = phi i32 [ %270, %263 ], [ %.29.ph, %.preheader2042 ]
  %.not1558 = icmp ult ptr %.281210, %14
  br i1 %.not1558, label %263, label %260

260:                                              ; preds = %259
  %261 = and i32 %6, 2
  %.not1559 = icmp eq i32 %261, 0
  store i32 11, ptr %0, align 8, !tbaa !19
  %spec.select1693 = select i1 %.not1559, i32 -4, i32 1
  br label %.thread1659

262:                                              ; preds = %34
  br label %.preheader2042, !llvm.loop !44

263:                                              ; preds = %259
  %264 = getelementptr inbounds i8, ptr %.281210, i64 1
  %265 = load i8, ptr %.281210, align 1, !tbaa !26
  %266 = zext i8 %265 to i64
  %267 = zext nneg i32 %.29 to i64
  %268 = shl i64 %266, %267
  %269 = or i64 %268, %.291119
  %270 = add i32 %.29, 8
  %271 = load i8, ptr %258, align 1, !tbaa !26
  %272 = sext i8 %271 to i32
  %273 = icmp ult i32 %270, %272
  br i1 %273, label %259, label %.loopexit2043, !llvm.loop !45

.loopexit2043:                                    ; preds = %263, %251
  %.pre-phi1938 = phi i32 [ %255, %251 ], [ %272, %263 ]
  %274 = phi i8 [ %254, %251 ], [ %271, %263 ]
  %.pre-phi = phi i64 [ %252, %251 ], [ %257, %263 ]
  %.261381 = phi i64 [ %.231378, %251 ], [ %.251380.ph, %263 ]
  %.261300 = phi ptr [ %.231297, %251 ], [ %.251299.ph, %263 ]
  %.291211 = phi ptr [ %.261208, %251 ], [ %264, %263 ]
  %.301120 = phi i64 [ %.271117, %251 ], [ %269, %263 ]
  %.301039 = phi i32 [ %.271036, %251 ], [ %.291038.ph, %263 ]
  %.30950 = phi i32 [ %.27947, %251 ], [ %.29949.ph, %263 ]
  %.29870 = phi i32 [ %.26867, %251 ], [ %.28869.ph, %263 ]
  %.30 = phi i32 [ %.27, %251 ], [ %270, %263 ]
  %275 = zext nneg i8 %274 to i32
  %notmask = shl nsw i32 -1, %275
  %276 = xor i32 %notmask, -1
  %277 = trunc i64 %.301120 to i32
  %278 = and i32 %276, %277
  %279 = getelementptr inbounds i8, ptr %0, i64 44
  %280 = getelementptr inbounds [3 x i32], ptr %279, i64 0, i64 %.pre-phi
  %281 = zext nneg i32 %.pre-phi1938 to i64
  %282 = lshr i64 %.301120, %281
  %283 = sub i32 %.30, %.pre-phi1938
  %284 = getelementptr inbounds [3 x i16], ptr @tinfl_decompress.s_min_table_sizes, i64 0, i64 %.pre-phi
  %285 = load i16, ptr %284, align 2, !tbaa !46
  %286 = zext i16 %285 to i32
  %287 = add nuw i32 %278, %286
  store i32 %287, ptr %280, align 4, !tbaa !43
  %288 = add i32 %.30950, 1
  br label %249, !llvm.loop !48

289:                                              ; preds = %249
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(19) %43, i8 0, i64 19, i1 false)
  br label %290

290:                                              ; preds = %.loopexit2054, %289
  %.271382 = phi i64 [ %.231378, %289 ], [ %.301385, %.loopexit2054 ]
  %.271301 = phi ptr [ %.231297, %289 ], [ %.301304, %.loopexit2054 ]
  %.301212 = phi ptr [ %.261208, %289 ], [ %.331215, %.loopexit2054 ]
  %.311121 = phi i64 [ %.271117, %289 ], [ %319, %.loopexit2054 ]
  %.311040 = phi i32 [ %.271036, %289 ], [ %.341043, %.loopexit2054 ]
  %.31951 = phi i32 [ 0, %289 ], [ %326, %.loopexit2054 ]
  %.30871 = phi i32 [ %.26867, %289 ], [ %.33874, %.loopexit2054 ]
  %.31 = phi i32 [ %.27, %289 ], [ %320, %.loopexit2054 ]
  %291 = getelementptr inbounds i8, ptr %0, i64 52
  %292 = load i32, ptr %291, align 4, !tbaa !43
  %293 = icmp ult i32 %.31951, %292
  br i1 %293, label %294, label %327

294:                                              ; preds = %290
  %295 = icmp ult i32 %.31, 3
  br i1 %295, label %.preheader2053, label %.loopexit2054

.preheader2053:                                   ; preds = %294, %298
  %.291384.ph = phi i64 [ %.271382, %294 ], [ %56, %298 ]
  %.291303.ph = phi ptr [ %.271301, %294 ], [ %4, %298 ]
  %.321214.ph = phi ptr [ %.301212, %294 ], [ %1, %298 ]
  %.331123.ph = phi i64 [ %.311121, %294 ], [ %48, %298 ]
  %.331042.ph = phi i32 [ %.311040, %294 ], [ %54, %298 ]
  %.33953.ph = phi i32 [ %.31951, %294 ], [ %52, %298 ]
  %.32873.ph = phi i32 [ %.30871, %294 ], [ %50, %298 ]
  %.33.ph = phi i32 [ %.31, %294 ], [ %.84.fr1956, %298 ]
  %.not1556 = icmp ult ptr %.321214.ph, %14
  br i1 %.not1556, label %299, label %296

296:                                              ; preds = %308, %.preheader2053
  %.321214.lcssa = phi ptr [ %.321214.ph, %.preheader2053 ], [ %300, %308 ]
  %.331123.lcssa = phi i64 [ %.331123.ph, %.preheader2053 ], [ %305, %308 ]
  %.33.lcssa = phi i32 [ %.33.ph, %.preheader2053 ], [ %306, %308 ]
  %297 = and i32 %6, 2
  %.not1557 = icmp eq i32 %297, 0
  store i32 14, ptr %0, align 8, !tbaa !19
  %spec.select1695 = select i1 %.not1557, i32 -4, i32 1
  br label %.thread1659

298:                                              ; preds = %34
  br label %.preheader2053, !llvm.loop !49

299:                                              ; preds = %.preheader2053
  %300 = getelementptr inbounds i8, ptr %.321214.ph, i64 1
  %301 = load i8, ptr %.321214.ph, align 1, !tbaa !26
  %302 = zext i8 %301 to i64
  %303 = zext nneg i32 %.33.ph to i64
  %304 = shl i64 %302, %303
  %305 = or i64 %304, %.331123.ph
  %306 = add i32 %.33.ph, 8
  %307 = icmp ult i32 %306, 3
  br i1 %307, label %308, label %.loopexit2054, !llvm.loop !50

308:                                              ; preds = %299
  %.not1556.1 = icmp ult ptr %300, %14
  br i1 %.not1556.1, label %309, label %296

309:                                              ; preds = %308
  %310 = getelementptr inbounds i8, ptr %.321214.ph, i64 2
  %311 = load i8, ptr %300, align 1, !tbaa !26
  %312 = zext i8 %311 to i64
  %313 = zext nneg i32 %306 to i64
  %314 = shl nuw nsw i64 %312, %313
  %315 = or i64 %314, %.331123.ph
  %316 = add nsw i32 %.33.ph, 16
  br label %.loopexit2054

.loopexit2054:                                    ; preds = %299, %309, %294
  %.301385 = phi i64 [ %.271382, %294 ], [ %.291384.ph, %309 ], [ %.291384.ph, %299 ]
  %.301304 = phi ptr [ %.271301, %294 ], [ %.291303.ph, %309 ], [ %.291303.ph, %299 ]
  %.331215 = phi ptr [ %.301212, %294 ], [ %300, %299 ], [ %310, %309 ]
  %.341124 = phi i64 [ %.311121, %294 ], [ %305, %299 ], [ %315, %309 ]
  %.341043 = phi i32 [ %.311040, %294 ], [ %.331042.ph, %309 ], [ %.331042.ph, %299 ]
  %.34954 = phi i32 [ %.31951, %294 ], [ %.33953.ph, %309 ], [ %.33953.ph, %299 ]
  %.33874 = phi i32 [ %.30871, %294 ], [ %.32873.ph, %309 ], [ %.32873.ph, %299 ]
  %.34 = phi i32 [ %.31, %294 ], [ %306, %299 ], [ %316, %309 ]
  %317 = trunc i64 %.341124 to i8
  %318 = and i8 %317, 7
  %319 = lshr i64 %.341124, 3
  %320 = add i32 %.34, -3
  %321 = zext i32 %.34954 to i64
  %322 = getelementptr inbounds [19 x i8], ptr @tinfl_decompress.s_length_dezigzag, i64 0, i64 %321
  %323 = load i8, ptr %322, align 1, !tbaa !26
  %324 = zext i8 %323 to i64
  %325 = getelementptr inbounds [19 x i8], ptr %43, i64 0, i64 %324
  store i8 %318, ptr %325, align 1, !tbaa !26
  %326 = add i32 %.34954, 1
  br label %290, !llvm.loop !51

327:                                              ; preds = %290
  store i32 19, ptr %291, align 4, !tbaa !43
  %.phi.trans.insert.phi.trans.insert = getelementptr inbounds i8, ptr %0, i64 24
  %.pre.pre = load i32, ptr %.phi.trans.insert.phi.trans.insert, align 8, !tbaa !31
  br label %.loopexit1736

.loopexit1736:                                    ; preds = %327, %.lr.ph1765.preheader, %682
  %328 = phi i32 [ %685, %682 ], [ %.pre.pre, %327 ], [ 1, %.lr.ph1765.preheader ]
  %.321387 = phi i64 [ %.431398, %682 ], [ %.271382, %327 ], [ %.31358, %.lr.ph1765.preheader ]
  %.321306 = phi ptr [ %.431317, %682 ], [ %.271301, %327 ], [ %.31277, %.lr.ph1765.preheader ]
  %.351217 = phi ptr [ %.461228, %682 ], [ %.301212, %327 ], [ %.61188, %.lr.ph1765.preheader ]
  %.361126 = phi i64 [ %.471137, %682 ], [ %.311121, %327 ], [ %127, %.lr.ph1765.preheader ]
  %.361045 = phi i32 [ %.471056, %682 ], [ %.311040, %327 ], [ %.71016, %.lr.ph1765.preheader ]
  %.36956 = phi i32 [ %.47967, %682 ], [ %.31951, %327 ], [ %.8928, %.lr.ph1765.preheader ]
  %.35876 = phi i32 [ %.45886, %682 ], [ %.30871, %327 ], [ %.7848, %.lr.ph1765.preheader ]
  %.36 = phi i32 [ %.47, %682 ], [ %.31, %327 ], [ %128, %.lr.ph1765.preheader ]
  %329 = icmp sgt i32 %328, -1
  br i1 %329, label %330, label %.preheader2099

330:                                              ; preds = %.loopexit1736
  %331 = getelementptr inbounds i8, ptr %0, i64 24
  %332 = getelementptr inbounds i8, ptr %0, i64 72
  %333 = zext nneg i32 %328 to i64
  %334 = getelementptr inbounds [3 x [1024 x i16]], ptr %332, i64 0, i64 %333
  %335 = getelementptr inbounds [3 x ptr], ptr %9, i64 0, i64 %333
  %336 = load ptr, ptr %335, align 8, !tbaa !9
  %337 = getelementptr inbounds [3 x ptr], ptr %10, i64 0, i64 %333
  %338 = load ptr, ptr %337, align 8, !tbaa !9
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(64) %12, i8 0, i64 64, i1 false)
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 2 dereferenceable(2048) %334, i8 0, i64 2048, i1 false)
  tail call void @tinfl_clear_tree(ptr noundef nonnull %0)
  %339 = getelementptr inbounds i8, ptr %0, i64 44
  %340 = load i32, ptr %331, align 8, !tbaa !31
  %341 = zext i32 %340 to i64
  %342 = getelementptr inbounds [3 x i32], ptr %339, i64 0, i64 %341
  %343 = load i32, ptr %342, align 4, !tbaa !43
  %.not1842 = icmp eq i32 %343, 0
  br i1 %.not1842, label %._crit_edge1776, label %.lr.ph1775.preheader

.lr.ph1775.preheader:                             ; preds = %330
  %wide.trip.count = zext i32 %343 to i64
  %xtraiter2133 = and i64 %wide.trip.count, 3
  %344 = icmp ult i32 %343, 4
  br i1 %344, label %._crit_edge1776.loopexit.unr-lcssa, label %.lr.ph1775.preheader.new

.lr.ph1775.preheader.new:                         ; preds = %.lr.ph1775.preheader
  %unroll_iter = and i64 %wide.trip.count, 4294967292
  br label %.lr.ph1775

.lr.ph1775:                                       ; preds = %.lr.ph1775, %.lr.ph1775.preheader.new
  %indvars.iv = phi i64 [ 0, %.lr.ph1775.preheader.new ], [ %indvars.iv.next.3, %.lr.ph1775 ]
  %niter = phi i64 [ 0, %.lr.ph1775.preheader.new ], [ %niter.next.3, %.lr.ph1775 ]
  %345 = getelementptr inbounds i8, ptr %338, i64 %indvars.iv
  %346 = load i8, ptr %345, align 1, !tbaa !26
  %347 = zext i8 %346 to i64
  %348 = getelementptr inbounds [16 x i32], ptr %12, i64 0, i64 %347
  %349 = load i32, ptr %348, align 4, !tbaa !43
  %350 = add i32 %349, 1
  store i32 %350, ptr %348, align 4, !tbaa !43
  %indvars.iv.next = or disjoint i64 %indvars.iv, 1
  %351 = getelementptr inbounds i8, ptr %338, i64 %indvars.iv.next
  %352 = load i8, ptr %351, align 1, !tbaa !26
  %353 = zext i8 %352 to i64
  %354 = getelementptr inbounds [16 x i32], ptr %12, i64 0, i64 %353
  %355 = load i32, ptr %354, align 4, !tbaa !43
  %356 = add i32 %355, 1
  store i32 %356, ptr %354, align 4, !tbaa !43
  %indvars.iv.next.1 = or disjoint i64 %indvars.iv, 2
  %357 = getelementptr inbounds i8, ptr %338, i64 %indvars.iv.next.1
  %358 = load i8, ptr %357, align 1, !tbaa !26
  %359 = zext i8 %358 to i64
  %360 = getelementptr inbounds [16 x i32], ptr %12, i64 0, i64 %359
  %361 = load i32, ptr %360, align 4, !tbaa !43
  %362 = add i32 %361, 1
  store i32 %362, ptr %360, align 4, !tbaa !43
  %indvars.iv.next.2 = or disjoint i64 %indvars.iv, 3
  %363 = getelementptr inbounds i8, ptr %338, i64 %indvars.iv.next.2
  %364 = load i8, ptr %363, align 1, !tbaa !26
  %365 = zext i8 %364 to i64
  %366 = getelementptr inbounds [16 x i32], ptr %12, i64 0, i64 %365
  %367 = load i32, ptr %366, align 4, !tbaa !43
  %368 = add i32 %367, 1
  store i32 %368, ptr %366, align 4, !tbaa !43
  %indvars.iv.next.3 = add nuw nsw i64 %indvars.iv, 4
  %niter.next.3 = add i64 %niter, 4
  %niter.ncmp.3 = icmp eq i64 %niter.next.3, %unroll_iter
  br i1 %niter.ncmp.3, label %._crit_edge1776.loopexit.unr-lcssa, label %.lr.ph1775, !llvm.loop !52

._crit_edge1776.loopexit.unr-lcssa:               ; preds = %.lr.ph1775, %.lr.ph1775.preheader
  %indvars.iv.unr = phi i64 [ 0, %.lr.ph1775.preheader ], [ %indvars.iv.next.3, %.lr.ph1775 ]
  %lcmp.mod2134.not = icmp eq i64 %xtraiter2133, 0
  br i1 %lcmp.mod2134.not, label %._crit_edge1776.loopexit, label %.lr.ph1775.epil

.lr.ph1775.epil:                                  ; preds = %._crit_edge1776.loopexit.unr-lcssa, %.lr.ph1775.epil
  %indvars.iv.epil = phi i64 [ %indvars.iv.next.epil, %.lr.ph1775.epil ], [ %indvars.iv.unr, %._crit_edge1776.loopexit.unr-lcssa ]
  %epil.iter = phi i64 [ %epil.iter.next, %.lr.ph1775.epil ], [ 0, %._crit_edge1776.loopexit.unr-lcssa ]
  %369 = getelementptr inbounds i8, ptr %338, i64 %indvars.iv.epil
  %370 = load i8, ptr %369, align 1, !tbaa !26
  %371 = zext i8 %370 to i64
  %372 = getelementptr inbounds [16 x i32], ptr %12, i64 0, i64 %371
  %373 = load i32, ptr %372, align 4, !tbaa !43
  %374 = add i32 %373, 1
  store i32 %374, ptr %372, align 4, !tbaa !43
  %indvars.iv.next.epil = add nuw nsw i64 %indvars.iv.epil, 1
  %epil.iter.next = add i64 %epil.iter, 1
  %epil.iter.cmp.not = icmp eq i64 %epil.iter.next, %xtraiter2133
  br i1 %epil.iter.cmp.not, label %._crit_edge1776.loopexit, label %.lr.ph1775.epil, !llvm.loop !53

._crit_edge1776.loopexit:                         ; preds = %.lr.ph1775.epil, %._crit_edge1776.loopexit.unr-lcssa
  %.phi.trans.insert1909 = getelementptr inbounds i8, ptr %12, i64 4
  %.pre1910 = load i32, ptr %.phi.trans.insert1909, align 4, !tbaa !43
  %.phi.trans.insert1911 = getelementptr inbounds i8, ptr %12, i64 8
  %.pre1912 = load i32, ptr %.phi.trans.insert1911, align 8, !tbaa !43
  %.phi.trans.insert1913 = getelementptr inbounds i8, ptr %12, i64 12
  %.pre1914 = load i32, ptr %.phi.trans.insert1913, align 4, !tbaa !43
  %.phi.trans.insert1915 = getelementptr inbounds i8, ptr %12, i64 16
  %.pre1916 = load i32, ptr %.phi.trans.insert1915, align 16, !tbaa !43
  %.phi.trans.insert1917 = getelementptr inbounds i8, ptr %12, i64 20
  %.pre1918 = load i32, ptr %.phi.trans.insert1917, align 4, !tbaa !43
  %.phi.trans.insert1919 = getelementptr inbounds i8, ptr %12, i64 24
  %.pre1920 = load i32, ptr %.phi.trans.insert1919, align 8, !tbaa !43
  %.phi.trans.insert1921 = getelementptr inbounds i8, ptr %12, i64 28
  %.pre1922 = load i32, ptr %.phi.trans.insert1921, align 4, !tbaa !43
  %.phi.trans.insert1923 = getelementptr inbounds i8, ptr %12, i64 32
  %.pre1924 = load i32, ptr %.phi.trans.insert1923, align 16, !tbaa !43
  %.phi.trans.insert1925 = getelementptr inbounds i8, ptr %12, i64 36
  %.pre1926 = load i32, ptr %.phi.trans.insert1925, align 4, !tbaa !43
  %.phi.trans.insert1927 = getelementptr inbounds i8, ptr %12, i64 40
  %.pre1928 = load i32, ptr %.phi.trans.insert1927, align 8, !tbaa !43
  %.phi.trans.insert1929 = getelementptr inbounds i8, ptr %12, i64 44
  %.pre1930 = load i32, ptr %.phi.trans.insert1929, align 4, !tbaa !43
  %.phi.trans.insert1931 = getelementptr inbounds i8, ptr %12, i64 48
  %.pre1932 = load i32, ptr %.phi.trans.insert1931, align 16, !tbaa !43
  %.phi.trans.insert1933 = getelementptr inbounds i8, ptr %12, i64 52
  %.pre1934 = load i32, ptr %.phi.trans.insert1933, align 4, !tbaa !43
  %.phi.trans.insert1935 = getelementptr inbounds i8, ptr %12, i64 56
  %.pre1936 = load i32, ptr %.phi.trans.insert1935, align 8, !tbaa !43
  br label %._crit_edge1776

._crit_edge1776:                                  ; preds = %._crit_edge1776.loopexit, %330
  %375 = phi i32 [ %.pre1936, %._crit_edge1776.loopexit ], [ 0, %330 ]
  %376 = phi i32 [ %.pre1934, %._crit_edge1776.loopexit ], [ 0, %330 ]
  %377 = phi i32 [ %.pre1932, %._crit_edge1776.loopexit ], [ 0, %330 ]
  %378 = phi i32 [ %.pre1930, %._crit_edge1776.loopexit ], [ 0, %330 ]
  %379 = phi i32 [ %.pre1928, %._crit_edge1776.loopexit ], [ 0, %330 ]
  %380 = phi i32 [ %.pre1926, %._crit_edge1776.loopexit ], [ 0, %330 ]
  %381 = phi i32 [ %.pre1924, %._crit_edge1776.loopexit ], [ 0, %330 ]
  %382 = phi i32 [ %.pre1922, %._crit_edge1776.loopexit ], [ 0, %330 ]
  %383 = phi i32 [ %.pre1920, %._crit_edge1776.loopexit ], [ 0, %330 ]
  %384 = phi i32 [ %.pre1918, %._crit_edge1776.loopexit ], [ 0, %330 ]
  %385 = phi i32 [ %.pre1916, %._crit_edge1776.loopexit ], [ 0, %330 ]
  %386 = phi i32 [ %.pre1914, %._crit_edge1776.loopexit ], [ 0, %330 ]
  %387 = phi i32 [ %.pre1912, %._crit_edge1776.loopexit ], [ 0, %330 ]
  %388 = phi i32 [ %.pre1910, %._crit_edge1776.loopexit ], [ 0, %330 ]
  %389 = getelementptr inbounds i8, ptr %11, i64 4
  store i32 0, ptr %389, align 4, !tbaa !43
  store i32 0, ptr %11, align 16, !tbaa !43
  %390 = shl i32 %388, 1
  %391 = getelementptr inbounds i8, ptr %11, i64 8
  store i32 %390, ptr %391, align 8, !tbaa !43
  %392 = add i32 %387, %388
  %393 = add i32 %387, %390
  %394 = shl i32 %393, 1
  %395 = getelementptr inbounds i8, ptr %11, i64 12
  store i32 %394, ptr %395, align 4, !tbaa !43
  %396 = add i32 %386, %392
  %397 = add i32 %386, %394
  %398 = shl i32 %397, 1
  %399 = getelementptr inbounds i8, ptr %11, i64 16
  store i32 %398, ptr %399, align 16, !tbaa !43
  %400 = add i32 %385, %396
  %401 = add i32 %385, %398
  %402 = shl i32 %401, 1
  %403 = getelementptr inbounds i8, ptr %11, i64 20
  store i32 %402, ptr %403, align 4, !tbaa !43
  %404 = add i32 %384, %400
  %405 = add i32 %384, %402
  %406 = shl i32 %405, 1
  %407 = getelementptr inbounds i8, ptr %11, i64 24
  store i32 %406, ptr %407, align 8, !tbaa !43
  %408 = add i32 %383, %404
  %409 = add i32 %383, %406
  %410 = shl i32 %409, 1
  %411 = getelementptr inbounds i8, ptr %11, i64 28
  store i32 %410, ptr %411, align 4, !tbaa !43
  %412 = add i32 %382, %408
  %413 = add i32 %382, %410
  %414 = shl i32 %413, 1
  %415 = getelementptr inbounds i8, ptr %11, i64 32
  store i32 %414, ptr %415, align 16, !tbaa !43
  %416 = add i32 %381, %412
  %417 = add i32 %381, %414
  %418 = shl i32 %417, 1
  %419 = getelementptr inbounds i8, ptr %11, i64 36
  store i32 %418, ptr %419, align 4, !tbaa !43
  %420 = add i32 %380, %416
  %421 = add i32 %380, %418
  %422 = shl i32 %421, 1
  %423 = getelementptr inbounds i8, ptr %11, i64 40
  store i32 %422, ptr %423, align 8, !tbaa !43
  %424 = add i32 %379, %420
  %425 = add i32 %379, %422
  %426 = shl i32 %425, 1
  %427 = getelementptr inbounds i8, ptr %11, i64 44
  store i32 %426, ptr %427, align 4, !tbaa !43
  %428 = add i32 %378, %424
  %429 = add i32 %378, %426
  %430 = shl i32 %429, 1
  %431 = getelementptr inbounds i8, ptr %11, i64 48
  store i32 %430, ptr %431, align 16, !tbaa !43
  %432 = add i32 %377, %428
  %433 = add i32 %377, %430
  %434 = shl i32 %433, 1
  %435 = getelementptr inbounds i8, ptr %11, i64 52
  store i32 %434, ptr %435, align 4, !tbaa !43
  %436 = add i32 %376, %432
  %437 = add i32 %376, %434
  %438 = shl i32 %437, 1
  %439 = getelementptr inbounds i8, ptr %11, i64 56
  store i32 %438, ptr %439, align 8, !tbaa !43
  %440 = add i32 %375, %436
  %441 = add i32 %375, %438
  %442 = shl i32 %441, 1
  %443 = getelementptr inbounds i8, ptr %11, i64 60
  store i32 %442, ptr %443, align 4, !tbaa !43
  %444 = getelementptr inbounds i8, ptr %12, i64 60
  %445 = load i32, ptr %444, align 4, !tbaa !43
  %446 = add i32 %445, %440
  %447 = add i32 %445, %442
  %448 = shl i32 %447, 1
  %449 = getelementptr inbounds i8, ptr %11, i64 64
  store i32 %448, ptr %449, align 16, !tbaa !43
  %450 = icmp ne i32 %448, 65536
  %451 = icmp ugt i32 %446, 1
  %or.cond = select i1 %450, i1 %451, i1 false
  br i1 %or.cond, label %1133, label %.preheader1723

.preheader1723:                                   ; preds = %._crit_edge1776
  br i1 %.not1842, label %._crit_edge1801, label %.lr.ph1800.preheader

.lr.ph1800.preheader:                             ; preds = %.preheader1723
  %wide.trip.count1897 = zext i32 %343 to i64
  br label %.lr.ph1800

.lr.ph1800:                                       ; preds = %.lr.ph1800.preheader, %.loopexit1722
  %indvars.iv1894 = phi i64 [ 0, %.lr.ph1800.preheader ], [ %indvars.iv.next1895, %.loopexit1722 ]
  %.014571798 = phi i32 [ -1, %.lr.ph1800.preheader ], [ %.41461, %.loopexit1722 ]
  %452 = getelementptr inbounds i8, ptr %338, i64 %indvars.iv1894
  %453 = load i8, ptr %452, align 1, !tbaa !26
  %454 = zext i8 %453 to i32
  %.not1590 = icmp eq i8 %453, 0
  br i1 %.not1590, label %.loopexit1722, label %455

455:                                              ; preds = %.lr.ph1800
  %456 = zext i8 %453 to i64
  %457 = getelementptr inbounds [17 x i32], ptr %11, i64 0, i64 %456
  %458 = load i32, ptr %457, align 4, !tbaa !43
  %459 = add i32 %458, 1
  store i32 %459, ptr %457, align 4, !tbaa !43
  %xtraiter2135 = and i32 %454, 3
  %460 = icmp ult i8 %453, 4
  br i1 %460, label %.unr-lcssa, label %.new

.new:                                             ; preds = %455
  %unroll_iter2141 = and i32 %454, 252
  br label %461

461:                                              ; preds = %461, %.new
  %.014421784 = phi i32 [ %458, %.new ], [ %475, %461 ]
  %.014441782 = phi i32 [ 0, %.new ], [ %474, %461 ]
  %niter2142 = phi i32 [ 0, %.new ], [ %niter2142.next.3, %461 ]
  %462 = shl i32 %.014441782, 3
  %463 = shl i32 %.014421784, 2
  %464 = and i32 %463, 4
  %465 = or disjoint i32 %462, %464
  %466 = and i32 %.014421784, 2
  %467 = or disjoint i32 %466, %465
  %468 = lshr i32 %.014421784, 2
  %469 = and i32 %468, 1
  %470 = or disjoint i32 %469, %467
  %471 = lshr i32 %.014421784, 3
  %472 = shl i32 %470, 1
  %473 = and i32 %471, 1
  %474 = or disjoint i32 %473, %472
  %475 = lshr i32 %.014421784, 4
  %niter2142.next.3 = add i32 %niter2142, 4
  %niter2142.ncmp.3 = icmp eq i32 %niter2142.next.3, %unroll_iter2141
  br i1 %niter2142.ncmp.3, label %.unr-lcssa, label %461, !llvm.loop !55

.unr-lcssa:                                       ; preds = %461, %455
  %.014421784.lcssa.ph = phi i32 [ poison, %455 ], [ %471, %461 ]
  %.lcssa2072.ph = phi i32 [ poison, %455 ], [ %472, %461 ]
  %.lcssa2071.ph = phi i32 [ poison, %455 ], [ %474, %461 ]
  %.014421784.unr = phi i32 [ %458, %455 ], [ %475, %461 ]
  %.014441782.unr = phi i32 [ 0, %455 ], [ %474, %461 ]
  %lcmp.mod2137.not = icmp eq i32 %xtraiter2135, 0
  br i1 %lcmp.mod2137.not, label %.epilog-lcssa, label %.epil.preheader

.epil.preheader:                                  ; preds = %.unr-lcssa, %.epil.preheader
  %.014421784.epil = phi i32 [ %479, %.epil.preheader ], [ %.014421784.unr, %.unr-lcssa ]
  %.014441782.epil = phi i32 [ %478, %.epil.preheader ], [ %.014441782.unr, %.unr-lcssa ]
  %epil.iter2136 = phi i32 [ %epil.iter2136.next, %.epil.preheader ], [ 0, %.unr-lcssa ]
  %476 = shl i32 %.014441782.epil, 1
  %477 = and i32 %.014421784.epil, 1
  %478 = or disjoint i32 %477, %476
  %479 = lshr i32 %.014421784.epil, 1
  %epil.iter2136.next = add i32 %epil.iter2136, 1
  %epil.iter2136.cmp.not = icmp eq i32 %epil.iter2136.next, %xtraiter2135
  br i1 %epil.iter2136.cmp.not, label %.epilog-lcssa, label %.epil.preheader, !llvm.loop !56

.epilog-lcssa:                                    ; preds = %.epil.preheader, %.unr-lcssa
  %.014421784.lcssa = phi i32 [ %.014421784.lcssa.ph, %.unr-lcssa ], [ %.014421784.epil, %.epil.preheader ]
  %.lcssa2072 = phi i32 [ %.lcssa2072.ph, %.unr-lcssa ], [ %476, %.epil.preheader ]
  %.lcssa2071 = phi i32 [ %.lcssa2071.ph, %.unr-lcssa ], [ %478, %.epil.preheader ]
  %480 = icmp ult i8 %453, 11
  br i1 %480, label %481, label %495

481:                                              ; preds = %.epilog-lcssa
  %482 = shl nuw nsw i32 %454, 9
  %483 = trunc nuw i64 %indvars.iv1894 to i32
  %484 = or i32 %482, %483
  %485 = trunc i32 %484 to i16
  %486 = icmp ult i32 %.lcssa2072, 1024
  br i1 %486, label %.lr.ph1797, label %.loopexit1722

.lr.ph1797:                                       ; preds = %481
  %487 = shl nuw nsw i32 1, %454
  %488 = and i32 %.014421784.lcssa, 1
  %489 = or disjoint i32 %.lcssa2072, %488
  %490 = zext nneg i32 %489 to i64
  %491 = zext nneg i32 %487 to i64
  br label %492

492:                                              ; preds = %.lr.ph1797, %492
  %indvars.iv1891 = phi i64 [ %490, %.lr.ph1797 ], [ %indvars.iv.next1892, %492 ]
  %493 = getelementptr inbounds i16, ptr %334, i64 %indvars.iv1891
  store i16 %485, ptr %493, align 2, !tbaa !46
  %indvars.iv.next1892 = add nuw nsw i64 %indvars.iv1891, %491
  %494 = icmp ult i64 %indvars.iv.next1892, 1024
  br i1 %494, label %492, label %.loopexit1722, !llvm.loop !57

495:                                              ; preds = %.epilog-lcssa
  %496 = and i32 %.lcssa2071, 1023
  %497 = zext nneg i32 %496 to i64
  %498 = getelementptr inbounds i16, ptr %334, i64 %497
  %499 = load i16, ptr %498, align 2, !tbaa !46
  %500 = sext i16 %499 to i32
  %501 = icmp eq i16 %499, 0
  br i1 %501, label %502, label %505

502:                                              ; preds = %495
  %503 = trunc i32 %.014571798 to i16
  store i16 %503, ptr %498, align 2, !tbaa !46
  %504 = add nsw i32 %.014571798, -2
  br label %505

505:                                              ; preds = %502, %495
  %.01462 = phi i32 [ %.014571798, %502 ], [ %500, %495 ]
  %.11458 = phi i32 [ %504, %502 ], [ %.014571798, %495 ]
  %506 = lshr i32 %.lcssa2072, 9
  %.not1844 = icmp eq i8 %453, 11
  br i1 %.not1844, label %._crit_edge1791, label %.lr.ph1790

.lr.ph1790:                                       ; preds = %505, %519
  %.214461788 = phi i32 [ %507, %519 ], [ %506, %505 ]
  %.014501787 = phi i32 [ %520, %519 ], [ %454, %505 ]
  %.214591786 = phi i32 [ %.31460, %519 ], [ %.11458, %505 ]
  %.114631785 = phi i32 [ %.21464, %519 ], [ %.01462, %505 ]
  %507 = lshr i32 %.214461788, 1
  %508 = and i32 %507, 1
  %509 = xor i32 %.114631785, -1
  %510 = add i32 %508, %509
  %511 = sext i32 %510 to i64
  %512 = getelementptr inbounds i16, ptr %336, i64 %511
  %513 = load i16, ptr %512, align 2, !tbaa !46
  %.not1594 = icmp eq i16 %513, 0
  br i1 %.not1594, label %514, label %517

514:                                              ; preds = %.lr.ph1790
  %515 = trunc i32 %.214591786 to i16
  store i16 %515, ptr %512, align 2, !tbaa !46
  %516 = add nsw i32 %.214591786, -2
  br label %519

517:                                              ; preds = %.lr.ph1790
  %518 = sext i16 %513 to i32
  br label %519

519:                                              ; preds = %514, %517
  %.21464 = phi i32 [ %518, %517 ], [ %.214591786, %514 ]
  %.31460 = phi i32 [ %.214591786, %517 ], [ %516, %514 ]
  %520 = add nsw i32 %.014501787, -1
  %521 = icmp ugt i32 %520, 11
  br i1 %521, label %.lr.ph1790, label %._crit_edge1791, !llvm.loop !59

._crit_edge1791:                                  ; preds = %519, %505
  %.11463.lcssa = phi i32 [ %.01462, %505 ], [ %.21464, %519 ]
  %.21459.lcssa = phi i32 [ %.11458, %505 ], [ %.31460, %519 ]
  %.21446.lcssa = phi i32 [ %506, %505 ], [ %507, %519 ]
  %522 = lshr i32 %.21446.lcssa, 1
  %.neg = and i32 %522, 1
  %523 = trunc i64 %indvars.iv1894 to i16
  %524 = xor i32 %.11463.lcssa, -1
  %525 = add i32 %.neg, %524
  %526 = sext i32 %525 to i64
  %527 = getelementptr inbounds i16, ptr %336, i64 %526
  store i16 %523, ptr %527, align 2, !tbaa !46
  br label %.loopexit1722

.loopexit1722:                                    ; preds = %492, %481, %.lr.ph1800, %._crit_edge1791
  %.41461 = phi i32 [ %.21459.lcssa, %._crit_edge1791 ], [ %.014571798, %.lr.ph1800 ], [ %.014571798, %481 ], [ %.014571798, %492 ]
  %indvars.iv.next1895 = add nuw nsw i64 %indvars.iv1894, 1
  %exitcond1898.not = icmp eq i64 %indvars.iv.next1895, %wide.trip.count1897
  br i1 %exitcond1898.not, label %._crit_edge1801, label %.lr.ph1800, !llvm.loop !60

._crit_edge1801:                                  ; preds = %.loopexit1722, %.preheader1723
  %528 = icmp eq i32 %340, 2
  br i1 %528, label %529, label %682

529:                                              ; preds = %._crit_edge1801, %672, %623
  %.341389 = phi i64 [ %.371392, %623 ], [ %.411396, %672 ], [ %.321387, %._crit_edge1801 ]
  %.341308 = phi ptr [ %.371311, %623 ], [ %.411315, %672 ], [ %.321306, %._crit_edge1801 ]
  %.371219 = phi ptr [ %.401222, %623 ], [ %.441226, %672 ], [ %.351217, %._crit_edge1801 ]
  %.381128 = phi i64 [ %620, %623 ], [ %657, %672 ], [ %.361126, %._crit_edge1801 ]
  %.381047 = phi i32 [ %.411050, %623 ], [ %.451054, %672 ], [ %.361045, %._crit_edge1801 ]
  %.38958 = phi i32 [ %626, %623 ], [ %675, %672 ], [ 0, %._crit_edge1801 ]
  %.37878 = phi i32 [ %.21436, %623 ], [ %.43884, %672 ], [ %.35876, %._crit_edge1801 ]
  %.38 = phi i32 [ %621, %623 ], [ %658, %672 ], [ %.36, %._crit_edge1801 ]
  %530 = getelementptr inbounds i8, ptr %0, i64 44
  %531 = load i32, ptr %530, align 4, !tbaa !43
  %532 = getelementptr inbounds i8, ptr %0, i64 48
  %533 = load i32, ptr %532, align 4, !tbaa !43
  %534 = add i32 %533, %531
  %535 = icmp ult i32 %.38958, %534
  br i1 %535, label %536, label %676

536:                                              ; preds = %529
  %537 = icmp ult i32 %.38, 15
  br i1 %537, label %538, label %598

538:                                              ; preds = %536
  %539 = ptrtoint ptr %14 to i64
  %540 = ptrtoint ptr %.371219 to i64
  %541 = sub i64 %539, %540
  %542 = icmp slt i64 %541, 2
  br i1 %542, label %543, label %583

543:                                              ; preds = %538, %574
  %.351390 = phi i64 [ %.341389, %538 ], [ %.361391, %574 ]
  %.351309 = phi ptr [ %.341308, %538 ], [ %.361310, %574 ]
  %.381220 = phi ptr [ %.371219, %538 ], [ %575, %574 ]
  %.391129 = phi i64 [ %.381128, %538 ], [ %580, %574 ]
  %.391048 = phi i32 [ %.381047, %538 ], [ %.401049, %574 ]
  %.39959 = phi i32 [ %.38958, %538 ], [ %.40960, %574 ]
  %.38879 = phi i32 [ %.37878, %538 ], [ %.39880, %574 ]
  %.39 = phi i32 [ %.38, %538 ], [ %581, %574 ]
  %544 = getelementptr inbounds i8, ptr %0, i64 4168
  %545 = and i64 %.391129, 1023
  %546 = getelementptr inbounds [1024 x i16], ptr %544, i64 0, i64 %545
  %547 = load i16, ptr %546, align 2, !tbaa !46
  %548 = sext i16 %547 to i32
  %549 = icmp sgt i16 %547, -1
  br i1 %549, label %550, label %552

550:                                              ; preds = %543
  %.not1583 = icmp ult i16 %547, 512
  %551 = lshr i32 %548, 9
  %.not1584 = icmp ult i32 %.39, %551
  %or.cond1625 = select i1 %.not1583, i1 true, i1 %.not1584
  br i1 %or.cond1625, label %570, label %598

552:                                              ; preds = %543
  %553 = icmp ugt i32 %.39, 10
  br i1 %553, label %.preheader1721, label %570

.preheader1721:                                   ; preds = %552, %.preheader1721
  %.01434 = phi i32 [ %563, %.preheader1721 ], [ %548, %552 ]
  %.01431 = phi i32 [ %556, %.preheader1721 ], [ 10, %552 ]
  %554 = xor i32 %.01434, -1
  %555 = sext i32 %554 to i64
  %556 = add i32 %.01431, 1
  %557 = zext nneg i32 %.01431 to i64
  %558 = lshr i64 %.391129, %557
  %559 = and i64 %558, 1
  %560 = add nsw i64 %559, %555
  %561 = getelementptr inbounds [38 x i16], ptr %38, i64 0, i64 %560
  %562 = load i16, ptr %561, align 2, !tbaa !46
  %563 = sext i16 %562 to i32
  %564 = icmp slt i16 %562, 0
  %565 = add i32 %.01431, 2
  %566 = icmp uge i32 %.39, %565
  %567 = select i1 %564, i1 %566, i1 false
  br i1 %567, label %.preheader1721, label %568, !llvm.loop !61

568:                                              ; preds = %.preheader1721
  %569 = icmp sgt i16 %562, -1
  br i1 %569, label %598, label %570

570:                                              ; preds = %552, %568, %550, %573
  %.361391 = phi i64 [ %.351390, %550 ], [ %.351390, %568 ], [ %.351390, %552 ], [ %56, %573 ]
  %.361310 = phi ptr [ %.351309, %550 ], [ %.351309, %568 ], [ %.351309, %552 ], [ %4, %573 ]
  %.391221 = phi ptr [ %.381220, %550 ], [ %.381220, %568 ], [ %.381220, %552 ], [ %1, %573 ]
  %.401130 = phi i64 [ %.391129, %550 ], [ %.391129, %568 ], [ %.391129, %552 ], [ %48, %573 ]
  %.401049 = phi i32 [ %.391048, %550 ], [ %.391048, %568 ], [ %.391048, %552 ], [ %54, %573 ]
  %.40960 = phi i32 [ %.39959, %550 ], [ %.39959, %568 ], [ %.39959, %552 ], [ %52, %573 ]
  %.39880 = phi i32 [ %.38879, %550 ], [ %.38879, %568 ], [ %.38879, %552 ], [ %50, %573 ]
  %.40 = phi i32 [ %.39, %550 ], [ %.39, %568 ], [ %.39, %552 ], [ %.84.fr1956, %573 ]
  %.not1585 = icmp ult ptr %.391221, %14
  br i1 %.not1585, label %574, label %571

571:                                              ; preds = %570
  %572 = and i32 %6, 2
  %.not1586 = icmp eq i32 %572, 0
  store i32 16, ptr %0, align 8, !tbaa !19
  %spec.select1697 = select i1 %.not1586, i32 -4, i32 1
  br label %.thread1659

573:                                              ; preds = %34
  br label %570, !llvm.loop !62

574:                                              ; preds = %570
  %575 = getelementptr inbounds i8, ptr %.391221, i64 1
  %576 = load i8, ptr %.391221, align 1, !tbaa !26
  %577 = zext i8 %576 to i64
  %578 = zext nneg i32 %.40 to i64
  %579 = shl i64 %577, %578
  %580 = or i64 %579, %.401130
  %581 = add i32 %.40, 8
  %582 = icmp ult i32 %581, 15
  br i1 %582, label %543, label %598, !llvm.loop !63

583:                                              ; preds = %538
  %584 = load i8, ptr %.371219, align 1, !tbaa !26
  %585 = zext i8 %584 to i64
  %586 = zext nneg i32 %.38 to i64
  %587 = shl nuw nsw i64 %585, %586
  %588 = getelementptr inbounds i8, ptr %.371219, i64 1
  %589 = load i8, ptr %588, align 1, !tbaa !26
  %590 = zext i8 %589 to i64
  %591 = add nuw nsw i32 %.38, 8
  %592 = zext nneg i32 %591 to i64
  %593 = shl nuw nsw i64 %590, %592
  %594 = or i64 %587, %593
  %595 = or i64 %594, %.381128
  %596 = getelementptr inbounds i8, ptr %.371219, i64 2
  %597 = or disjoint i32 %.38, 16
  br label %598

598:                                              ; preds = %550, %583, %568, %574, %536
  %.371392 = phi i64 [ %.361391, %574 ], [ %.351390, %568 ], [ %.341389, %583 ], [ %.341389, %536 ], [ %.351390, %550 ]
  %.371311 = phi ptr [ %.361310, %574 ], [ %.351309, %568 ], [ %.341308, %583 ], [ %.341308, %536 ], [ %.351309, %550 ]
  %.401222 = phi ptr [ %575, %574 ], [ %.381220, %568 ], [ %596, %583 ], [ %.371219, %536 ], [ %.381220, %550 ]
  %.411131 = phi i64 [ %580, %574 ], [ %.391129, %568 ], [ %595, %583 ], [ %.381128, %536 ], [ %.391129, %550 ]
  %.411050 = phi i32 [ %.401049, %574 ], [ %.391048, %568 ], [ %.381047, %583 ], [ %.381047, %536 ], [ %.391048, %550 ]
  %.41961 = phi i32 [ %.40960, %574 ], [ %.39959, %568 ], [ %.38958, %583 ], [ %.38958, %536 ], [ %.39959, %550 ]
  %.41 = phi i32 [ %581, %574 ], [ %.39, %568 ], [ %597, %583 ], [ %.38, %536 ], [ %.39, %550 ]
  %599 = getelementptr inbounds i8, ptr %0, i64 4168
  %600 = and i64 %.411131, 1023
  %601 = getelementptr inbounds [1024 x i16], ptr %599, i64 0, i64 %600
  %602 = load i16, ptr %601, align 2, !tbaa !46
  %603 = sext i16 %602 to i32
  %604 = icmp sgt i16 %602, -1
  br i1 %604, label %605, label %.preheader1720

605:                                              ; preds = %598
  %606 = lshr i32 %603, 9
  %607 = and i32 %603, 511
  br label %.loopexit

.preheader1720:                                   ; preds = %598, %.preheader1720
  %.11435 = phi i32 [ %617, %.preheader1720 ], [ %603, %598 ]
  %.11432 = phi i32 [ %610, %.preheader1720 ], [ 10, %598 ]
  %608 = xor i32 %.11435, -1
  %609 = sext i32 %608 to i64
  %610 = add i32 %.11432, 1
  %611 = zext nneg i32 %.11432 to i64
  %612 = lshr i64 %.411131, %611
  %613 = and i64 %612, 1
  %614 = add nsw i64 %613, %609
  %615 = getelementptr inbounds [38 x i16], ptr %38, i64 0, i64 %614
  %616 = load i16, ptr %615, align 2, !tbaa !46
  %617 = sext i16 %616 to i32
  %618 = icmp slt i16 %616, 0
  br i1 %618, label %.preheader1720, label %.loopexit, !llvm.loop !64

.loopexit:                                        ; preds = %.preheader1720, %605
  %.21436 = phi i32 [ %607, %605 ], [ %617, %.preheader1720 ]
  %.21433 = phi i32 [ %606, %605 ], [ %610, %.preheader1720 ]
  %619 = zext nneg i32 %.21433 to i64
  %620 = lshr i64 %.411131, %619
  %621 = sub i32 %.41, %.21433
  %622 = icmp ult i32 %.21436, 16
  br i1 %622, label %623, label %629

623:                                              ; preds = %.loopexit
  %624 = trunc nuw nsw i32 %.21436 to i8
  %625 = getelementptr inbounds i8, ptr %0, i64 7915
  %626 = add i32 %.41961, 1
  %627 = zext i32 %.41961 to i64
  %628 = getelementptr inbounds [457 x i8], ptr %625, i64 0, i64 %627
  store i8 %624, ptr %628, align 1, !tbaa !26
  br label %529, !llvm.loop !65

629:                                              ; preds = %.loopexit
  %630 = icmp ne i32 %.21436, 16
  %631 = icmp ne i32 %.41961, 0
  %or.cond3 = select i1 %630, i1 true, i1 %631
  br i1 %or.cond3, label %632, label %1133

632:                                              ; preds = %629
  %633 = add nsw i32 %.21436, -16
  %634 = zext i32 %633 to i64
  %635 = getelementptr inbounds [4 x i8], ptr @.str.15, i64 0, i64 %634
  %636 = load i8, ptr %635, align 1, !tbaa !26
  %637 = sext i8 %636 to i32
  %638 = icmp ult i32 %621, %637
  br i1 %638, label %.preheader2061, label %652

.preheader2061:                                   ; preds = %642, %632
  %.401395.ph = phi i64 [ %.371392, %632 ], [ %56, %642 ]
  %.401314.ph = phi ptr [ %.371311, %632 ], [ %4, %642 ]
  %.431225.ph = phi ptr [ %.401222, %632 ], [ %1, %642 ]
  %.441134.ph = phi i64 [ %620, %632 ], [ %48, %642 ]
  %.441053.ph = phi i32 [ %637, %632 ], [ %54, %642 ]
  %.44964.ph = phi i32 [ %.41961, %632 ], [ %52, %642 ]
  %.42883.ph = phi i32 [ %.21436, %632 ], [ %50, %642 ]
  %.44.ph = phi i32 [ %621, %632 ], [ %.84.fr1956, %642 ]
  br label %639

639:                                              ; preds = %.preheader2061, %643
  %.431225 = phi ptr [ %644, %643 ], [ %.431225.ph, %.preheader2061 ]
  %.441134 = phi i64 [ %649, %643 ], [ %.441134.ph, %.preheader2061 ]
  %.44 = phi i32 [ %650, %643 ], [ %.44.ph, %.preheader2061 ]
  %.not1587 = icmp ult ptr %.431225, %14
  br i1 %.not1587, label %643, label %640

640:                                              ; preds = %639
  %641 = and i32 %6, 2
  %.not1589 = icmp eq i32 %641, 0
  store i32 18, ptr %0, align 8, !tbaa !19
  %spec.select1699 = select i1 %.not1589, i32 -4, i32 1
  br label %.thread1659

642:                                              ; preds = %34
  br label %.preheader2061, !llvm.loop !66

643:                                              ; preds = %639
  %644 = getelementptr inbounds i8, ptr %.431225, i64 1
  %645 = load i8, ptr %.431225, align 1, !tbaa !26
  %646 = zext i8 %645 to i64
  %647 = zext nneg i32 %.44 to i64
  %648 = shl i64 %646, %647
  %649 = or i64 %648, %.441134
  %650 = add i32 %.44, 8
  %651 = icmp ult i32 %650, %.441053.ph
  br i1 %651, label %639, label %._crit_edge1939, !llvm.loop !67

._crit_edge1939:                                  ; preds = %643
  %.pre1940 = add i32 %.42883.ph, -16
  %.pre1942 = zext i32 %.pre1940 to i64
  br label %652

652:                                              ; preds = %._crit_edge1939, %632
  %.pre-phi1943 = phi i64 [ %.pre1942, %._crit_edge1939 ], [ %634, %632 ]
  %.411396 = phi i64 [ %.401395.ph, %._crit_edge1939 ], [ %.371392, %632 ]
  %.411315 = phi ptr [ %.401314.ph, %._crit_edge1939 ], [ %.371311, %632 ]
  %.441226 = phi ptr [ %644, %._crit_edge1939 ], [ %.401222, %632 ]
  %.451135 = phi i64 [ %649, %._crit_edge1939 ], [ %620, %632 ]
  %.451054 = phi i32 [ %.441053.ph, %._crit_edge1939 ], [ %637, %632 ]
  %.45965 = phi i32 [ %.44964.ph, %._crit_edge1939 ], [ %.41961, %632 ]
  %.43884 = phi i32 [ %.42883.ph, %._crit_edge1939 ], [ %.21436, %632 ]
  %.45 = phi i32 [ %650, %._crit_edge1939 ], [ %621, %632 ]
  %notmask1588 = shl nsw i32 -1, %.451054
  %653 = xor i32 %notmask1588, -1
  %654 = trunc i64 %.451135 to i32
  %655 = and i32 %653, %654
  %656 = zext nneg i32 %.451054 to i64
  %657 = lshr i64 %.451135, %656
  %658 = sub i32 %.45, %.451054
  %659 = getelementptr inbounds [4 x i8], ptr @.str.16, i64 0, i64 %.pre-phi1943
  %660 = load i8, ptr %659, align 1, !tbaa !26
  %661 = sext i8 %660 to i32
  %662 = add i32 %655, %661
  %663 = getelementptr inbounds i8, ptr %0, i64 7915
  %664 = zext i32 %.45965 to i64
  %665 = getelementptr inbounds i8, ptr %663, i64 %664
  %666 = icmp eq i32 %.43884, 16
  br i1 %666, label %667, label %672

667:                                              ; preds = %652
  %668 = add i32 %.45965, -1
  %669 = zext i32 %668 to i64
  %670 = getelementptr inbounds [457 x i8], ptr %663, i64 0, i64 %669
  %671 = load i8, ptr %670, align 1, !tbaa !26
  br label %672

672:                                              ; preds = %652, %667
  %673 = phi i8 [ %671, %667 ], [ 0, %652 ]
  %674 = zext i32 %662 to i64
  tail call void @llvm.memset.p0.i64(ptr nonnull align 1 %665, i8 %673, i64 %674, i1 false)
  %675 = add i32 %662, %.45965
  br label %529, !llvm.loop !65

676:                                              ; preds = %529
  %.not1582 = icmp eq i32 %534, %.38958
  br i1 %.not1582, label %677, label %1133

677:                                              ; preds = %676
  %678 = getelementptr inbounds i8, ptr %0, i64 7915
  %679 = zext i32 %531 to i64
  tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 4 %40, ptr nonnull align 1 %678, i64 %679, i1 false)
  %680 = getelementptr inbounds i8, ptr %678, i64 %679
  %681 = zext i32 %533 to i64
  tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 4 %41, ptr nonnull align 1 %680, i64 %681, i1 false)
  br label %682

682:                                              ; preds = %._crit_edge1801, %677
  %.431398 = phi i64 [ %.341389, %677 ], [ %.321387, %._crit_edge1801 ]
  %.431317 = phi ptr [ %.341308, %677 ], [ %.321306, %._crit_edge1801 ]
  %.461228 = phi ptr [ %.371219, %677 ], [ %.351217, %._crit_edge1801 ]
  %.471137 = phi i64 [ %.381128, %677 ], [ %.361126, %._crit_edge1801 ]
  %.471056 = phi i32 [ %.381047, %677 ], [ %.361045, %._crit_edge1801 ]
  %.47967 = phi i32 [ %.38958, %677 ], [ %.36956, %._crit_edge1801 ]
  %.45886 = phi i32 [ %.37878, %677 ], [ %.35876, %._crit_edge1801 ]
  %.47 = phi i32 [ %.38, %677 ], [ %.36, %._crit_edge1801 ]
  %683 = getelementptr inbounds i8, ptr %0, i64 24
  %684 = load i32, ptr %683, align 8, !tbaa !31
  %685 = add i32 %684, -1
  store i32 %685, ptr %683, align 8, !tbaa !31
  br label %.loopexit1736, !llvm.loop !68

686:                                              ; preds = %.preheader2099, %844
  %.451319 = phi ptr [ %847, %844 ], [ %.451319.ph, %.preheader2099 ]
  %.481230 = phi ptr [ %.531235, %844 ], [ %.481230.ph, %.preheader2099 ]
  %.491139 = phi i64 [ %838, %844 ], [ %.491139.ph, %.preheader2099 ]
  %.49969 = phi i32 [ %.11179, %844 ], [ %.49969.ph, %.preheader2099 ]
  %.49 = phi i32 [ %839, %844 ], [ %.49.ph, %.preheader2099 ]
  %687 = ptrtoint ptr %.481230 to i64
  %688 = sub i64 %782, %687
  %689 = icmp slt i64 %688, 4
  %690 = ptrtoint ptr %.451319 to i64
  %691 = sub i64 %783, %690
  %692 = icmp slt i64 %691, 2
  %or.cond1629 = select i1 %689, i1 true, i1 %692
  br i1 %or.cond1629, label %693, label %785

693:                                              ; preds = %686
  %694 = icmp ult i32 %.49, 15
  br i1 %694, label %695, label %752

695:                                              ; preds = %693
  %696 = icmp slt i64 %688, 2
  br i1 %696, label %697, label %737

697:                                              ; preds = %695, %728
  %.461401 = phi i64 [ %.451400.ph, %695 ], [ %.471402, %728 ]
  %.461320 = phi ptr [ %.451319, %695 ], [ %.471321, %728 ]
  %.491231 = phi ptr [ %.481230, %695 ], [ %729, %728 ]
  %.501140 = phi i64 [ %.491139, %695 ], [ %734, %728 ]
  %.501059 = phi i32 [ %.491058.ph, %695 ], [ %.511060, %728 ]
  %.50970 = phi i32 [ %.49969, %695 ], [ %.51971, %728 ]
  %.48889 = phi i32 [ %.47888.ph, %695 ], [ %.49890, %728 ]
  %.50 = phi i32 [ %.49, %695 ], [ %735, %728 ]
  %698 = getelementptr inbounds i8, ptr %0, i64 72
  %699 = and i64 %.501140, 1023
  %700 = getelementptr inbounds [1024 x i16], ptr %698, i64 0, i64 %699
  %701 = load i16, ptr %700, align 2, !tbaa !46
  %702 = sext i16 %701 to i32
  %703 = icmp sgt i16 %701, -1
  br i1 %703, label %704, label %706

704:                                              ; preds = %697
  %.not1562 = icmp ult i16 %701, 512
  %705 = lshr i32 %702, 9
  %.not1563 = icmp ult i32 %.50, %705
  %or.cond1630 = select i1 %.not1562, i1 true, i1 %.not1563
  br i1 %or.cond1630, label %724, label %752

706:                                              ; preds = %697
  %707 = icmp ugt i32 %.50, 10
  br i1 %707, label %.preheader1730, label %724

.preheader1730:                                   ; preds = %706, %.preheader1730
  %.01270 = phi i32 [ %717, %.preheader1730 ], [ %702, %706 ]
  %.01267 = phi i32 [ %710, %.preheader1730 ], [ 10, %706 ]
  %708 = xor i32 %.01270, -1
  %709 = sext i32 %708 to i64
  %710 = add i32 %.01267, 1
  %711 = zext nneg i32 %.01267 to i64
  %712 = lshr i64 %.501140, %711
  %713 = and i64 %712, 1
  %714 = add nsw i64 %713, %709
  %715 = getelementptr inbounds [576 x i16], ptr %35, i64 0, i64 %714
  %716 = load i16, ptr %715, align 2, !tbaa !46
  %717 = sext i16 %716 to i32
  %718 = icmp slt i16 %716, 0
  %719 = add i32 %.01267, 2
  %720 = icmp uge i32 %.50, %719
  %721 = select i1 %718, i1 %720, i1 false
  br i1 %721, label %.preheader1730, label %722, !llvm.loop !69

722:                                              ; preds = %.preheader1730
  %723 = icmp sgt i16 %716, -1
  br i1 %723, label %752, label %724

724:                                              ; preds = %706, %722, %704, %727
  %.471402 = phi i64 [ %.461401, %704 ], [ %.461401, %722 ], [ %.461401, %706 ], [ %56, %727 ]
  %.471321 = phi ptr [ %.461320, %704 ], [ %.461320, %722 ], [ %.461320, %706 ], [ %4, %727 ]
  %.501232 = phi ptr [ %.491231, %704 ], [ %.491231, %722 ], [ %.491231, %706 ], [ %1, %727 ]
  %.511141 = phi i64 [ %.501140, %704 ], [ %.501140, %722 ], [ %.501140, %706 ], [ %48, %727 ]
  %.511060 = phi i32 [ %.501059, %704 ], [ %.501059, %722 ], [ %.501059, %706 ], [ %54, %727 ]
  %.51971 = phi i32 [ %.50970, %704 ], [ %.50970, %722 ], [ %.50970, %706 ], [ %52, %727 ]
  %.49890 = phi i32 [ %.48889, %704 ], [ %.48889, %722 ], [ %.48889, %706 ], [ %50, %727 ]
  %.51 = phi i32 [ %.50, %704 ], [ %.50, %722 ], [ %.50, %706 ], [ %.84.fr1956, %727 ]
  %.not1564 = icmp ult ptr %.501232, %14
  br i1 %.not1564, label %728, label %725

725:                                              ; preds = %724
  %726 = and i32 %6, 2
  %.not1565 = icmp eq i32 %726, 0
  store i32 23, ptr %0, align 8, !tbaa !19
  %spec.select1701 = select i1 %.not1565, i32 -4, i32 1
  br label %.thread1659

727:                                              ; preds = %34
  br label %724, !llvm.loop !70

728:                                              ; preds = %724
  %729 = getelementptr inbounds i8, ptr %.501232, i64 1
  %730 = load i8, ptr %.501232, align 1, !tbaa !26
  %731 = zext i8 %730 to i64
  %732 = zext nneg i32 %.51 to i64
  %733 = shl i64 %731, %732
  %734 = or i64 %733, %.511141
  %735 = add i32 %.51, 8
  %736 = icmp ult i32 %735, 15
  br i1 %736, label %697, label %752, !llvm.loop !71

737:                                              ; preds = %695
  %738 = load i8, ptr %.481230, align 1, !tbaa !26
  %739 = zext i8 %738 to i64
  %740 = zext nneg i32 %.49 to i64
  %741 = shl nuw nsw i64 %739, %740
  %742 = getelementptr inbounds i8, ptr %.481230, i64 1
  %743 = load i8, ptr %742, align 1, !tbaa !26
  %744 = zext i8 %743 to i64
  %745 = add nuw nsw i32 %.49, 8
  %746 = zext nneg i32 %745 to i64
  %747 = shl nuw nsw i64 %744, %746
  %748 = or i64 %741, %747
  %749 = or i64 %748, %.491139
  %750 = getelementptr inbounds i8, ptr %.481230, i64 2
  %751 = or disjoint i32 %.49, 16
  br label %752

752:                                              ; preds = %704, %737, %722, %728, %693
  %.481403 = phi i64 [ %.471402, %728 ], [ %.461401, %722 ], [ %.451400.ph, %737 ], [ %.451400.ph, %693 ], [ %.461401, %704 ]
  %.481322 = phi ptr [ %.471321, %728 ], [ %.461320, %722 ], [ %.451319, %737 ], [ %.451319, %693 ], [ %.461320, %704 ]
  %.511233 = phi ptr [ %729, %728 ], [ %.491231, %722 ], [ %750, %737 ], [ %.481230, %693 ], [ %.491231, %704 ]
  %.521142 = phi i64 [ %734, %728 ], [ %.501140, %722 ], [ %749, %737 ], [ %.491139, %693 ], [ %.501140, %704 ]
  %.521061 = phi i32 [ %.511060, %728 ], [ %.501059, %722 ], [ %.491058.ph, %737 ], [ %.491058.ph, %693 ], [ %.501059, %704 ]
  %.50891 = phi i32 [ %.49890, %728 ], [ %.48889, %722 ], [ %.47888.ph, %737 ], [ %.47888.ph, %693 ], [ %.48889, %704 ]
  %.52 = phi i32 [ %735, %728 ], [ %.50, %722 ], [ %751, %737 ], [ %.49, %693 ], [ %.50, %704 ]
  %753 = getelementptr inbounds i8, ptr %0, i64 72
  %754 = and i64 %.521142, 1023
  %755 = getelementptr inbounds [1024 x i16], ptr %753, i64 0, i64 %754
  %756 = load i16, ptr %755, align 2, !tbaa !46
  %757 = sext i16 %756 to i32
  %758 = icmp sgt i16 %756, -1
  br i1 %758, label %759, label %.preheader1728

759:                                              ; preds = %752
  %760 = lshr i32 %757, 9
  %761 = and i32 %757, 511
  br label %.loopexit1729

.preheader1728:                                   ; preds = %752, %.preheader1728
  %.11271 = phi i32 [ %771, %.preheader1728 ], [ %757, %752 ]
  %.11268 = phi i32 [ %764, %.preheader1728 ], [ 10, %752 ]
  %762 = xor i32 %.11271, -1
  %763 = sext i32 %762 to i64
  %764 = add i32 %.11268, 1
  %765 = zext nneg i32 %.11268 to i64
  %766 = lshr i64 %.521142, %765
  %767 = and i64 %766, 1
  %768 = add nsw i64 %767, %763
  %769 = getelementptr inbounds [576 x i16], ptr %35, i64 0, i64 %768
  %770 = load i16, ptr %769, align 2, !tbaa !46
  %771 = sext i16 %770 to i32
  %772 = icmp slt i16 %770, 0
  br i1 %772, label %.preheader1728, label %.loopexit1729, !llvm.loop !72

.loopexit1729:                                    ; preds = %.preheader1728, %759
  %.21272 = phi i32 [ %761, %759 ], [ %771, %.preheader1728 ]
  %.21269 = phi i32 [ %760, %759 ], [ %764, %.preheader1728 ]
  %773 = zext nneg i32 %.21269 to i64
  %774 = lshr i64 %.521142, %773
  %775 = sub i32 %.52, %.21269
  %776 = icmp ugt i32 %.21272, 255
  br i1 %776, label %.thread, label %777

777:                                              ; preds = %.loopexit1729, %778
  %.491404 = phi i64 [ %.481403, %.loopexit1729 ], [ %56, %778 ]
  %.491323 = phi ptr [ %.481322, %.loopexit1729 ], [ %4, %778 ]
  %.521234 = phi ptr [ %.511233, %.loopexit1729 ], [ %1, %778 ]
  %.531143 = phi i64 [ %774, %.loopexit1729 ], [ %48, %778 ]
  %.531062 = phi i32 [ %.521061, %.loopexit1729 ], [ %54, %778 ]
  %.52972 = phi i32 [ %.21272, %.loopexit1729 ], [ %52, %778 ]
  %.51892 = phi i32 [ %.50891, %.loopexit1729 ], [ %50, %778 ]
  %.53 = phi i32 [ %775, %.loopexit1729 ], [ %.84.fr1956, %778 ]
  %.not1566 = icmp ult ptr %.491323, %19
  br i1 %.not1566, label %779, label %1133

778:                                              ; preds = %34
  br label %777, !llvm.loop !73

779:                                              ; preds = %777
  %780 = trunc i32 %.52972 to i8
  %781 = getelementptr inbounds i8, ptr %.491323, i64 1
  store i8 %780, ptr %.491323, align 1, !tbaa !26
  br label %.preheader2099

.preheader2099:                                   ; preds = %1027, %.loopexit1736, %779, %1066, %._crit_edge
  %.451400.ph = phi i64 [ %999, %._crit_edge ], [ %999, %1066 ], [ %.491404, %779 ], [ %.321387, %.loopexit1736 ], [ %.621417, %1027 ]
  %.451319.ph = phi ptr [ %.671341.lcssa, %._crit_edge ], [ %1068, %1066 ], [ %781, %779 ], [ %.321306, %.loopexit1736 ], [ %.651339, %1027 ]
  %.481230.ph = phi ptr [ %.661248, %._crit_edge ], [ %.661248, %1066 ], [ %.521234, %779 ], [ %.351217, %.loopexit1736 ], [ %.681250, %1027 ]
  %.491139.ph = phi i64 [ %.681158, %._crit_edge ], [ %.681158, %1066 ], [ %.531143, %779 ], [ %.361126, %.loopexit1736 ], [ %.701160, %1027 ]
  %.491058.ph = phi i32 [ %.651074, %._crit_edge ], [ %.651074, %1066 ], [ %.531062, %779 ], [ %.361045, %.loopexit1736 ], [ %.671076, %1027 ]
  %.49969.ph = phi i32 [ %.70990.lcssa, %._crit_edge ], [ %.70990.lcssa, %1066 ], [ %.52972, %779 ], [ %.36956, %.loopexit1736 ], [ -1, %1027 ]
  %.47888.ph = phi i32 [ %.63904, %._crit_edge ], [ %.63904, %1066 ], [ %.51892, %779 ], [ %.35876, %.loopexit1736 ], [ %.65906, %1027 ]
  %.49.ph = phi i32 [ %.68, %._crit_edge ], [ %.68, %1066 ], [ %.53, %779 ], [ %.36, %.loopexit1736 ], [ %.70, %1027 ]
  %782 = ptrtoint ptr %14 to i64
  %783 = ptrtoint ptr %19 to i64
  %784 = getelementptr inbounds i8, ptr %0, i64 72
  br label %686

785:                                              ; preds = %686
  %786 = icmp ult i32 %.49, 30
  br i1 %786, label %787, label %795

787:                                              ; preds = %785
  %788 = load i32, ptr %.481230, align 1
  %789 = zext i32 %788 to i64
  %790 = zext nneg i32 %.49 to i64
  %791 = shl nuw nsw i64 %789, %790
  %792 = or i64 %791, %.491139
  %793 = getelementptr inbounds i8, ptr %.481230, i64 4
  %794 = or disjoint i32 %.49, 32
  br label %795

795:                                              ; preds = %787, %785
  %.531235 = phi ptr [ %793, %787 ], [ %.481230, %785 ]
  %.541144 = phi i64 [ %792, %787 ], [ %.491139, %785 ]
  %.54 = phi i32 [ %794, %787 ], [ %.49, %785 ]
  %796 = and i64 %.541144, 1023
  %797 = getelementptr inbounds [1024 x i16], ptr %784, i64 0, i64 %796
  %798 = load i16, ptr %797, align 2, !tbaa !46
  %799 = sext i16 %798 to i32
  %800 = icmp sgt i16 %798, -1
  br i1 %800, label %801, label %.preheader1733

801:                                              ; preds = %795
  %802 = lshr i32 %799, 9
  br label %.loopexit1734

.preheader1733:                                   ; preds = %795, %.preheader1733
  %.01178 = phi i32 [ %812, %.preheader1733 ], [ %799, %795 ]
  %.01174 = phi i32 [ %805, %.preheader1733 ], [ 10, %795 ]
  %803 = xor i32 %.01178, -1
  %804 = sext i32 %803 to i64
  %805 = add i32 %.01174, 1
  %806 = zext nneg i32 %.01174 to i64
  %807 = lshr i64 %.541144, %806
  %808 = and i64 %807, 1
  %809 = add nsw i64 %808, %804
  %810 = getelementptr inbounds [576 x i16], ptr %35, i64 0, i64 %809
  %811 = load i16, ptr %810, align 2, !tbaa !46
  %812 = sext i16 %811 to i32
  %813 = icmp slt i16 %811, 0
  br i1 %813, label %.preheader1733, label %.loopexit1734, !llvm.loop !74

.loopexit1734:                                    ; preds = %.preheader1733, %801
  %.11179 = phi i32 [ %799, %801 ], [ %812, %.preheader1733 ]
  %.11175 = phi i32 [ %802, %801 ], [ %805, %.preheader1733 ]
  %814 = zext nneg i32 %.11175 to i64
  %815 = lshr i64 %.541144, %814
  %816 = sub i32 %.54, %.11175
  %817 = and i32 %.11179, 256
  %.not1560 = icmp eq i32 %817, 0
  br i1 %.not1560, label %818, label %.thread

818:                                              ; preds = %.loopexit1734
  %819 = and i64 %815, 1023
  %820 = getelementptr inbounds [1024 x i16], ptr %784, i64 0, i64 %819
  %821 = load i16, ptr %820, align 2, !tbaa !46
  %822 = sext i16 %821 to i32
  %823 = icmp sgt i16 %821, -1
  br i1 %823, label %824, label %.preheader1731

824:                                              ; preds = %818
  %825 = lshr i32 %822, 9
  br label %.loopexit1732

.preheader1731:                                   ; preds = %818, %.preheader1731
  %.21180 = phi i32 [ %835, %.preheader1731 ], [ %822, %818 ]
  %.21176 = phi i32 [ %828, %.preheader1731 ], [ 10, %818 ]
  %826 = xor i32 %.21180, -1
  %827 = sext i32 %826 to i64
  %828 = add i32 %.21176, 1
  %829 = zext nneg i32 %.21176 to i64
  %830 = lshr i64 %815, %829
  %831 = and i64 %830, 1
  %832 = add nsw i64 %831, %827
  %833 = getelementptr inbounds [576 x i16], ptr %35, i64 0, i64 %832
  %834 = load i16, ptr %833, align 2, !tbaa !46
  %835 = sext i16 %834 to i32
  %836 = icmp slt i16 %834, 0
  br i1 %836, label %.preheader1731, label %.loopexit1732, !llvm.loop !75

.loopexit1732:                                    ; preds = %.preheader1731, %824
  %.31181 = phi i32 [ %822, %824 ], [ %835, %.preheader1731 ]
  %.31177 = phi i32 [ %825, %824 ], [ %828, %.preheader1731 ]
  %837 = zext nneg i32 %.31177 to i64
  %838 = lshr i64 %815, %837
  %839 = sub i32 %816, %.31177
  %840 = trunc i32 %.11179 to i8
  store i8 %840, ptr %.451319, align 1, !tbaa !26
  %841 = and i32 %.31181, 256
  %.not1561 = icmp eq i32 %841, 0
  br i1 %.not1561, label %844, label %842

842:                                              ; preds = %.loopexit1732
  %843 = getelementptr inbounds i8, ptr %.451319, i64 1
  br label %.thread

844:                                              ; preds = %.loopexit1732
  %845 = trunc i32 %.31181 to i8
  %846 = getelementptr inbounds i8, ptr %.451319, i64 1
  store i8 %845, ptr %846, align 1, !tbaa !26
  %847 = getelementptr inbounds i8, ptr %.451319, i64 2
  br label %686

.thread:                                          ; preds = %.loopexit1734, %842, %.loopexit1729
  %.511406 = phi i64 [ %.481403, %.loopexit1729 ], [ %.451400.ph, %842 ], [ %.451400.ph, %.loopexit1734 ]
  %.521326 = phi ptr [ %.481322, %.loopexit1729 ], [ %843, %842 ], [ %.451319, %.loopexit1734 ]
  %.551237 = phi ptr [ %.511233, %.loopexit1729 ], [ %.531235, %842 ], [ %.531235, %.loopexit1734 ]
  %.571147 = phi i64 [ %774, %.loopexit1729 ], [ %838, %842 ], [ %815, %.loopexit1734 ]
  %.551064 = phi i32 [ %.521061, %.loopexit1729 ], [ %.491058.ph, %842 ], [ %.491058.ph, %.loopexit1734 ]
  %.55975 = phi i32 [ %.21272, %.loopexit1729 ], [ %.31181, %842 ], [ %.11179, %.loopexit1734 ]
  %.53894 = phi i32 [ %.50891, %.loopexit1729 ], [ %.47888.ph, %842 ], [ %.47888.ph, %.loopexit1734 ]
  %.57 = phi i32 [ %775, %.loopexit1729 ], [ %839, %842 ], [ %816, %.loopexit1734 ]
  %848 = and i32 %.55975, 511
  %849 = icmp eq i32 %848, 256
  br i1 %849, label %1069, label %850

850:                                              ; preds = %.thread
  %851 = add nsw i32 %848, -257
  %852 = zext i32 %851 to i64
  %853 = getelementptr inbounds [31 x i8], ptr @tinfl_decompress.s_length_extra, i64 0, i64 %852
  %854 = load i8, ptr %853, align 1, !tbaa !26
  %855 = getelementptr inbounds [31 x i16], ptr @tinfl_decompress.s_length_base, i64 0, i64 %852
  %856 = load i16, ptr %855, align 2, !tbaa !46
  %857 = zext i16 %856 to i32
  %.not1567 = icmp eq i8 %854, 0
  br i1 %.not1567, label %881, label %858

858:                                              ; preds = %850
  %859 = zext i8 %854 to i32
  %860 = icmp ult i32 %.57, %859
  br i1 %860, label %.preheader2088, label %.loopexit2089

.preheader2088:                                   ; preds = %864, %858
  %.531408.ph = phi i64 [ %.511406, %858 ], [ %56, %864 ]
  %.541328.ph = phi ptr [ %.521326, %858 ], [ %4, %864 ]
  %.571239.ph = phi ptr [ %.551237, %858 ], [ %1, %864 ]
  %.591149.ph = phi i64 [ %.571147, %858 ], [ %48, %864 ]
  %.571066.ph = phi i32 [ %859, %858 ], [ %54, %864 ]
  %.57977.ph = phi i32 [ %857, %858 ], [ %52, %864 ]
  %.55896.ph = phi i32 [ %.53894, %858 ], [ %50, %864 ]
  %.59.ph = phi i32 [ %.57, %858 ], [ %.84.fr1956, %864 ]
  br label %861

861:                                              ; preds = %.preheader2088, %865
  %.571239 = phi ptr [ %866, %865 ], [ %.571239.ph, %.preheader2088 ]
  %.591149 = phi i64 [ %871, %865 ], [ %.591149.ph, %.preheader2088 ]
  %.59 = phi i32 [ %872, %865 ], [ %.59.ph, %.preheader2088 ]
  %.not1568 = icmp ult ptr %.571239, %14
  br i1 %.not1568, label %865, label %862

862:                                              ; preds = %861
  %863 = and i32 %6, 2
  %.not1581 = icmp eq i32 %863, 0
  store i32 25, ptr %0, align 8, !tbaa !19
  %spec.select1703 = select i1 %.not1581, i32 -4, i32 1
  br label %.thread1659

864:                                              ; preds = %34
  br label %.preheader2088, !llvm.loop !76

865:                                              ; preds = %861
  %866 = getelementptr inbounds i8, ptr %.571239, i64 1
  %867 = load i8, ptr %.571239, align 1, !tbaa !26
  %868 = zext i8 %867 to i64
  %869 = zext nneg i32 %.59 to i64
  %870 = shl i64 %868, %869
  %871 = or i64 %870, %.591149
  %872 = add i32 %.59, 8
  %873 = icmp ult i32 %872, %.571066.ph
  br i1 %873, label %861, label %.loopexit2089, !llvm.loop !77

.loopexit2089:                                    ; preds = %865, %858
  %.541409 = phi i64 [ %.511406, %858 ], [ %.531408.ph, %865 ]
  %.551329 = phi ptr [ %.521326, %858 ], [ %.541328.ph, %865 ]
  %.581240 = phi ptr [ %.551237, %858 ], [ %866, %865 ]
  %.601150 = phi i64 [ %.571147, %858 ], [ %871, %865 ]
  %.581067 = phi i32 [ %859, %858 ], [ %.571066.ph, %865 ]
  %.58978 = phi i32 [ %857, %858 ], [ %.57977.ph, %865 ]
  %.56897 = phi i32 [ %.53894, %858 ], [ %.55896.ph, %865 ]
  %.60 = phi i32 [ %.57, %858 ], [ %872, %865 ]
  %notmask1569 = shl nsw i32 -1, %.581067
  %874 = xor i32 %notmask1569, -1
  %875 = trunc i64 %.601150 to i32
  %876 = and i32 %874, %875
  %877 = zext nneg i32 %.581067 to i64
  %878 = lshr i64 %.601150, %877
  %879 = sub i32 %.60, %.581067
  %880 = add i32 %876, %.58978
  br label %881

881:                                              ; preds = %850, %.loopexit2089
  %.551410 = phi i64 [ %.541409, %.loopexit2089 ], [ %.511406, %850 ]
  %.561330 = phi ptr [ %.551329, %.loopexit2089 ], [ %.521326, %850 ]
  %.591241 = phi ptr [ %.581240, %.loopexit2089 ], [ %.551237, %850 ]
  %.611151 = phi i64 [ %878, %.loopexit2089 ], [ %.571147, %850 ]
  %.591068 = phi i32 [ %.581067, %.loopexit2089 ], [ 0, %850 ]
  %.59979 = phi i32 [ %880, %.loopexit2089 ], [ %857, %850 ]
  %.57898 = phi i32 [ %.56897, %.loopexit2089 ], [ %.53894, %850 ]
  %.61 = phi i32 [ %879, %.loopexit2089 ], [ %.57, %850 ]
  %882 = icmp ult i32 %.61, 15
  br i1 %882, label %883, label %943

883:                                              ; preds = %881
  %884 = ptrtoint ptr %14 to i64
  %885 = ptrtoint ptr %.591241 to i64
  %886 = sub i64 %884, %885
  %887 = icmp slt i64 %886, 2
  br i1 %887, label %888, label %928

888:                                              ; preds = %883, %919
  %.561411 = phi i64 [ %.551410, %883 ], [ %.571412, %919 ]
  %.571331 = phi ptr [ %.561330, %883 ], [ %.581332, %919 ]
  %.601242 = phi ptr [ %.591241, %883 ], [ %920, %919 ]
  %.621152 = phi i64 [ %.611151, %883 ], [ %925, %919 ]
  %.601069 = phi i32 [ %.591068, %883 ], [ %.611070, %919 ]
  %.60980 = phi i32 [ %.59979, %883 ], [ %.61981, %919 ]
  %.58899 = phi i32 [ %.57898, %883 ], [ %.59900, %919 ]
  %.62 = phi i32 [ %.61, %883 ], [ %926, %919 ]
  %889 = getelementptr inbounds i8, ptr %0, i64 2120
  %890 = and i64 %.621152, 1023
  %891 = getelementptr inbounds [1024 x i16], ptr %889, i64 0, i64 %890
  %892 = load i16, ptr %891, align 2, !tbaa !46
  %893 = sext i16 %892 to i32
  %894 = icmp sgt i16 %892, -1
  br i1 %894, label %895, label %897

895:                                              ; preds = %888
  %.not1570 = icmp ult i16 %892, 512
  %896 = lshr i32 %893, 9
  %.not1571 = icmp ult i32 %.62, %896
  %or.cond1631 = or i1 %.not1570, %.not1571
  br i1 %or.cond1631, label %915, label %943

897:                                              ; preds = %888
  %898 = icmp ugt i32 %.62, 10
  br i1 %898, label %.preheader1727, label %915

.preheader1727:                                   ; preds = %897, %.preheader1727
  %.01006 = phi i32 [ %908, %.preheader1727 ], [ %893, %897 ]
  %.01003 = phi i32 [ %901, %.preheader1727 ], [ 10, %897 ]
  %899 = xor i32 %.01006, -1
  %900 = sext i32 %899 to i64
  %901 = add i32 %.01003, 1
  %902 = zext nneg i32 %.01003 to i64
  %903 = lshr i64 %.621152, %902
  %904 = and i64 %903, 1
  %905 = add nsw i64 %904, %900
  %906 = getelementptr inbounds [64 x i16], ptr %36, i64 0, i64 %905
  %907 = load i16, ptr %906, align 2, !tbaa !46
  %908 = sext i16 %907 to i32
  %909 = icmp slt i16 %907, 0
  %910 = add i32 %.01003, 2
  %911 = icmp uge i32 %.62, %910
  %912 = and i1 %909, %911
  br i1 %912, label %.preheader1727, label %913, !llvm.loop !78

913:                                              ; preds = %.preheader1727
  %914 = icmp sgt i16 %907, -1
  br i1 %914, label %943, label %915

915:                                              ; preds = %897, %913, %895, %918
  %.571412 = phi i64 [ %.561411, %895 ], [ %.561411, %913 ], [ %.561411, %897 ], [ %56, %918 ]
  %.581332 = phi ptr [ %.571331, %895 ], [ %.571331, %913 ], [ %.571331, %897 ], [ %4, %918 ]
  %.611243 = phi ptr [ %.601242, %895 ], [ %.601242, %913 ], [ %.601242, %897 ], [ %1, %918 ]
  %.631153 = phi i64 [ %.621152, %895 ], [ %.621152, %913 ], [ %.621152, %897 ], [ %48, %918 ]
  %.611070 = phi i32 [ %.601069, %895 ], [ %.601069, %913 ], [ %.601069, %897 ], [ %54, %918 ]
  %.61981 = phi i32 [ %.60980, %895 ], [ %.60980, %913 ], [ %.60980, %897 ], [ %52, %918 ]
  %.59900 = phi i32 [ %.58899, %895 ], [ %.58899, %913 ], [ %.58899, %897 ], [ %50, %918 ]
  %.63 = phi i32 [ %.62, %895 ], [ %.62, %913 ], [ %.62, %897 ], [ %.84.fr1956, %918 ]
  %.not1572 = icmp ult ptr %.611243, %14
  br i1 %.not1572, label %919, label %916

916:                                              ; preds = %915
  %917 = and i32 %6, 2
  %.not1573 = icmp eq i32 %917, 0
  store i32 26, ptr %0, align 8, !tbaa !19
  %spec.select1705 = select i1 %.not1573, i32 -4, i32 1
  br label %.thread1659

918:                                              ; preds = %34
  br label %915, !llvm.loop !79

919:                                              ; preds = %915
  %920 = getelementptr inbounds i8, ptr %.611243, i64 1
  %921 = load i8, ptr %.611243, align 1, !tbaa !26
  %922 = zext i8 %921 to i64
  %923 = zext nneg i32 %.63 to i64
  %924 = shl i64 %922, %923
  %925 = or i64 %924, %.631153
  %926 = add i32 %.63, 8
  %927 = icmp ult i32 %926, 15
  br i1 %927, label %888, label %943, !llvm.loop !80

928:                                              ; preds = %883
  %929 = load i8, ptr %.591241, align 1, !tbaa !26
  %930 = zext i8 %929 to i64
  %931 = zext nneg i32 %.61 to i64
  %932 = shl nuw nsw i64 %930, %931
  %933 = getelementptr inbounds i8, ptr %.591241, i64 1
  %934 = load i8, ptr %933, align 1, !tbaa !26
  %935 = zext i8 %934 to i64
  %936 = add nuw nsw i32 %.61, 8
  %937 = zext nneg i32 %936 to i64
  %938 = shl nuw nsw i64 %935, %937
  %939 = or i64 %932, %938
  %940 = or i64 %939, %.611151
  %941 = getelementptr inbounds i8, ptr %.591241, i64 2
  %942 = or disjoint i32 %.61, 16
  br label %943

943:                                              ; preds = %895, %928, %913, %919, %881
  %.581413 = phi i64 [ %.571412, %919 ], [ %.561411, %913 ], [ %.551410, %928 ], [ %.551410, %881 ], [ %.561411, %895 ]
  %.591333 = phi ptr [ %.581332, %919 ], [ %.571331, %913 ], [ %.561330, %928 ], [ %.561330, %881 ], [ %.571331, %895 ]
  %.621244 = phi ptr [ %920, %919 ], [ %.601242, %913 ], [ %941, %928 ], [ %.591241, %881 ], [ %.601242, %895 ]
  %.641154 = phi i64 [ %925, %919 ], [ %.621152, %913 ], [ %940, %928 ], [ %.611151, %881 ], [ %.621152, %895 ]
  %.62982 = phi i32 [ %.61981, %919 ], [ %.60980, %913 ], [ %.59979, %928 ], [ %.59979, %881 ], [ %.60980, %895 ]
  %.64 = phi i32 [ %926, %919 ], [ %.62, %913 ], [ %942, %928 ], [ %.61, %881 ], [ %.62, %895 ]
  %944 = getelementptr inbounds i8, ptr %0, i64 2120
  %945 = and i64 %.641154, 1023
  %946 = getelementptr inbounds [1024 x i16], ptr %944, i64 0, i64 %945
  %947 = load i16, ptr %946, align 2, !tbaa !46
  %948 = sext i16 %947 to i32
  %949 = icmp sgt i16 %947, -1
  br i1 %949, label %950, label %.preheader1725

950:                                              ; preds = %943
  %951 = lshr i32 %948, 9
  %952 = and i32 %948, 511
  br label %.loopexit1726

.preheader1725:                                   ; preds = %943, %.preheader1725
  %.11007 = phi i32 [ %962, %.preheader1725 ], [ %948, %943 ]
  %.11004 = phi i32 [ %955, %.preheader1725 ], [ 10, %943 ]
  %953 = xor i32 %.11007, -1
  %954 = sext i32 %953 to i64
  %955 = add i32 %.11004, 1
  %956 = zext nneg i32 %.11004 to i64
  %957 = lshr i64 %.641154, %956
  %958 = and i64 %957, 1
  %959 = add nsw i64 %958, %954
  %960 = getelementptr inbounds [64 x i16], ptr %36, i64 0, i64 %959
  %961 = load i16, ptr %960, align 2, !tbaa !46
  %962 = sext i16 %961 to i32
  %963 = icmp slt i16 %961, 0
  br i1 %963, label %.preheader1725, label %.loopexit1726, !llvm.loop !81

.loopexit1726:                                    ; preds = %.preheader1725, %950
  %.21008 = phi i32 [ %952, %950 ], [ %962, %.preheader1725 ]
  %.21005 = phi i32 [ %951, %950 ], [ %955, %.preheader1725 ]
  %964 = zext nneg i32 %.21005 to i64
  %965 = lshr i64 %.641154, %964
  %966 = sub i32 %.64, %.21005
  %967 = zext nneg i32 %.21008 to i64
  %968 = getelementptr inbounds [32 x i8], ptr @tinfl_decompress.s_dist_extra, i64 0, i64 %967
  %969 = load i8, ptr %968, align 1, !tbaa !26
  %970 = getelementptr inbounds [32 x i16], ptr @tinfl_decompress.s_dist_base, i64 0, i64 %967
  %971 = load i16, ptr %970, align 2, !tbaa !46
  %972 = zext i16 %971 to i32
  %.not1574 = icmp eq i8 %969, 0
  br i1 %.not1574, label %996, label %973

973:                                              ; preds = %.loopexit1726
  %974 = zext i8 %969 to i32
  %975 = icmp ult i32 %966, %974
  br i1 %975, label %.preheader2077, label %.loopexit2078

.preheader2077:                                   ; preds = %979, %973
  %.601415.ph = phi i64 [ %.581413, %973 ], [ %56, %979 ]
  %.611335.ph = phi ptr [ %.591333, %973 ], [ %4, %979 ]
  %.641246.ph = phi ptr [ %.621244, %973 ], [ %1, %979 ]
  %.661156.ph = phi i64 [ %965, %973 ], [ %48, %979 ]
  %.631072.ph = phi i32 [ %974, %973 ], [ %54, %979 ]
  %.64984.ph = phi i32 [ %.62982, %973 ], [ %52, %979 ]
  %.61902.ph = phi i32 [ %972, %973 ], [ %50, %979 ]
  %.66.ph = phi i32 [ %966, %973 ], [ %.84.fr1956, %979 ]
  br label %976

976:                                              ; preds = %.preheader2077, %980
  %.641246 = phi ptr [ %981, %980 ], [ %.641246.ph, %.preheader2077 ]
  %.661156 = phi i64 [ %986, %980 ], [ %.661156.ph, %.preheader2077 ]
  %.66 = phi i32 [ %987, %980 ], [ %.66.ph, %.preheader2077 ]
  %.not1575 = icmp ult ptr %.641246, %14
  br i1 %.not1575, label %980, label %977

977:                                              ; preds = %976
  %978 = and i32 %6, 2
  %.not1580 = icmp eq i32 %978, 0
  store i32 27, ptr %0, align 8, !tbaa !19
  %spec.select1707 = select i1 %.not1580, i32 -4, i32 1
  br label %.thread1659

979:                                              ; preds = %34
  br label %.preheader2077, !llvm.loop !82

980:                                              ; preds = %976
  %981 = getelementptr inbounds i8, ptr %.641246, i64 1
  %982 = load i8, ptr %.641246, align 1, !tbaa !26
  %983 = zext i8 %982 to i64
  %984 = zext nneg i32 %.66 to i64
  %985 = shl i64 %983, %984
  %986 = or i64 %985, %.661156
  %987 = add i32 %.66, 8
  %988 = icmp ult i32 %987, %.631072.ph
  br i1 %988, label %976, label %.loopexit2078, !llvm.loop !83

.loopexit2078:                                    ; preds = %980, %973
  %.621336 = phi ptr [ %.591333, %973 ], [ %.611335.ph, %980 ]
  %.651247 = phi ptr [ %.621244, %973 ], [ %981, %980 ]
  %.671157 = phi i64 [ %965, %973 ], [ %986, %980 ]
  %.641073 = phi i32 [ %974, %973 ], [ %.631072.ph, %980 ]
  %.65985 = phi i32 [ %.62982, %973 ], [ %.64984.ph, %980 ]
  %.62903 = phi i32 [ %972, %973 ], [ %.61902.ph, %980 ]
  %.67 = phi i32 [ %966, %973 ], [ %987, %980 ]
  %notmask1576 = shl nsw i32 -1, %.641073
  %989 = xor i32 %notmask1576, -1
  %990 = trunc i64 %.671157 to i32
  %991 = and i32 %989, %990
  %992 = zext nneg i32 %.641073 to i64
  %993 = lshr i64 %.671157, %992
  %994 = sub i32 %.67, %.641073
  %995 = add i32 %.62903, %991
  br label %996

996:                                              ; preds = %.loopexit2078, %.loopexit1726
  %.631337 = phi ptr [ %.621336, %.loopexit2078 ], [ %.591333, %.loopexit1726 ]
  %.661248 = phi ptr [ %.651247, %.loopexit2078 ], [ %.621244, %.loopexit1726 ]
  %.681158 = phi i64 [ %993, %.loopexit2078 ], [ %965, %.loopexit1726 ]
  %.651074 = phi i32 [ %.641073, %.loopexit2078 ], [ 0, %.loopexit1726 ]
  %.66986 = phi i32 [ %.65985, %.loopexit2078 ], [ %.62982, %.loopexit1726 ]
  %.63904 = phi i32 [ %995, %.loopexit2078 ], [ %972, %.loopexit1726 ]
  %.68 = phi i32 [ %994, %.loopexit2078 ], [ %966, %.loopexit1726 ]
  %997 = ptrtoint ptr %.631337 to i64
  %998 = ptrtoint ptr %3 to i64
  %999 = sub i64 %997, %998
  %1000 = icmp ne i32 %.63904, 0
  %1001 = zext i32 %.63904 to i64
  %1002 = icmp uge i64 %999, %1001
  %or.cond1633.not1717 = select i1 %1000, i1 %1002, i1 false
  %brmerge = or i1 %.not1544, %or.cond1633.not1717
  br i1 %brmerge, label %1003, label %1133

1003:                                             ; preds = %996
  %1004 = sub i64 %999, %1001
  %1005 = and i64 %1004, %29
  %1006 = getelementptr inbounds i8, ptr %3, i64 %1005
  %1007 = icmp ugt ptr %.631337, %1006
  %1008 = select i1 %1007, ptr %.631337, ptr %1006
  %1009 = zext i32 %.66986 to i64
  %1010 = getelementptr inbounds i8, ptr %1008, i64 %1009
  %1011 = icmp ugt ptr %1010, %19
  br i1 %1011, label %1027, label %.preheader1724

.preheader1724:                                   ; preds = %1003
  %1012 = icmp ugt i32 %.66986, 2
  br i1 %1012, label %.lr.ph1769.preheader, label %._crit_edge

.lr.ph1769.preheader:                             ; preds = %.preheader1724
  %1013 = add i32 %.66986, -3
  %1014 = udiv i32 %1013, 3
  %1015 = and i32 %1014, 1
  %lcmp.mod.not.not = icmp eq i32 %1015, 0
  br i1 %lcmp.mod.not.not, label %.lr.ph1769.prol, label %.lr.ph1769.prol.loopexit

.lr.ph1769.prol:                                  ; preds = %.lr.ph1769.preheader
  %1016 = load i8, ptr %1006, align 1, !tbaa !26
  store i8 %1016, ptr %.631337, align 1, !tbaa !26
  %1017 = getelementptr inbounds i8, ptr %1006, i64 1
  %1018 = load i8, ptr %1017, align 1, !tbaa !26
  %1019 = getelementptr inbounds i8, ptr %.631337, i64 1
  store i8 %1018, ptr %1019, align 1, !tbaa !26
  %1020 = getelementptr inbounds i8, ptr %1006, i64 2
  %1021 = load i8, ptr %1020, align 1, !tbaa !26
  %1022 = getelementptr inbounds i8, ptr %.631337, i64 2
  store i8 %1021, ptr %1022, align 1, !tbaa !26
  %1023 = getelementptr inbounds i8, ptr %.631337, i64 3
  %1024 = getelementptr inbounds i8, ptr %1006, i64 3
  %1025 = add i32 %.66986, -3
  br label %.lr.ph1769.prol.loopexit

.lr.ph1769.prol.loopexit:                         ; preds = %.lr.ph1769.prol, %.lr.ph1769.preheader
  %.709901768.unr = phi i32 [ %.66986, %.lr.ph1769.preheader ], [ %1025, %.lr.ph1769.prol ]
  %.012731767.unr = phi ptr [ %1006, %.lr.ph1769.preheader ], [ %1024, %.lr.ph1769.prol ]
  %.6713411766.unr = phi ptr [ %.631337, %.lr.ph1769.preheader ], [ %1023, %.lr.ph1769.prol ]
  %.lcssa2076.unr = phi ptr [ poison, %.lr.ph1769.preheader ], [ %1023, %.lr.ph1769.prol ]
  %.lcssa2075.unr = phi ptr [ poison, %.lr.ph1769.preheader ], [ %1024, %.lr.ph1769.prol ]
  %.lcssa2074.unr = phi i32 [ poison, %.lr.ph1769.preheader ], [ %1025, %.lr.ph1769.prol ]
  %1026 = icmp ult i32 %1013, 3
  br i1 %1026, label %._crit_edge, label %.lr.ph1769

1027:                                             ; preds = %1003, %1031
  %.621417 = phi i64 [ %1032, %1031 ], [ %999, %1003 ]
  %.651339 = phi ptr [ %1038, %1031 ], [ %.631337, %1003 ]
  %.681250 = phi ptr [ %.691251, %1031 ], [ %.661248, %1003 ]
  %.701160 = phi i64 [ %.711161, %1031 ], [ %.681158, %1003 ]
  %.671076 = phi i32 [ %.681077, %1031 ], [ %.651074, %1003 ]
  %.68988 = phi i32 [ %.69989, %1031 ], [ %.66986, %1003 ]
  %.65906 = phi i32 [ %.66907, %1031 ], [ %.63904, %1003 ]
  %.70 = phi i32 [ %.71, %1031 ], [ %.68, %1003 ]
  %1028 = add i32 %.68988, -1
  %.not1578 = icmp eq i32 %.68988, 0
  br i1 %.not1578, label %.preheader2099, label %1029

1029:                                             ; preds = %1027, %1030
  %.631418 = phi i64 [ %56, %1030 ], [ %.621417, %1027 ]
  %.661340 = phi ptr [ %4, %1030 ], [ %.651339, %1027 ]
  %.691251 = phi ptr [ %1, %1030 ], [ %.681250, %1027 ]
  %.711161 = phi i64 [ %48, %1030 ], [ %.701160, %1027 ]
  %.681077 = phi i32 [ %54, %1030 ], [ %.671076, %1027 ]
  %.69989 = phi i32 [ %52, %1030 ], [ %1028, %1027 ]
  %.66907 = phi i32 [ %50, %1030 ], [ %.65906, %1027 ]
  %.71 = phi i32 [ %.84.fr1956, %1030 ], [ %.70, %1027 ]
  %.not1579 = icmp ult ptr %.661340, %19
  br i1 %.not1579, label %1031, label %1133

1030:                                             ; preds = %34
  br label %1029, !llvm.loop !84

1031:                                             ; preds = %1029
  %1032 = add i64 %.631418, 1
  %1033 = zext i32 %.66907 to i64
  %1034 = sub i64 %.631418, %1033
  %1035 = and i64 %1034, %29
  %1036 = getelementptr inbounds i8, ptr %3, i64 %1035
  %1037 = load i8, ptr %1036, align 1, !tbaa !26
  %1038 = getelementptr inbounds i8, ptr %.661340, i64 1
  store i8 %1037, ptr %.661340, align 1, !tbaa !26
  br label %1027, !llvm.loop !85

.lr.ph1769:                                       ; preds = %.lr.ph1769.prol.loopexit, %.lr.ph1769
  %.709901768 = phi i32 [ %1057, %.lr.ph1769 ], [ %.709901768.unr, %.lr.ph1769.prol.loopexit ]
  %.012731767 = phi ptr [ %1056, %.lr.ph1769 ], [ %.012731767.unr, %.lr.ph1769.prol.loopexit ]
  %.6713411766 = phi ptr [ %1055, %.lr.ph1769 ], [ %.6713411766.unr, %.lr.ph1769.prol.loopexit ]
  %1039 = load i8, ptr %.012731767, align 1, !tbaa !26
  store i8 %1039, ptr %.6713411766, align 1, !tbaa !26
  %1040 = getelementptr inbounds i8, ptr %.012731767, i64 1
  %1041 = load i8, ptr %1040, align 1, !tbaa !26
  %1042 = getelementptr inbounds i8, ptr %.6713411766, i64 1
  store i8 %1041, ptr %1042, align 1, !tbaa !26
  %1043 = getelementptr inbounds i8, ptr %.012731767, i64 2
  %1044 = load i8, ptr %1043, align 1, !tbaa !26
  %1045 = getelementptr inbounds i8, ptr %.6713411766, i64 2
  store i8 %1044, ptr %1045, align 1, !tbaa !26
  %1046 = getelementptr inbounds i8, ptr %.6713411766, i64 3
  %1047 = getelementptr inbounds i8, ptr %.012731767, i64 3
  %1048 = load i8, ptr %1047, align 1, !tbaa !26
  store i8 %1048, ptr %1046, align 1, !tbaa !26
  %1049 = getelementptr inbounds i8, ptr %.012731767, i64 4
  %1050 = load i8, ptr %1049, align 1, !tbaa !26
  %1051 = getelementptr inbounds i8, ptr %.6713411766, i64 4
  store i8 %1050, ptr %1051, align 1, !tbaa !26
  %1052 = getelementptr inbounds i8, ptr %.012731767, i64 5
  %1053 = load i8, ptr %1052, align 1, !tbaa !26
  %1054 = getelementptr inbounds i8, ptr %.6713411766, i64 5
  store i8 %1053, ptr %1054, align 1, !tbaa !26
  %1055 = getelementptr inbounds i8, ptr %.6713411766, i64 6
  %1056 = getelementptr inbounds i8, ptr %.012731767, i64 6
  %1057 = add i32 %.709901768, -6
  %1058 = icmp ugt i32 %1057, 2
  br i1 %1058, label %.lr.ph1769, label %._crit_edge, !llvm.loop !86

._crit_edge:                                      ; preds = %.lr.ph1769.prol.loopexit, %.lr.ph1769, %.preheader1724
  %.671341.lcssa = phi ptr [ %.631337, %.preheader1724 ], [ %.lcssa2076.unr, %.lr.ph1769.prol.loopexit ], [ %1055, %.lr.ph1769 ]
  %.01273.lcssa = phi ptr [ %1006, %.preheader1724 ], [ %.lcssa2075.unr, %.lr.ph1769.prol.loopexit ], [ %1056, %.lr.ph1769 ]
  %.70990.lcssa = phi i32 [ %.66986, %.preheader1724 ], [ %.lcssa2074.unr, %.lr.ph1769.prol.loopexit ], [ %1057, %.lr.ph1769 ]
  %.not1577 = icmp eq i32 %.70990.lcssa, 0
  br i1 %.not1577, label %.preheader2099, label %1059

1059:                                             ; preds = %._crit_edge
  %1060 = load i8, ptr %.01273.lcssa, align 1, !tbaa !26
  store i8 %1060, ptr %.671341.lcssa, align 1, !tbaa !26
  %1061 = icmp eq i32 %.70990.lcssa, 2
  br i1 %1061, label %1062, label %1066

1062:                                             ; preds = %1059
  %1063 = getelementptr inbounds i8, ptr %.01273.lcssa, i64 1
  %1064 = load i8, ptr %1063, align 1, !tbaa !26
  %1065 = getelementptr inbounds i8, ptr %.671341.lcssa, i64 1
  store i8 %1064, ptr %1065, align 1, !tbaa !26
  br label %1066

1066:                                             ; preds = %1062, %1059
  %1067 = zext nneg i32 %.70990.lcssa to i64
  %1068 = getelementptr inbounds i8, ptr %.671341.lcssa, i64 %1067
  br label %.preheader2099

1069:                                             ; preds = %226, %.thread
  %.641419 = phi i64 [ %.511406, %.thread ], [ %.191374, %226 ]
  %.691343 = phi ptr [ %.521326, %.thread ], [ %.191293, %226 ]
  %.701252 = phi ptr [ %.551237, %.thread ], [ %.221204, %226 ]
  %.721162 = phi i64 [ %.571147, %.thread ], [ %.231113, %226 ]
  %.691078 = phi i32 [ %.551064, %.thread ], [ %.231032, %226 ]
  %.71991 = phi i32 [ 256, %.thread ], [ 0, %226 ]
  %.67908 = phi i32 [ %.53894, %.thread ], [ %.22863, %226 ]
  %.72 = phi i32 [ %.57, %.thread ], [ %.23, %226 ]
  %1070 = getelementptr inbounds i8, ptr %0, i64 20
  %1071 = load i32, ptr %1070, align 4, !tbaa !30
  %1072 = and i32 %1071, 1
  %.not1597 = icmp eq i32 %1072, 0
  br i1 %.not1597, label %101, label %1079, !llvm.loop !87

1073:                                             ; preds = %1075
  %1074 = and i32 %6, 2
  %.not1547 = icmp eq i32 %1074, 0
  store i32 32, ptr %0, align 8, !tbaa !19
  %spec.select1709 = select i1 %.not1547, i32 -4, i32 1
  br label %.thread1659

1075:                                             ; preds = %34
  %.not1546 = icmp sgt i64 %13, 0
  br i1 %.not1546, label %1076, label %1073

1076:                                             ; preds = %1075
  %1077 = getelementptr inbounds i8, ptr %1, i64 1
  %1078 = add i32 %.84.fr1956, 8
  br label %1079

1079:                                             ; preds = %1069, %1076
  %.671422 = phi i64 [ %56, %1076 ], [ %.641419, %1069 ]
  %.721346 = phi ptr [ %4, %1076 ], [ %.691343, %1069 ]
  %.731255 = phi ptr [ %1077, %1076 ], [ %.701252, %1069 ]
  %.721081 = phi i32 [ %54, %1076 ], [ %.691078, %1069 ]
  %.74994 = phi i32 [ %52, %1076 ], [ %.71991, %1069 ]
  %.70911 = phi i32 [ %50, %1076 ], [ %.67908, %1069 ]
  %.75 = phi i32 [ %1078, %1076 ], [ %.72, %1069 ]
  %.75.fr = freeze i32 %.75
  %1080 = and i32 %.75.fr, -8
  %1081 = icmp ugt ptr %.731255, %1
  %1082 = icmp ne i32 %1080, 0
  %1083 = and i1 %1081, %1082
  br i1 %1083, label %.lr.ph1805.preheader, label %._crit_edge1806

.lr.ph1805.preheader:                             ; preds = %1079
  %.7312551899 = ptrtoint ptr %.731255 to i64
  %1084 = add i32 %1080, -8
  %1085 = lshr exact i32 %1084, 3
  %1086 = zext nneg i32 %1085 to i64
  %1087 = xor i64 %8, -1
  %1088 = add i64 %1087, %.7312551899
  %umin = tail call i64 @llvm.umin.i64(i64 %1086, i64 %1088)
  %1089 = xor i64 %umin, -1
  %scevgep1900 = getelementptr i8, ptr %.731255, i64 %1089
  %1090 = trunc nuw nsw i64 %umin to i32
  %1091 = shl nuw i32 %1090, 3
  %1092 = sub i32 %1084, %1091
  br label %._crit_edge1806

._crit_edge1806:                                  ; preds = %.lr.ph1805.preheader, %1079
  %.741256.lcssa = phi ptr [ %.731255, %1079 ], [ %scevgep1900, %.lr.ph1805.preheader ]
  %.76.lcssa = phi i32 [ %1080, %1079 ], [ %1092, %.lr.ph1805.preheader ]
  %.not1598 = icmp eq i32 %.76.lcssa, 0
  br i1 %.not1598, label %1094, label %1093

1093:                                             ; preds = %._crit_edge1806
  tail call void @__assert_fail(ptr noundef nonnull @.str.17, ptr noundef nonnull @.str.12, i32 noundef 2948, ptr noundef nonnull @__PRETTY_FUNCTION__.tinfl_decompress) #7
  unreachable

1094:                                             ; preds = %._crit_edge1806
  %1095 = and i32 %6, 1
  %.not1599 = icmp eq i32 %1095, 0
  br i1 %.not1599, label %1133, label %1096

1096:                                             ; preds = %1094, %1126
  %.681423 = phi i64 [ %.731428, %1126 ], [ %.671422, %1094 ]
  %.731347 = phi ptr [ %.781352, %1126 ], [ %.721346, %1094 ]
  %.751257 = phi ptr [ %.801262, %1126 ], [ %.741256.lcssa, %1094 ]
  %.761166 = phi i64 [ %.811171, %1126 ], [ 0, %1094 ]
  %.731082 = phi i32 [ %.781087, %1126 ], [ %.721081, %1094 ]
  %.75995 = phi i32 [ %1131, %1126 ], [ 0, %1094 ]
  %.71912 = phi i32 [ %.76917, %1126 ], [ %.70911, %1094 ]
  %.77 = phi i32 [ %.82, %1126 ], [ 0, %1094 ]
  %1097 = icmp ult i32 %.75995, 4
  br i1 %1097, label %1098, label %1133

1098:                                             ; preds = %1096
  %.not1600 = icmp eq i32 %.77, 0
  br i1 %.not1600, label %1118, label %1099

1099:                                             ; preds = %1098
  %1100 = icmp ult i32 %.77, 8
  br i1 %1100, label %.preheader2034, label %.loopexit2035

.preheader2034:                                   ; preds = %1104, %1099
  %.701425.ph = phi i64 [ %.681423, %1099 ], [ %56, %1104 ]
  %.751349.ph = phi ptr [ %.731347, %1099 ], [ %4, %1104 ]
  %.771259.ph = phi ptr [ %.751257, %1099 ], [ %1, %1104 ]
  %.781168.ph = phi i64 [ %.761166, %1099 ], [ %48, %1104 ]
  %.751084.ph = phi i32 [ %.731082, %1099 ], [ %54, %1104 ]
  %.77997.ph = phi i32 [ %.75995, %1099 ], [ %52, %1104 ]
  %.73914.ph = phi i32 [ %.71912, %1099 ], [ %50, %1104 ]
  %.79.ph = phi i32 [ %.77, %1099 ], [ %.84.fr1956, %1104 ]
  br label %1101

1101:                                             ; preds = %.preheader2034, %1105
  %.771259 = phi ptr [ %1106, %1105 ], [ %.771259.ph, %.preheader2034 ]
  %.781168 = phi i64 [ %1111, %1105 ], [ %.781168.ph, %.preheader2034 ]
  %.79 = phi i32 [ %1112, %1105 ], [ %.79.ph, %.preheader2034 ]
  %.not1603 = icmp ult ptr %.771259, %14
  br i1 %.not1603, label %1105, label %1102

1102:                                             ; preds = %1101
  %1103 = and i32 %6, 2
  %.not1604 = icmp eq i32 %1103, 0
  store i32 41, ptr %0, align 8, !tbaa !19
  %spec.select1711 = select i1 %.not1604, i32 -4, i32 1
  br label %.thread1659

1104:                                             ; preds = %34
  br label %.preheader2034, !llvm.loop !88

1105:                                             ; preds = %1101
  %1106 = getelementptr inbounds i8, ptr %.771259, i64 1
  %1107 = load i8, ptr %.771259, align 1, !tbaa !26
  %1108 = zext i8 %1107 to i64
  %1109 = zext nneg i32 %.79 to i64
  %1110 = shl i64 %1108, %1109
  %1111 = or i64 %1110, %.781168
  %1112 = add i32 %.79, 8
  %1113 = icmp ugt i32 %.79, -9
  br i1 %1113, label %1101, label %.loopexit2035, !llvm.loop !89

.loopexit2035:                                    ; preds = %1105, %1099
  %.711426 = phi i64 [ %.681423, %1099 ], [ %.701425.ph, %1105 ]
  %.761350 = phi ptr [ %.731347, %1099 ], [ %.751349.ph, %1105 ]
  %.781260 = phi ptr [ %.751257, %1099 ], [ %1106, %1105 ]
  %.791169 = phi i64 [ %.761166, %1099 ], [ %1111, %1105 ]
  %.761085 = phi i32 [ %.731082, %1099 ], [ %.751084.ph, %1105 ]
  %.78998 = phi i32 [ %.75995, %1099 ], [ %.77997.ph, %1105 ]
  %.74915 = phi i32 [ %.71912, %1099 ], [ %.73914.ph, %1105 ]
  %.80 = phi i32 [ %.77, %1099 ], [ %1112, %1105 ]
  %1114 = trunc i64 %.791169 to i32
  %1115 = and i32 %1114, 255
  %1116 = lshr i64 %.791169, 8
  %1117 = add i32 %.80, -8
  br label %1126

1118:                                             ; preds = %1098, %1121
  %.721427 = phi i64 [ %56, %1121 ], [ %.681423, %1098 ]
  %.771351 = phi ptr [ %4, %1121 ], [ %.731347, %1098 ]
  %.791261 = phi ptr [ %1, %1121 ], [ %.751257, %1098 ]
  %.801170 = phi i64 [ %48, %1121 ], [ %.761166, %1098 ]
  %.771086 = phi i32 [ %54, %1121 ], [ %.731082, %1098 ]
  %.79999 = phi i32 [ %52, %1121 ], [ %.75995, %1098 ]
  %.75916 = phi i32 [ %50, %1121 ], [ %.71912, %1098 ]
  %.81 = phi i32 [ %.84.fr1956, %1121 ], [ 0, %1098 ]
  %.not1601 = icmp ult ptr %.791261, %14
  br i1 %.not1601, label %1122, label %1119

1119:                                             ; preds = %1118
  %1120 = and i32 %6, 2
  %.not1602 = icmp eq i32 %1120, 0
  store i32 42, ptr %0, align 8, !tbaa !19
  %spec.select1713 = select i1 %.not1602, i32 -4, i32 1
  br label %.thread1659

1121:                                             ; preds = %34
  br label %1118, !llvm.loop !90

1122:                                             ; preds = %1118
  %1123 = getelementptr inbounds i8, ptr %.791261, i64 1
  %1124 = load i8, ptr %.791261, align 1, !tbaa !26
  %1125 = zext i8 %1124 to i32
  br label %1126

1126:                                             ; preds = %1122, %.loopexit2035
  %.731428 = phi i64 [ %.721427, %1122 ], [ %.711426, %.loopexit2035 ]
  %.781352 = phi ptr [ %.771351, %1122 ], [ %.761350, %.loopexit2035 ]
  %.801262 = phi ptr [ %1123, %1122 ], [ %.781260, %.loopexit2035 ]
  %.811171 = phi i64 [ %.801170, %1122 ], [ %1116, %.loopexit2035 ]
  %.781087 = phi i32 [ %.771086, %1122 ], [ %.761085, %.loopexit2035 ]
  %.801000 = phi i32 [ %.79999, %1122 ], [ %.78998, %.loopexit2035 ]
  %.76917 = phi i32 [ %.75916, %1122 ], [ %.74915, %.loopexit2035 ]
  %.82 = phi i32 [ %.81, %1122 ], [ %1117, %.loopexit2035 ]
  %.0834 = phi i32 [ %1125, %1122 ], [ %1115, %.loopexit2035 ]
  %1127 = getelementptr inbounds i8, ptr %0, i64 16
  %1128 = load i32, ptr %1127, align 8, !tbaa !25
  %1129 = shl i32 %1128, 8
  %1130 = or disjoint i32 %1129, %.0834
  store i32 %1130, ptr %1127, align 8, !tbaa !25
  %1131 = add i32 %.801000, 1
  br label %1096, !llvm.loop !91

1132:                                             ; preds = %34
  br label %1133

1133:                                             ; preds = %34, %34, %34, %34, %34, %34, %1096, %1094, %1029, %996, %777, %676, %629, %._crit_edge1776, %246, %227, %220, %184, %100, %34, %91, %1132
  %.sink = phi i32 [ 36, %91 ], [ %57, %34 ], [ 36, %100 ], [ 39, %184 ], [ 52, %220 ], [ 9, %227 ], [ 10, %246 ], [ 35, %._crit_edge1776 ], [ 17, %629 ], [ 21, %676 ], [ 24, %777 ], [ 37, %996 ], [ 53, %1029 ], [ 34, %1094 ], [ 34, %1096 ], [ %57, %1132 ], [ %57, %34 ], [ %57, %34 ], [ %57, %34 ], [ %57, %34 ], [ %57, %34 ], [ %57, %34 ]
  %.751430 = phi i64 [ %56, %91 ], [ %56, %34 ], [ %56, %100 ], [ %.71362, %184 ], [ %.181373, %220 ], [ %.201375, %227 ], [ %.31358, %246 ], [ %.321387, %._crit_edge1776 ], [ %.371392, %629 ], [ %.341389, %676 ], [ %.491404, %777 ], [ %999, %996 ], [ %.631418, %1029 ], [ %.671422, %1094 ], [ %.681423, %1096 ], [ %56, %1132 ], [ %56, %34 ], [ %56, %34 ], [ %56, %34 ], [ %56, %34 ], [ %56, %34 ], [ %56, %34 ]
  %.801354 = phi ptr [ %4, %91 ], [ %4, %34 ], [ %4, %100 ], [ %.71281, %184 ], [ %.181292, %220 ], [ %.201294, %227 ], [ %.31277, %246 ], [ %.321306, %._crit_edge1776 ], [ %.371311, %629 ], [ %.341308, %676 ], [ %.491323, %777 ], [ %.631337, %996 ], [ %.661340, %1029 ], [ %.721346, %1094 ], [ %.731347, %1096 ], [ %4, %1132 ], [ %4, %34 ], [ %4, %34 ], [ %4, %34 ], [ %4, %34 ], [ %4, %34 ], [ %4, %34 ]
  %.821264 = phi ptr [ %77, %91 ], [ %1, %34 ], [ %77, %100 ], [ %.101192, %184 ], [ %.211203, %220 ], [ %.231205, %227 ], [ %.61188, %246 ], [ %.351217, %._crit_edge1776 ], [ %.401222, %629 ], [ %.371219, %676 ], [ %.521234, %777 ], [ %.661248, %996 ], [ %.691251, %1029 ], [ %.741256.lcssa, %1094 ], [ %.751257, %1096 ], [ %1, %1132 ], [ %1, %34 ], [ %1, %34 ], [ %1, %34 ], [ %1, %34 ], [ %1, %34 ], [ %1, %34 ]
  %.831173 = phi i64 [ %.11091, %91 ], [ %48, %34 ], [ %.11091, %100 ], [ %.111101, %184 ], [ %.221112, %220 ], [ %.241114, %227 ], [ %127, %246 ], [ %.361126, %._crit_edge1776 ], [ %620, %629 ], [ %.381128, %676 ], [ %.531143, %777 ], [ %.681158, %996 ], [ %.711161, %1029 ], [ 0, %1094 ], [ %.761166, %1096 ], [ %48, %1132 ], [ %48, %34 ], [ %48, %34 ], [ %48, %34 ], [ %48, %34 ], [ %48, %34 ], [ %48, %34 ]
  %.801089 = phi i32 [ %.11010, %91 ], [ %54, %34 ], [ %.11010, %100 ], [ %.111020, %184 ], [ %.221031, %220 ], [ %.241033, %227 ], [ %.71016, %246 ], [ %.361045, %._crit_edge1776 ], [ %.411050, %629 ], [ %.381047, %676 ], [ %.531062, %777 ], [ %.651074, %996 ], [ %.681077, %1029 ], [ %.721081, %1094 ], [ %.731082, %1096 ], [ %54, %1132 ], [ %54, %34 ], [ %54, %34 ], [ %54, %34 ], [ %54, %34 ], [ %54, %34 ], [ %54, %34 ]
  %.821002 = phi i32 [ 1, %91 ], [ %52, %34 ], [ 1, %100 ], [ %192, %184 ], [ %.22942, %220 ], [ %.24944, %227 ], [ %.8928, %246 ], [ %.36956, %._crit_edge1776 ], [ 0, %629 ], [ %.38958, %676 ], [ %.52972, %777 ], [ %.66986, %996 ], [ %.69989, %1029 ], [ %.74994, %1094 ], [ %.75995, %1096 ], [ %52, %1132 ], [ %52, %34 ], [ %52, %34 ], [ %52, %34 ], [ %52, %34 ], [ %52, %34 ], [ %52, %34 ]
  %.78919 = phi i32 [ %.1842, %91 ], [ %50, %34 ], [ %.1842, %100 ], [ %.11852, %184 ], [ %.21862, %220 ], [ %.23864, %227 ], [ %.7848, %246 ], [ %.35876, %._crit_edge1776 ], [ 16, %629 ], [ %.37878, %676 ], [ %.51892, %777 ], [ %.63904, %996 ], [ %.66907, %1029 ], [ %.70911, %1094 ], [ %.71912, %1096 ], [ %50, %1132 ], [ %50, %34 ], [ %50, %34 ], [ %50, %34 ], [ %50, %34 ], [ %50, %34 ], [ %50, %34 ]
  %.84 = phi i32 [ %.1839, %91 ], [ %.84.fr1956, %34 ], [ %.1839, %100 ], [ %.11, %184 ], [ %.22, %220 ], [ %.24, %227 ], [ %128, %246 ], [ %.36, %._crit_edge1776 ], [ %621, %629 ], [ %.38, %676 ], [ %.53, %777 ], [ %.68, %996 ], [ %.71, %1029 ], [ 0, %1094 ], [ %.77, %1096 ], [ %.84.fr1956, %1132 ], [ %.84.fr1956, %34 ], [ %.84.fr1956, %34 ], [ %.84.fr1956, %34 ], [ %.84.fr1956, %34 ], [ %.84.fr1956, %34 ], [ %.84.fr1956, %34 ]
  %.0835 = phi i32 [ -1, %91 ], [ -1, %34 ], [ -1, %100 ], [ -1, %184 ], [ 2, %220 ], [ 2, %227 ], [ -1, %246 ], [ -1, %._crit_edge1776 ], [ -1, %629 ], [ -1, %676 ], [ 2, %777 ], [ -1, %996 ], [ 2, %1029 ], [ 0, %1094 ], [ 0, %1096 ], [ 0, %1132 ], [ -1, %34 ], [ -1, %34 ], [ -1, %34 ], [ -1, %34 ], [ -1, %34 ], [ -1, %34 ]
  store i32 %.sink, ptr %0, align 8, !tbaa !19
  %.84.fr = freeze i32 %.84
  %1134 = icmp ugt ptr %.821264, %1
  %1135 = icmp ugt i32 %.84.fr, 7
  %1136 = and i1 %1134, %1135
  br i1 %1136, label %.lr.ph1812.preheader, label %.thread1659

.lr.ph1812.preheader:                             ; preds = %1133
  %.8212641901 = ptrtoint ptr %.821264 to i64
  %1137 = add i32 %.84.fr, -8
  %1138 = lshr i32 %1137, 3
  %1139 = zext nneg i32 %1138 to i64
  %1140 = xor i64 %8, -1
  %1141 = add i64 %1140, %.8212641901
  %umin1902 = tail call i64 @llvm.umin.i64(i64 %1139, i64 %1141)
  %1142 = xor i64 %umin1902, -1
  %scevgep1903 = getelementptr i8, ptr %.821264, i64 %1142
  %1143 = trunc nuw nsw i64 %umin1902 to i32
  %1144 = shl nuw i32 %1143, 3
  %1145 = sub i32 %1137, %1144
  br label %.thread1659

.thread1659:                                      ; preds = %34, %.lr.ph1812.preheader, %1133, %1119, %1102, %1073, %977, %916, %862, %725, %640, %571, %296, %260, %230, %204, %173, %154, %132, %103, %73, %65
  %.08351676 = phi i32 [ %spec.select1713, %1119 ], [ %spec.select1711, %1102 ], [ %spec.select1709, %1073 ], [ %spec.select1681, %103 ], [ %spec.select1683, %132 ], [ %spec.select1685, %154 ], [ %spec.select1687, %173 ], [ %spec.select1689, %204 ], [ %spec.select1691, %230 ], [ %spec.select1699, %640 ], [ %spec.select1697, %571 ], [ %spec.select1693, %260 ], [ %spec.select1695, %296 ], [ %spec.select1703, %862 ], [ %spec.select1707, %977 ], [ %spec.select1705, %916 ], [ %spec.select1701, %725 ], [ %spec.select1679, %73 ], [ %spec.select1677, %65 ], [ %.0835, %1133 ], [ %.0835, %.lr.ph1812.preheader ], [ -1, %34 ]
  %.789191674 = phi i32 [ %.75916, %1119 ], [ %.73914.ph, %1102 ], [ %50, %1073 ], [ %.6847.ph, %103 ], [ %50, %132 ], [ %.13854.ph, %154 ], [ %.15856, %173 ], [ %.20861.ph, %204 ], [ %.24865, %230 ], [ %.42883.ph, %640 ], [ %.39880, %571 ], [ %.28869.ph, %260 ], [ %.32873.ph, %296 ], [ %.55896.ph, %862 ], [ %.61902.ph, %977 ], [ %.59900, %916 ], [ %.49890, %725 ], [ %.1842, %73 ], [ %.0841, %65 ], [ %.78919, %1133 ], [ %.78919, %.lr.ph1812.preheader ], [ %50, %34 ]
  %.8210021673 = phi i32 [ %.79999, %1119 ], [ %.77997.ph, %1102 ], [ %52, %1073 ], [ %.7927.ph, %103 ], [ %52, %132 ], [ %.13933.ph, %154 ], [ %.15935, %173 ], [ %.20940.ph, %204 ], [ %.25945, %230 ], [ %.44964.ph, %640 ], [ %.40960, %571 ], [ %.29949.ph, %260 ], [ %.33953.ph, %296 ], [ %.57977.ph, %862 ], [ %.64984.ph, %977 ], [ %.61981, %916 ], [ %.51971, %725 ], [ %.1921, %73 ], [ %.0920, %65 ], [ %.821002, %1133 ], [ %.821002, %.lr.ph1812.preheader ], [ %52, %34 ]
  %.8010891672 = phi i32 [ %.771086, %1119 ], [ %.751084.ph, %1102 ], [ %54, %1073 ], [ %.61015.ph, %103 ], [ %54, %132 ], [ %.131022.ph, %154 ], [ %.151024, %173 ], [ %.201029.ph, %204 ], [ %.251034, %230 ], [ %.441053.ph, %640 ], [ %.401049, %571 ], [ %.291038.ph, %260 ], [ %.331042.ph, %296 ], [ %.571066.ph, %862 ], [ %.631072.ph, %977 ], [ %.611070, %916 ], [ %.511060, %725 ], [ %.11010, %73 ], [ %.01009, %65 ], [ %.801089, %1133 ], [ %.801089, %.lr.ph1812.preheader ], [ %54, %34 ]
  %.8311731671 = phi i64 [ %.801170, %1119 ], [ %.781168, %1102 ], [ %48, %1073 ], [ %.61096.lcssa, %103 ], [ %48, %132 ], [ %.131103, %154 ], [ %.151105, %173 ], [ %.201110, %204 ], [ %.251115, %230 ], [ %.441134, %640 ], [ %.401130, %571 ], [ %.291119, %260 ], [ %.331123.lcssa, %296 ], [ %.591149, %862 ], [ %.661156, %977 ], [ %.631153, %916 ], [ %.511141, %725 ], [ %.11091, %73 ], [ %.01090, %65 ], [ %.831173, %1133 ], [ %.831173, %.lr.ph1812.preheader ], [ %48, %34 ]
  %.8013541670 = phi ptr [ %.771351, %1119 ], [ %.751349.ph, %1102 ], [ %4, %1073 ], [ %.21276.ph, %103 ], [ %4, %132 ], [ %.91283.ph, %154 ], [ %.111285, %173 ], [ %.161290.ph, %204 ], [ %.211295, %230 ], [ %.401314.ph, %640 ], [ %.361310, %571 ], [ %.251299.ph, %260 ], [ %.291303.ph, %296 ], [ %.541328.ph, %862 ], [ %.611335.ph, %977 ], [ %.581332, %916 ], [ %.471321, %725 ], [ %4, %73 ], [ %4, %65 ], [ %.801354, %1133 ], [ %.801354, %.lr.ph1812.preheader ], [ %4, %34 ]
  %.7514301669 = phi i64 [ %.721427, %1119 ], [ %.701425.ph, %1102 ], [ %56, %1073 ], [ %.21357.ph, %103 ], [ %56, %132 ], [ %.91364.ph, %154 ], [ %.111366, %173 ], [ %.161371.ph, %204 ], [ %.211376, %230 ], [ %.401395.ph, %640 ], [ %.361391, %571 ], [ %.251380.ph, %260 ], [ %.291384.ph, %296 ], [ %.531408.ph, %862 ], [ %.601415.ph, %977 ], [ %.571412, %916 ], [ %.471402, %725 ], [ %56, %73 ], [ %56, %65 ], [ %.751430, %1133 ], [ %.751430, %.lr.ph1812.preheader ], [ %56, %34 ]
  %.841266 = phi ptr [ %.791261, %1119 ], [ %.771259, %1102 ], [ %1, %1073 ], [ %.51187.lcssa, %103 ], [ %1, %132 ], [ %.121194, %154 ], [ %.141196, %173 ], [ %.191201, %204 ], [ %.241206, %230 ], [ %.431225, %640 ], [ %.391221, %571 ], [ %.281210, %260 ], [ %.321214.lcssa, %296 ], [ %.571239, %862 ], [ %.641246, %977 ], [ %.611243, %916 ], [ %.501232, %725 ], [ %.01182, %73 ], [ %1, %65 ], [ %.821264, %1133 ], [ %scevgep1903, %.lr.ph1812.preheader ], [ %1, %34 ]
  %.86 = phi i32 [ %.81, %1119 ], [ %.79, %1102 ], [ %.84.fr1956, %1073 ], [ %.6.lcssa, %103 ], [ %.84.fr1956, %132 ], [ %.13, %154 ], [ %.15, %173 ], [ %.20, %204 ], [ %.25, %230 ], [ %.44, %640 ], [ %.40, %571 ], [ %.29, %260 ], [ %.33.lcssa, %296 ], [ %.59, %862 ], [ %.66, %977 ], [ %.63, %916 ], [ %.51, %725 ], [ %.1839, %73 ], [ %.0838, %65 ], [ %.84.fr, %1133 ], [ %1145, %.lr.ph1812.preheader ], [ %.84.fr1956, %34 ]
  store i32 %.86, ptr %45, align 4, !tbaa !11
  %1146 = zext nneg i32 %.86 to i64
  %1147 = shl nsw i64 -1, %1146
  %1148 = xor i64 %1147, -1
  %1149 = and i64 %.8311731671, %1148
  store i64 %1149, ptr %47, align 8, !tbaa !14
  store i32 %.789191674, ptr %49, align 8, !tbaa !15
  store i32 %.8210021673, ptr %51, align 4, !tbaa !16
  store i32 %.8010891672, ptr %53, align 8, !tbaa !17
  store i64 %.7514301669, ptr %55, align 8, !tbaa !18
  %1150 = ptrtoint ptr %.841266 to i64
  %1151 = sub i64 %1150, %8
  store i64 %1151, ptr %2, align 8, !tbaa !5
  %1152 = ptrtoint ptr %.8013541670 to i64
  %1153 = ptrtoint ptr %4 to i64
  %1154 = sub i64 %1152, %1153
  store i64 %1154, ptr %5, align 8, !tbaa !5
  %1155 = and i32 %6, 9
  %1156 = icmp ne i32 %1155, 0
  %1157 = icmp sgt i32 %.08351676, -1
  %or.cond9 = and i1 %1156, %1157
  br i1 %or.cond9, label %1158, label %1251

1158:                                             ; preds = %.thread1659
  %1159 = getelementptr inbounds i8, ptr %0, i64 28
  %1160 = load i32, ptr %1159, align 4, !tbaa !24
  %1161 = and i32 %1160, 65535
  %1162 = lshr i32 %1160, 16
  %.not16191833 = icmp eq i64 %1154, 0
  br i1 %.not16191833, label %._crit_edge1839, label %.preheader1719.preheader

.preheader1719.preheader:                         ; preds = %1158
  %1163 = urem i64 %1154, 5552
  br label %.preheader1719

.preheader1719:                                   ; preds = %.preheader1719.preheader, %._crit_edge1829
  %.01838 = phi i64 [ 5552, %._crit_edge1829 ], [ %1163, %.preheader1719.preheader ]
  %.08231837 = phi i32 [ %1241, %._crit_edge1829 ], [ %1162, %.preheader1719.preheader ]
  %.08241836 = phi i32 [ %1240, %._crit_edge1829 ], [ %1161, %.preheader1719.preheader ]
  %.08291835 = phi i64 [ %1242, %._crit_edge1829 ], [ %1154, %.preheader1719.preheader ]
  %.08301834 = phi ptr [ %.2832.lcssa, %._crit_edge1829 ], [ %4, %.preheader1719.preheader ]
  %1164 = icmp ugt i64 %.01838, 7
  br i1 %1164, label %.lr.ph1819.preheader, label %.preheader

.lr.ph1819.preheader:                             ; preds = %.preheader1719
  %1165 = trunc nuw nsw i64 %.01838 to i32
  br label %.lr.ph1819

.preheader:                                       ; preds = %.lr.ph1819, %.preheader1719
  %.1831.lcssa = phi ptr [ %.08301834, %.preheader1719 ], [ %1217, %.lr.ph1819 ]
  %.0827.lcssa = phi i32 [ 0, %.preheader1719 ], [ %1216, %.lr.ph1819 ]
  %.1825.lcssa = phi i32 [ %.08241836, %.preheader1719 ], [ %1214, %.lr.ph1819 ]
  %.1.lcssa = phi i32 [ %.08231837, %.preheader1719 ], [ %1215, %.lr.ph1819 ]
  %1166 = zext i32 %.0827.lcssa to i64
  %1167 = icmp ugt i64 %.01838, %1166
  br i1 %1167, label %.lr.ph1828.preheader, label %._crit_edge1829

.lr.ph1828.preheader:                             ; preds = %.preheader
  %1168 = sub nsw i64 %.01838, %1166
  %1169 = sub nsw i64 %.01838, %1166
  %xtraiter2143 = and i64 %1169, 3
  %lcmp.mod2144.not = icmp eq i64 %xtraiter2143, 0
  br i1 %lcmp.mod2144.not, label %.lr.ph1828.prol.loopexit, label %.lr.ph1828.prol

.lr.ph1828.prol:                                  ; preds = %.lr.ph1828.preheader, %.lr.ph1828.prol
  %indvars.iv1904.prol = phi i64 [ %indvars.iv.next1905.prol, %.lr.ph1828.prol ], [ %1166, %.lr.ph1828.preheader ]
  %.21827.prol = phi i32 [ %1174, %.lr.ph1828.prol ], [ %.1.lcssa, %.lr.ph1828.preheader ]
  %.28261826.prol = phi i32 [ %1173, %.lr.ph1828.prol ], [ %.1825.lcssa, %.lr.ph1828.preheader ]
  %.28321824.prol = phi ptr [ %1170, %.lr.ph1828.prol ], [ %.1831.lcssa, %.lr.ph1828.preheader ]
  %prol.iter = phi i64 [ %prol.iter.next, %.lr.ph1828.prol ], [ 0, %.lr.ph1828.preheader ]
  %1170 = getelementptr inbounds i8, ptr %.28321824.prol, i64 1
  %1171 = load i8, ptr %.28321824.prol, align 1, !tbaa !26
  %1172 = zext i8 %1171 to i32
  %1173 = add i32 %.28261826.prol, %1172
  %1174 = add i32 %1173, %.21827.prol
  %indvars.iv.next1905.prol = add nuw nsw i64 %indvars.iv1904.prol, 1
  %prol.iter.next = add i64 %prol.iter, 1
  %prol.iter.cmp.not = icmp eq i64 %prol.iter.next, %xtraiter2143
  br i1 %prol.iter.cmp.not, label %.lr.ph1828.prol.loopexit, label %.lr.ph1828.prol, !llvm.loop !92

.lr.ph1828.prol.loopexit:                         ; preds = %.lr.ph1828.prol, %.lr.ph1828.preheader
  %.lcssa2015.unr = phi i32 [ poison, %.lr.ph1828.preheader ], [ %1173, %.lr.ph1828.prol ]
  %.lcssa2014.unr = phi i32 [ poison, %.lr.ph1828.preheader ], [ %1174, %.lr.ph1828.prol ]
  %indvars.iv1904.unr = phi i64 [ %1166, %.lr.ph1828.preheader ], [ %indvars.iv.next1905.prol, %.lr.ph1828.prol ]
  %.21827.unr = phi i32 [ %.1.lcssa, %.lr.ph1828.preheader ], [ %1174, %.lr.ph1828.prol ]
  %.28261826.unr = phi i32 [ %.1825.lcssa, %.lr.ph1828.preheader ], [ %1173, %.lr.ph1828.prol ]
  %.28321824.unr = phi ptr [ %.1831.lcssa, %.lr.ph1828.preheader ], [ %1170, %.lr.ph1828.prol ]
  %1175 = sub nsw i64 %1166, %.01838
  %1176 = icmp ugt i64 %1175, -4
  br i1 %1176, label %._crit_edge1829.loopexit, label %.lr.ph1828

.lr.ph1819:                                       ; preds = %.lr.ph1819.preheader, %.lr.ph1819
  %.11818 = phi i32 [ %1215, %.lr.ph1819 ], [ %.08231837, %.lr.ph1819.preheader ]
  %.18251817 = phi i32 [ %1214, %.lr.ph1819 ], [ %.08241836, %.lr.ph1819.preheader ]
  %.08271816 = phi i32 [ %1216, %.lr.ph1819 ], [ 0, %.lr.ph1819.preheader ]
  %.18311815 = phi ptr [ %1217, %.lr.ph1819 ], [ %.08301834, %.lr.ph1819.preheader ]
  %1177 = load i8, ptr %.18311815, align 1, !tbaa !26
  %1178 = zext i8 %1177 to i32
  %1179 = add i32 %.18251817, %1178
  %1180 = add i32 %1179, %.11818
  %1181 = getelementptr inbounds i8, ptr %.18311815, i64 1
  %1182 = load i8, ptr %1181, align 1, !tbaa !26
  %1183 = zext i8 %1182 to i32
  %1184 = add i32 %1179, %1183
  %1185 = add i32 %1180, %1184
  %1186 = getelementptr inbounds i8, ptr %.18311815, i64 2
  %1187 = load i8, ptr %1186, align 1, !tbaa !26
  %1188 = zext i8 %1187 to i32
  %1189 = add i32 %1184, %1188
  %1190 = add i32 %1185, %1189
  %1191 = getelementptr inbounds i8, ptr %.18311815, i64 3
  %1192 = load i8, ptr %1191, align 1, !tbaa !26
  %1193 = zext i8 %1192 to i32
  %1194 = add i32 %1189, %1193
  %1195 = add i32 %1190, %1194
  %1196 = getelementptr inbounds i8, ptr %.18311815, i64 4
  %1197 = load i8, ptr %1196, align 1, !tbaa !26
  %1198 = zext i8 %1197 to i32
  %1199 = add i32 %1194, %1198
  %1200 = add i32 %1195, %1199
  %1201 = getelementptr inbounds i8, ptr %.18311815, i64 5
  %1202 = load i8, ptr %1201, align 1, !tbaa !26
  %1203 = zext i8 %1202 to i32
  %1204 = add i32 %1199, %1203
  %1205 = add i32 %1200, %1204
  %1206 = getelementptr inbounds i8, ptr %.18311815, i64 6
  %1207 = load i8, ptr %1206, align 1, !tbaa !26
  %1208 = zext i8 %1207 to i32
  %1209 = add i32 %1204, %1208
  %1210 = add i32 %1205, %1209
  %1211 = getelementptr inbounds i8, ptr %.18311815, i64 7
  %1212 = load i8, ptr %1211, align 1, !tbaa !26
  %1213 = zext i8 %1212 to i32
  %1214 = add i32 %1209, %1213
  %1215 = add i32 %1210, %1214
  %1216 = add nuw i32 %.08271816, 8
  %1217 = getelementptr inbounds i8, ptr %.18311815, i64 8
  %1218 = or disjoint i32 %1216, 7
  %1219 = icmp ult i32 %1218, %1165
  br i1 %1219, label %.lr.ph1819, label %.preheader, !llvm.loop !93

.lr.ph1828:                                       ; preds = %.lr.ph1828.prol.loopexit, %.lr.ph1828
  %indvars.iv1904 = phi i64 [ %indvars.iv.next1905.3, %.lr.ph1828 ], [ %indvars.iv1904.unr, %.lr.ph1828.prol.loopexit ]
  %.21827 = phi i32 [ %1239, %.lr.ph1828 ], [ %.21827.unr, %.lr.ph1828.prol.loopexit ]
  %.28261826 = phi i32 [ %1238, %.lr.ph1828 ], [ %.28261826.unr, %.lr.ph1828.prol.loopexit ]
  %.28321824 = phi ptr [ %1235, %.lr.ph1828 ], [ %.28321824.unr, %.lr.ph1828.prol.loopexit ]
  %1220 = getelementptr inbounds i8, ptr %.28321824, i64 1
  %1221 = load i8, ptr %.28321824, align 1, !tbaa !26
  %1222 = zext i8 %1221 to i32
  %1223 = add i32 %.28261826, %1222
  %1224 = add i32 %1223, %.21827
  %1225 = getelementptr inbounds i8, ptr %.28321824, i64 2
  %1226 = load i8, ptr %1220, align 1, !tbaa !26
  %1227 = zext i8 %1226 to i32
  %1228 = add i32 %1223, %1227
  %1229 = add i32 %1228, %1224
  %1230 = getelementptr inbounds i8, ptr %.28321824, i64 3
  %1231 = load i8, ptr %1225, align 1, !tbaa !26
  %1232 = zext i8 %1231 to i32
  %1233 = add i32 %1228, %1232
  %1234 = add i32 %1233, %1229
  %1235 = getelementptr inbounds i8, ptr %.28321824, i64 4
  %1236 = load i8, ptr %1230, align 1, !tbaa !26
  %1237 = zext i8 %1236 to i32
  %1238 = add i32 %1233, %1237
  %1239 = add i32 %1238, %1234
  %indvars.iv.next1905.3 = add nuw nsw i64 %indvars.iv1904, 4
  %exitcond1908.not.3 = icmp eq i64 %indvars.iv.next1905.3, %.01838
  br i1 %exitcond1908.not.3, label %._crit_edge1829.loopexit, label %.lr.ph1828, !llvm.loop !94

._crit_edge1829.loopexit:                         ; preds = %.lr.ph1828, %.lr.ph1828.prol.loopexit
  %.lcssa2015 = phi i32 [ %.lcssa2015.unr, %.lr.ph1828.prol.loopexit ], [ %1238, %.lr.ph1828 ]
  %.lcssa2014 = phi i32 [ %.lcssa2014.unr, %.lr.ph1828.prol.loopexit ], [ %1239, %.lr.ph1828 ]
  %scevgep1906 = getelementptr i8, ptr %.1831.lcssa, i64 %1168
  br label %._crit_edge1829

._crit_edge1829:                                  ; preds = %._crit_edge1829.loopexit, %.preheader
  %.2832.lcssa = phi ptr [ %.1831.lcssa, %.preheader ], [ %scevgep1906, %._crit_edge1829.loopexit ]
  %.2826.lcssa = phi i32 [ %.1825.lcssa, %.preheader ], [ %.lcssa2015, %._crit_edge1829.loopexit ]
  %.2.lcssa = phi i32 [ %.1.lcssa, %.preheader ], [ %.lcssa2014, %._crit_edge1829.loopexit ]
  %1240 = urem i32 %.2826.lcssa, 65521
  %1241 = urem i32 %.2.lcssa, 65521
  %1242 = sub i64 %.08291835, %.01838
  %.not1619 = icmp eq i64 %1242, 0
  br i1 %.not1619, label %._crit_edge1839, label %.preheader1719, !llvm.loop !95

._crit_edge1839:                                  ; preds = %._crit_edge1829, %1158
  %.0824.lcssa = phi i32 [ %1161, %1158 ], [ %1240, %._crit_edge1829 ]
  %.0823.lcssa = phi i32 [ %1162, %1158 ], [ %1241, %._crit_edge1829 ]
  %1243 = shl nuw i32 %.0823.lcssa, 16
  %1244 = or disjoint i32 %1243, %.0824.lcssa
  store i32 %1244, ptr %1159, align 4, !tbaa !24
  %1245 = icmp eq i32 %.08351676, 0
  br i1 %1245, label %1246, label %1251

1246:                                             ; preds = %._crit_edge1839
  %1247 = and i32 %6, 1
  %.not1620 = icmp eq i32 %1247, 0
  br i1 %.not1620, label %1251, label %1248

1248:                                             ; preds = %1246
  %1249 = getelementptr inbounds i8, ptr %0, i64 16
  %1250 = load i32, ptr %1249, align 8, !tbaa !25
  %.not1621 = icmp eq i32 %1244, %1250
  %spec.select = select i1 %.not1621, i32 0, i32 -2
  br label %1251

1251:                                             ; preds = %1248, %.thread1659, %1246, %._crit_edge1839, %33
  %.0833 = phi i32 [ -3, %33 ], [ %.08351676, %.thread1659 ], [ 0, %1246 ], [ %.08351676, %._crit_edge1839 ], [ %spec.select, %1248 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %10) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %9) #6
  ret i32 %.0833
}

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

; Function Attrs: noreturn nounwind
declare void @__assert_fail(ptr noundef, ptr noundef, i32 noundef, ptr noundef) local_unnamed_addr #4

; Function Attrs: nounwind uwtable
declare hidden void @tinfl_clear_tree(ptr noundef) local_unnamed_addr #2

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

attributes #0 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #2 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #4 = { noreturn nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #6 = { nounwind }
attributes #7 = { noreturn 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 = !{!"long", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"any pointer", !7, i64 0}
!11 = !{!12, !13, i64 4}
!12 = !{!"tinfl_decompressor_tag", !13, i64 0, !13, i64 4, !13, i64 8, !13, i64 12, !13, i64 16, !13, i64 20, !13, i64 24, !13, i64 28, !13, i64 32, !13, i64 36, !13, i64 40, !7, i64 44, !6, i64 56, !6, i64 64, !7, i64 72, !7, i64 6216, !7, i64 7368, !7, i64 7496, !7, i64 7572, !7, i64 7860, !7, i64 7892, !7, i64 7911, !7, i64 7915}
!13 = !{!"int", !7, i64 0}
!14 = !{!12, !6, i64 56}
!15 = !{!12, !13, i64 32}
!16 = !{!12, !13, i64 36}
!17 = !{!12, !13, i64 40}
!18 = !{!12, !6, i64 64}
!19 = !{!12, !13, i64 0}
!20 = distinct !{!20, !21}
!21 = !{!"llvm.loop.mustprogress"}
!22 = !{!12, !13, i64 12}
!23 = !{!12, !13, i64 8}
!24 = !{!12, !13, i64 28}
!25 = !{!12, !13, i64 16}
!26 = !{!7, !7, i64 0}
!27 = distinct !{!27, !21}
!28 = distinct !{!28, !21}
!29 = distinct !{!29, !21}
!30 = !{!12, !13, i64 20}
!31 = !{!12, !13, i64 24}
!32 = distinct !{!32, !21}
!33 = distinct !{!33, !21}
!34 = distinct !{!34, !21}
!35 = distinct !{!35, !21}
!36 = distinct !{!36, !21}
!37 = distinct !{!37, !21}
!38 = distinct !{!38, !21}
!39 = distinct !{!39, !21}
!40 = distinct !{!40, !21}
!41 = distinct !{!41, !21}
!42 = distinct !{!42, !21}
!43 = !{!13, !13, i64 0}
!44 = distinct !{!44, !21}
!45 = distinct !{!45, !21}
!46 = !{!47, !47, i64 0}
!47 = !{!"short", !7, i64 0}
!48 = distinct !{!48, !21}
!49 = distinct !{!49, !21}
!50 = distinct !{!50, !21}
!51 = distinct !{!51, !21}
!52 = distinct !{!52, !21}
!53 = distinct !{!53, !54}
!54 = !{!"llvm.loop.unroll.disable"}
!55 = distinct !{!55, !21}
!56 = distinct !{!56, !54}
!57 = distinct !{!57, !21, !58}
!58 = !{!"llvm.loop.isvectorized", i32 1}
!59 = distinct !{!59, !21}
!60 = distinct !{!60, !21}
!61 = distinct !{!61, !21}
!62 = distinct !{!62, !21}
!63 = distinct !{!63, !21}
!64 = distinct !{!64, !21}
!65 = distinct !{!65, !21}
!66 = distinct !{!66, !21}
!67 = distinct !{!67, !21}
!68 = distinct !{!68, !21}
!69 = distinct !{!69, !21}
!70 = distinct !{!70, !21}
!71 = distinct !{!71, !21}
!72 = distinct !{!72, !21}
!73 = distinct !{!73, !21}
!74 = distinct !{!74, !21}
!75 = distinct !{!75, !21}
!76 = distinct !{!76, !21}
!77 = distinct !{!77, !21}
!78 = distinct !{!78, !21}
!79 = distinct !{!79, !21}
!80 = distinct !{!80, !21}
!81 = distinct !{!81, !21}
!82 = distinct !{!82, !21}
!83 = distinct !{!83, !21}
!84 = distinct !{!84, !21}
!85 = distinct !{!85, !21}
!86 = distinct !{!86, !21}
!87 = distinct !{!87, !21}
!88 = distinct !{!88, !21}
!89 = distinct !{!89, !21}
!90 = distinct !{!90, !21}
!91 = distinct !{!91, !21}
!92 = distinct !{!92, !54}
!93 = distinct !{!93, !21}
!94 = distinct !{!94, !21}
!95 = distinct !{!95, !21}


; Effective O3 passes: AggressiveInstCombinePass,BDCEPass,CorrelatedValuePropagationPass,DSEPass,EarlyCSEPass,GVNPass,GlobalDCEPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferAlignmentPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopIdiomRecognizePass,LoopLoadEliminationPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,LoopVectorizePass,PostOrderFunctionAttrsPass,ReassociatePass,SCCPPass,SROAPass,SimplifyCFGPass,TailCallElimPass