; LLVM IR from hadryansalles/Luz :: deps/optick (optick_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 %struct.tinfl_huff_table], [4 x i8], [457 x i8] }
%struct.tinfl_huff_table = type { [288 x i8], [1024 x i16], [576 x i16] }

@.str.12 = external hidden unnamed_addr constant [80 x i8], align 1
@_ZZ16tinfl_decompressE13s_length_base = external hidden constant [31 x i32], align 16
@_ZZ16tinfl_decompressE14s_length_extra = external hidden constant [31 x i32], align 16
@_ZZ16tinfl_decompressE11s_dist_base = external hidden constant [32 x i32], align 16
@_ZZ16tinfl_decompressE12s_dist_extra = external hidden constant [32 x i32], align 16
@_ZZ16tinfl_decompressE17s_length_dezigzag = external hidden constant [19 x i8], align 16
@_ZZ16tinfl_decompressE17s_min_table_sizes = external hidden constant [3 x i32], align 4
@.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: mustprogress 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 i32, align 4
  %17 = alloca i32, align 4
  %18 = alloca i32, align 4
  %19 = alloca i32, align 4
  %20 = alloca i32, align 4
  %21 = alloca i64, align 8
  %22 = alloca ptr, align 8
  %23 = alloca ptr, align 8
  %24 = alloca ptr, align 8
  %25 = alloca ptr, align 8
  %26 = alloca i64, align 8
  %27 = alloca i64, align 8
  %28 = alloca i32, align 4
  %29 = alloca i32, align 4
  %30 = alloca i32, align 4
  %31 = alloca i32, align 4
  %32 = alloca i32, align 4
  %33 = alloca i64, align 8
  %34 = alloca ptr, align 8
  %35 = alloca i32, align 4
  %36 = alloca i32, align 4
  %37 = alloca i32, align 4
  %38 = alloca i32, align 4
  %39 = alloca i32, align 4
  %40 = alloca i32, align 4
  %41 = alloca ptr, align 8
  %42 = alloca i32, align 4
  %43 = alloca i32, align 4
  %44 = alloca i32, align 4
  %45 = alloca i32, align 4
  %46 = alloca i32, align 4
  %47 = alloca [17 x i32], align 16
  %48 = alloca [16 x i32], align 16
  %49 = alloca i32, align 4
  %50 = alloca i32, align 4
  %51 = alloca i32, align 4
  %52 = alloca i32, align 4
  %53 = alloca i16, align 2
  %54 = alloca i32, align 4
  %55 = alloca i32, align 4
  %56 = alloca i32, align 4
  %57 = alloca i32, align 4
  %58 = alloca i32, align 4
  %59 = alloca ptr, align 8
  %60 = alloca i32, align 4
  %61 = alloca i32, align 4
  %62 = alloca i32, align 4
  %63 = alloca i32, align 4
  %64 = alloca i32, align 4
  %65 = alloca i32, align 4
  %66 = alloca i32, align 4
  %67 = alloca i32, align 4
  %68 = alloca i32, align 4
  %69 = alloca i32, align 4
  %70 = alloca i32, align 4
  %71 = alloca i32, align 4
  %72 = alloca ptr, align 8
  %73 = alloca i32, align 4
  %74 = alloca i32, align 4
  %75 = alloca i32, align 4
  %76 = alloca ptr, align 8
  %77 = alloca i64, align 8
  %78 = alloca i32, align 4
  %79 = alloca i32, align 4
  %80 = alloca i32, align 4
  %81 = 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 4, ptr %16) #5
  store i32 -1, ptr %16, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #5
  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 8, ptr %21) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #5
  %82 = load ptr, ptr %10, align 8, !tbaa !5
  store ptr %82, ptr %22, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #5
  %83 = load ptr, ptr %10, align 8, !tbaa !5
  %84 = load ptr, ptr %11, align 8, !tbaa !5
  %85 = load i64, ptr %84, align 8, !tbaa !13
  %86 = getelementptr inbounds i8, ptr %83, i64 %85
  store ptr %86, ptr %23, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #5
  %87 = load ptr, ptr %13, align 8, !tbaa !5
  store ptr %87, ptr %24, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #5
  %88 = load ptr, ptr %13, align 8, !tbaa !5
  %89 = load ptr, ptr %14, align 8, !tbaa !5
  %90 = load i64, ptr %89, align 8, !tbaa !13
  %91 = getelementptr inbounds i8, ptr %88, i64 %90
  store ptr %91, ptr %25, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #5
  %92 = load i32, ptr %15, align 4, !tbaa !9
  %93 = and i32 %92, 4
  %94 = icmp ne i32 %93, 0
  br i1 %94, label %95, label %96

95:                                               ; preds = %7
  br label %106

96:                                               ; preds = %7
  %97 = load ptr, ptr %13, align 8, !tbaa !5
  %98 = load ptr, ptr %12, align 8, !tbaa !5
  %99 = ptrtoint ptr %97 to i64
  %100 = ptrtoint ptr %98 to i64
  %101 = sub i64 %99, %100
  %102 = load ptr, ptr %14, align 8, !tbaa !5
  %103 = load i64, ptr %102, align 8, !tbaa !13
  %104 = add i64 %101, %103
  %105 = sub i64 %104, 1
  br label %106

106:                                              ; preds = %96, %95
  %107 = phi i64 [ -1, %95 ], [ %105, %96 ]
  store i64 %107, ptr %26, align 8, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #5
  %108 = load i64, ptr %26, align 8, !tbaa !13
  %109 = add i64 %108, 1
  %110 = load i64, ptr %26, align 8, !tbaa !13
  %111 = and i64 %109, %110
  %112 = icmp ne i64 %111, 0
  br i1 %112, label %117, label %113

113:                                              ; preds = %106
  %114 = load ptr, ptr %13, align 8, !tbaa !5
  %115 = load ptr, ptr %12, align 8, !tbaa !5
  %116 = icmp ult ptr %114, %115
  br i1 %116, label %117, label %120

117:                                              ; preds = %113, %106
  %118 = load ptr, ptr %14, align 8, !tbaa !5
  store i64 0, ptr %118, align 8, !tbaa !13
  %119 = load ptr, ptr %11, align 8, !tbaa !5
  store i64 0, ptr %119, align 8, !tbaa !13
  store i32 -3, ptr %8, align 4
  store i32 1, ptr %28, align 4
  br label %2938

120:                                              ; preds = %113
  %121 = load ptr, ptr %9, align 8, !tbaa !5
  %122 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %121, i32 0, i32 1
  %123 = load i32, ptr %122, align 4, !tbaa !15
  store i32 %123, ptr %17, align 4, !tbaa !9
  %124 = load ptr, ptr %9, align 8, !tbaa !5
  %125 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %124, i32 0, i32 12
  %126 = load i64, ptr %125, align 8, !tbaa !17
  store i64 %126, ptr %21, align 8, !tbaa !13
  %127 = load ptr, ptr %9, align 8, !tbaa !5
  %128 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %127, i32 0, i32 8
  %129 = load i32, ptr %128, align 8, !tbaa !18
  store i32 %129, ptr %18, align 4, !tbaa !9
  %130 = load ptr, ptr %9, align 8, !tbaa !5
  %131 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %130, i32 0, i32 9
  %132 = load i32, ptr %131, align 4, !tbaa !19
  store i32 %132, ptr %19, align 4, !tbaa !9
  %133 = load ptr, ptr %9, align 8, !tbaa !5
  %134 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %133, i32 0, i32 10
  %135 = load i32, ptr %134, align 8, !tbaa !20
  store i32 %135, ptr %20, align 4, !tbaa !9
  %136 = load ptr, ptr %9, align 8, !tbaa !5
  %137 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %136, i32 0, i32 13
  %138 = load i64, ptr %137, align 8, !tbaa !21
  store i64 %138, ptr %27, align 8, !tbaa !13
  %139 = load ptr, ptr %9, align 8, !tbaa !5
  %140 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %139, i32 0, i32 0
  %141 = load i32, ptr %140, align 8, !tbaa !22
  switch i32 %141, label %2719 [
    i32 0, label %142
    i32 1, label %169
    i32 2, label %195
    i32 36, label %268
    i32 3, label %295
    i32 5, label %362
    i32 6, label %425
    i32 7, label %478
    i32 39, label %529
    i32 51, label %563
    i32 52, label %604
    i32 9, label %627
    i32 38, label %644
    i32 10, label %732
    i32 11, label %828
    i32 14, label %936
    i32 35, label %1070
    i32 16, label %1341
    i32 17, label %1461
    i32 18, label %1493
    i32 21, label %1586
    i32 23, label %1734
    i32 24, label %1843
    i32 25, label %2023
    i32 26, label %2155
    i32 27, label %2283
    i32 37, label %2347
    i32 53, label %2389
    i32 32, label %2542
    i32 41, label %2637
    i32 42, label %2685
    i32 34, label %2714
  ]

142:                                              ; preds = %120
  %143 = load ptr, ptr %9, align 8, !tbaa !5
  %144 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %143, i32 0, i32 3
  store i32 0, ptr %144, align 4, !tbaa !23
  %145 = load ptr, ptr %9, align 8, !tbaa !5
  %146 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %145, i32 0, i32 2
  store i32 0, ptr %146, align 8, !tbaa !24
  store i32 0, ptr %20, align 4, !tbaa !9
  store i32 0, ptr %19, align 4, !tbaa !9
  store i32 0, ptr %18, align 4, !tbaa !9
  store i32 0, ptr %17, align 4, !tbaa !9
  store i64 0, ptr %21, align 8, !tbaa !13
  %147 = load ptr, ptr %9, align 8, !tbaa !5
  %148 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %147, i32 0, i32 7
  store i32 1, ptr %148, align 4, !tbaa !25
  %149 = load ptr, ptr %9, align 8, !tbaa !5
  %150 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %149, i32 0, i32 4
  store i32 1, ptr %150, align 8, !tbaa !26
  %151 = load i32, ptr %15, align 4, !tbaa !9
  %152 = and i32 %151, 1
  %153 = icmp ne i32 %152, 0
  br i1 %153, label %154, label %274

154:                                              ; preds = %142
  br label %155

155:                                              ; preds = %154
  br label %156

156:                                              ; preds = %171, %155
  %157 = load ptr, ptr %22, align 8, !tbaa !5
  %158 = load ptr, ptr %23, align 8, !tbaa !5
  %159 = icmp uge ptr %157, %158
  br i1 %159, label %160, label %172

160:                                              ; preds = %156
  br label %161

161:                                              ; preds = %160
  %162 = load i32, ptr %15, align 4, !tbaa !9
  %163 = and i32 %162, 2
  %164 = icmp ne i32 %163, 0
  %165 = zext i1 %164 to i64
  %166 = select i1 %164, i32 1, i32 -4
  store i32 %166, ptr %16, align 4, !tbaa !11
  %167 = load ptr, ptr %9, align 8, !tbaa !5
  %168 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %167, i32 0, i32 0
  store i32 1, ptr %168, align 8, !tbaa !22
  br label %2720

169:                                              ; preds = %120
  br label %170

170:                                              ; preds = %169
  br label %171

171:                                              ; preds = %170
  br label %156, !llvm.loop !27

172:                                              ; preds = %156
  %173 = load ptr, ptr %22, align 8, !tbaa !5
  %174 = getelementptr inbounds i8, ptr %173, i32 1
  store ptr %174, ptr %22, align 8, !tbaa !5
  %175 = load i8, ptr %173, align 1, !tbaa !29
  %176 = zext i8 %175 to i32
  %177 = load ptr, ptr %9, align 8, !tbaa !5
  %178 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %177, i32 0, i32 2
  store i32 %176, ptr %178, align 8, !tbaa !24
  br label %179

179:                                              ; preds = %172
  br label %180

180:                                              ; preds = %179
  br label %181

181:                                              ; preds = %180
  br label %182

182:                                              ; preds = %197, %181
  %183 = load ptr, ptr %22, align 8, !tbaa !5
  %184 = load ptr, ptr %23, align 8, !tbaa !5
  %185 = icmp uge ptr %183, %184
  br i1 %185, label %186, label %198

186:                                              ; preds = %182
  br label %187

187:                                              ; preds = %186
  %188 = load i32, ptr %15, align 4, !tbaa !9
  %189 = and i32 %188, 2
  %190 = icmp ne i32 %189, 0
  %191 = zext i1 %190 to i64
  %192 = select i1 %190, i32 1, i32 -4
  store i32 %192, ptr %16, align 4, !tbaa !11
  %193 = load ptr, ptr %9, align 8, !tbaa !5
  %194 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %193, i32 0, i32 0
  store i32 2, ptr %194, align 8, !tbaa !22
  br label %2720

195:                                              ; preds = %120
  br label %196

196:                                              ; preds = %195
  br label %197

197:                                              ; preds = %196
  br label %182, !llvm.loop !30

198:                                              ; preds = %182
  %199 = load ptr, ptr %22, align 8, !tbaa !5
  %200 = getelementptr inbounds i8, ptr %199, i32 1
  store ptr %200, ptr %22, align 8, !tbaa !5
  %201 = load i8, ptr %199, align 1, !tbaa !29
  %202 = zext i8 %201 to i32
  %203 = load ptr, ptr %9, align 8, !tbaa !5
  %204 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %203, i32 0, i32 3
  store i32 %202, ptr %204, align 4, !tbaa !23
  br label %205

205:                                              ; preds = %198
  br label %206

206:                                              ; preds = %205
  %207 = load ptr, ptr %9, align 8, !tbaa !5
  %208 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %207, i32 0, i32 2
  %209 = load i32, ptr %208, align 8, !tbaa !24
  %210 = mul i32 %209, 256
  %211 = load ptr, ptr %9, align 8, !tbaa !5
  %212 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %211, i32 0, i32 3
  %213 = load i32, ptr %212, align 4, !tbaa !23
  %214 = add i32 %210, %213
  %215 = urem i32 %214, 31
  %216 = icmp ne i32 %215, 0
  br i1 %216, label %229, label %217

217:                                              ; preds = %206
  %218 = load ptr, ptr %9, align 8, !tbaa !5
  %219 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %218, i32 0, i32 3
  %220 = load i32, ptr %219, align 4, !tbaa !23
  %221 = and i32 %220, 32
  %222 = icmp ne i32 %221, 0
  br i1 %222, label %229, label %223

223:                                              ; preds = %217
  %224 = load ptr, ptr %9, align 8, !tbaa !5
  %225 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %224, i32 0, i32 2
  %226 = load i32, ptr %225, align 8, !tbaa !24
  %227 = and i32 %226, 15
  %228 = icmp ne i32 %227, 8
  br label %229

229:                                              ; preds = %223, %217, %206
  %230 = phi i1 [ true, %217 ], [ true, %206 ], [ %228, %223 ]
  %231 = zext i1 %230 to i32
  store i32 %231, ptr %19, align 4, !tbaa !9
  %232 = load i32, ptr %15, align 4, !tbaa !9
  %233 = and i32 %232, 4
  %234 = icmp ne i32 %233, 0
  br i1 %234, label %259, label %235

235:                                              ; preds = %229
  %236 = load ptr, ptr %9, align 8, !tbaa !5
  %237 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %236, i32 0, i32 2
  %238 = load i32, ptr %237, align 8, !tbaa !24
  %239 = lshr i32 %238, 4
  %240 = add i32 8, %239
  %241 = shl i32 1, %240
  %242 = icmp ugt i32 %241, 32768
  br i1 %242, label %254, label %243

243:                                              ; preds = %235
  %244 = load i64, ptr %26, align 8, !tbaa !13
  %245 = add i64 %244, 1
  %246 = load ptr, ptr %9, align 8, !tbaa !5
  %247 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %246, i32 0, i32 2
  %248 = load i32, ptr %247, align 8, !tbaa !24
  %249 = lshr i32 %248, 4
  %250 = add i32 8, %249
  %251 = shl i32 1, %250
  %252 = zext i32 %251 to i64
  %253 = icmp ult i64 %245, %252
  br label %254

254:                                              ; preds = %243, %235
  %255 = phi i1 [ true, %235 ], [ %253, %243 ]
  %256 = zext i1 %255 to i32
  %257 = load i32, ptr %19, align 4, !tbaa !9
  %258 = or i32 %257, %256
  store i32 %258, ptr %19, align 4, !tbaa !9
  br label %259

259:                                              ; preds = %254, %229
  %260 = load i32, ptr %19, align 4, !tbaa !9
  %261 = icmp ne i32 %260, 0
  br i1 %261, label %262, label %273

262:                                              ; preds = %259
  br label %263

263:                                              ; preds = %262
  br label %264

264:                                              ; preds = %270, %263
  br label %265

265:                                              ; preds = %264
  store i32 -1, ptr %16, align 4, !tbaa !11
  %266 = load ptr, ptr %9, align 8, !tbaa !5
  %267 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %266, i32 0, i32 0
  store i32 36, ptr %267, align 8, !tbaa !22
  br label %2720

268:                                              ; preds = %120
  br label %269

269:                                              ; preds = %268
  br label %270

270:                                              ; preds = %269
  br label %264, !llvm.loop !31

271:                                              ; No predecessors!
  br label %272

272:                                              ; preds = %271
  br label %273

273:                                              ; preds = %272, %259
  br label %274

274:                                              ; preds = %273, %142
  br label %275

275:                                              ; preds = %2513, %274
  br label %276

276:                                              ; preds = %275
  %277 = load i32, ptr %17, align 4, !tbaa !9
  %278 = icmp ult i32 %277, 3
  br i1 %278, label %279, label %318

279:                                              ; preds = %276
  br label %280

280:                                              ; preds = %314, %279
  br label %281

281:                                              ; preds = %280
  br label %282

282:                                              ; preds = %297, %281
  %283 = load ptr, ptr %22, align 8, !tbaa !5
  %284 = load ptr, ptr %23, align 8, !tbaa !5
  %285 = icmp uge ptr %283, %284
  br i1 %285, label %286, label %298

286:                                              ; preds = %282
  br label %287

287:                                              ; preds = %286
  %288 = load i32, ptr %15, align 4, !tbaa !9
  %289 = and i32 %288, 2
  %290 = icmp ne i32 %289, 0
  %291 = zext i1 %290 to i64
  %292 = select i1 %290, i32 1, i32 -4
  store i32 %292, ptr %16, align 4, !tbaa !11
  %293 = load ptr, ptr %9, align 8, !tbaa !5
  %294 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %293, i32 0, i32 0
  store i32 3, ptr %294, align 8, !tbaa !22
  br label %2720

295:                                              ; preds = %120
  br label %296

296:                                              ; preds = %295
  br label %297

297:                                              ; preds = %296
  br label %282, !llvm.loop !32

298:                                              ; preds = %282
  %299 = load ptr, ptr %22, align 8, !tbaa !5
  %300 = getelementptr inbounds i8, ptr %299, i32 1
  store ptr %300, ptr %22, align 8, !tbaa !5
  %301 = load i8, ptr %299, align 1, !tbaa !29
  %302 = zext i8 %301 to i32
  store i32 %302, ptr %29, align 4, !tbaa !9
  br label %303

303:                                              ; preds = %298
  br label %304

304:                                              ; preds = %303
  %305 = load i32, ptr %29, align 4, !tbaa !9
  %306 = zext i32 %305 to i64
  %307 = load i32, ptr %17, align 4, !tbaa !9
  %308 = zext i32 %307 to i64
  %309 = shl i64 %306, %308
  %310 = load i64, ptr %21, align 8, !tbaa !13
  %311 = or i64 %310, %309
  store i64 %311, ptr %21, align 8, !tbaa !13
  %312 = load i32, ptr %17, align 4, !tbaa !9
  %313 = add i32 %312, 8
  store i32 %313, ptr %17, align 4, !tbaa !9
  br label %314

314:                                              ; preds = %304
  %315 = load i32, ptr %17, align 4, !tbaa !9
  %316 = icmp ult i32 %315, 3
  br i1 %316, label %280, label %317, !llvm.loop !33

317:                                              ; preds = %314
  br label %318

318:                                              ; preds = %317, %276
  %319 = load i64, ptr %21, align 8, !tbaa !13
  %320 = and i64 %319, 7
  %321 = trunc i64 %320 to i32
  %322 = load ptr, ptr %9, align 8, !tbaa !5
  %323 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %322, i32 0, i32 5
  store i32 %321, ptr %323, align 4, !tbaa !34
  %324 = load i64, ptr %21, align 8, !tbaa !13
  %325 = lshr i64 %324, 3
  store i64 %325, ptr %21, align 8, !tbaa !13
  %326 = load i32, ptr %17, align 4, !tbaa !9
  %327 = sub i32 %326, 3
  store i32 %327, ptr %17, align 4, !tbaa !9
  br label %328

328:                                              ; preds = %318
  br label %329

329:                                              ; preds = %328
  %330 = load ptr, ptr %9, align 8, !tbaa !5
  %331 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %330, i32 0, i32 5
  %332 = load i32, ptr %331, align 4, !tbaa !34
  %333 = lshr i32 %332, 1
  %334 = load ptr, ptr %9, align 8, !tbaa !5
  %335 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %334, i32 0, i32 6
  store i32 %333, ptr %335, align 8, !tbaa !35
  %336 = load ptr, ptr %9, align 8, !tbaa !5
  %337 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %336, i32 0, i32 6
  %338 = load i32, ptr %337, align 8, !tbaa !35
  %339 = icmp eq i32 %338, 0
  br i1 %339, label %340, label %721

340:                                              ; preds = %329
  br label %341

341:                                              ; preds = %340
  %342 = load i32, ptr %17, align 4, !tbaa !9
  %343 = load i32, ptr %17, align 4, !tbaa !9
  %344 = and i32 %343, 7
  %345 = icmp ult i32 %342, %344
  br i1 %345, label %346, label %387

346:                                              ; preds = %341
  br label %347

347:                                              ; preds = %381, %346
  br label %348

348:                                              ; preds = %347
  br label %349

349:                                              ; preds = %364, %348
  %350 = load ptr, ptr %22, align 8, !tbaa !5
  %351 = load ptr, ptr %23, align 8, !tbaa !5
  %352 = icmp uge ptr %350, %351
  br i1 %352, label %353, label %365

353:                                              ; preds = %349
  br label %354

354:                                              ; preds = %353
  %355 = load i32, ptr %15, align 4, !tbaa !9
  %356 = and i32 %355, 2
  %357 = icmp ne i32 %356, 0
  %358 = zext i1 %357 to i64
  %359 = select i1 %357, i32 1, i32 -4
  store i32 %359, ptr %16, align 4, !tbaa !11
  %360 = load ptr, ptr %9, align 8, !tbaa !5
  %361 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %360, i32 0, i32 0
  store i32 5, ptr %361, align 8, !tbaa !22
  br label %2720

362:                                              ; preds = %120
  br label %363

363:                                              ; preds = %362
  br label %364

364:                                              ; preds = %363
  br label %349, !llvm.loop !36

365:                                              ; preds = %349
  %366 = load ptr, ptr %22, align 8, !tbaa !5
  %367 = getelementptr inbounds i8, ptr %366, i32 1
  store ptr %367, ptr %22, align 8, !tbaa !5
  %368 = load i8, ptr %366, align 1, !tbaa !29
  %369 = zext i8 %368 to i32
  store i32 %369, ptr %30, align 4, !tbaa !9
  br label %370

370:                                              ; preds = %365
  br label %371

371:                                              ; preds = %370
  %372 = load i32, ptr %30, align 4, !tbaa !9
  %373 = zext i32 %372 to i64
  %374 = load i32, ptr %17, align 4, !tbaa !9
  %375 = zext i32 %374 to i64
  %376 = shl i64 %373, %375
  %377 = load i64, ptr %21, align 8, !tbaa !13
  %378 = or i64 %377, %376
  store i64 %378, ptr %21, align 8, !tbaa !13
  %379 = load i32, ptr %17, align 4, !tbaa !9
  %380 = add i32 %379, 8
  store i32 %380, ptr %17, align 4, !tbaa !9
  br label %381

381:                                              ; preds = %371
  %382 = load i32, ptr %17, align 4, !tbaa !9
  %383 = load i32, ptr %17, align 4, !tbaa !9
  %384 = and i32 %383, 7
  %385 = icmp ult i32 %382, %384
  br i1 %385, label %347, label %386, !llvm.loop !37

386:                                              ; preds = %381
  br label %387

387:                                              ; preds = %386, %341
  %388 = load i32, ptr %17, align 4, !tbaa !9
  %389 = and i32 %388, 7
  %390 = load i64, ptr %21, align 8, !tbaa !13
  %391 = zext i32 %389 to i64
  %392 = lshr i64 %390, %391
  store i64 %392, ptr %21, align 8, !tbaa !13
  %393 = load i32, ptr %17, align 4, !tbaa !9
  %394 = and i32 %393, 7
  %395 = load i32, ptr %17, align 4, !tbaa !9
  %396 = sub i32 %395, %394
  store i32 %396, ptr %17, align 4, !tbaa !9
  br label %397

397:                                              ; preds = %387
  br label %398

398:                                              ; preds = %397
  store i32 0, ptr %19, align 4, !tbaa !9
  br label %399

399:                                              ; preds = %493, %398
  %400 = load i32, ptr %19, align 4, !tbaa !9
  %401 = icmp ult i32 %400, 4
  br i1 %401, label %402, label %496

402:                                              ; preds = %399
  %403 = load i32, ptr %17, align 4, !tbaa !9
  %404 = icmp ne i32 %403, 0
  br i1 %404, label %405, label %463

405:                                              ; preds = %402
  br label %406

406:                                              ; preds = %405
  %407 = load i32, ptr %17, align 4, !tbaa !9
  %408 = icmp ult i32 %407, 8
  br i1 %408, label %409, label %448

409:                                              ; preds = %406
  br label %410

410:                                              ; preds = %444, %409
  br label %411

411:                                              ; preds = %410
  br label %412

412:                                              ; preds = %427, %411
  %413 = load ptr, ptr %22, align 8, !tbaa !5
  %414 = load ptr, ptr %23, align 8, !tbaa !5
  %415 = icmp uge ptr %413, %414
  br i1 %415, label %416, label %428

416:                                              ; preds = %412
  br label %417

417:                                              ; preds = %416
  %418 = load i32, ptr %15, align 4, !tbaa !9
  %419 = and i32 %418, 2
  %420 = icmp ne i32 %419, 0
  %421 = zext i1 %420 to i64
  %422 = select i1 %420, i32 1, i32 -4
  store i32 %422, ptr %16, align 4, !tbaa !11
  %423 = load ptr, ptr %9, align 8, !tbaa !5
  %424 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %423, i32 0, i32 0
  store i32 6, ptr %424, align 8, !tbaa !22
  br label %2720

425:                                              ; preds = %120
  br label %426

426:                                              ; preds = %425
  br label %427

427:                                              ; preds = %426
  br label %412, !llvm.loop !38

428:                                              ; preds = %412
  %429 = load ptr, ptr %22, align 8, !tbaa !5
  %430 = getelementptr inbounds i8, ptr %429, i32 1
  store ptr %430, ptr %22, align 8, !tbaa !5
  %431 = load i8, ptr %429, align 1, !tbaa !29
  %432 = zext i8 %431 to i32
  store i32 %432, ptr %31, align 4, !tbaa !9
  br label %433

433:                                              ; preds = %428
  br label %434

434:                                              ; preds = %433
  %435 = load i32, ptr %31, align 4, !tbaa !9
  %436 = zext i32 %435 to i64
  %437 = load i32, ptr %17, align 4, !tbaa !9
  %438 = zext i32 %437 to i64
  %439 = shl i64 %436, %438
  %440 = load i64, ptr %21, align 8, !tbaa !13
  %441 = or i64 %440, %439
  store i64 %441, ptr %21, align 8, !tbaa !13
  %442 = load i32, ptr %17, align 4, !tbaa !9
  %443 = add i32 %442, 8
  store i32 %443, ptr %17, align 4, !tbaa !9
  br label %444

444:                                              ; preds = %434
  %445 = load i32, ptr %17, align 4, !tbaa !9
  %446 = icmp ult i32 %445, 8
  br i1 %446, label %410, label %447, !llvm.loop !39

447:                                              ; preds = %444
  br label %448

448:                                              ; preds = %447, %406
  %449 = load i64, ptr %21, align 8, !tbaa !13
  %450 = and i64 %449, 255
  %451 = trunc i64 %450 to i8
  %452 = load ptr, ptr %9, align 8, !tbaa !5
  %453 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %452, i32 0, i32 15
  %454 = load i32, ptr %19, align 4, !tbaa !9
  %455 = zext i32 %454 to i64
  %456 = getelementptr inbounds [4 x i8], ptr %453, i64 0, i64 %455
  store i8 %451, ptr %456, align 1, !tbaa !29
  %457 = load i64, ptr %21, align 8, !tbaa !13
  %458 = lshr i64 %457, 8
  store i64 %458, ptr %21, align 8, !tbaa !13
  %459 = load i32, ptr %17, align 4, !tbaa !9
  %460 = sub i32 %459, 8
  store i32 %460, ptr %17, align 4, !tbaa !9
  br label %461

461:                                              ; preds = %448
  br label %462

462:                                              ; preds = %461
  br label %492

463:                                              ; preds = %402
  br label %464

464:                                              ; preds = %463
  br label %465

465:                                              ; preds = %480, %464
  %466 = load ptr, ptr %22, align 8, !tbaa !5
  %467 = load ptr, ptr %23, align 8, !tbaa !5
  %468 = icmp uge ptr %466, %467
  br i1 %468, label %469, label %481

469:                                              ; preds = %465
  br label %470

470:                                              ; preds = %469
  %471 = load i32, ptr %15, align 4, !tbaa !9
  %472 = and i32 %471, 2
  %473 = icmp ne i32 %472, 0
  %474 = zext i1 %473 to i64
  %475 = select i1 %473, i32 1, i32 -4
  store i32 %475, ptr %16, align 4, !tbaa !11
  %476 = load ptr, ptr %9, align 8, !tbaa !5
  %477 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %476, i32 0, i32 0
  store i32 7, ptr %477, align 8, !tbaa !22
  br label %2720

478:                                              ; preds = %120
  br label %479

479:                                              ; preds = %478
  br label %480

480:                                              ; preds = %479
  br label %465, !llvm.loop !40

481:                                              ; preds = %465
  %482 = load ptr, ptr %22, align 8, !tbaa !5
  %483 = getelementptr inbounds i8, ptr %482, i32 1
  store ptr %483, ptr %22, align 8, !tbaa !5
  %484 = load i8, ptr %482, align 1, !tbaa !29
  %485 = load ptr, ptr %9, align 8, !tbaa !5
  %486 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %485, i32 0, i32 15
  %487 = load i32, ptr %19, 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 !29
  br label %490

490:                                              ; preds = %481
  br label %491

491:                                              ; preds = %490
  br label %492

492:                                              ; preds = %491, %462
  br label %493

493:                                              ; preds = %492
  %494 = load i32, ptr %19, align 4, !tbaa !9
  %495 = add i32 %494, 1
  store i32 %495, ptr %19, align 4, !tbaa !9
  br label %399, !llvm.loop !41

496:                                              ; preds = %399
  %497 = load ptr, ptr %9, align 8, !tbaa !5
  %498 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %497, i32 0, i32 15
  %499 = getelementptr inbounds [4 x i8], ptr %498, i64 0, i64 0
  %500 = load i8, ptr %499, align 8, !tbaa !29
  %501 = zext i8 %500 to i32
  %502 = load ptr, ptr %9, align 8, !tbaa !5
  %503 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %502, i32 0, i32 15
  %504 = getelementptr inbounds [4 x i8], ptr %503, i64 0, i64 1
  %505 = load i8, ptr %504, align 1, !tbaa !29
  %506 = zext i8 %505 to i32
  %507 = shl i32 %506, 8
  %508 = or i32 %501, %507
  store i32 %508, ptr %19, 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 15
  %511 = getelementptr inbounds [4 x i8], ptr %510, i64 0, i64 2
  %512 = load i8, ptr %511, align 2, !tbaa !29
  %513 = zext i8 %512 to i32
  %514 = load ptr, ptr %9, align 8, !tbaa !5
  %515 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %514, i32 0, i32 15
  %516 = getelementptr inbounds [4 x i8], ptr %515, i64 0, i64 3
  %517 = load i8, ptr %516, align 1, !tbaa !29
  %518 = zext i8 %517 to i32
  %519 = shl i32 %518, 8
  %520 = or i32 %513, %519
  %521 = xor i32 65535, %520
  %522 = icmp ne i32 %508, %521
  br i1 %522, label %523, label %534

523:                                              ; preds = %496
  br label %524

524:                                              ; preds = %523
  br label %525

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

526:                                              ; preds = %525
  store i32 -1, ptr %16, align 4, !tbaa !11
  %527 = load ptr, ptr %9, align 8, !tbaa !5
  %528 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %527, i32 0, i32 0
  store i32 39, ptr %528, align 8, !tbaa !22
  br label %2720

529:                                              ; preds = %120
  br label %530

530:                                              ; preds = %529
  br label %531

531:                                              ; preds = %530
  br label %525, !llvm.loop !42

532:                                              ; No predecessors!
  br label %533

533:                                              ; preds = %532
  br label %534

534:                                              ; preds = %533, %496
  br label %535

535:                                              ; preds = %607, %534
  %536 = load i32, ptr %19, align 4, !tbaa !9
  %537 = icmp ne i32 %536, 0
  br i1 %537, label %538, label %541

538:                                              ; preds = %535
  %539 = load i32, ptr %17, align 4, !tbaa !9
  %540 = icmp ne i32 %539, 0
  br label %541

541:                                              ; preds = %538, %535
  %542 = phi i1 [ false, %535 ], [ %540, %538 ]
  br i1 %542, label %543, label %614

543:                                              ; preds = %541
  br label %544

544:                                              ; preds = %543
  %545 = load i32, ptr %17, align 4, !tbaa !9
  %546 = icmp ult i32 %545, 8
  br i1 %546, label %547, label %586

547:                                              ; preds = %544
  br label %548

548:                                              ; preds = %582, %547
  br label %549

549:                                              ; preds = %548
  br label %550

550:                                              ; preds = %565, %549
  %551 = load ptr, ptr %22, align 8, !tbaa !5
  %552 = load ptr, ptr %23, align 8, !tbaa !5
  %553 = icmp uge ptr %551, %552
  br i1 %553, label %554, label %566

554:                                              ; preds = %550
  br label %555

555:                                              ; preds = %554
  %556 = load i32, ptr %15, align 4, !tbaa !9
  %557 = and i32 %556, 2
  %558 = icmp ne i32 %557, 0
  %559 = zext i1 %558 to i64
  %560 = select i1 %558, i32 1, i32 -4
  store i32 %560, ptr %16, align 4, !tbaa !11
  %561 = load ptr, ptr %9, align 8, !tbaa !5
  %562 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %561, i32 0, i32 0
  store i32 51, ptr %562, align 8, !tbaa !22
  br label %2720

563:                                              ; preds = %120
  br label %564

564:                                              ; preds = %563
  br label %565

565:                                              ; preds = %564
  br label %550, !llvm.loop !43

566:                                              ; preds = %550
  %567 = load ptr, ptr %22, align 8, !tbaa !5
  %568 = getelementptr inbounds i8, ptr %567, i32 1
  store ptr %568, ptr %22, align 8, !tbaa !5
  %569 = load i8, ptr %567, align 1, !tbaa !29
  %570 = zext i8 %569 to i32
  store i32 %570, ptr %32, align 4, !tbaa !9
  br label %571

571:                                              ; preds = %566
  br label %572

572:                                              ; preds = %571
  %573 = load i32, ptr %32, align 4, !tbaa !9
  %574 = zext i32 %573 to i64
  %575 = load i32, ptr %17, align 4, !tbaa !9
  %576 = zext i32 %575 to i64
  %577 = shl i64 %574, %576
  %578 = load i64, ptr %21, align 8, !tbaa !13
  %579 = or i64 %578, %577
  store i64 %579, ptr %21, align 8, !tbaa !13
  %580 = load i32, ptr %17, align 4, !tbaa !9
  %581 = add i32 %580, 8
  store i32 %581, ptr %17, align 4, !tbaa !9
  br label %582

582:                                              ; preds = %572
  %583 = load i32, ptr %17, align 4, !tbaa !9
  %584 = icmp ult i32 %583, 8
  br i1 %584, label %548, label %585, !llvm.loop !44

585:                                              ; preds = %582
  br label %586

586:                                              ; preds = %585, %544
  %587 = load i64, ptr %21, align 8, !tbaa !13
  %588 = and i64 %587, 255
  %589 = trunc i64 %588 to i32
  store i32 %589, ptr %18, align 4, !tbaa !9
  %590 = load i64, ptr %21, align 8, !tbaa !13
  %591 = lshr i64 %590, 8
  store i64 %591, ptr %21, align 8, !tbaa !13
  %592 = load i32, ptr %17, align 4, !tbaa !9
  %593 = sub i32 %592, 8
  store i32 %593, ptr %17, align 4, !tbaa !9
  br label %594

594:                                              ; preds = %586
  br label %595

595:                                              ; preds = %594
  br label %596

596:                                              ; preds = %606, %595
  %597 = load ptr, ptr %24, align 8, !tbaa !5
  %598 = load ptr, ptr %25, align 8, !tbaa !5
  %599 = icmp uge ptr %597, %598
  br i1 %599, label %600, label %607

600:                                              ; preds = %596
  br label %601

601:                                              ; preds = %600
  store i32 2, ptr %16, align 4, !tbaa !11
  %602 = load ptr, ptr %9, align 8, !tbaa !5
  %603 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %602, i32 0, i32 0
  store i32 52, ptr %603, align 8, !tbaa !22
  br label %2720

604:                                              ; preds = %120
  br label %605

605:                                              ; preds = %604
  br label %606

606:                                              ; preds = %605
  br label %596, !llvm.loop !45

607:                                              ; preds = %596
  %608 = load i32, ptr %18, align 4, !tbaa !9
  %609 = trunc i32 %608 to i8
  %610 = load ptr, ptr %24, align 8, !tbaa !5
  %611 = getelementptr inbounds i8, ptr %610, i32 1
  store ptr %611, ptr %24, align 8, !tbaa !5
  store i8 %609, ptr %610, align 1, !tbaa !29
  %612 = load i32, ptr %19, align 4, !tbaa !9
  %613 = add i32 %612, -1
  store i32 %613, ptr %19, align 4, !tbaa !9
  br label %535, !llvm.loop !46

614:                                              ; preds = %541
  br label %615

615:                                              ; preds = %705, %614
  %616 = load i32, ptr %19, align 4, !tbaa !9
  %617 = icmp ne i32 %616, 0
  br i1 %617, label %618, label %720

618:                                              ; preds = %615
  br label %619

619:                                              ; preds = %629, %618
  %620 = load ptr, ptr %24, align 8, !tbaa !5
  %621 = load ptr, ptr %25, align 8, !tbaa !5
  %622 = icmp uge ptr %620, %621
  br i1 %622, label %623, label %630

623:                                              ; preds = %619
  br label %624

624:                                              ; preds = %623
  store i32 2, ptr %16, align 4, !tbaa !11
  %625 = load ptr, ptr %9, align 8, !tbaa !5
  %626 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %625, i32 0, i32 0
  store i32 9, ptr %626, align 8, !tbaa !22
  br label %2720

627:                                              ; preds = %120
  br label %628

628:                                              ; preds = %627
  br label %629

629:                                              ; preds = %628
  br label %619, !llvm.loop !47

630:                                              ; preds = %619
  br label %631

631:                                              ; preds = %646, %630
  %632 = load ptr, ptr %22, align 8, !tbaa !5
  %633 = load ptr, ptr %23, align 8, !tbaa !5
  %634 = icmp uge ptr %632, %633
  br i1 %634, label %635, label %647

635:                                              ; preds = %631
  br label %636

636:                                              ; preds = %635
  %637 = load i32, ptr %15, align 4, !tbaa !9
  %638 = and i32 %637, 2
  %639 = icmp ne i32 %638, 0
  %640 = zext i1 %639 to i64
  %641 = select i1 %639, i32 1, i32 -4
  store i32 %641, ptr %16, align 4, !tbaa !11
  %642 = load ptr, ptr %9, align 8, !tbaa !5
  %643 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %642, i32 0, i32 0
  store i32 38, ptr %643, align 8, !tbaa !22
  br label %2720

644:                                              ; preds = %120
  br label %645

645:                                              ; preds = %644
  br label %646

646:                                              ; preds = %645
  br label %631, !llvm.loop !48

647:                                              ; preds = %631
  %648 = load ptr, ptr %25, align 8, !tbaa !5
  %649 = load ptr, ptr %24, align 8, !tbaa !5
  %650 = ptrtoint ptr %648 to i64
  %651 = ptrtoint ptr %649 to i64
  %652 = sub i64 %650, %651
  %653 = load ptr, ptr %23, align 8, !tbaa !5
  %654 = load ptr, ptr %22, align 8, !tbaa !5
  %655 = ptrtoint ptr %653 to i64
  %656 = ptrtoint ptr %654 to i64
  %657 = sub i64 %655, %656
  %658 = icmp ult i64 %652, %657
  br i1 %658, label %659, label %665

659:                                              ; preds = %647
  %660 = load ptr, ptr %25, align 8, !tbaa !5
  %661 = load ptr, ptr %24, align 8, !tbaa !5
  %662 = ptrtoint ptr %660 to i64
  %663 = ptrtoint ptr %661 to i64
  %664 = sub i64 %662, %663
  br label %671

665:                                              ; preds = %647
  %666 = load ptr, ptr %23, align 8, !tbaa !5
  %667 = load ptr, ptr %22, align 8, !tbaa !5
  %668 = ptrtoint ptr %666 to i64
  %669 = ptrtoint ptr %667 to i64
  %670 = sub i64 %668, %669
  br label %671

671:                                              ; preds = %665, %659
  %672 = phi i64 [ %664, %659 ], [ %670, %665 ]
  %673 = load i32, ptr %19, align 4, !tbaa !9
  %674 = zext i32 %673 to i64
  %675 = icmp ult i64 %672, %674
  br i1 %675, label %676, label %702

676:                                              ; preds = %671
  %677 = load ptr, ptr %25, align 8, !tbaa !5
  %678 = load ptr, ptr %24, align 8, !tbaa !5
  %679 = ptrtoint ptr %677 to i64
  %680 = ptrtoint ptr %678 to i64
  %681 = sub i64 %679, %680
  %682 = load ptr, ptr %23, align 8, !tbaa !5
  %683 = load ptr, ptr %22, align 8, !tbaa !5
  %684 = ptrtoint ptr %682 to i64
  %685 = ptrtoint ptr %683 to i64
  %686 = sub i64 %684, %685
  %687 = icmp ult i64 %681, %686
  br i1 %687, label %688, label %694

688:                                              ; preds = %676
  %689 = load ptr, ptr %25, align 8, !tbaa !5
  %690 = load ptr, ptr %24, align 8, !tbaa !5
  %691 = ptrtoint ptr %689 to i64
  %692 = ptrtoint ptr %690 to i64
  %693 = sub i64 %691, %692
  br label %700

694:                                              ; preds = %676
  %695 = load ptr, ptr %23, align 8, !tbaa !5
  %696 = load ptr, ptr %22, align 8, !tbaa !5
  %697 = ptrtoint ptr %695 to i64
  %698 = ptrtoint ptr %696 to i64
  %699 = sub i64 %697, %698
  br label %700

700:                                              ; preds = %694, %688
  %701 = phi i64 [ %693, %688 ], [ %699, %694 ]
  br label %705

702:                                              ; preds = %671
  %703 = load i32, ptr %19, align 4, !tbaa !9
  %704 = zext i32 %703 to i64
  br label %705

705:                                              ; preds = %702, %700
  %706 = phi i64 [ %701, %700 ], [ %704, %702 ]
  store i64 %706, ptr %33, align 8, !tbaa !13
  %707 = load ptr, ptr %24, align 8, !tbaa !5
  %708 = load ptr, ptr %22, align 8, !tbaa !5
  %709 = load i64, ptr %33, align 8, !tbaa !13
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %707, ptr align 1 %708, i64 %709, i1 false)
  %710 = load i64, ptr %33, align 8, !tbaa !13
  %711 = load ptr, ptr %22, align 8, !tbaa !5
  %712 = getelementptr inbounds i8, ptr %711, i64 %710
  store ptr %712, ptr %22, align 8, !tbaa !5
  %713 = load i64, ptr %33, align 8, !tbaa !13
  %714 = load ptr, ptr %24, align 8, !tbaa !5
  %715 = getelementptr inbounds i8, ptr %714, i64 %713
  store ptr %715, ptr %24, align 8, !tbaa !5
  %716 = load i64, ptr %33, align 8, !tbaa !13
  %717 = trunc i64 %716 to i32
  %718 = load i32, ptr %19, align 4, !tbaa !9
  %719 = sub i32 %718, %717
  store i32 %719, ptr %19, align 4, !tbaa !9
  br label %615, !llvm.loop !49

720:                                              ; preds = %615
  br label %2512

721:                                              ; preds = %329
  %722 = load ptr, ptr %9, align 8, !tbaa !5
  %723 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %722, i32 0, i32 6
  %724 = load i32, ptr %723, align 8, !tbaa !35
  %725 = icmp eq i32 %724, 3
  br i1 %725, label %726, label %737

726:                                              ; preds = %721
  br label %727

727:                                              ; preds = %726
  br label %728

728:                                              ; preds = %734, %727
  br label %729

729:                                              ; preds = %728
  store i32 -1, ptr %16, align 4, !tbaa !11
  %730 = load ptr, ptr %9, align 8, !tbaa !5
  %731 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %730, i32 0, i32 0
  store i32 10, ptr %731, align 8, !tbaa !22
  br label %2720

732:                                              ; preds = %120
  br label %733

733:                                              ; preds = %732
  br label %734

734:                                              ; preds = %733
  br label %728, !llvm.loop !50

735:                                              ; No predecessors!
  br label %736

736:                                              ; preds = %735
  br label %2511

737:                                              ; preds = %721
  %738 = load ptr, ptr %9, align 8, !tbaa !5
  %739 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %738, i32 0, i32 6
  %740 = load i32, ptr %739, align 8, !tbaa !35
  %741 = icmp eq i32 %740, 1
  br i1 %741, label %742, label %799

742:                                              ; preds = %737
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #5
  %743 = load ptr, ptr %9, align 8, !tbaa !5
  %744 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %743, i32 0, i32 14
  %745 = getelementptr inbounds [3 x %struct.tinfl_huff_table], ptr %744, i64 0, i64 0
  %746 = getelementptr inbounds %struct.tinfl_huff_table, ptr %745, i32 0, i32 0
  %747 = getelementptr inbounds [288 x i8], ptr %746, i64 0, i64 0
  store ptr %747, ptr %34, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %35) #5
  %748 = load ptr, ptr %9, align 8, !tbaa !5
  %749 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %748, i32 0, i32 11
  %750 = getelementptr inbounds [3 x i32], ptr %749, i64 0, i64 0
  store i32 288, ptr %750, align 4, !tbaa !9
  %751 = load ptr, ptr %9, align 8, !tbaa !5
  %752 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %751, i32 0, i32 11
  %753 = getelementptr inbounds [3 x i32], ptr %752, i64 0, i64 1
  store i32 32, ptr %753, align 4, !tbaa !9
  %754 = load ptr, ptr %9, align 8, !tbaa !5
  %755 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %754, i32 0, i32 14
  %756 = getelementptr inbounds [3 x %struct.tinfl_huff_table], ptr %755, i64 0, i64 1
  %757 = getelementptr inbounds %struct.tinfl_huff_table, ptr %756, i32 0, i32 0
  %758 = getelementptr inbounds [288 x i8], ptr %757, i64 0, i64 0
  call void @llvm.memset.p0.i64(ptr align 8 %758, i8 5, i64 32, i1 false)
  store i32 0, ptr %35, align 4, !tbaa !9
  br label %759

759:                                              ; preds = %765, %742
  %760 = load i32, ptr %35, align 4, !tbaa !9
  %761 = icmp ule i32 %760, 143
  br i1 %761, label %762, label %768

762:                                              ; preds = %759
  %763 = load ptr, ptr %34, align 8, !tbaa !5
  %764 = getelementptr inbounds i8, ptr %763, i32 1
  store ptr %764, ptr %34, align 8, !tbaa !5
  store i8 8, ptr %763, align 1, !tbaa !29
  br label %765

765:                                              ; preds = %762
  %766 = load i32, ptr %35, align 4, !tbaa !9
  %767 = add i32 %766, 1
  store i32 %767, ptr %35, align 4, !tbaa !9
  br label %759, !llvm.loop !51

768:                                              ; preds = %759
  br label %769

769:                                              ; preds = %775, %768
  %770 = load i32, ptr %35, align 4, !tbaa !9
  %771 = icmp ule i32 %770, 255
  br i1 %771, label %772, label %778

772:                                              ; preds = %769
  %773 = load ptr, ptr %34, align 8, !tbaa !5
  %774 = getelementptr inbounds i8, ptr %773, i32 1
  store ptr %774, ptr %34, align 8, !tbaa !5
  store i8 9, ptr %773, align 1, !tbaa !29
  br label %775

775:                                              ; preds = %772
  %776 = load i32, ptr %35, align 4, !tbaa !9
  %777 = add i32 %776, 1
  store i32 %777, ptr %35, align 4, !tbaa !9
  br label %769, !llvm.loop !52

778:                                              ; preds = %769
  br label %779

779:                                              ; preds = %785, %778
  %780 = load i32, ptr %35, align 4, !tbaa !9
  %781 = icmp ule i32 %780, 279
  br i1 %781, label %782, label %788

782:                                              ; preds = %779
  %783 = load ptr, ptr %34, align 8, !tbaa !5
  %784 = getelementptr inbounds i8, ptr %783, i32 1
  store ptr %784, ptr %34, align 8, !tbaa !5
  store i8 7, ptr %783, align 1, !tbaa !29
  br label %785

785:                                              ; preds = %782
  %786 = load i32, ptr %35, align 4, !tbaa !9
  %787 = add i32 %786, 1
  store i32 %787, ptr %35, align 4, !tbaa !9
  br label %779, !llvm.loop !53

788:                                              ; preds = %779
  br label %789

789:                                              ; preds = %795, %788
  %790 = load i32, ptr %35, align 4, !tbaa !9
  %791 = icmp ule i32 %790, 287
  br i1 %791, label %792, label %798

792:                                              ; preds = %789
  %793 = load ptr, ptr %34, align 8, !tbaa !5
  %794 = getelementptr inbounds i8, ptr %793, i32 1
  store ptr %794, ptr %34, align 8, !tbaa !5
  store i8 8, ptr %793, align 1, !tbaa !29
  br label %795

795:                                              ; preds = %792
  %796 = load i32, ptr %35, align 4, !tbaa !9
  %797 = add i32 %796, 1
  store i32 %797, ptr %35, align 4, !tbaa !9
  br label %789, !llvm.loop !54

798:                                              ; preds = %789
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #5
  br label %988

799:                                              ; preds = %737
  store i32 0, ptr %19, align 4, !tbaa !9
  br label %800

800:                                              ; preds = %901, %799
  %801 = load i32, ptr %19, align 4, !tbaa !9
  %802 = icmp ult i32 %801, 3
  br i1 %802, label %803, label %904

803:                                              ; preds = %800
  br label %804

804:                                              ; preds = %803
  %805 = load i32, ptr %17, align 4, !tbaa !9
  %806 = load i32, ptr %19, align 4, !tbaa !9
  %807 = zext i32 %806 to i64
  %808 = getelementptr inbounds [4 x i8], ptr @.str.14, i64 0, i64 %807
  %809 = load i8, ptr %808, align 1, !tbaa !29
  %810 = sext i8 %809 to i32
  %811 = icmp ult i32 %805, %810
  br i1 %811, label %812, label %856

812:                                              ; preds = %804
  br label %813

813:                                              ; preds = %847, %812
  br label %814

814:                                              ; preds = %813
  br label %815

815:                                              ; preds = %830, %814
  %816 = load ptr, ptr %22, align 8, !tbaa !5
  %817 = load ptr, ptr %23, align 8, !tbaa !5
  %818 = icmp uge ptr %816, %817
  br i1 %818, label %819, label %831

819:                                              ; preds = %815
  br label %820

820:                                              ; preds = %819
  %821 = load i32, ptr %15, align 4, !tbaa !9
  %822 = and i32 %821, 2
  %823 = icmp ne i32 %822, 0
  %824 = zext i1 %823 to i64
  %825 = select i1 %823, i32 1, i32 -4
  store i32 %825, ptr %16, align 4, !tbaa !11
  %826 = load ptr, ptr %9, align 8, !tbaa !5
  %827 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %826, i32 0, i32 0
  store i32 11, ptr %827, align 8, !tbaa !22
  br label %2720

828:                                              ; preds = %120
  br label %829

829:                                              ; preds = %828
  br label %830

830:                                              ; preds = %829
  br label %815, !llvm.loop !55

831:                                              ; preds = %815
  %832 = load ptr, ptr %22, align 8, !tbaa !5
  %833 = getelementptr inbounds i8, ptr %832, i32 1
  store ptr %833, ptr %22, align 8, !tbaa !5
  %834 = load i8, ptr %832, align 1, !tbaa !29
  %835 = zext i8 %834 to i32
  store i32 %835, ptr %36, align 4, !tbaa !9
  br label %836

836:                                              ; preds = %831
  br label %837

837:                                              ; preds = %836
  %838 = load i32, ptr %36, align 4, !tbaa !9
  %839 = zext i32 %838 to i64
  %840 = load i32, ptr %17, align 4, !tbaa !9
  %841 = zext i32 %840 to i64
  %842 = shl i64 %839, %841
  %843 = load i64, ptr %21, align 8, !tbaa !13
  %844 = or i64 %843, %842
  store i64 %844, ptr %21, align 8, !tbaa !13
  %845 = load i32, ptr %17, align 4, !tbaa !9
  %846 = add i32 %845, 8
  store i32 %846, ptr %17, align 4, !tbaa !9
  br label %847

847:                                              ; preds = %837
  %848 = load i32, ptr %17, align 4, !tbaa !9
  %849 = load i32, ptr %19, align 4, !tbaa !9
  %850 = zext i32 %849 to i64
  %851 = getelementptr inbounds [4 x i8], ptr @.str.14, i64 0, i64 %850
  %852 = load i8, ptr %851, align 1, !tbaa !29
  %853 = sext i8 %852 to i32
  %854 = icmp ult i32 %848, %853
  br i1 %854, label %813, label %855, !llvm.loop !56

855:                                              ; preds = %847
  br label %856

856:                                              ; preds = %855, %804
  %857 = load i64, ptr %21, align 8, !tbaa !13
  %858 = load i32, ptr %19, align 4, !tbaa !9
  %859 = zext i32 %858 to i64
  %860 = getelementptr inbounds [4 x i8], ptr @.str.14, i64 0, i64 %859
  %861 = load i8, ptr %860, align 1, !tbaa !29
  %862 = sext i8 %861 to i32
  %863 = shl i32 1, %862
  %864 = sub nsw i32 %863, 1
  %865 = sext i32 %864 to i64
  %866 = and i64 %857, %865
  %867 = trunc i64 %866 to i32
  %868 = load ptr, ptr %9, align 8, !tbaa !5
  %869 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %868, i32 0, i32 11
  %870 = load i32, ptr %19, align 4, !tbaa !9
  %871 = zext i32 %870 to i64
  %872 = getelementptr inbounds [3 x i32], ptr %869, i64 0, i64 %871
  store i32 %867, ptr %872, align 4, !tbaa !9
  %873 = load i32, ptr %19, align 4, !tbaa !9
  %874 = zext i32 %873 to i64
  %875 = getelementptr inbounds [4 x i8], ptr @.str.14, i64 0, i64 %874
  %876 = load i8, ptr %875, align 1, !tbaa !29
  %877 = sext i8 %876 to i32
  %878 = load i64, ptr %21, align 8, !tbaa !13
  %879 = zext i32 %877 to i64
  %880 = lshr i64 %878, %879
  store i64 %880, ptr %21, align 8, !tbaa !13
  %881 = load i32, ptr %19, align 4, !tbaa !9
  %882 = zext i32 %881 to i64
  %883 = getelementptr inbounds [4 x i8], ptr @.str.14, i64 0, i64 %882
  %884 = load i8, ptr %883, align 1, !tbaa !29
  %885 = sext i8 %884 to i32
  %886 = load i32, ptr %17, align 4, !tbaa !9
  %887 = sub i32 %886, %885
  store i32 %887, ptr %17, align 4, !tbaa !9
  br label %888

888:                                              ; preds = %856
  br label %889

889:                                              ; preds = %888
  %890 = load i32, ptr %19, align 4, !tbaa !9
  %891 = zext i32 %890 to i64
  %892 = getelementptr inbounds [3 x i32], ptr @_ZZ16tinfl_decompressE17s_min_table_sizes, i64 0, i64 %891
  %893 = load i32, ptr %892, align 4, !tbaa !9
  %894 = load ptr, ptr %9, align 8, !tbaa !5
  %895 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %894, i32 0, i32 11
  %896 = load i32, ptr %19, align 4, !tbaa !9
  %897 = zext i32 %896 to i64
  %898 = getelementptr inbounds [3 x i32], ptr %895, i64 0, i64 %897
  %899 = load i32, ptr %898, align 4, !tbaa !9
  %900 = add i32 %899, %893
  store i32 %900, ptr %898, align 4, !tbaa !9
  br label %901

901:                                              ; preds = %889
  %902 = load i32, ptr %19, align 4, !tbaa !9
  %903 = add i32 %902, 1
  store i32 %903, ptr %19, align 4, !tbaa !9
  br label %800, !llvm.loop !57

904:                                              ; preds = %800
  %905 = load ptr, ptr %9, align 8, !tbaa !5
  %906 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %905, i32 0, i32 14
  %907 = getelementptr inbounds [3 x %struct.tinfl_huff_table], ptr %906, i64 0, i64 2
  %908 = getelementptr inbounds %struct.tinfl_huff_table, ptr %907, i32 0, i32 0
  call void @llvm.memset.p0.i64(ptr align 8 %908, i8 0, i64 288, i1 false)
  store i32 0, ptr %19, align 4, !tbaa !9
  br label %909

909:                                              ; preds = %981, %904
  %910 = load i32, ptr %19, align 4, !tbaa !9
  %911 = load ptr, ptr %9, align 8, !tbaa !5
  %912 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %911, i32 0, i32 11
  %913 = getelementptr inbounds [3 x i32], ptr %912, i64 0, i64 2
  %914 = load i32, ptr %913, align 4, !tbaa !9
  %915 = icmp ult i32 %910, %914
  br i1 %915, label %916, label %984

916:                                              ; preds = %909
  br label %917

917:                                              ; preds = %916
  %918 = load i32, ptr %17, align 4, !tbaa !9
  %919 = icmp ult i32 %918, 3
  br i1 %919, label %920, label %959

920:                                              ; preds = %917
  br label %921

921:                                              ; preds = %955, %920
  br label %922

922:                                              ; preds = %921
  br label %923

923:                                              ; preds = %938, %922
  %924 = load ptr, ptr %22, align 8, !tbaa !5
  %925 = load ptr, ptr %23, align 8, !tbaa !5
  %926 = icmp uge ptr %924, %925
  br i1 %926, label %927, label %939

927:                                              ; preds = %923
  br label %928

928:                                              ; preds = %927
  %929 = load i32, ptr %15, align 4, !tbaa !9
  %930 = and i32 %929, 2
  %931 = icmp ne i32 %930, 0
  %932 = zext i1 %931 to i64
  %933 = select i1 %931, i32 1, i32 -4
  store i32 %933, ptr %16, align 4, !tbaa !11
  %934 = load ptr, ptr %9, align 8, !tbaa !5
  %935 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %934, i32 0, i32 0
  store i32 14, ptr %935, align 8, !tbaa !22
  br label %2720

936:                                              ; preds = %120
  br label %937

937:                                              ; preds = %936
  br label %938

938:                                              ; preds = %937
  br label %923, !llvm.loop !58

939:                                              ; preds = %923
  %940 = load ptr, ptr %22, align 8, !tbaa !5
  %941 = getelementptr inbounds i8, ptr %940, i32 1
  store ptr %941, ptr %22, align 8, !tbaa !5
  %942 = load i8, ptr %940, align 1, !tbaa !29
  %943 = zext i8 %942 to i32
  store i32 %943, ptr %38, align 4, !tbaa !9
  br label %944

944:                                              ; preds = %939
  br label %945

945:                                              ; preds = %944
  %946 = load i32, ptr %38, align 4, !tbaa !9
  %947 = zext i32 %946 to i64
  %948 = load i32, ptr %17, align 4, !tbaa !9
  %949 = zext i32 %948 to i64
  %950 = shl i64 %947, %949
  %951 = load i64, ptr %21, align 8, !tbaa !13
  %952 = or i64 %951, %950
  store i64 %952, ptr %21, align 8, !tbaa !13
  %953 = load i32, ptr %17, align 4, !tbaa !9
  %954 = add i32 %953, 8
  store i32 %954, ptr %17, align 4, !tbaa !9
  br label %955

955:                                              ; preds = %945
  %956 = load i32, ptr %17, align 4, !tbaa !9
  %957 = icmp ult i32 %956, 3
  br i1 %957, label %921, label %958, !llvm.loop !59

958:                                              ; preds = %955
  br label %959

959:                                              ; preds = %958, %917
  %960 = load i64, ptr %21, align 8, !tbaa !13
  %961 = and i64 %960, 7
  %962 = trunc i64 %961 to i32
  store i32 %962, ptr %37, align 4, !tbaa !9
  %963 = load i64, ptr %21, align 8, !tbaa !13
  %964 = lshr i64 %963, 3
  store i64 %964, ptr %21, align 8, !tbaa !13
  %965 = load i32, ptr %17, align 4, !tbaa !9
  %966 = sub i32 %965, 3
  store i32 %966, ptr %17, align 4, !tbaa !9
  br label %967

967:                                              ; preds = %959
  br label %968

968:                                              ; preds = %967
  %969 = load i32, ptr %37, align 4, !tbaa !9
  %970 = trunc i32 %969 to i8
  %971 = load ptr, ptr %9, align 8, !tbaa !5
  %972 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %971, i32 0, i32 14
  %973 = getelementptr inbounds [3 x %struct.tinfl_huff_table], ptr %972, i64 0, i64 2
  %974 = getelementptr inbounds %struct.tinfl_huff_table, ptr %973, i32 0, i32 0
  %975 = load i32, ptr %19, align 4, !tbaa !9
  %976 = zext i32 %975 to i64
  %977 = getelementptr inbounds [19 x i8], ptr @_ZZ16tinfl_decompressE17s_length_dezigzag, i64 0, i64 %976
  %978 = load i8, ptr %977, align 1, !tbaa !29
  %979 = zext i8 %978 to i64
  %980 = getelementptr inbounds [288 x i8], ptr %974, i64 0, i64 %979
  store i8 %970, ptr %980, align 1, !tbaa !29
  br label %981

981:                                              ; preds = %968
  %982 = load i32, ptr %19, align 4, !tbaa !9
  %983 = add i32 %982, 1
  store i32 %983, ptr %19, align 4, !tbaa !9
  br label %909, !llvm.loop !60

984:                                              ; preds = %909
  %985 = load ptr, ptr %9, align 8, !tbaa !5
  %986 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %985, i32 0, i32 11
  %987 = getelementptr inbounds [3 x i32], ptr %986, i64 0, i64 2
  store i32 19, ptr %987, align 4, !tbaa !9
  br label %988

988:                                              ; preds = %984, %798
  br label %989

989:                                              ; preds = %1625, %988
  %990 = load ptr, ptr %9, align 8, !tbaa !5
  %991 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %990, i32 0, i32 6
  %992 = load i32, ptr %991, align 8, !tbaa !35
  %993 = icmp sge i32 %992, 0
  br i1 %993, label %994, label %1630

994:                                              ; preds = %989
  %995 = load ptr, ptr %9, align 8, !tbaa !5
  %996 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %995, i32 0, i32 14
  %997 = load ptr, ptr %9, align 8, !tbaa !5
  %998 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %997, i32 0, i32 6
  %999 = load i32, ptr %998, align 8, !tbaa !35
  %1000 = zext i32 %999 to i64
  %1001 = getelementptr inbounds [3 x %struct.tinfl_huff_table], ptr %996, i64 0, i64 %1000
  store ptr %1001, ptr %41, align 8, !tbaa !5
  call void @llvm.memset.p0.i64(ptr align 16 %48, i8 0, i64 64, i1 false)
  %1002 = load ptr, ptr %41, align 8, !tbaa !5
  %1003 = getelementptr inbounds %struct.tinfl_huff_table, ptr %1002, i32 0, i32 1
  call void @llvm.memset.p0.i64(ptr align 2 %1003, i8 0, i64 2048, i1 false)
  %1004 = load ptr, ptr %41, align 8, !tbaa !5
  %1005 = getelementptr inbounds %struct.tinfl_huff_table, ptr %1004, i32 0, i32 2
  call void @llvm.memset.p0.i64(ptr align 2 %1005, i8 0, i64 1152, i1 false)
  store i32 0, ptr %42, align 4, !tbaa !9
  br label %1006

1006:                                             ; preds = %1028, %994
  %1007 = load i32, ptr %42, align 4, !tbaa !9
  %1008 = load ptr, ptr %9, align 8, !tbaa !5
  %1009 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %1008, i32 0, i32 11
  %1010 = load ptr, ptr %9, align 8, !tbaa !5
  %1011 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %1010, i32 0, i32 6
  %1012 = load i32, ptr %1011, align 8, !tbaa !35
  %1013 = zext i32 %1012 to i64
  %1014 = getelementptr inbounds [3 x i32], ptr %1009, i64 0, i64 %1013
  %1015 = load i32, ptr %1014, align 4, !tbaa !9
  %1016 = icmp ult i32 %1007, %1015
  br i1 %1016, label %1017, label %1031

1017:                                             ; preds = %1006
  %1018 = load ptr, ptr %41, align 8, !tbaa !5
  %1019 = getelementptr inbounds %struct.tinfl_huff_table, ptr %1018, i32 0, i32 0
  %1020 = load i32, ptr %42, align 4, !tbaa !9
  %1021 = zext i32 %1020 to i64
  %1022 = getelementptr inbounds [288 x i8], ptr %1019, i64 0, i64 %1021
  %1023 = load i8, ptr %1022, align 1, !tbaa !29
  %1024 = zext i8 %1023 to i64
  %1025 = getelementptr inbounds [16 x i32], ptr %48, i64 0, i64 %1024
  %1026 = load i32, ptr %1025, align 4, !tbaa !9
  %1027 = add i32 %1026, 1
  store i32 %1027, ptr %1025, align 4, !tbaa !9
  br label %1028

1028:                                             ; preds = %1017
  %1029 = load i32, ptr %42, align 4, !tbaa !9
  %1030 = add i32 %1029, 1
  store i32 %1030, ptr %42, align 4, !tbaa !9
  br label %1006, !llvm.loop !61

1031:                                             ; preds = %1006
  store i32 0, ptr %44, align 4, !tbaa !9
  store i32 0, ptr %45, align 4, !tbaa !9
  %1032 = getelementptr inbounds [17 x i32], ptr %47, i64 0, i64 1
  store i32 0, ptr %1032, align 4, !tbaa !9
  %1033 = getelementptr inbounds [17 x i32], ptr %47, i64 0, i64 0
  store i32 0, ptr %1033, align 16, !tbaa !9
  store i32 1, ptr %42, align 4, !tbaa !9
  br label %1034

1034:                                             ; preds = %1055, %1031
  %1035 = load i32, ptr %42, align 4, !tbaa !9
  %1036 = icmp ule i32 %1035, 15
  br i1 %1036, label %1037, label %1058

1037:                                             ; preds = %1034
  %1038 = load i32, ptr %42, align 4, !tbaa !9
  %1039 = zext i32 %1038 to i64
  %1040 = getelementptr inbounds [16 x i32], ptr %48, i64 0, i64 %1039
  %1041 = load i32, ptr %1040, align 4, !tbaa !9
  %1042 = load i32, ptr %44, align 4, !tbaa !9
  %1043 = add i32 %1042, %1041
  store i32 %1043, ptr %44, align 4, !tbaa !9
  %1044 = load i32, ptr %45, align 4, !tbaa !9
  %1045 = load i32, ptr %42, align 4, !tbaa !9
  %1046 = zext i32 %1045 to i64
  %1047 = getelementptr inbounds [16 x i32], ptr %48, i64 0, i64 %1046
  %1048 = load i32, ptr %1047, align 4, !tbaa !9
  %1049 = add i32 %1044, %1048
  %1050 = shl i32 %1049, 1
  store i32 %1050, ptr %45, align 4, !tbaa !9
  %1051 = load i32, ptr %42, align 4, !tbaa !9
  %1052 = add i32 %1051, 1
  %1053 = zext i32 %1052 to i64
  %1054 = getelementptr inbounds [17 x i32], ptr %47, i64 0, i64 %1053
  store i32 %1050, ptr %1054, align 4, !tbaa !9
  br label %1055

1055:                                             ; preds = %1037
  %1056 = load i32, ptr %42, align 4, !tbaa !9
  %1057 = add i32 %1056, 1
  store i32 %1057, ptr %42, align 4, !tbaa !9
  br label %1034, !llvm.loop !62

1058:                                             ; preds = %1034
  %1059 = load i32, ptr %45, align 4, !tbaa !9
  %1060 = icmp ne i32 65536, %1059
  br i1 %1060, label %1061, label %1075

1061:                                             ; preds = %1058
  %1062 = load i32, ptr %44, align 4, !tbaa !9
  %1063 = icmp ugt i32 %1062, 1
  br i1 %1063, label %1064, label %1075

1064:                                             ; preds = %1061
  br label %1065

1065:                                             ; preds = %1064
  br label %1066

1066:                                             ; preds = %1072, %1065
  br label %1067

1067:                                             ; preds = %1066
  store i32 -1, ptr %16, align 4, !tbaa !11
  %1068 = load ptr, ptr %9, align 8, !tbaa !5
  %1069 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %1068, i32 0, i32 0
  store i32 35, ptr %1069, align 8, !tbaa !22
  br label %2720

1070:                                             ; preds = %120
  br label %1071

1071:                                             ; preds = %1070
  br label %1072

1072:                                             ; preds = %1071
  br label %1066, !llvm.loop !63

1073:                                             ; No predecessors!
  br label %1074

1074:                                             ; preds = %1073
  br label %1075

1075:                                             ; preds = %1074, %1061, %1058
  store i32 -1, ptr %39, align 4, !tbaa !9
  store i32 0, ptr %46, align 4, !tbaa !9
  br label %1076

1076:                                             ; preds = %1232, %1075
  %1077 = load i32, ptr %46, align 4, !tbaa !9
  %1078 = load ptr, ptr %9, align 8, !tbaa !5
  %1079 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %1078, i32 0, i32 11
  %1080 = load ptr, ptr %9, align 8, !tbaa !5
  %1081 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %1080, i32 0, i32 6
  %1082 = load i32, ptr %1081, align 8, !tbaa !35
  %1083 = zext i32 %1082 to i64
  %1084 = getelementptr inbounds [3 x i32], ptr %1079, i64 0, i64 %1083
  %1085 = load i32, ptr %1084, align 4, !tbaa !9
  %1086 = icmp ult i32 %1077, %1085
  br i1 %1086, label %1087, label %1235

1087:                                             ; preds = %1076
  call void @llvm.lifetime.start.p0(i64 4, ptr %49) #5
  store i32 0, ptr %49, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %50) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %51) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %52) #5
  %1088 = load ptr, ptr %41, align 8, !tbaa !5
  %1089 = getelementptr inbounds %struct.tinfl_huff_table, ptr %1088, i32 0, i32 0
  %1090 = load i32, ptr %46, align 4, !tbaa !9
  %1091 = zext i32 %1090 to i64
  %1092 = getelementptr inbounds [288 x i8], ptr %1089, i64 0, i64 %1091
  %1093 = load i8, ptr %1092, align 1, !tbaa !29
  %1094 = zext i8 %1093 to i32
  store i32 %1094, ptr %52, align 4, !tbaa !9
  %1095 = load i32, ptr %52, align 4, !tbaa !9
  %1096 = icmp ne i32 %1095, 0
  br i1 %1096, label %1098, label %1097

1097:                                             ; preds = %1087
  store i32 156, ptr %28, align 4
  br label %1229

1098:                                             ; preds = %1087
  %1099 = load i32, ptr %52, align 4, !tbaa !9
  %1100 = zext i32 %1099 to i64
  %1101 = getelementptr inbounds [17 x i32], ptr %47, i64 0, i64 %1100
  %1102 = load i32, ptr %1101, align 4, !tbaa !9
  %1103 = add i32 %1102, 1
  store i32 %1103, ptr %1101, align 4, !tbaa !9
  store i32 %1102, ptr %51, align 4, !tbaa !9
  %1104 = load i32, ptr %52, align 4, !tbaa !9
  store i32 %1104, ptr %50, align 4, !tbaa !9
  br label %1105

1105:                                             ; preds = %1114, %1098
  %1106 = load i32, ptr %50, align 4, !tbaa !9
  %1107 = icmp ugt i32 %1106, 0
  br i1 %1107, label %1108, label %1119

1108:                                             ; preds = %1105
  %1109 = load i32, ptr %49, align 4, !tbaa !9
  %1110 = shl i32 %1109, 1
  %1111 = load i32, ptr %51, align 4, !tbaa !9
  %1112 = and i32 %1111, 1
  %1113 = or i32 %1110, %1112
  store i32 %1113, ptr %49, align 4, !tbaa !9
  br label %1114

1114:                                             ; preds = %1108
  %1115 = load i32, ptr %50, align 4, !tbaa !9
  %1116 = add i32 %1115, -1
  store i32 %1116, ptr %50, align 4, !tbaa !9
  %1117 = load i32, ptr %51, align 4, !tbaa !9
  %1118 = lshr i32 %1117, 1
  store i32 %1118, ptr %51, align 4, !tbaa !9
  br label %1105, !llvm.loop !64

1119:                                             ; preds = %1105
  %1120 = load i32, ptr %52, align 4, !tbaa !9
  %1121 = icmp ule i32 %1120, 10
  br i1 %1121, label %1122, label %1143

1122:                                             ; preds = %1119
  call void @llvm.lifetime.start.p0(i64 2, ptr %53) #5
  %1123 = load i32, ptr %52, align 4, !tbaa !9
  %1124 = shl i32 %1123, 9
  %1125 = load i32, ptr %46, align 4, !tbaa !9
  %1126 = or i32 %1124, %1125
  %1127 = trunc i32 %1126 to i16
  store i16 %1127, ptr %53, align 2, !tbaa !65
  br label %1128

1128:                                             ; preds = %1131, %1122
  %1129 = load i32, ptr %49, align 4, !tbaa !9
  %1130 = icmp ult i32 %1129, 1024
  br i1 %1130, label %1131, label %1142

1131:                                             ; preds = %1128
  %1132 = load i16, ptr %53, align 2, !tbaa !65
  %1133 = load ptr, ptr %41, align 8, !tbaa !5
  %1134 = getelementptr inbounds %struct.tinfl_huff_table, ptr %1133, i32 0, i32 1
  %1135 = load i32, ptr %49, align 4, !tbaa !9
  %1136 = zext i32 %1135 to i64
  %1137 = getelementptr inbounds [1024 x i16], ptr %1134, i64 0, i64 %1136
  store i16 %1132, ptr %1137, align 2, !tbaa !65
  %1138 = load i32, ptr %52, align 4, !tbaa !9
  %1139 = shl i32 1, %1138
  %1140 = load i32, ptr %49, align 4, !tbaa !9
  %1141 = add i32 %1140, %1139
  store i32 %1141, ptr %49, align 4, !tbaa !9
  br label %1128, !llvm.loop !67

1142:                                             ; preds = %1128
  store i32 156, ptr %28, align 4
  call void @llvm.lifetime.end.p0(i64 2, ptr %53) #5
  br label %1229

1143:                                             ; preds = %1119
  %1144 = load ptr, ptr %41, align 8, !tbaa !5
  %1145 = getelementptr inbounds %struct.tinfl_huff_table, ptr %1144, i32 0, i32 1
  %1146 = load i32, ptr %49, align 4, !tbaa !9
  %1147 = and i32 %1146, 1023
  %1148 = zext i32 %1147 to i64
  %1149 = getelementptr inbounds [1024 x i16], ptr %1145, i64 0, i64 %1148
  %1150 = load i16, ptr %1149, align 2, !tbaa !65
  %1151 = sext i16 %1150 to i32
  store i32 %1151, ptr %40, align 4, !tbaa !9
  %1152 = icmp eq i32 0, %1151
  br i1 %1152, label %1153, label %1165

1153:                                             ; preds = %1143
  %1154 = load i32, ptr %39, align 4, !tbaa !9
  %1155 = trunc i32 %1154 to i16
  %1156 = load ptr, ptr %41, align 8, !tbaa !5
  %1157 = getelementptr inbounds %struct.tinfl_huff_table, ptr %1156, i32 0, i32 1
  %1158 = load i32, ptr %49, align 4, !tbaa !9
  %1159 = and i32 %1158, 1023
  %1160 = zext i32 %1159 to i64
  %1161 = getelementptr inbounds [1024 x i16], ptr %1157, i64 0, i64 %1160
  store i16 %1155, ptr %1161, align 2, !tbaa !65
  %1162 = load i32, ptr %39, align 4, !tbaa !9
  store i32 %1162, ptr %40, align 4, !tbaa !9
  %1163 = load i32, ptr %39, align 4, !tbaa !9
  %1164 = sub nsw i32 %1163, 2
  store i32 %1164, ptr %39, align 4, !tbaa !9
  br label %1165

1165:                                             ; preds = %1153, %1143
  %1166 = load i32, ptr %49, align 4, !tbaa !9
  %1167 = lshr i32 %1166, 9
  store i32 %1167, ptr %49, align 4, !tbaa !9
  %1168 = load i32, ptr %52, align 4, !tbaa !9
  store i32 %1168, ptr %43, align 4, !tbaa !9
  br label %1169

1169:                                             ; preds = %1211, %1165
  %1170 = load i32, ptr %43, align 4, !tbaa !9
  %1171 = icmp ugt i32 %1170, 11
  br i1 %1171, label %1172, label %1214

1172:                                             ; preds = %1169
  %1173 = load i32, ptr %49, align 4, !tbaa !9
  %1174 = lshr i32 %1173, 1
  store i32 %1174, ptr %49, align 4, !tbaa !9
  %1175 = and i32 %1174, 1
  %1176 = load i32, ptr %40, align 4, !tbaa !9
  %1177 = sub i32 %1176, %1175
  store i32 %1177, ptr %40, align 4, !tbaa !9
  %1178 = load ptr, ptr %41, align 8, !tbaa !5
  %1179 = getelementptr inbounds %struct.tinfl_huff_table, ptr %1178, i32 0, i32 2
  %1180 = load i32, ptr %40, align 4, !tbaa !9
  %1181 = sub nsw i32 0, %1180
  %1182 = sub nsw i32 %1181, 1
  %1183 = sext i32 %1182 to i64
  %1184 = getelementptr inbounds [576 x i16], ptr %1179, i64 0, i64 %1183
  %1185 = load i16, ptr %1184, align 2, !tbaa !65
  %1186 = icmp ne i16 %1185, 0
  br i1 %1186, label %1200, label %1187

1187:                                             ; preds = %1172
  %1188 = load i32, ptr %39, align 4, !tbaa !9
  %1189 = trunc i32 %1188 to i16
  %1190 = load ptr, ptr %41, align 8, !tbaa !5
  %1191 = getelementptr inbounds %struct.tinfl_huff_table, ptr %1190, i32 0, i32 2
  %1192 = load i32, ptr %40, align 4, !tbaa !9
  %1193 = sub nsw i32 0, %1192
  %1194 = sub nsw i32 %1193, 1
  %1195 = sext i32 %1194 to i64
  %1196 = getelementptr inbounds [576 x i16], ptr %1191, i64 0, i64 %1195
  store i16 %1189, ptr %1196, align 2, !tbaa !65
  %1197 = load i32, ptr %39, align 4, !tbaa !9
  store i32 %1197, ptr %40, align 4, !tbaa !9
  %1198 = load i32, ptr %39, align 4, !tbaa !9
  %1199 = sub nsw i32 %1198, 2
  store i32 %1199, ptr %39, align 4, !tbaa !9
  br label %1210

1200:                                             ; preds = %1172
  %1201 = load ptr, ptr %41, align 8, !tbaa !5
  %1202 = getelementptr inbounds %struct.tinfl_huff_table, ptr %1201, i32 0, i32 2
  %1203 = load i32, ptr %40, align 4, !tbaa !9
  %1204 = sub nsw i32 0, %1203
  %1205 = sub nsw i32 %1204, 1
  %1206 = sext i32 %1205 to i64
  %1207 = getelementptr inbounds [576 x i16], ptr %1202, i64 0, i64 %1206
  %1208 = load i16, ptr %1207, align 2, !tbaa !65
  %1209 = sext i16 %1208 to i32
  store i32 %1209, ptr %40, align 4, !tbaa !9
  br label %1210

1210:                                             ; preds = %1200, %1187
  br label %1211

1211:                                             ; preds = %1210
  %1212 = load i32, ptr %43, align 4, !tbaa !9
  %1213 = add i32 %1212, -1
  store i32 %1213, ptr %43, align 4, !tbaa !9
  br label %1169, !llvm.loop !68

1214:                                             ; preds = %1169
  %1215 = load i32, ptr %49, align 4, !tbaa !9
  %1216 = lshr i32 %1215, 1
  store i32 %1216, ptr %49, align 4, !tbaa !9
  %1217 = and i32 %1216, 1
  %1218 = load i32, ptr %40, align 4, !tbaa !9
  %1219 = sub i32 %1218, %1217
  store i32 %1219, ptr %40, align 4, !tbaa !9
  %1220 = load i32, ptr %46, align 4, !tbaa !9
  %1221 = trunc i32 %1220 to i16
  %1222 = load ptr, ptr %41, align 8, !tbaa !5
  %1223 = getelementptr inbounds %struct.tinfl_huff_table, ptr %1222, i32 0, i32 2
  %1224 = load i32, ptr %40, 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 [576 x i16], ptr %1223, i64 0, i64 %1227
  store i16 %1221, ptr %1228, align 2, !tbaa !65
  store i32 0, ptr %28, align 4
  br label %1229

1229:                                             ; preds = %1214, %1142, %1097
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #5
  %1230 = load i32, ptr %28, align 4
  switch i32 %1230, label %2940 [
    i32 0, label %1231
    i32 156, label %1232
  ]

1231:                                             ; preds = %1229
  br label %1232

1232:                                             ; preds = %1231, %1229
  %1233 = load i32, ptr %46, align 4, !tbaa !9
  %1234 = add i32 %1233, 1
  store i32 %1234, ptr %46, align 4, !tbaa !9
  br label %1076, !llvm.loop !69

1235:                                             ; preds = %1076
  %1236 = load ptr, ptr %9, align 8, !tbaa !5
  %1237 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %1236, i32 0, i32 6
  %1238 = load i32, ptr %1237, align 8, !tbaa !35
  %1239 = icmp eq i32 %1238, 2
  br i1 %1239, label %1240, label %1624

1240:                                             ; preds = %1235
  store i32 0, ptr %19, align 4, !tbaa !9
  br label %1241

1241:                                             ; preds = %1560, %1440, %1240
  %1242 = load i32, ptr %19, align 4, !tbaa !9
  %1243 = load ptr, ptr %9, align 8, !tbaa !5
  %1244 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %1243, i32 0, i32 11
  %1245 = getelementptr inbounds [3 x i32], ptr %1244, i64 0, i64 0
  %1246 = load i32, ptr %1245, align 4, !tbaa !9
  %1247 = load ptr, ptr %9, align 8, !tbaa !5
  %1248 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %1247, i32 0, i32 11
  %1249 = getelementptr inbounds [3 x i32], ptr %1248, i64 0, i64 1
  %1250 = load i32, ptr %1249, align 4, !tbaa !9
  %1251 = add i32 %1246, %1250
  %1252 = icmp ult i32 %1242, %1251
  br i1 %1252, label %1253, label %1568

1253:                                             ; preds = %1241
  br label %1254

1254:                                             ; preds = %1253
  %1255 = load i32, ptr %17, align 4, !tbaa !9
  %1256 = icmp ult i32 %1255, 15
  br i1 %1256, label %1257, label %1388

1257:                                             ; preds = %1254
  %1258 = load ptr, ptr %23, align 8, !tbaa !5
  %1259 = load ptr, ptr %22, align 8, !tbaa !5
  %1260 = ptrtoint ptr %1258 to i64
  %1261 = ptrtoint ptr %1259 to i64
  %1262 = sub i64 %1260, %1261
  %1263 = icmp slt i64 %1262, 2
  br i1 %1263, label %1264, label %1364

1264:                                             ; preds = %1257
  br label %1265

1265:                                             ; preds = %1360, %1264
  %1266 = load ptr, ptr %9, align 8, !tbaa !5
  %1267 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %1266, i32 0, i32 14
  %1268 = getelementptr inbounds [3 x %struct.tinfl_huff_table], ptr %1267, i64 0, i64 2
  %1269 = getelementptr inbounds %struct.tinfl_huff_table, ptr %1268, i32 0, i32 1
  %1270 = load i64, ptr %21, align 8, !tbaa !13
  %1271 = and i64 %1270, 1023
  %1272 = getelementptr inbounds [1024 x i16], ptr %1269, i64 0, i64 %1271
  %1273 = load i16, ptr %1272, align 2, !tbaa !65
  %1274 = sext i16 %1273 to i32
  store i32 %1274, ptr %55, align 4, !tbaa !9
  %1275 = load i32, ptr %55, align 4, !tbaa !9
  %1276 = icmp sge i32 %1275, 0
  br i1 %1276, label %1277, label %1288

1277:                                             ; preds = %1265
  %1278 = load i32, ptr %55, align 4, !tbaa !9
  %1279 = ashr i32 %1278, 9
  store i32 %1279, ptr %56, align 4, !tbaa !9
  %1280 = load i32, ptr %56, align 4, !tbaa !9
  %1281 = icmp ne i32 %1280, 0
  br i1 %1281, label %1282, label %1287

1282:                                             ; preds = %1277
  %1283 = load i32, ptr %17, align 4, !tbaa !9
  %1284 = load i32, ptr %56, align 4, !tbaa !9
  %1285 = icmp uge i32 %1283, %1284
  br i1 %1285, label %1286, label %1287

1286:                                             ; preds = %1282
  br label %1363

1287:                                             ; preds = %1282, %1277
  br label %1326

1288:                                             ; preds = %1265
  %1289 = load i32, ptr %17, align 4, !tbaa !9
  %1290 = icmp ugt i32 %1289, 10
  br i1 %1290, label %1291, label %1325

1291:                                             ; preds = %1288
  store i32 10, ptr %56, align 4, !tbaa !9
  br label %1292

1292:                                             ; preds = %1318, %1291
  %1293 = load ptr, ptr %9, align 8, !tbaa !5
  %1294 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %1293, i32 0, i32 14
  %1295 = getelementptr inbounds [3 x %struct.tinfl_huff_table], ptr %1294, i64 0, i64 2
  %1296 = getelementptr inbounds %struct.tinfl_huff_table, ptr %1295, i32 0, i32 2
  %1297 = load i32, ptr %55, align 4, !tbaa !9
  %1298 = xor i32 %1297, -1
  %1299 = sext i32 %1298 to i64
  %1300 = load i64, ptr %21, align 8, !tbaa !13
  %1301 = load i32, ptr %56, align 4, !tbaa !9
  %1302 = add i32 %1301, 1
  store i32 %1302, ptr %56, align 4, !tbaa !9
  %1303 = zext i32 %1301 to i64
  %1304 = lshr i64 %1300, %1303
  %1305 = and i64 %1304, 1
  %1306 = add i64 %1299, %1305
  %1307 = getelementptr inbounds [576 x i16], ptr %1296, i64 0, i64 %1306
  %1308 = load i16, ptr %1307, align 2, !tbaa !65
  %1309 = sext i16 %1308 to i32
  store i32 %1309, ptr %55, align 4, !tbaa !9
  br label %1310

1310:                                             ; preds = %1292
  %1311 = load i32, ptr %55, align 4, !tbaa !9
  %1312 = icmp slt i32 %1311, 0
  br i1 %1312, label %1313, label %1318

1313:                                             ; preds = %1310
  %1314 = load i32, ptr %17, align 4, !tbaa !9
  %1315 = load i32, ptr %56, align 4, !tbaa !9
  %1316 = add i32 %1315, 1
  %1317 = icmp uge i32 %1314, %1316
  br label %1318

1318:                                             ; preds = %1313, %1310
  %1319 = phi i1 [ false, %1310 ], [ %1317, %1313 ]
  br i1 %1319, label %1292, label %1320, !llvm.loop !70

1320:                                             ; preds = %1318
  %1321 = load i32, ptr %55, align 4, !tbaa !9
  %1322 = icmp sge i32 %1321, 0
  br i1 %1322, label %1323, label %1324

1323:                                             ; preds = %1320
  br label %1363

1324:                                             ; preds = %1320
  br label %1325

1325:                                             ; preds = %1324, %1288
  br label %1326

1326:                                             ; preds = %1325, %1287
  br label %1327

1327:                                             ; preds = %1326
  br label %1328

1328:                                             ; preds = %1343, %1327
  %1329 = load ptr, ptr %22, align 8, !tbaa !5
  %1330 = load ptr, ptr %23, align 8, !tbaa !5
  %1331 = icmp uge ptr %1329, %1330
  br i1 %1331, label %1332, label %1344

1332:                                             ; preds = %1328
  br label %1333

1333:                                             ; preds = %1332
  %1334 = load i32, ptr %15, align 4, !tbaa !9
  %1335 = and i32 %1334, 2
  %1336 = icmp ne i32 %1335, 0
  %1337 = zext i1 %1336 to i64
  %1338 = select i1 %1336, i32 1, i32 -4
  store i32 %1338, ptr %16, align 4, !tbaa !11
  %1339 = load ptr, ptr %9, align 8, !tbaa !5
  %1340 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %1339, i32 0, i32 0
  store i32 16, ptr %1340, align 8, !tbaa !22
  br label %2720

1341:                                             ; preds = %120
  br label %1342

1342:                                             ; preds = %1341
  br label %1343

1343:                                             ; preds = %1342
  br label %1328, !llvm.loop !71

1344:                                             ; preds = %1328
  %1345 = load ptr, ptr %22, align 8, !tbaa !5
  %1346 = getelementptr inbounds i8, ptr %1345, i32 1
  store ptr %1346, ptr %22, align 8, !tbaa !5
  %1347 = load i8, ptr %1345, align 1, !tbaa !29
  %1348 = zext i8 %1347 to i32
  store i32 %1348, ptr %57, align 4, !tbaa !9
  br label %1349

1349:                                             ; preds = %1344
  br label %1350

1350:                                             ; preds = %1349
  %1351 = load i32, ptr %57, align 4, !tbaa !9
  %1352 = zext i32 %1351 to i64
  %1353 = load i32, ptr %17, align 4, !tbaa !9
  %1354 = zext i32 %1353 to i64
  %1355 = shl i64 %1352, %1354
  %1356 = load i64, ptr %21, align 8, !tbaa !13
  %1357 = or i64 %1356, %1355
  store i64 %1357, ptr %21, align 8, !tbaa !13
  %1358 = load i32, ptr %17, align 4, !tbaa !9
  %1359 = add i32 %1358, 8
  store i32 %1359, ptr %17, align 4, !tbaa !9
  br label %1360

1360:                                             ; preds = %1350
  %1361 = load i32, ptr %17, align 4, !tbaa !9
  %1362 = icmp ult i32 %1361, 15
  br i1 %1362, label %1265, label %1363, !llvm.loop !72

1363:                                             ; preds = %1360, %1323, %1286
  br label %1387

1364:                                             ; preds = %1257
  %1365 = load ptr, ptr %22, align 8, !tbaa !5
  %1366 = getelementptr inbounds i8, ptr %1365, i64 0
  %1367 = load i8, ptr %1366, align 1, !tbaa !29
  %1368 = zext i8 %1367 to i64
  %1369 = load i32, ptr %17, align 4, !tbaa !9
  %1370 = zext i32 %1369 to i64
  %1371 = shl i64 %1368, %1370
  %1372 = load ptr, ptr %22, align 8, !tbaa !5
  %1373 = getelementptr inbounds i8, ptr %1372, i64 1
  %1374 = load i8, ptr %1373, align 1, !tbaa !29
  %1375 = zext i8 %1374 to i64
  %1376 = load i32, ptr %17, align 4, !tbaa !9
  %1377 = add i32 %1376, 8
  %1378 = zext i32 %1377 to i64
  %1379 = shl i64 %1375, %1378
  %1380 = or i64 %1371, %1379
  %1381 = load i64, ptr %21, align 8, !tbaa !13
  %1382 = or i64 %1381, %1380
  store i64 %1382, ptr %21, align 8, !tbaa !13
  %1383 = load ptr, ptr %22, align 8, !tbaa !5
  %1384 = getelementptr inbounds i8, ptr %1383, i64 2
  store ptr %1384, ptr %22, align 8, !tbaa !5
  %1385 = load i32, ptr %17, align 4, !tbaa !9
  %1386 = add i32 %1385, 16
  store i32 %1386, ptr %17, align 4, !tbaa !9
  br label %1387

1387:                                             ; preds = %1364, %1363
  br label %1388

1388:                                             ; preds = %1387, %1254
  %1389 = load ptr, ptr %9, align 8, !tbaa !5
  %1390 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %1389, i32 0, i32 14
  %1391 = getelementptr inbounds [3 x %struct.tinfl_huff_table], ptr %1390, i64 0, i64 2
  %1392 = getelementptr inbounds %struct.tinfl_huff_table, ptr %1391, i32 0, i32 1
  %1393 = load i64, ptr %21, align 8, !tbaa !13
  %1394 = and i64 %1393, 1023
  %1395 = getelementptr inbounds [1024 x i16], ptr %1392, i64 0, i64 %1394
  %1396 = load i16, ptr %1395, align 2, !tbaa !65
  %1397 = sext i16 %1396 to i32
  store i32 %1397, ptr %55, align 4, !tbaa !9
  %1398 = icmp sge i32 %1397, 0
  br i1 %1398, label %1399, label %1404

1399:                                             ; preds = %1388
  %1400 = load i32, ptr %55, align 4, !tbaa !9
  %1401 = ashr i32 %1400, 9
  store i32 %1401, ptr %56, align 4, !tbaa !9
  %1402 = load i32, ptr %55, align 4, !tbaa !9
  %1403 = and i32 %1402, 511
  store i32 %1403, ptr %55, align 4, !tbaa !9
  br label %1427

1404:                                             ; preds = %1388
  store i32 10, ptr %56, align 4, !tbaa !9
  br label %1405

1405:                                             ; preds = %1423, %1404
  %1406 = load ptr, ptr %9, align 8, !tbaa !5
  %1407 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %1406, i32 0, i32 14
  %1408 = getelementptr inbounds [3 x %struct.tinfl_huff_table], ptr %1407, i64 0, i64 2
  %1409 = getelementptr inbounds %struct.tinfl_huff_table, ptr %1408, i32 0, i32 2
  %1410 = load i32, ptr %55, align 4, !tbaa !9
  %1411 = xor i32 %1410, -1
  %1412 = sext i32 %1411 to i64
  %1413 = load i64, ptr %21, align 8, !tbaa !13
  %1414 = load i32, ptr %56, align 4, !tbaa !9
  %1415 = add i32 %1414, 1
  store i32 %1415, ptr %56, align 4, !tbaa !9
  %1416 = zext i32 %1414 to i64
  %1417 = lshr i64 %1413, %1416
  %1418 = and i64 %1417, 1
  %1419 = add i64 %1412, %1418
  %1420 = getelementptr inbounds [576 x i16], ptr %1409, i64 0, i64 %1419
  %1421 = load i16, ptr %1420, align 2, !tbaa !65
  %1422 = sext i16 %1421 to i32
  store i32 %1422, ptr %55, align 4, !tbaa !9
  br label %1423

1423:                                             ; preds = %1405
  %1424 = load i32, ptr %55, align 4, !tbaa !9
  %1425 = icmp slt i32 %1424, 0
  br i1 %1425, label %1405, label %1426, !llvm.loop !73

1426:                                             ; preds = %1423
  br label %1427

1427:                                             ; preds = %1426, %1399
  %1428 = load i32, ptr %55, align 4, !tbaa !9
  store i32 %1428, ptr %18, align 4, !tbaa !9
  %1429 = load i32, ptr %56, align 4, !tbaa !9
  %1430 = load i64, ptr %21, align 8, !tbaa !13
  %1431 = zext i32 %1429 to i64
  %1432 = lshr i64 %1430, %1431
  store i64 %1432, ptr %21, align 8, !tbaa !13
  %1433 = load i32, ptr %56, align 4, !tbaa !9
  %1434 = load i32, ptr %17, align 4, !tbaa !9
  %1435 = sub i32 %1434, %1433
  store i32 %1435, ptr %17, align 4, !tbaa !9
  br label %1436

1436:                                             ; preds = %1427
  br label %1437

1437:                                             ; preds = %1436
  %1438 = load i32, ptr %18, align 4, !tbaa !9
  %1439 = icmp ult i32 %1438, 16
  br i1 %1439, label %1440, label %1449

1440:                                             ; preds = %1437
  %1441 = load i32, ptr %18, align 4, !tbaa !9
  %1442 = trunc i32 %1441 to i8
  %1443 = load ptr, ptr %9, align 8, !tbaa !5
  %1444 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %1443, i32 0, i32 16
  %1445 = load i32, ptr %19, align 4, !tbaa !9
  %1446 = add i32 %1445, 1
  store i32 %1446, ptr %19, align 4, !tbaa !9
  %1447 = zext i32 %1445 to i64
  %1448 = getelementptr inbounds [457 x i8], ptr %1444, i64 0, i64 %1447
  store i8 %1442, ptr %1448, align 1, !tbaa !29
  br label %1241, !llvm.loop !74

1449:                                             ; preds = %1437
  %1450 = load i32, ptr %18, align 4, !tbaa !9
  %1451 = icmp eq i32 %1450, 16
  br i1 %1451, label %1452, label %1466

1452:                                             ; preds = %1449
  %1453 = load i32, ptr %19, align 4, !tbaa !9
  %1454 = icmp ne i32 %1453, 0
  br i1 %1454, label %1466, label %1455

1455:                                             ; preds = %1452
  br label %1456

1456:                                             ; preds = %1455
  br label %1457

1457:                                             ; preds = %1463, %1456
  br label %1458

1458:                                             ; preds = %1457
  store i32 -1, ptr %16, align 4, !tbaa !11
  %1459 = load ptr, ptr %9, align 8, !tbaa !5
  %1460 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %1459, i32 0, i32 0
  store i32 17, ptr %1460, align 8, !tbaa !22
  br label %2720

1461:                                             ; preds = %120
  br label %1462

1462:                                             ; preds = %1461
  br label %1463

1463:                                             ; preds = %1462
  br label %1457, !llvm.loop !75

1464:                                             ; No predecessors!
  br label %1465

1465:                                             ; preds = %1464
  br label %1466

1466:                                             ; preds = %1465, %1452, %1449
  %1467 = load i32, ptr %18, align 4, !tbaa !9
  %1468 = sub i32 %1467, 16
  %1469 = zext i32 %1468 to i64
  %1470 = getelementptr inbounds [4 x i8], ptr @.str.15, i64 0, i64 %1469
  %1471 = load i8, ptr %1470, align 1, !tbaa !29
  %1472 = sext i8 %1471 to i32
  store i32 %1472, ptr %20, align 4, !tbaa !9
  br label %1473

1473:                                             ; preds = %1466
  %1474 = load i32, ptr %17, align 4, !tbaa !9
  %1475 = load i32, ptr %20, align 4, !tbaa !9
  %1476 = icmp ult i32 %1474, %1475
  br i1 %1476, label %1477, label %1517

1477:                                             ; preds = %1473
  br label %1478

1478:                                             ; preds = %1512, %1477
  br label %1479

1479:                                             ; preds = %1478
  br label %1480

1480:                                             ; preds = %1495, %1479
  %1481 = load ptr, ptr %22, align 8, !tbaa !5
  %1482 = load ptr, ptr %23, align 8, !tbaa !5
  %1483 = icmp uge ptr %1481, %1482
  br i1 %1483, label %1484, label %1496

1484:                                             ; preds = %1480
  br label %1485

1485:                                             ; preds = %1484
  %1486 = load i32, ptr %15, align 4, !tbaa !9
  %1487 = and i32 %1486, 2
  %1488 = icmp ne i32 %1487, 0
  %1489 = zext i1 %1488 to i64
  %1490 = select i1 %1488, i32 1, i32 -4
  store i32 %1490, ptr %16, align 4, !tbaa !11
  %1491 = load ptr, ptr %9, align 8, !tbaa !5
  %1492 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %1491, i32 0, i32 0
  store i32 18, ptr %1492, align 8, !tbaa !22
  br label %2720

1493:                                             ; preds = %120
  br label %1494

1494:                                             ; preds = %1493
  br label %1495

1495:                                             ; preds = %1494
  br label %1480, !llvm.loop !76

1496:                                             ; preds = %1480
  %1497 = load ptr, ptr %22, align 8, !tbaa !5
  %1498 = getelementptr inbounds i8, ptr %1497, i32 1
  store ptr %1498, ptr %22, align 8, !tbaa !5
  %1499 = load i8, ptr %1497, align 1, !tbaa !29
  %1500 = zext i8 %1499 to i32
  store i32 %1500, ptr %58, align 4, !tbaa !9
  br label %1501

1501:                                             ; preds = %1496
  br label %1502

1502:                                             ; preds = %1501
  %1503 = load i32, ptr %58, align 4, !tbaa !9
  %1504 = zext i32 %1503 to i64
  %1505 = load i32, ptr %17, align 4, !tbaa !9
  %1506 = zext i32 %1505 to i64
  %1507 = shl i64 %1504, %1506
  %1508 = load i64, ptr %21, align 8, !tbaa !13
  %1509 = or i64 %1508, %1507
  store i64 %1509, ptr %21, align 8, !tbaa !13
  %1510 = load i32, ptr %17, align 4, !tbaa !9
  %1511 = add i32 %1510, 8
  store i32 %1511, ptr %17, align 4, !tbaa !9
  br label %1512

1512:                                             ; preds = %1502
  %1513 = load i32, ptr %17, align 4, !tbaa !9
  %1514 = load i32, ptr %20, align 4, !tbaa !9
  %1515 = icmp ult i32 %1513, %1514
  br i1 %1515, label %1478, label %1516, !llvm.loop !77

1516:                                             ; preds = %1512
  br label %1517

1517:                                             ; preds = %1516, %1473
  %1518 = load i64, ptr %21, align 8, !tbaa !13
  %1519 = load i32, ptr %20, align 4, !tbaa !9
  %1520 = shl i32 1, %1519
  %1521 = sub nsw i32 %1520, 1
  %1522 = sext i32 %1521 to i64
  %1523 = and i64 %1518, %1522
  %1524 = trunc i64 %1523 to i32
  store i32 %1524, ptr %54, align 4, !tbaa !9
  %1525 = load i32, ptr %20, align 4, !tbaa !9
  %1526 = load i64, ptr %21, align 8, !tbaa !13
  %1527 = zext i32 %1525 to i64
  %1528 = lshr i64 %1526, %1527
  store i64 %1528, ptr %21, align 8, !tbaa !13
  %1529 = load i32, ptr %20, align 4, !tbaa !9
  %1530 = load i32, ptr %17, align 4, !tbaa !9
  %1531 = sub i32 %1530, %1529
  store i32 %1531, ptr %17, align 4, !tbaa !9
  br label %1532

1532:                                             ; preds = %1517
  br label %1533

1533:                                             ; preds = %1532
  %1534 = load i32, ptr %18, align 4, !tbaa !9
  %1535 = sub i32 %1534, 16
  %1536 = zext i32 %1535 to i64
  %1537 = getelementptr inbounds [4 x i8], ptr @.str.16, i64 0, i64 %1536
  %1538 = load i8, ptr %1537, align 1, !tbaa !29
  %1539 = sext i8 %1538 to i32
  %1540 = load i32, ptr %54, align 4, !tbaa !9
  %1541 = add i32 %1540, %1539
  store i32 %1541, ptr %54, align 4, !tbaa !9
  %1542 = load ptr, ptr %9, align 8, !tbaa !5
  %1543 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %1542, i32 0, i32 16
  %1544 = getelementptr inbounds [457 x i8], ptr %1543, i64 0, i64 0
  %1545 = load i32, ptr %19, align 4, !tbaa !9
  %1546 = zext i32 %1545 to i64
  %1547 = getelementptr inbounds i8, ptr %1544, i64 %1546
  %1548 = load i32, ptr %18, align 4, !tbaa !9
  %1549 = icmp eq i32 %1548, 16
  br i1 %1549, label %1550, label %1559

1550:                                             ; preds = %1533
  %1551 = load ptr, ptr %9, align 8, !tbaa !5
  %1552 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %1551, i32 0, i32 16
  %1553 = load i32, ptr %19, align 4, !tbaa !9
  %1554 = sub i32 %1553, 1
  %1555 = zext i32 %1554 to i64
  %1556 = getelementptr inbounds [457 x i8], ptr %1552, i64 0, i64 %1555
  %1557 = load i8, ptr %1556, align 1, !tbaa !29
  %1558 = zext i8 %1557 to i32
  br label %1560

1559:                                             ; preds = %1533
  br label %1560

1560:                                             ; preds = %1559, %1550
  %1561 = phi i32 [ %1558, %1550 ], [ 0, %1559 ]
  %1562 = trunc i32 %1561 to i8
  %1563 = load i32, ptr %54, align 4, !tbaa !9
  %1564 = zext i32 %1563 to i64
  call void @llvm.memset.p0.i64(ptr align 1 %1547, i8 %1562, i64 %1564, i1 false)
  %1565 = load i32, ptr %54, align 4, !tbaa !9
  %1566 = load i32, ptr %19, align 4, !tbaa !9
  %1567 = add i32 %1566, %1565
  store i32 %1567, ptr %19, align 4, !tbaa !9
  br label %1241, !llvm.loop !74

1568:                                             ; preds = %1241
  %1569 = load ptr, ptr %9, align 8, !tbaa !5
  %1570 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %1569, i32 0, i32 11
  %1571 = getelementptr inbounds [3 x i32], ptr %1570, i64 0, i64 0
  %1572 = load i32, ptr %1571, align 4, !tbaa !9
  %1573 = load ptr, ptr %9, align 8, !tbaa !5
  %1574 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %1573, i32 0, i32 11
  %1575 = getelementptr inbounds [3 x i32], ptr %1574, i64 0, i64 1
  %1576 = load i32, ptr %1575, align 4, !tbaa !9
  %1577 = add i32 %1572, %1576
  %1578 = load i32, ptr %19, align 4, !tbaa !9
  %1579 = icmp ne i32 %1577, %1578
  br i1 %1579, label %1580, label %1591

1580:                                             ; preds = %1568
  br label %1581

1581:                                             ; preds = %1580
  br label %1582

1582:                                             ; preds = %1588, %1581
  br label %1583

1583:                                             ; preds = %1582
  store i32 -1, ptr %16, align 4, !tbaa !11
  %1584 = load ptr, ptr %9, align 8, !tbaa !5
  %1585 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %1584, i32 0, i32 0
  store i32 21, ptr %1585, align 8, !tbaa !22
  br label %2720

1586:                                             ; preds = %120
  br label %1587

1587:                                             ; preds = %1586
  br label %1588

1588:                                             ; preds = %1587
  br label %1582, !llvm.loop !78

1589:                                             ; No predecessors!
  br label %1590

1590:                                             ; preds = %1589
  br label %1591

1591:                                             ; preds = %1590, %1568
  %1592 = load ptr, ptr %9, align 8, !tbaa !5
  %1593 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %1592, i32 0, i32 14
  %1594 = getelementptr inbounds [3 x %struct.tinfl_huff_table], ptr %1593, i64 0, i64 0
  %1595 = getelementptr inbounds %struct.tinfl_huff_table, ptr %1594, i32 0, i32 0
  %1596 = getelementptr inbounds [288 x i8], ptr %1595, i64 0, i64 0
  %1597 = load ptr, ptr %9, align 8, !tbaa !5
  %1598 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %1597, i32 0, i32 16
  %1599 = getelementptr inbounds [457 x i8], ptr %1598, i64 0, i64 0
  %1600 = load ptr, ptr %9, align 8, !tbaa !5
  %1601 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %1600, i32 0, i32 11
  %1602 = getelementptr inbounds [3 x i32], ptr %1601, i64 0, i64 0
  %1603 = load i32, ptr %1602, align 4, !tbaa !9
  %1604 = zext i32 %1603 to i64
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1596, ptr align 4 %1599, i64 %1604, i1 false)
  %1605 = load ptr, ptr %9, align 8, !tbaa !5
  %1606 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %1605, i32 0, i32 14
  %1607 = getelementptr inbounds [3 x %struct.tinfl_huff_table], ptr %1606, i64 0, i64 1
  %1608 = getelementptr inbounds %struct.tinfl_huff_table, ptr %1607, i32 0, i32 0
  %1609 = getelementptr inbounds [288 x i8], ptr %1608, i64 0, i64 0
  %1610 = load ptr, ptr %9, align 8, !tbaa !5
  %1611 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %1610, i32 0, i32 16
  %1612 = getelementptr inbounds [457 x i8], ptr %1611, i64 0, i64 0
  %1613 = load ptr, ptr %9, align 8, !tbaa !5
  %1614 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %1613, i32 0, i32 11
  %1615 = getelementptr inbounds [3 x i32], ptr %1614, i64 0, i64 0
  %1616 = load i32, ptr %1615, align 4, !tbaa !9
  %1617 = zext i32 %1616 to i64
  %1618 = getelementptr inbounds i8, ptr %1612, i64 %1617
  %1619 = load ptr, ptr %9, align 8, !tbaa !5
  %1620 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %1619, i32 0, i32 11
  %1621 = getelementptr inbounds [3 x i32], ptr %1620, i64 0, i64 1
  %1622 = load i32, ptr %1621, align 4, !tbaa !9
  %1623 = zext i32 %1622 to i64
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1609, ptr align 1 %1618, i64 %1623, i1 false)
  br label %1624

1624:                                             ; preds = %1591, %1235
  br label %1625

1625:                                             ; preds = %1624
  %1626 = load ptr, ptr %9, align 8, !tbaa !5
  %1627 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %1626, i32 0, i32 6
  %1628 = load i32, ptr %1627, align 8, !tbaa !35
  %1629 = add i32 %1628, -1
  store i32 %1629, ptr %1627, align 8, !tbaa !35
  br label %989, !llvm.loop !79

1630:                                             ; preds = %989
  br label %1631

1631:                                             ; preds = %2509, %2457, %2405, %1630
  br label %1632

1632:                                             ; preds = %1983, %1631
  %1633 = load ptr, ptr %23, align 8, !tbaa !5
  %1634 = load ptr, ptr %22, align 8, !tbaa !5
  %1635 = ptrtoint ptr %1633 to i64
  %1636 = ptrtoint ptr %1634 to i64
  %1637 = sub i64 %1635, %1636
  %1638 = icmp slt i64 %1637, 4
  br i1 %1638, label %1646, label %1639

1639:                                             ; preds = %1632
  %1640 = load ptr, ptr %25, align 8, !tbaa !5
  %1641 = load ptr, ptr %24, align 8, !tbaa !5
  %1642 = ptrtoint ptr %1640 to i64
  %1643 = ptrtoint ptr %1641 to i64
  %1644 = sub i64 %1642, %1643
  %1645 = icmp slt i64 %1644, 2
  br i1 %1645, label %1646, label %1851

1646:                                             ; preds = %1639, %1632
  br label %1647

1647:                                             ; preds = %1646
  %1648 = load i32, ptr %17, align 4, !tbaa !9
  %1649 = icmp ult i32 %1648, 15
  br i1 %1649, label %1650, label %1781

1650:                                             ; preds = %1647
  %1651 = load ptr, ptr %23, align 8, !tbaa !5
  %1652 = load ptr, ptr %22, align 8, !tbaa !5
  %1653 = ptrtoint ptr %1651 to i64
  %1654 = ptrtoint ptr %1652 to i64
  %1655 = sub i64 %1653, %1654
  %1656 = icmp slt i64 %1655, 2
  br i1 %1656, label %1657, label %1757

1657:                                             ; preds = %1650
  br label %1658

1658:                                             ; preds = %1753, %1657
  %1659 = load ptr, ptr %9, align 8, !tbaa !5
  %1660 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %1659, i32 0, i32 14
  %1661 = getelementptr inbounds [3 x %struct.tinfl_huff_table], ptr %1660, i64 0, i64 0
  %1662 = getelementptr inbounds %struct.tinfl_huff_table, ptr %1661, i32 0, i32 1
  %1663 = load i64, ptr %21, align 8, !tbaa !13
  %1664 = and i64 %1663, 1023
  %1665 = getelementptr inbounds [1024 x i16], ptr %1662, i64 0, i64 %1664
  %1666 = load i16, ptr %1665, align 2, !tbaa !65
  %1667 = sext i16 %1666 to i32
  store i32 %1667, ptr %60, align 4, !tbaa !9
  %1668 = load i32, ptr %60, align 4, !tbaa !9
  %1669 = icmp sge i32 %1668, 0
  br i1 %1669, label %1670, label %1681

1670:                                             ; preds = %1658
  %1671 = load i32, ptr %60, align 4, !tbaa !9
  %1672 = ashr i32 %1671, 9
  store i32 %1672, ptr %61, align 4, !tbaa !9
  %1673 = load i32, ptr %61, align 4, !tbaa !9
  %1674 = icmp ne i32 %1673, 0
  br i1 %1674, label %1675, label %1680

1675:                                             ; preds = %1670
  %1676 = load i32, ptr %17, align 4, !tbaa !9
  %1677 = load i32, ptr %61, align 4, !tbaa !9
  %1678 = icmp uge i32 %1676, %1677
  br i1 %1678, label %1679, label %1680

1679:                                             ; preds = %1675
  br label %1756

1680:                                             ; preds = %1675, %1670
  br label %1719

1681:                                             ; preds = %1658
  %1682 = load i32, ptr %17, align 4, !tbaa !9
  %1683 = icmp ugt i32 %1682, 10
  br i1 %1683, label %1684, label %1718

1684:                                             ; preds = %1681
  store i32 10, ptr %61, align 4, !tbaa !9
  br label %1685

1685:                                             ; preds = %1711, %1684
  %1686 = load ptr, ptr %9, align 8, !tbaa !5
  %1687 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %1686, i32 0, i32 14
  %1688 = getelementptr inbounds [3 x %struct.tinfl_huff_table], ptr %1687, i64 0, i64 0
  %1689 = getelementptr inbounds %struct.tinfl_huff_table, ptr %1688, i32 0, i32 2
  %1690 = load i32, ptr %60, align 4, !tbaa !9
  %1691 = xor i32 %1690, -1
  %1692 = sext i32 %1691 to i64
  %1693 = load i64, ptr %21, align 8, !tbaa !13
  %1694 = load i32, ptr %61, align 4, !tbaa !9
  %1695 = add i32 %1694, 1
  store i32 %1695, ptr %61, align 4, !tbaa !9
  %1696 = zext i32 %1694 to i64
  %1697 = lshr i64 %1693, %1696
  %1698 = and i64 %1697, 1
  %1699 = add i64 %1692, %1698
  %1700 = getelementptr inbounds [576 x i16], ptr %1689, i64 0, i64 %1699
  %1701 = load i16, ptr %1700, align 2, !tbaa !65
  %1702 = sext i16 %1701 to i32
  store i32 %1702, ptr %60, align 4, !tbaa !9
  br label %1703

1703:                                             ; preds = %1685
  %1704 = load i32, ptr %60, align 4, !tbaa !9
  %1705 = icmp slt i32 %1704, 0
  br i1 %1705, label %1706, label %1711

1706:                                             ; preds = %1703
  %1707 = load i32, ptr %17, align 4, !tbaa !9
  %1708 = load i32, ptr %61, align 4, !tbaa !9
  %1709 = add i32 %1708, 1
  %1710 = icmp uge i32 %1707, %1709
  br label %1711

1711:                                             ; preds = %1706, %1703
  %1712 = phi i1 [ false, %1703 ], [ %1710, %1706 ]
  br i1 %1712, label %1685, label %1713, !llvm.loop !80

1713:                                             ; preds = %1711
  %1714 = load i32, ptr %60, align 4, !tbaa !9
  %1715 = icmp sge i32 %1714, 0
  br i1 %1715, label %1716, label %1717

1716:                                             ; preds = %1713
  br label %1756

1717:                                             ; preds = %1713
  br label %1718

1718:                                             ; preds = %1717, %1681
  br label %1719

1719:                                             ; preds = %1718, %1680
  br label %1720

1720:                                             ; preds = %1719
  br label %1721

1721:                                             ; preds = %1736, %1720
  %1722 = load ptr, ptr %22, align 8, !tbaa !5
  %1723 = load ptr, ptr %23, align 8, !tbaa !5
  %1724 = icmp uge ptr %1722, %1723
  br i1 %1724, label %1725, label %1737

1725:                                             ; preds = %1721
  br label %1726

1726:                                             ; preds = %1725
  %1727 = load i32, ptr %15, align 4, !tbaa !9
  %1728 = and i32 %1727, 2
  %1729 = icmp ne i32 %1728, 0
  %1730 = zext i1 %1729 to i64
  %1731 = select i1 %1729, i32 1, i32 -4
  store i32 %1731, ptr %16, align 4, !tbaa !11
  %1732 = load ptr, ptr %9, align 8, !tbaa !5
  %1733 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %1732, i32 0, i32 0
  store i32 23, ptr %1733, align 8, !tbaa !22
  br label %2720

1734:                                             ; preds = %120
  br label %1735

1735:                                             ; preds = %1734
  br label %1736

1736:                                             ; preds = %1735
  br label %1721, !llvm.loop !81

1737:                                             ; preds = %1721
  %1738 = load ptr, ptr %22, align 8, !tbaa !5
  %1739 = getelementptr inbounds i8, ptr %1738, i32 1
  store ptr %1739, ptr %22, align 8, !tbaa !5
  %1740 = load i8, ptr %1738, align 1, !tbaa !29
  %1741 = zext i8 %1740 to i32
  store i32 %1741, ptr %62, align 4, !tbaa !9
  br label %1742

1742:                                             ; preds = %1737
  br label %1743

1743:                                             ; preds = %1742
  %1744 = load i32, ptr %62, align 4, !tbaa !9
  %1745 = zext i32 %1744 to i64
  %1746 = load i32, ptr %17, align 4, !tbaa !9
  %1747 = zext i32 %1746 to i64
  %1748 = shl i64 %1745, %1747
  %1749 = load i64, ptr %21, align 8, !tbaa !13
  %1750 = or i64 %1749, %1748
  store i64 %1750, ptr %21, align 8, !tbaa !13
  %1751 = load i32, ptr %17, align 4, !tbaa !9
  %1752 = add i32 %1751, 8
  store i32 %1752, ptr %17, align 4, !tbaa !9
  br label %1753

1753:                                             ; preds = %1743
  %1754 = load i32, ptr %17, align 4, !tbaa !9
  %1755 = icmp ult i32 %1754, 15
  br i1 %1755, label %1658, label %1756, !llvm.loop !82

1756:                                             ; preds = %1753, %1716, %1679
  br label %1780

1757:                                             ; preds = %1650
  %1758 = load ptr, ptr %22, align 8, !tbaa !5
  %1759 = getelementptr inbounds i8, ptr %1758, i64 0
  %1760 = load i8, ptr %1759, align 1, !tbaa !29
  %1761 = zext i8 %1760 to i64
  %1762 = load i32, ptr %17, align 4, !tbaa !9
  %1763 = zext i32 %1762 to i64
  %1764 = shl i64 %1761, %1763
  %1765 = load ptr, ptr %22, align 8, !tbaa !5
  %1766 = getelementptr inbounds i8, ptr %1765, i64 1
  %1767 = load i8, ptr %1766, align 1, !tbaa !29
  %1768 = zext i8 %1767 to i64
  %1769 = load i32, ptr %17, align 4, !tbaa !9
  %1770 = add i32 %1769, 8
  %1771 = zext i32 %1770 to i64
  %1772 = shl i64 %1768, %1771
  %1773 = or i64 %1764, %1772
  %1774 = load i64, ptr %21, align 8, !tbaa !13
  %1775 = or i64 %1774, %1773
  store i64 %1775, ptr %21, align 8, !tbaa !13
  %1776 = load ptr, ptr %22, align 8, !tbaa !5
  %1777 = getelementptr inbounds i8, ptr %1776, i64 2
  store ptr %1777, ptr %22, align 8, !tbaa !5
  %1778 = load i32, ptr %17, align 4, !tbaa !9
  %1779 = add i32 %1778, 16
  store i32 %1779, ptr %17, align 4, !tbaa !9
  br label %1780

1780:                                             ; preds = %1757, %1756
  br label %1781

1781:                                             ; preds = %1780, %1647
  %1782 = load ptr, ptr %9, align 8, !tbaa !5
  %1783 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %1782, i32 0, i32 14
  %1784 = getelementptr inbounds [3 x %struct.tinfl_huff_table], ptr %1783, i64 0, i64 0
  %1785 = getelementptr inbounds %struct.tinfl_huff_table, ptr %1784, i32 0, i32 1
  %1786 = load i64, ptr %21, align 8, !tbaa !13
  %1787 = and i64 %1786, 1023
  %1788 = getelementptr inbounds [1024 x i16], ptr %1785, i64 0, i64 %1787
  %1789 = load i16, ptr %1788, align 2, !tbaa !65
  %1790 = sext i16 %1789 to i32
  store i32 %1790, ptr %60, align 4, !tbaa !9
  %1791 = icmp sge i32 %1790, 0
  br i1 %1791, label %1792, label %1797

1792:                                             ; preds = %1781
  %1793 = load i32, ptr %60, align 4, !tbaa !9
  %1794 = ashr i32 %1793, 9
  store i32 %1794, ptr %61, align 4, !tbaa !9
  %1795 = load i32, ptr %60, align 4, !tbaa !9
  %1796 = and i32 %1795, 511
  store i32 %1796, ptr %60, align 4, !tbaa !9
  br label %1820

1797:                                             ; preds = %1781
  store i32 10, ptr %61, align 4, !tbaa !9
  br label %1798

1798:                                             ; preds = %1816, %1797
  %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 %struct.tinfl_huff_table], ptr %1800, i64 0, i64 0
  %1802 = getelementptr inbounds %struct.tinfl_huff_table, ptr %1801, i32 0, i32 2
  %1803 = load i32, ptr %60, align 4, !tbaa !9
  %1804 = xor i32 %1803, -1
  %1805 = sext i32 %1804 to i64
  %1806 = load i64, ptr %21, align 8, !tbaa !13
  %1807 = load i32, ptr %61, align 4, !tbaa !9
  %1808 = add i32 %1807, 1
  store i32 %1808, ptr %61, align 4, !tbaa !9
  %1809 = zext i32 %1807 to i64
  %1810 = lshr i64 %1806, %1809
  %1811 = and i64 %1810, 1
  %1812 = add i64 %1805, %1811
  %1813 = getelementptr inbounds [576 x i16], ptr %1802, i64 0, i64 %1812
  %1814 = load i16, ptr %1813, align 2, !tbaa !65
  %1815 = sext i16 %1814 to i32
  store i32 %1815, ptr %60, align 4, !tbaa !9
  br label %1816

1816:                                             ; preds = %1798
  %1817 = load i32, ptr %60, align 4, !tbaa !9
  %1818 = icmp slt i32 %1817, 0
  br i1 %1818, label %1798, label %1819, !llvm.loop !83

1819:                                             ; preds = %1816
  br label %1820

1820:                                             ; preds = %1819, %1792
  %1821 = load i32, ptr %60, align 4, !tbaa !9
  store i32 %1821, ptr %19, align 4, !tbaa !9
  %1822 = load i32, ptr %61, align 4, !tbaa !9
  %1823 = load i64, ptr %21, align 8, !tbaa !13
  %1824 = zext i32 %1822 to i64
  %1825 = lshr i64 %1823, %1824
  store i64 %1825, ptr %21, align 8, !tbaa !13
  %1826 = load i32, ptr %61, align 4, !tbaa !9
  %1827 = load i32, ptr %17, align 4, !tbaa !9
  %1828 = sub i32 %1827, %1826
  store i32 %1828, ptr %17, align 4, !tbaa !9
  br label %1829

1829:                                             ; preds = %1820
  br label %1830

1830:                                             ; preds = %1829
  %1831 = load i32, ptr %19, align 4, !tbaa !9
  %1832 = icmp uge i32 %1831, 256
  br i1 %1832, label %1833, label %1834

1833:                                             ; preds = %1830
  br label %1984

1834:                                             ; preds = %1830
  br label %1835

1835:                                             ; preds = %1845, %1834
  %1836 = load ptr, ptr %24, align 8, !tbaa !5
  %1837 = load ptr, ptr %25, align 8, !tbaa !5
  %1838 = icmp uge ptr %1836, %1837
  br i1 %1838, label %1839, label %1846

1839:                                             ; preds = %1835
  br label %1840

1840:                                             ; preds = %1839
  store i32 2, ptr %16, align 4, !tbaa !11
  %1841 = load ptr, ptr %9, align 8, !tbaa !5
  %1842 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %1841, i32 0, i32 0
  store i32 24, ptr %1842, align 8, !tbaa !22
  br label %2720

1843:                                             ; preds = %120
  br label %1844

1844:                                             ; preds = %1843
  br label %1845

1845:                                             ; preds = %1844
  br label %1835, !llvm.loop !84

1846:                                             ; preds = %1835
  %1847 = load i32, ptr %19, align 4, !tbaa !9
  %1848 = trunc i32 %1847 to i8
  %1849 = load ptr, ptr %24, align 8, !tbaa !5
  %1850 = getelementptr inbounds i8, ptr %1849, i32 1
  store ptr %1850, ptr %24, align 8, !tbaa !5
  store i8 %1848, ptr %1849, align 1, !tbaa !29
  br label %1983

1851:                                             ; preds = %1639
  call void @llvm.lifetime.start.p0(i64 4, ptr %63) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %64) #5
  %1852 = load i32, ptr %17, align 4, !tbaa !9
  %1853 = icmp ult i32 %1852, 30
  br i1 %1853, label %1854, label %1867

1854:                                             ; preds = %1851
  %1855 = load ptr, ptr %22, align 8, !tbaa !5
  %1856 = load i32, ptr %1855, align 4, !tbaa !9
  %1857 = zext i32 %1856 to i64
  %1858 = load i32, ptr %17, align 4, !tbaa !9
  %1859 = zext i32 %1858 to i64
  %1860 = shl i64 %1857, %1859
  %1861 = load i64, ptr %21, align 8, !tbaa !13
  %1862 = or i64 %1861, %1860
  store i64 %1862, ptr %21, align 8, !tbaa !13
  %1863 = load ptr, ptr %22, align 8, !tbaa !5
  %1864 = getelementptr inbounds i8, ptr %1863, i64 4
  store ptr %1864, ptr %22, align 8, !tbaa !5
  %1865 = load i32, ptr %17, align 4, !tbaa !9
  %1866 = add i32 %1865, 32
  store i32 %1866, ptr %17, align 4, !tbaa !9
  br label %1867

1867:                                             ; preds = %1854, %1851
  %1868 = load ptr, ptr %9, align 8, !tbaa !5
  %1869 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %1868, i32 0, i32 14
  %1870 = getelementptr inbounds [3 x %struct.tinfl_huff_table], ptr %1869, i64 0, i64 0
  %1871 = getelementptr inbounds %struct.tinfl_huff_table, ptr %1870, i32 0, i32 1
  %1872 = load i64, ptr %21, align 8, !tbaa !13
  %1873 = and i64 %1872, 1023
  %1874 = getelementptr inbounds [1024 x i16], ptr %1871, i64 0, i64 %1873
  %1875 = load i16, ptr %1874, align 2, !tbaa !65
  %1876 = sext i16 %1875 to i32
  store i32 %1876, ptr %63, align 4, !tbaa !9
  %1877 = icmp sge i32 %1876, 0
  br i1 %1877, label %1878, label %1881

1878:                                             ; preds = %1867
  %1879 = load i32, ptr %63, align 4, !tbaa !9
  %1880 = ashr i32 %1879, 9
  store i32 %1880, ptr %64, align 4, !tbaa !9
  br label %1904

1881:                                             ; preds = %1867
  store i32 10, ptr %64, align 4, !tbaa !9
  br label %1882

1882:                                             ; preds = %1900, %1881
  %1883 = load ptr, ptr %9, align 8, !tbaa !5
  %1884 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %1883, i32 0, i32 14
  %1885 = getelementptr inbounds [3 x %struct.tinfl_huff_table], ptr %1884, i64 0, i64 0
  %1886 = getelementptr inbounds %struct.tinfl_huff_table, ptr %1885, i32 0, i32 2
  %1887 = load i32, ptr %63, align 4, !tbaa !9
  %1888 = xor i32 %1887, -1
  %1889 = sext i32 %1888 to i64
  %1890 = load i64, ptr %21, align 8, !tbaa !13
  %1891 = load i32, ptr %64, align 4, !tbaa !9
  %1892 = add i32 %1891, 1
  store i32 %1892, ptr %64, align 4, !tbaa !9
  %1893 = zext i32 %1891 to i64
  %1894 = lshr i64 %1890, %1893
  %1895 = and i64 %1894, 1
  %1896 = add i64 %1889, %1895
  %1897 = getelementptr inbounds [576 x i16], ptr %1886, i64 0, i64 %1896
  %1898 = load i16, ptr %1897, align 2, !tbaa !65
  %1899 = sext i16 %1898 to i32
  store i32 %1899, ptr %63, align 4, !tbaa !9
  br label %1900

1900:                                             ; preds = %1882
  %1901 = load i32, ptr %63, align 4, !tbaa !9
  %1902 = icmp slt i32 %1901, 0
  br i1 %1902, label %1882, label %1903, !llvm.loop !85

1903:                                             ; preds = %1900
  br label %1904

1904:                                             ; preds = %1903, %1878
  %1905 = load i32, ptr %63, align 4, !tbaa !9
  store i32 %1905, ptr %19, align 4, !tbaa !9
  %1906 = load i32, ptr %64, align 4, !tbaa !9
  %1907 = load i64, ptr %21, align 8, !tbaa !13
  %1908 = zext i32 %1906 to i64
  %1909 = lshr i64 %1907, %1908
  store i64 %1909, ptr %21, align 8, !tbaa !13
  %1910 = load i32, ptr %64, align 4, !tbaa !9
  %1911 = load i32, ptr %17, align 4, !tbaa !9
  %1912 = sub i32 %1911, %1910
  store i32 %1912, ptr %17, align 4, !tbaa !9
  %1913 = load i32, ptr %19, align 4, !tbaa !9
  %1914 = and i32 %1913, 256
  %1915 = icmp ne i32 %1914, 0
  br i1 %1915, label %1916, label %1917

1916:                                             ; preds = %1904
  store i32 205, ptr %28, align 4
  br label %1980

1917:                                             ; preds = %1904
  %1918 = load ptr, ptr %9, align 8, !tbaa !5
  %1919 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %1918, i32 0, i32 14
  %1920 = getelementptr inbounds [3 x %struct.tinfl_huff_table], ptr %1919, i64 0, i64 0
  %1921 = getelementptr inbounds %struct.tinfl_huff_table, ptr %1920, i32 0, i32 1
  %1922 = load i64, ptr %21, align 8, !tbaa !13
  %1923 = and i64 %1922, 1023
  %1924 = getelementptr inbounds [1024 x i16], ptr %1921, i64 0, i64 %1923
  %1925 = load i16, ptr %1924, align 2, !tbaa !65
  %1926 = sext i16 %1925 to i32
  store i32 %1926, ptr %63, align 4, !tbaa !9
  %1927 = icmp sge i32 %1926, 0
  br i1 %1927, label %1928, label %1931

1928:                                             ; preds = %1917
  %1929 = load i32, ptr %63, align 4, !tbaa !9
  %1930 = ashr i32 %1929, 9
  store i32 %1930, ptr %64, align 4, !tbaa !9
  br label %1954

1931:                                             ; preds = %1917
  store i32 10, ptr %64, align 4, !tbaa !9
  br label %1932

1932:                                             ; preds = %1950, %1931
  %1933 = load ptr, ptr %9, align 8, !tbaa !5
  %1934 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %1933, i32 0, i32 14
  %1935 = getelementptr inbounds [3 x %struct.tinfl_huff_table], ptr %1934, i64 0, i64 0
  %1936 = getelementptr inbounds %struct.tinfl_huff_table, ptr %1935, i32 0, i32 2
  %1937 = load i32, ptr %63, align 4, !tbaa !9
  %1938 = xor i32 %1937, -1
  %1939 = sext i32 %1938 to i64
  %1940 = load i64, ptr %21, align 8, !tbaa !13
  %1941 = load i32, ptr %64, align 4, !tbaa !9
  %1942 = add i32 %1941, 1
  store i32 %1942, ptr %64, align 4, !tbaa !9
  %1943 = zext i32 %1941 to i64
  %1944 = lshr i64 %1940, %1943
  %1945 = and i64 %1944, 1
  %1946 = add i64 %1939, %1945
  %1947 = getelementptr inbounds [576 x i16], ptr %1936, i64 0, i64 %1946
  %1948 = load i16, ptr %1947, align 2, !tbaa !65
  %1949 = sext i16 %1948 to i32
  store i32 %1949, ptr %63, align 4, !tbaa !9
  br label %1950

1950:                                             ; preds = %1932
  %1951 = load i32, ptr %63, align 4, !tbaa !9
  %1952 = icmp slt i32 %1951, 0
  br i1 %1952, label %1932, label %1953, !llvm.loop !86

1953:                                             ; preds = %1950
  br label %1954

1954:                                             ; preds = %1953, %1928
  %1955 = load i32, ptr %64, align 4, !tbaa !9
  %1956 = load i64, ptr %21, align 8, !tbaa !13
  %1957 = zext i32 %1955 to i64
  %1958 = lshr i64 %1956, %1957
  store i64 %1958, ptr %21, align 8, !tbaa !13
  %1959 = load i32, ptr %64, align 4, !tbaa !9
  %1960 = load i32, ptr %17, align 4, !tbaa !9
  %1961 = sub i32 %1960, %1959
  store i32 %1961, ptr %17, align 4, !tbaa !9
  %1962 = load i32, ptr %19, align 4, !tbaa !9
  %1963 = trunc i32 %1962 to i8
  %1964 = load ptr, ptr %24, align 8, !tbaa !5
  %1965 = getelementptr inbounds i8, ptr %1964, i64 0
  store i8 %1963, ptr %1965, align 1, !tbaa !29
  %1966 = load i32, ptr %63, align 4, !tbaa !9
  %1967 = and i32 %1966, 256
  %1968 = icmp ne i32 %1967, 0
  br i1 %1968, label %1969, label %1973

1969:                                             ; preds = %1954
  %1970 = load ptr, ptr %24, align 8, !tbaa !5
  %1971 = getelementptr inbounds i8, ptr %1970, i32 1
  store ptr %1971, ptr %24, align 8, !tbaa !5
  %1972 = load i32, ptr %63, align 4, !tbaa !9
  store i32 %1972, ptr %19, align 4, !tbaa !9
  store i32 205, ptr %28, align 4
  br label %1980

1973:                                             ; preds = %1954
  %1974 = load i32, ptr %63, align 4, !tbaa !9
  %1975 = trunc i32 %1974 to i8
  %1976 = load ptr, ptr %24, align 8, !tbaa !5
  %1977 = getelementptr inbounds i8, ptr %1976, i64 1
  store i8 %1975, ptr %1977, align 1, !tbaa !29
  %1978 = load ptr, ptr %24, align 8, !tbaa !5
  %1979 = getelementptr inbounds i8, ptr %1978, i64 2
  store ptr %1979, ptr %24, align 8, !tbaa !5
  store i32 0, ptr %28, align 4
  br label %1980

1980:                                             ; preds = %1973, %1969, %1916
  call void @llvm.lifetime.end.p0(i64 4, ptr %64) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %63) #5
  %1981 = load i32, ptr %28, align 4
  switch i32 %1981, label %2940 [
    i32 0, label %1982
    i32 205, label %1984
  ]

1982:                                             ; preds = %1980
  br label %1983

1983:                                             ; preds = %1982, %1846
  br label %1632, !llvm.loop !87

1984:                                             ; preds = %1980, %1833
  %1985 = load i32, ptr %19, align 4, !tbaa !9
  %1986 = and i32 %1985, 511
  store i32 %1986, ptr %19, align 4, !tbaa !9
  %1987 = icmp eq i32 %1986, 256
  br i1 %1987, label %1988, label %1989

1988:                                             ; preds = %1984
  br label %2510

1989:                                             ; preds = %1984
  %1990 = load i32, ptr %19, align 4, !tbaa !9
  %1991 = sub i32 %1990, 257
  %1992 = zext i32 %1991 to i64
  %1993 = getelementptr inbounds [31 x i32], ptr @_ZZ16tinfl_decompressE14s_length_extra, i64 0, i64 %1992
  %1994 = load i32, ptr %1993, align 4, !tbaa !9
  store i32 %1994, ptr %20, align 4, !tbaa !9
  %1995 = load i32, ptr %19, align 4, !tbaa !9
  %1996 = sub i32 %1995, 257
  %1997 = zext i32 %1996 to i64
  %1998 = getelementptr inbounds [31 x i32], ptr @_ZZ16tinfl_decompressE13s_length_base, i64 0, i64 %1997
  %1999 = load i32, ptr %1998, align 4, !tbaa !9
  store i32 %1999, ptr %19, align 4, !tbaa !9
  %2000 = load i32, ptr %20, align 4, !tbaa !9
  %2001 = icmp ne i32 %2000, 0
  br i1 %2001, label %2002, label %2067

2002:                                             ; preds = %1989
  br label %2003

2003:                                             ; preds = %2002
  %2004 = load i32, ptr %17, align 4, !tbaa !9
  %2005 = load i32, ptr %20, align 4, !tbaa !9
  %2006 = icmp ult i32 %2004, %2005
  br i1 %2006, label %2007, label %2047

2007:                                             ; preds = %2003
  br label %2008

2008:                                             ; preds = %2042, %2007
  br label %2009

2009:                                             ; preds = %2008
  br label %2010

2010:                                             ; preds = %2025, %2009
  %2011 = load ptr, ptr %22, align 8, !tbaa !5
  %2012 = load ptr, ptr %23, align 8, !tbaa !5
  %2013 = icmp uge ptr %2011, %2012
  br i1 %2013, label %2014, label %2026

2014:                                             ; preds = %2010
  br label %2015

2015:                                             ; preds = %2014
  %2016 = load i32, ptr %15, align 4, !tbaa !9
  %2017 = and i32 %2016, 2
  %2018 = icmp ne i32 %2017, 0
  %2019 = zext i1 %2018 to i64
  %2020 = select i1 %2018, i32 1, i32 -4
  store i32 %2020, ptr %16, align 4, !tbaa !11
  %2021 = load ptr, ptr %9, align 8, !tbaa !5
  %2022 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %2021, i32 0, i32 0
  store i32 25, ptr %2022, align 8, !tbaa !22
  br label %2720

2023:                                             ; preds = %120
  br label %2024

2024:                                             ; preds = %2023
  br label %2025

2025:                                             ; preds = %2024
  br label %2010, !llvm.loop !88

2026:                                             ; preds = %2010
  %2027 = load ptr, ptr %22, align 8, !tbaa !5
  %2028 = getelementptr inbounds i8, ptr %2027, i32 1
  store ptr %2028, ptr %22, align 8, !tbaa !5
  %2029 = load i8, ptr %2027, align 1, !tbaa !29
  %2030 = zext i8 %2029 to i32
  store i32 %2030, ptr %66, align 4, !tbaa !9
  br label %2031

2031:                                             ; preds = %2026
  br label %2032

2032:                                             ; preds = %2031
  %2033 = load i32, ptr %66, align 4, !tbaa !9
  %2034 = zext i32 %2033 to i64
  %2035 = load i32, ptr %17, align 4, !tbaa !9
  %2036 = zext i32 %2035 to i64
  %2037 = shl i64 %2034, %2036
  %2038 = load i64, ptr %21, align 8, !tbaa !13
  %2039 = or i64 %2038, %2037
  store i64 %2039, ptr %21, align 8, !tbaa !13
  %2040 = load i32, ptr %17, align 4, !tbaa !9
  %2041 = add i32 %2040, 8
  store i32 %2041, ptr %17, align 4, !tbaa !9
  br label %2042

2042:                                             ; preds = %2032
  %2043 = load i32, ptr %17, align 4, !tbaa !9
  %2044 = load i32, ptr %20, align 4, !tbaa !9
  %2045 = icmp ult i32 %2043, %2044
  br i1 %2045, label %2008, label %2046, !llvm.loop !89

2046:                                             ; preds = %2042
  br label %2047

2047:                                             ; preds = %2046, %2003
  %2048 = load i64, ptr %21, align 8, !tbaa !13
  %2049 = load i32, ptr %20, align 4, !tbaa !9
  %2050 = shl i32 1, %2049
  %2051 = sub nsw i32 %2050, 1
  %2052 = sext i32 %2051 to i64
  %2053 = and i64 %2048, %2052
  %2054 = trunc i64 %2053 to i32
  store i32 %2054, ptr %65, align 4, !tbaa !9
  %2055 = load i32, ptr %20, align 4, !tbaa !9
  %2056 = load i64, ptr %21, align 8, !tbaa !13
  %2057 = zext i32 %2055 to i64
  %2058 = lshr i64 %2056, %2057
  store i64 %2058, ptr %21, align 8, !tbaa !13
  %2059 = load i32, ptr %20, align 4, !tbaa !9
  %2060 = load i32, ptr %17, align 4, !tbaa !9
  %2061 = sub i32 %2060, %2059
  store i32 %2061, ptr %17, align 4, !tbaa !9
  br label %2062

2062:                                             ; preds = %2047
  br label %2063

2063:                                             ; preds = %2062
  %2064 = load i32, ptr %65, align 4, !tbaa !9
  %2065 = load i32, ptr %19, align 4, !tbaa !9
  %2066 = add i32 %2065, %2064
  store i32 %2066, ptr %19, align 4, !tbaa !9
  br label %2067

2067:                                             ; preds = %2063, %1989
  br label %2068

2068:                                             ; preds = %2067
  %2069 = load i32, ptr %17, align 4, !tbaa !9
  %2070 = icmp ult i32 %2069, 15
  br i1 %2070, label %2071, label %2202

2071:                                             ; preds = %2068
  %2072 = load ptr, ptr %23, align 8, !tbaa !5
  %2073 = load ptr, ptr %22, align 8, !tbaa !5
  %2074 = ptrtoint ptr %2072 to i64
  %2075 = ptrtoint ptr %2073 to i64
  %2076 = sub i64 %2074, %2075
  %2077 = icmp slt i64 %2076, 2
  br i1 %2077, label %2078, label %2178

2078:                                             ; preds = %2071
  br label %2079

2079:                                             ; preds = %2174, %2078
  %2080 = load ptr, ptr %9, align 8, !tbaa !5
  %2081 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %2080, i32 0, i32 14
  %2082 = getelementptr inbounds [3 x %struct.tinfl_huff_table], ptr %2081, i64 0, i64 1
  %2083 = getelementptr inbounds %struct.tinfl_huff_table, ptr %2082, i32 0, i32 1
  %2084 = load i64, ptr %21, align 8, !tbaa !13
  %2085 = and i64 %2084, 1023
  %2086 = getelementptr inbounds [1024 x i16], ptr %2083, i64 0, i64 %2085
  %2087 = load i16, ptr %2086, align 2, !tbaa !65
  %2088 = sext i16 %2087 to i32
  store i32 %2088, ptr %67, align 4, !tbaa !9
  %2089 = load i32, ptr %67, align 4, !tbaa !9
  %2090 = icmp sge i32 %2089, 0
  br i1 %2090, label %2091, label %2102

2091:                                             ; preds = %2079
  %2092 = load i32, ptr %67, align 4, !tbaa !9
  %2093 = ashr i32 %2092, 9
  store i32 %2093, ptr %68, align 4, !tbaa !9
  %2094 = load i32, ptr %68, align 4, !tbaa !9
  %2095 = icmp ne i32 %2094, 0
  br i1 %2095, label %2096, label %2101

2096:                                             ; preds = %2091
  %2097 = load i32, ptr %17, align 4, !tbaa !9
  %2098 = load i32, ptr %68, align 4, !tbaa !9
  %2099 = icmp uge i32 %2097, %2098
  br i1 %2099, label %2100, label %2101

2100:                                             ; preds = %2096
  br label %2177

2101:                                             ; preds = %2096, %2091
  br label %2140

2102:                                             ; preds = %2079
  %2103 = load i32, ptr %17, align 4, !tbaa !9
  %2104 = icmp ugt i32 %2103, 10
  br i1 %2104, label %2105, label %2139

2105:                                             ; preds = %2102
  store i32 10, ptr %68, align 4, !tbaa !9
  br label %2106

2106:                                             ; preds = %2132, %2105
  %2107 = load ptr, ptr %9, align 8, !tbaa !5
  %2108 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %2107, i32 0, i32 14
  %2109 = getelementptr inbounds [3 x %struct.tinfl_huff_table], ptr %2108, i64 0, i64 1
  %2110 = getelementptr inbounds %struct.tinfl_huff_table, ptr %2109, i32 0, i32 2
  %2111 = load i32, ptr %67, align 4, !tbaa !9
  %2112 = xor i32 %2111, -1
  %2113 = sext i32 %2112 to i64
  %2114 = load i64, ptr %21, align 8, !tbaa !13
  %2115 = load i32, ptr %68, align 4, !tbaa !9
  %2116 = add i32 %2115, 1
  store i32 %2116, ptr %68, align 4, !tbaa !9
  %2117 = zext i32 %2115 to i64
  %2118 = lshr i64 %2114, %2117
  %2119 = and i64 %2118, 1
  %2120 = add i64 %2113, %2119
  %2121 = getelementptr inbounds [576 x i16], ptr %2110, i64 0, i64 %2120
  %2122 = load i16, ptr %2121, align 2, !tbaa !65
  %2123 = sext i16 %2122 to i32
  store i32 %2123, ptr %67, align 4, !tbaa !9
  br label %2124

2124:                                             ; preds = %2106
  %2125 = load i32, ptr %67, align 4, !tbaa !9
  %2126 = icmp slt i32 %2125, 0
  br i1 %2126, label %2127, label %2132

2127:                                             ; preds = %2124
  %2128 = load i32, ptr %17, align 4, !tbaa !9
  %2129 = load i32, ptr %68, align 4, !tbaa !9
  %2130 = add i32 %2129, 1
  %2131 = icmp uge i32 %2128, %2130
  br label %2132

2132:                                             ; preds = %2127, %2124
  %2133 = phi i1 [ false, %2124 ], [ %2131, %2127 ]
  br i1 %2133, label %2106, label %2134, !llvm.loop !90

2134:                                             ; preds = %2132
  %2135 = load i32, ptr %67, align 4, !tbaa !9
  %2136 = icmp sge i32 %2135, 0
  br i1 %2136, label %2137, label %2138

2137:                                             ; preds = %2134
  br label %2177

2138:                                             ; preds = %2134
  br label %2139

2139:                                             ; preds = %2138, %2102
  br label %2140

2140:                                             ; preds = %2139, %2101
  br label %2141

2141:                                             ; preds = %2140
  br label %2142

2142:                                             ; preds = %2157, %2141
  %2143 = load ptr, ptr %22, align 8, !tbaa !5
  %2144 = load ptr, ptr %23, align 8, !tbaa !5
  %2145 = icmp uge ptr %2143, %2144
  br i1 %2145, label %2146, label %2158

2146:                                             ; preds = %2142
  br label %2147

2147:                                             ; preds = %2146
  %2148 = load i32, ptr %15, align 4, !tbaa !9
  %2149 = and i32 %2148, 2
  %2150 = icmp ne i32 %2149, 0
  %2151 = zext i1 %2150 to i64
  %2152 = select i1 %2150, i32 1, i32 -4
  store i32 %2152, ptr %16, align 4, !tbaa !11
  %2153 = load ptr, ptr %9, align 8, !tbaa !5
  %2154 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %2153, i32 0, i32 0
  store i32 26, ptr %2154, align 8, !tbaa !22
  br label %2720

2155:                                             ; preds = %120
  br label %2156

2156:                                             ; preds = %2155
  br label %2157

2157:                                             ; preds = %2156
  br label %2142, !llvm.loop !91

2158:                                             ; preds = %2142
  %2159 = load ptr, ptr %22, align 8, !tbaa !5
  %2160 = getelementptr inbounds i8, ptr %2159, i32 1
  store ptr %2160, ptr %22, align 8, !tbaa !5
  %2161 = load i8, ptr %2159, align 1, !tbaa !29
  %2162 = zext i8 %2161 to i32
  store i32 %2162, ptr %69, align 4, !tbaa !9
  br label %2163

2163:                                             ; preds = %2158
  br label %2164

2164:                                             ; preds = %2163
  %2165 = load i32, ptr %69, align 4, !tbaa !9
  %2166 = zext i32 %2165 to i64
  %2167 = load i32, ptr %17, align 4, !tbaa !9
  %2168 = zext i32 %2167 to i64
  %2169 = shl i64 %2166, %2168
  %2170 = load i64, ptr %21, align 8, !tbaa !13
  %2171 = or i64 %2170, %2169
  store i64 %2171, ptr %21, align 8, !tbaa !13
  %2172 = load i32, ptr %17, align 4, !tbaa !9
  %2173 = add i32 %2172, 8
  store i32 %2173, ptr %17, align 4, !tbaa !9
  br label %2174

2174:                                             ; preds = %2164
  %2175 = load i32, ptr %17, align 4, !tbaa !9
  %2176 = icmp ult i32 %2175, 15
  br i1 %2176, label %2079, label %2177, !llvm.loop !92

2177:                                             ; preds = %2174, %2137, %2100
  br label %2201

2178:                                             ; preds = %2071
  %2179 = load ptr, ptr %22, align 8, !tbaa !5
  %2180 = getelementptr inbounds i8, ptr %2179, i64 0
  %2181 = load i8, ptr %2180, align 1, !tbaa !29
  %2182 = zext i8 %2181 to i64
  %2183 = load i32, ptr %17, align 4, !tbaa !9
  %2184 = zext i32 %2183 to i64
  %2185 = shl i64 %2182, %2184
  %2186 = load ptr, ptr %22, align 8, !tbaa !5
  %2187 = getelementptr inbounds i8, ptr %2186, i64 1
  %2188 = load i8, ptr %2187, align 1, !tbaa !29
  %2189 = zext i8 %2188 to i64
  %2190 = load i32, ptr %17, align 4, !tbaa !9
  %2191 = add i32 %2190, 8
  %2192 = zext i32 %2191 to i64
  %2193 = shl i64 %2189, %2192
  %2194 = or i64 %2185, %2193
  %2195 = load i64, ptr %21, align 8, !tbaa !13
  %2196 = or i64 %2195, %2194
  store i64 %2196, ptr %21, align 8, !tbaa !13
  %2197 = load ptr, ptr %22, align 8, !tbaa !5
  %2198 = getelementptr inbounds i8, ptr %2197, i64 2
  store ptr %2198, ptr %22, align 8, !tbaa !5
  %2199 = load i32, ptr %17, align 4, !tbaa !9
  %2200 = add i32 %2199, 16
  store i32 %2200, ptr %17, align 4, !tbaa !9
  br label %2201

2201:                                             ; preds = %2178, %2177
  br label %2202

2202:                                             ; preds = %2201, %2068
  %2203 = load ptr, ptr %9, align 8, !tbaa !5
  %2204 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %2203, i32 0, i32 14
  %2205 = getelementptr inbounds [3 x %struct.tinfl_huff_table], ptr %2204, i64 0, i64 1
  %2206 = getelementptr inbounds %struct.tinfl_huff_table, ptr %2205, i32 0, i32 1
  %2207 = load i64, ptr %21, align 8, !tbaa !13
  %2208 = and i64 %2207, 1023
  %2209 = getelementptr inbounds [1024 x i16], ptr %2206, i64 0, i64 %2208
  %2210 = load i16, ptr %2209, align 2, !tbaa !65
  %2211 = sext i16 %2210 to i32
  store i32 %2211, ptr %67, align 4, !tbaa !9
  %2212 = icmp sge i32 %2211, 0
  br i1 %2212, label %2213, label %2218

2213:                                             ; preds = %2202
  %2214 = load i32, ptr %67, align 4, !tbaa !9
  %2215 = ashr i32 %2214, 9
  store i32 %2215, ptr %68, align 4, !tbaa !9
  %2216 = load i32, ptr %67, align 4, !tbaa !9
  %2217 = and i32 %2216, 511
  store i32 %2217, ptr %67, align 4, !tbaa !9
  br label %2241

2218:                                             ; preds = %2202
  store i32 10, ptr %68, align 4, !tbaa !9
  br label %2219

2219:                                             ; preds = %2237, %2218
  %2220 = load ptr, ptr %9, align 8, !tbaa !5
  %2221 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %2220, i32 0, i32 14
  %2222 = getelementptr inbounds [3 x %struct.tinfl_huff_table], ptr %2221, i64 0, i64 1
  %2223 = getelementptr inbounds %struct.tinfl_huff_table, ptr %2222, i32 0, i32 2
  %2224 = load i32, ptr %67, align 4, !tbaa !9
  %2225 = xor i32 %2224, -1
  %2226 = sext i32 %2225 to i64
  %2227 = load i64, ptr %21, align 8, !tbaa !13
  %2228 = load i32, ptr %68, align 4, !tbaa !9
  %2229 = add i32 %2228, 1
  store i32 %2229, ptr %68, align 4, !tbaa !9
  %2230 = zext i32 %2228 to i64
  %2231 = lshr i64 %2227, %2230
  %2232 = and i64 %2231, 1
  %2233 = add i64 %2226, %2232
  %2234 = getelementptr inbounds [576 x i16], ptr %2223, i64 0, i64 %2233
  %2235 = load i16, ptr %2234, align 2, !tbaa !65
  %2236 = sext i16 %2235 to i32
  store i32 %2236, ptr %67, align 4, !tbaa !9
  br label %2237

2237:                                             ; preds = %2219
  %2238 = load i32, ptr %67, align 4, !tbaa !9
  %2239 = icmp slt i32 %2238, 0
  br i1 %2239, label %2219, label %2240, !llvm.loop !93

2240:                                             ; preds = %2237
  br label %2241

2241:                                             ; preds = %2240, %2213
  %2242 = load i32, ptr %67, align 4, !tbaa !9
  store i32 %2242, ptr %18, align 4, !tbaa !9
  %2243 = load i32, ptr %68, align 4, !tbaa !9
  %2244 = load i64, ptr %21, align 8, !tbaa !13
  %2245 = zext i32 %2243 to i64
  %2246 = lshr i64 %2244, %2245
  store i64 %2246, ptr %21, align 8, !tbaa !13
  %2247 = load i32, ptr %68, align 4, !tbaa !9
  %2248 = load i32, ptr %17, align 4, !tbaa !9
  %2249 = sub i32 %2248, %2247
  store i32 %2249, ptr %17, align 4, !tbaa !9
  br label %2250

2250:                                             ; preds = %2241
  br label %2251

2251:                                             ; preds = %2250
  %2252 = load i32, ptr %18, align 4, !tbaa !9
  %2253 = zext i32 %2252 to i64
  %2254 = getelementptr inbounds [32 x i32], ptr @_ZZ16tinfl_decompressE12s_dist_extra, i64 0, i64 %2253
  %2255 = load i32, ptr %2254, align 4, !tbaa !9
  store i32 %2255, ptr %20, align 4, !tbaa !9
  %2256 = load i32, ptr %18, align 4, !tbaa !9
  %2257 = zext i32 %2256 to i64
  %2258 = getelementptr inbounds [32 x i32], ptr @_ZZ16tinfl_decompressE11s_dist_base, i64 0, i64 %2257
  %2259 = load i32, ptr %2258, align 4, !tbaa !9
  store i32 %2259, ptr %18, align 4, !tbaa !9
  %2260 = load i32, ptr %20, align 4, !tbaa !9
  %2261 = icmp ne i32 %2260, 0
  br i1 %2261, label %2262, label %2327

2262:                                             ; preds = %2251
  br label %2263

2263:                                             ; preds = %2262
  %2264 = load i32, ptr %17, align 4, !tbaa !9
  %2265 = load i32, ptr %20, align 4, !tbaa !9
  %2266 = icmp ult i32 %2264, %2265
  br i1 %2266, label %2267, label %2307

2267:                                             ; preds = %2263
  br label %2268

2268:                                             ; preds = %2302, %2267
  br label %2269

2269:                                             ; preds = %2268
  br label %2270

2270:                                             ; preds = %2285, %2269
  %2271 = load ptr, ptr %22, align 8, !tbaa !5
  %2272 = load ptr, ptr %23, align 8, !tbaa !5
  %2273 = icmp uge ptr %2271, %2272
  br i1 %2273, label %2274, label %2286

2274:                                             ; preds = %2270
  br label %2275

2275:                                             ; preds = %2274
  %2276 = load i32, ptr %15, align 4, !tbaa !9
  %2277 = and i32 %2276, 2
  %2278 = icmp ne i32 %2277, 0
  %2279 = zext i1 %2278 to i64
  %2280 = select i1 %2278, i32 1, i32 -4
  store i32 %2280, ptr %16, align 4, !tbaa !11
  %2281 = load ptr, ptr %9, align 8, !tbaa !5
  %2282 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %2281, i32 0, i32 0
  store i32 27, ptr %2282, align 8, !tbaa !22
  br label %2720

2283:                                             ; preds = %120
  br label %2284

2284:                                             ; preds = %2283
  br label %2285

2285:                                             ; preds = %2284
  br label %2270, !llvm.loop !94

2286:                                             ; preds = %2270
  %2287 = load ptr, ptr %22, align 8, !tbaa !5
  %2288 = getelementptr inbounds i8, ptr %2287, i32 1
  store ptr %2288, ptr %22, align 8, !tbaa !5
  %2289 = load i8, ptr %2287, align 1, !tbaa !29
  %2290 = zext i8 %2289 to i32
  store i32 %2290, ptr %71, align 4, !tbaa !9
  br label %2291

2291:                                             ; preds = %2286
  br label %2292

2292:                                             ; preds = %2291
  %2293 = load i32, ptr %71, align 4, !tbaa !9
  %2294 = zext i32 %2293 to i64
  %2295 = load i32, ptr %17, align 4, !tbaa !9
  %2296 = zext i32 %2295 to i64
  %2297 = shl i64 %2294, %2296
  %2298 = load i64, ptr %21, align 8, !tbaa !13
  %2299 = or i64 %2298, %2297
  store i64 %2299, ptr %21, align 8, !tbaa !13
  %2300 = load i32, ptr %17, align 4, !tbaa !9
  %2301 = add i32 %2300, 8
  store i32 %2301, ptr %17, align 4, !tbaa !9
  br label %2302

2302:                                             ; preds = %2292
  %2303 = load i32, ptr %17, align 4, !tbaa !9
  %2304 = load i32, ptr %20, align 4, !tbaa !9
  %2305 = icmp ult i32 %2303, %2304
  br i1 %2305, label %2268, label %2306, !llvm.loop !95

2306:                                             ; preds = %2302
  br label %2307

2307:                                             ; preds = %2306, %2263
  %2308 = load i64, ptr %21, align 8, !tbaa !13
  %2309 = load i32, ptr %20, align 4, !tbaa !9
  %2310 = shl i32 1, %2309
  %2311 = sub nsw i32 %2310, 1
  %2312 = sext i32 %2311 to i64
  %2313 = and i64 %2308, %2312
  %2314 = trunc i64 %2313 to i32
  store i32 %2314, ptr %70, align 4, !tbaa !9
  %2315 = load i32, ptr %20, align 4, !tbaa !9
  %2316 = load i64, ptr %21, align 8, !tbaa !13
  %2317 = zext i32 %2315 to i64
  %2318 = lshr i64 %2316, %2317
  store i64 %2318, ptr %21, align 8, !tbaa !13
  %2319 = load i32, ptr %20, align 4, !tbaa !9
  %2320 = load i32, ptr %17, align 4, !tbaa !9
  %2321 = sub i32 %2320, %2319
  store i32 %2321, ptr %17, align 4, !tbaa !9
  br label %2322

2322:                                             ; preds = %2307
  br label %2323

2323:                                             ; preds = %2322
  %2324 = load i32, ptr %70, align 4, !tbaa !9
  %2325 = load i32, ptr %18, align 4, !tbaa !9
  %2326 = add i32 %2325, %2324
  store i32 %2326, ptr %18, align 4, !tbaa !9
  br label %2327

2327:                                             ; preds = %2323, %2251
  %2328 = load ptr, ptr %24, align 8, !tbaa !5
  %2329 = load ptr, ptr %12, align 8, !tbaa !5
  %2330 = ptrtoint ptr %2328 to i64
  %2331 = ptrtoint ptr %2329 to i64
  %2332 = sub i64 %2330, %2331
  store i64 %2332, ptr %27, align 8, !tbaa !13
  %2333 = load i32, ptr %18, align 4, !tbaa !9
  %2334 = zext i32 %2333 to i64
  %2335 = load i64, ptr %27, align 8, !tbaa !13
  %2336 = icmp ugt i64 %2334, %2335
  br i1 %2336, label %2337, label %2352

2337:                                             ; preds = %2327
  %2338 = load i32, ptr %15, align 4, !tbaa !9
  %2339 = and i32 %2338, 4
  %2340 = icmp ne i32 %2339, 0
  br i1 %2340, label %2341, label %2352

2341:                                             ; preds = %2337
  br label %2342

2342:                                             ; preds = %2341
  br label %2343

2343:                                             ; preds = %2349, %2342
  br label %2344

2344:                                             ; preds = %2343
  store i32 -1, ptr %16, align 4, !tbaa !11
  %2345 = load ptr, ptr %9, align 8, !tbaa !5
  %2346 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %2345, i32 0, i32 0
  store i32 37, ptr %2346, align 8, !tbaa !22
  br label %2720

2347:                                             ; preds = %120
  br label %2348

2348:                                             ; preds = %2347
  br label %2349

2349:                                             ; preds = %2348
  br label %2343, !llvm.loop !96

2350:                                             ; No predecessors!
  br label %2351

2351:                                             ; preds = %2350
  br label %2352

2352:                                             ; preds = %2351, %2337, %2327
  %2353 = load ptr, ptr %12, align 8, !tbaa !5
  %2354 = load i64, ptr %27, align 8, !tbaa !13
  %2355 = load i32, ptr %18, align 4, !tbaa !9
  %2356 = zext i32 %2355 to i64
  %2357 = sub i64 %2354, %2356
  %2358 = load i64, ptr %26, align 8, !tbaa !13
  %2359 = and i64 %2357, %2358
  %2360 = getelementptr inbounds i8, ptr %2353, i64 %2359
  store ptr %2360, ptr %59, align 8, !tbaa !5
  %2361 = load ptr, ptr %24, align 8, !tbaa !5
  %2362 = load ptr, ptr %59, align 8, !tbaa !5
  %2363 = icmp ugt ptr %2361, %2362
  br i1 %2363, label %2364, label %2366

2364:                                             ; preds = %2352
  %2365 = load ptr, ptr %24, align 8, !tbaa !5
  br label %2368

2366:                                             ; preds = %2352
  %2367 = load ptr, ptr %59, align 8, !tbaa !5
  br label %2368

2368:                                             ; preds = %2366, %2364
  %2369 = phi ptr [ %2365, %2364 ], [ %2367, %2366 ]
  %2370 = load i32, ptr %19, align 4, !tbaa !9
  %2371 = zext i32 %2370 to i64
  %2372 = getelementptr inbounds i8, ptr %2369, i64 %2371
  %2373 = load ptr, ptr %25, align 8, !tbaa !5
  %2374 = icmp ugt ptr %2372, %2373
  br i1 %2374, label %2375, label %2406

2375:                                             ; preds = %2368
  br label %2376

2376:                                             ; preds = %2392, %2375
  %2377 = load i32, ptr %19, align 4, !tbaa !9
  %2378 = add i32 %2377, -1
  store i32 %2378, ptr %19, align 4, !tbaa !9
  %2379 = icmp ne i32 %2377, 0
  br i1 %2379, label %2380, label %2405

2380:                                             ; preds = %2376
  br label %2381

2381:                                             ; preds = %2391, %2380
  %2382 = load ptr, ptr %24, align 8, !tbaa !5
  %2383 = load ptr, ptr %25, align 8, !tbaa !5
  %2384 = icmp uge ptr %2382, %2383
  br i1 %2384, label %2385, label %2392

2385:                                             ; preds = %2381
  br label %2386

2386:                                             ; preds = %2385
  store i32 2, ptr %16, align 4, !tbaa !11
  %2387 = load ptr, ptr %9, align 8, !tbaa !5
  %2388 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %2387, i32 0, i32 0
  store i32 53, ptr %2388, align 8, !tbaa !22
  br label %2720

2389:                                             ; preds = %120
  br label %2390

2390:                                             ; preds = %2389
  br label %2391

2391:                                             ; preds = %2390
  br label %2381, !llvm.loop !97

2392:                                             ; preds = %2381
  %2393 = load ptr, ptr %12, align 8, !tbaa !5
  %2394 = load i64, ptr %27, align 8, !tbaa !13
  %2395 = add i64 %2394, 1
  store i64 %2395, ptr %27, align 8, !tbaa !13
  %2396 = load i32, ptr %18, align 4, !tbaa !9
  %2397 = zext i32 %2396 to i64
  %2398 = sub i64 %2394, %2397
  %2399 = load i64, ptr %26, align 8, !tbaa !13
  %2400 = and i64 %2398, %2399
  %2401 = getelementptr inbounds i8, ptr %2393, i64 %2400
  %2402 = load i8, ptr %2401, align 1, !tbaa !29
  %2403 = load ptr, ptr %24, align 8, !tbaa !5
  %2404 = getelementptr inbounds i8, ptr %2403, i32 1
  store ptr %2404, ptr %24, align 8, !tbaa !5
  store i8 %2402, ptr %2403, align 1, !tbaa !29
  br label %2376, !llvm.loop !98

2405:                                             ; preds = %2376
  br label %1631, !llvm.loop !99

2406:                                             ; preds = %2368
  %2407 = load i32, ptr %19, align 4, !tbaa !9
  %2408 = icmp uge i32 %2407, 9
  br i1 %2408, label %2409, label %2460

2409:                                             ; preds = %2406
  %2410 = load i32, ptr %19, align 4, !tbaa !9
  %2411 = load i32, ptr %18, align 4, !tbaa !9
  %2412 = icmp ule i32 %2410, %2411
  br i1 %2412, label %2413, label %2460

2413:                                             ; preds = %2409
  call void @llvm.lifetime.start.p0(i64 8, ptr %72) #5
  %2414 = load ptr, ptr %59, align 8, !tbaa !5
  %2415 = load i32, ptr %19, align 4, !tbaa !9
  %2416 = and i32 %2415, -8
  %2417 = zext i32 %2416 to i64
  %2418 = getelementptr inbounds i8, ptr %2414, i64 %2417
  store ptr %2418, ptr %72, align 8, !tbaa !5
  br label %2419

2419:                                             ; preds = %2424, %2413
  %2420 = load ptr, ptr %24, align 8, !tbaa !5
  %2421 = load ptr, ptr %59, align 8, !tbaa !5
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %2420, ptr align 1 %2421, i64 8, i1 false)
  %2422 = load ptr, ptr %24, align 8, !tbaa !5
  %2423 = getelementptr inbounds i8, ptr %2422, i64 8
  store ptr %2423, ptr %24, align 8, !tbaa !5
  br label %2424

2424:                                             ; preds = %2419
  %2425 = load ptr, ptr %59, align 8, !tbaa !5
  %2426 = getelementptr inbounds i8, ptr %2425, i64 8
  store ptr %2426, ptr %59, align 8, !tbaa !5
  %2427 = load ptr, ptr %72, align 8, !tbaa !5
  %2428 = icmp ult ptr %2426, %2427
  br i1 %2428, label %2419, label %2429, !llvm.loop !100

2429:                                             ; preds = %2424
  %2430 = load i32, ptr %19, align 4, !tbaa !9
  %2431 = and i32 %2430, 7
  store i32 %2431, ptr %19, align 4, !tbaa !9
  %2432 = icmp ult i32 %2431, 3
  br i1 %2432, label %2433, label %2456

2433:                                             ; preds = %2429
  %2434 = load i32, ptr %19, align 4, !tbaa !9
  %2435 = icmp ne i32 %2434, 0
  br i1 %2435, label %2436, label %2455

2436:                                             ; preds = %2433
  %2437 = load ptr, ptr %59, align 8, !tbaa !5
  %2438 = getelementptr inbounds i8, ptr %2437, i64 0
  %2439 = load i8, ptr %2438, align 1, !tbaa !29
  %2440 = load ptr, ptr %24, align 8, !tbaa !5
  %2441 = getelementptr inbounds i8, ptr %2440, i64 0
  store i8 %2439, ptr %2441, align 1, !tbaa !29
  %2442 = load i32, ptr %19, align 4, !tbaa !9
  %2443 = icmp ugt i32 %2442, 1
  br i1 %2443, label %2444, label %2450

2444:                                             ; preds = %2436
  %2445 = load ptr, ptr %59, align 8, !tbaa !5
  %2446 = getelementptr inbounds i8, ptr %2445, i64 1
  %2447 = load i8, ptr %2446, align 1, !tbaa !29
  %2448 = load ptr, ptr %24, align 8, !tbaa !5
  %2449 = getelementptr inbounds i8, ptr %2448, i64 1
  store i8 %2447, ptr %2449, align 1, !tbaa !29
  br label %2450

2450:                                             ; preds = %2444, %2436
  %2451 = load i32, ptr %19, align 4, !tbaa !9
  %2452 = load ptr, ptr %24, align 8, !tbaa !5
  %2453 = zext i32 %2451 to i64
  %2454 = getelementptr inbounds i8, ptr %2452, i64 %2453
  store ptr %2454, ptr %24, align 8, !tbaa !5
  br label %2455

2455:                                             ; preds = %2450, %2433
  store i32 204, ptr %28, align 4
  br label %2457, !llvm.loop !99

2456:                                             ; preds = %2429
  store i32 0, ptr %28, align 4
  br label %2457

2457:                                             ; preds = %2456, %2455
  call void @llvm.lifetime.end.p0(i64 8, ptr %72) #5
  %2458 = load i32, ptr %28, align 4
  switch i32 %2458, label %2940 [
    i32 0, label %2459
    i32 204, label %1631
  ]

2459:                                             ; preds = %2457
  br label %2460

2460:                                             ; preds = %2459, %2409, %2406
  br label %2461

2461:                                             ; preds = %2460
  br label %2462

2462:                                             ; preds = %2465, %2461
  %2463 = load i32, ptr %19, align 4, !tbaa !9
  %2464 = icmp ugt i32 %2463, 2
  br i1 %2464, label %2465, label %2487

2465:                                             ; preds = %2462
  %2466 = load ptr, ptr %59, align 8, !tbaa !5
  %2467 = getelementptr inbounds i8, ptr %2466, i64 0
  %2468 = load i8, ptr %2467, align 1, !tbaa !29
  %2469 = load ptr, ptr %24, align 8, !tbaa !5
  %2470 = getelementptr inbounds i8, ptr %2469, i64 0
  store i8 %2468, ptr %2470, align 1, !tbaa !29
  %2471 = load ptr, ptr %59, align 8, !tbaa !5
  %2472 = getelementptr inbounds i8, ptr %2471, i64 1
  %2473 = load i8, ptr %2472, align 1, !tbaa !29
  %2474 = load ptr, ptr %24, align 8, !tbaa !5
  %2475 = getelementptr inbounds i8, ptr %2474, i64 1
  store i8 %2473, ptr %2475, align 1, !tbaa !29
  %2476 = load ptr, ptr %59, align 8, !tbaa !5
  %2477 = getelementptr inbounds i8, ptr %2476, i64 2
  %2478 = load i8, ptr %2477, align 1, !tbaa !29
  %2479 = load ptr, ptr %24, align 8, !tbaa !5
  %2480 = getelementptr inbounds i8, ptr %2479, i64 2
  store i8 %2478, ptr %2480, align 1, !tbaa !29
  %2481 = load ptr, ptr %24, align 8, !tbaa !5
  %2482 = getelementptr inbounds i8, ptr %2481, i64 3
  store ptr %2482, ptr %24, align 8, !tbaa !5
  %2483 = load ptr, ptr %59, align 8, !tbaa !5
  %2484 = getelementptr inbounds i8, ptr %2483, i64 3
  store ptr %2484, ptr %59, align 8, !tbaa !5
  %2485 = load i32, ptr %19, align 4, !tbaa !9
  %2486 = sub i32 %2485, 3
  store i32 %2486, ptr %19, align 4, !tbaa !9
  br label %2462, !llvm.loop !101

2487:                                             ; preds = %2462
  %2488 = load i32, ptr %19, align 4, !tbaa !9
  %2489 = icmp ugt i32 %2488, 0
  br i1 %2489, label %2490, label %2509

2490:                                             ; preds = %2487
  %2491 = load ptr, ptr %59, align 8, !tbaa !5
  %2492 = getelementptr inbounds i8, ptr %2491, i64 0
  %2493 = load i8, ptr %2492, align 1, !tbaa !29
  %2494 = load ptr, ptr %24, align 8, !tbaa !5
  %2495 = getelementptr inbounds i8, ptr %2494, i64 0
  store i8 %2493, ptr %2495, align 1, !tbaa !29
  %2496 = load i32, ptr %19, align 4, !tbaa !9
  %2497 = icmp ugt i32 %2496, 1
  br i1 %2497, label %2498, label %2504

2498:                                             ; preds = %2490
  %2499 = load ptr, ptr %59, align 8, !tbaa !5
  %2500 = getelementptr inbounds i8, ptr %2499, i64 1
  %2501 = load i8, ptr %2500, align 1, !tbaa !29
  %2502 = load ptr, ptr %24, align 8, !tbaa !5
  %2503 = getelementptr inbounds i8, ptr %2502, i64 1
  store i8 %2501, ptr %2503, align 1, !tbaa !29
  br label %2504

2504:                                             ; preds = %2498, %2490
  %2505 = load i32, ptr %19, align 4, !tbaa !9
  %2506 = load ptr, ptr %24, align 8, !tbaa !5
  %2507 = zext i32 %2505 to i64
  %2508 = getelementptr inbounds i8, ptr %2506, i64 %2507
  store ptr %2508, ptr %24, align 8, !tbaa !5
  br label %2509

2509:                                             ; preds = %2504, %2487
  br label %1631, !llvm.loop !99

2510:                                             ; preds = %1988
  br label %2511

2511:                                             ; preds = %2510, %736
  br label %2512

2512:                                             ; preds = %2511, %720
  br label %2513

2513:                                             ; preds = %2512
  %2514 = load ptr, ptr %9, align 8, !tbaa !5
  %2515 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %2514, i32 0, i32 5
  %2516 = load i32, ptr %2515, align 4, !tbaa !34
  %2517 = and i32 %2516, 1
  %2518 = icmp ne i32 %2517, 0
  %2519 = xor i1 %2518, true
  br i1 %2519, label %275, label %2520, !llvm.loop !102

2520:                                             ; preds = %2513
  br label %2521

2521:                                             ; preds = %2520
  %2522 = load i32, ptr %17, align 4, !tbaa !9
  %2523 = load i32, ptr %17, align 4, !tbaa !9
  %2524 = and i32 %2523, 7
  %2525 = icmp ult i32 %2522, %2524
  br i1 %2525, label %2526, label %2567

2526:                                             ; preds = %2521
  br label %2527

2527:                                             ; preds = %2561, %2526
  br label %2528

2528:                                             ; preds = %2527
  br label %2529

2529:                                             ; preds = %2544, %2528
  %2530 = load ptr, ptr %22, align 8, !tbaa !5
  %2531 = load ptr, ptr %23, align 8, !tbaa !5
  %2532 = icmp uge ptr %2530, %2531
  br i1 %2532, label %2533, label %2545

2533:                                             ; preds = %2529
  br label %2534

2534:                                             ; preds = %2533
  %2535 = load i32, ptr %15, align 4, !tbaa !9
  %2536 = and i32 %2535, 2
  %2537 = icmp ne i32 %2536, 0
  %2538 = zext i1 %2537 to i64
  %2539 = select i1 %2537, i32 1, i32 -4
  store i32 %2539, ptr %16, align 4, !tbaa !11
  %2540 = load ptr, ptr %9, align 8, !tbaa !5
  %2541 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %2540, i32 0, i32 0
  store i32 32, ptr %2541, align 8, !tbaa !22
  br label %2720

2542:                                             ; preds = %120
  br label %2543

2543:                                             ; preds = %2542
  br label %2544

2544:                                             ; preds = %2543
  br label %2529, !llvm.loop !103

2545:                                             ; preds = %2529
  %2546 = load ptr, ptr %22, align 8, !tbaa !5
  %2547 = getelementptr inbounds i8, ptr %2546, i32 1
  store ptr %2547, ptr %22, align 8, !tbaa !5
  %2548 = load i8, ptr %2546, align 1, !tbaa !29
  %2549 = zext i8 %2548 to i32
  store i32 %2549, ptr %73, align 4, !tbaa !9
  br label %2550

2550:                                             ; preds = %2545
  br label %2551

2551:                                             ; preds = %2550
  %2552 = load i32, ptr %73, align 4, !tbaa !9
  %2553 = zext i32 %2552 to i64
  %2554 = load i32, ptr %17, align 4, !tbaa !9
  %2555 = zext i32 %2554 to i64
  %2556 = shl i64 %2553, %2555
  %2557 = load i64, ptr %21, align 8, !tbaa !13
  %2558 = or i64 %2557, %2556
  store i64 %2558, ptr %21, align 8, !tbaa !13
  %2559 = load i32, ptr %17, align 4, !tbaa !9
  %2560 = add i32 %2559, 8
  store i32 %2560, ptr %17, align 4, !tbaa !9
  br label %2561

2561:                                             ; preds = %2551
  %2562 = load i32, ptr %17, align 4, !tbaa !9
  %2563 = load i32, ptr %17, align 4, !tbaa !9
  %2564 = and i32 %2563, 7
  %2565 = icmp ult i32 %2562, %2564
  br i1 %2565, label %2527, label %2566, !llvm.loop !104

2566:                                             ; preds = %2561
  br label %2567

2567:                                             ; preds = %2566, %2521
  %2568 = load i32, ptr %17, align 4, !tbaa !9
  %2569 = and i32 %2568, 7
  %2570 = load i64, ptr %21, align 8, !tbaa !13
  %2571 = zext i32 %2569 to i64
  %2572 = lshr i64 %2570, %2571
  store i64 %2572, ptr %21, align 8, !tbaa !13
  %2573 = load i32, ptr %17, align 4, !tbaa !9
  %2574 = and i32 %2573, 7
  %2575 = load i32, ptr %17, align 4, !tbaa !9
  %2576 = sub i32 %2575, %2574
  store i32 %2576, ptr %17, align 4, !tbaa !9
  br label %2577

2577:                                             ; preds = %2567
  br label %2578

2578:                                             ; preds = %2577
  br label %2579

2579:                                             ; preds = %2588, %2578
  %2580 = load ptr, ptr %22, align 8, !tbaa !5
  %2581 = load ptr, ptr %10, align 8, !tbaa !5
  %2582 = icmp ugt ptr %2580, %2581
  br i1 %2582, label %2583, label %2586

2583:                                             ; preds = %2579
  %2584 = load i32, ptr %17, align 4, !tbaa !9
  %2585 = icmp uge i32 %2584, 8
  br label %2586

2586:                                             ; preds = %2583, %2579
  %2587 = phi i1 [ false, %2579 ], [ %2585, %2583 ]
  br i1 %2587, label %2588, label %2593

2588:                                             ; preds = %2586
  %2589 = load ptr, ptr %22, align 8, !tbaa !5
  %2590 = getelementptr inbounds i8, ptr %2589, i32 -1
  store ptr %2590, ptr %22, align 8, !tbaa !5
  %2591 = load i32, ptr %17, align 4, !tbaa !9
  %2592 = sub i32 %2591, 8
  store i32 %2592, ptr %17, align 4, !tbaa !9
  br label %2579, !llvm.loop !105

2593:                                             ; preds = %2586
  %2594 = load i32, ptr %17, align 4, !tbaa !9
  %2595 = zext i32 %2594 to i64
  %2596 = shl i64 1, %2595
  %2597 = sub i64 %2596, 1
  %2598 = load i64, ptr %21, align 8, !tbaa !13
  %2599 = and i64 %2598, %2597
  store i64 %2599, ptr %21, align 8, !tbaa !13
  %2600 = load i32, ptr %17, align 4, !tbaa !9
  %2601 = icmp ne i32 %2600, 0
  %2602 = xor i1 %2601, true
  br i1 %2602, label %2603, label %2604

2603:                                             ; preds = %2593
  br label %2606

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

2605:                                             ; No predecessors!
  br label %2606

2606:                                             ; preds = %2605, %2603
  %2607 = load i32, ptr %15, align 4, !tbaa !9
  %2608 = and i32 %2607, 1
  %2609 = icmp ne i32 %2608, 0
  br i1 %2609, label %2610, label %2708

2610:                                             ; preds = %2606
  store i32 0, ptr %19, align 4, !tbaa !9
  br label %2611

2611:                                             ; preds = %2704, %2610
  %2612 = load i32, ptr %19, align 4, !tbaa !9
  %2613 = icmp ult i32 %2612, 4
  br i1 %2613, label %2614, label %2707

2614:                                             ; preds = %2611
  %2615 = load i32, ptr %17, align 4, !tbaa !9
  %2616 = icmp ne i32 %2615, 0
  br i1 %2616, label %2617, label %2670

2617:                                             ; preds = %2614
  br label %2618

2618:                                             ; preds = %2617
  %2619 = load i32, ptr %17, align 4, !tbaa !9
  %2620 = icmp ult i32 %2619, 8
  br i1 %2620, label %2621, label %2660

2621:                                             ; preds = %2618
  br label %2622

2622:                                             ; preds = %2656, %2621
  br label %2623

2623:                                             ; preds = %2622
  br label %2624

2624:                                             ; preds = %2639, %2623
  %2625 = load ptr, ptr %22, align 8, !tbaa !5
  %2626 = load ptr, ptr %23, align 8, !tbaa !5
  %2627 = icmp uge ptr %2625, %2626
  br i1 %2627, label %2628, label %2640

2628:                                             ; preds = %2624
  br label %2629

2629:                                             ; preds = %2628
  %2630 = load i32, ptr %15, align 4, !tbaa !9
  %2631 = and i32 %2630, 2
  %2632 = icmp ne i32 %2631, 0
  %2633 = zext i1 %2632 to i64
  %2634 = select i1 %2632, i32 1, i32 -4
  store i32 %2634, ptr %16, align 4, !tbaa !11
  %2635 = load ptr, ptr %9, align 8, !tbaa !5
  %2636 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %2635, i32 0, i32 0
  store i32 41, ptr %2636, align 8, !tbaa !22
  br label %2720

2637:                                             ; preds = %120
  br label %2638

2638:                                             ; preds = %2637
  br label %2639

2639:                                             ; preds = %2638
  br label %2624, !llvm.loop !106

2640:                                             ; preds = %2624
  %2641 = load ptr, ptr %22, align 8, !tbaa !5
  %2642 = getelementptr inbounds i8, ptr %2641, i32 1
  store ptr %2642, ptr %22, align 8, !tbaa !5
  %2643 = load i8, ptr %2641, align 1, !tbaa !29
  %2644 = zext i8 %2643 to i32
  store i32 %2644, ptr %75, align 4, !tbaa !9
  br label %2645

2645:                                             ; preds = %2640
  br label %2646

2646:                                             ; preds = %2645
  %2647 = load i32, ptr %75, align 4, !tbaa !9
  %2648 = zext i32 %2647 to i64
  %2649 = load i32, ptr %17, align 4, !tbaa !9
  %2650 = zext i32 %2649 to i64
  %2651 = shl i64 %2648, %2650
  %2652 = load i64, ptr %21, align 8, !tbaa !13
  %2653 = or i64 %2652, %2651
  store i64 %2653, ptr %21, align 8, !tbaa !13
  %2654 = load i32, ptr %17, align 4, !tbaa !9
  %2655 = add i32 %2654, 8
  store i32 %2655, ptr %17, align 4, !tbaa !9
  br label %2656

2656:                                             ; preds = %2646
  %2657 = load i32, ptr %17, align 4, !tbaa !9
  %2658 = icmp ult i32 %2657, 8
  br i1 %2658, label %2622, label %2659, !llvm.loop !107

2659:                                             ; preds = %2656
  br label %2660

2660:                                             ; preds = %2659, %2618
  %2661 = load i64, ptr %21, align 8, !tbaa !13
  %2662 = and i64 %2661, 255
  %2663 = trunc i64 %2662 to i32
  store i32 %2663, ptr %74, align 4, !tbaa !9
  %2664 = load i64, ptr %21, align 8, !tbaa !13
  %2665 = lshr i64 %2664, 8
  store i64 %2665, ptr %21, align 8, !tbaa !13
  %2666 = load i32, ptr %17, align 4, !tbaa !9
  %2667 = sub i32 %2666, 8
  store i32 %2667, ptr %17, align 4, !tbaa !9
  br label %2668

2668:                                             ; preds = %2660
  br label %2669

2669:                                             ; preds = %2668
  br label %2695

2670:                                             ; preds = %2614
  br label %2671

2671:                                             ; preds = %2670
  br label %2672

2672:                                             ; preds = %2687, %2671
  %2673 = load ptr, ptr %22, align 8, !tbaa !5
  %2674 = load ptr, ptr %23, align 8, !tbaa !5
  %2675 = icmp uge ptr %2673, %2674
  br i1 %2675, label %2676, label %2688

2676:                                             ; preds = %2672
  br label %2677

2677:                                             ; preds = %2676
  %2678 = load i32, ptr %15, align 4, !tbaa !9
  %2679 = and i32 %2678, 2
  %2680 = icmp ne i32 %2679, 0
  %2681 = zext i1 %2680 to i64
  %2682 = select i1 %2680, i32 1, i32 -4
  store i32 %2682, ptr %16, align 4, !tbaa !11
  %2683 = load ptr, ptr %9, align 8, !tbaa !5
  %2684 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %2683, i32 0, i32 0
  store i32 42, ptr %2684, align 8, !tbaa !22
  br label %2720

2685:                                             ; preds = %120
  br label %2686

2686:                                             ; preds = %2685
  br label %2687

2687:                                             ; preds = %2686
  br label %2672, !llvm.loop !108

2688:                                             ; preds = %2672
  %2689 = load ptr, ptr %22, align 8, !tbaa !5
  %2690 = getelementptr inbounds i8, ptr %2689, i32 1
  store ptr %2690, ptr %22, align 8, !tbaa !5
  %2691 = load i8, ptr %2689, align 1, !tbaa !29
  %2692 = zext i8 %2691 to i32
  store i32 %2692, ptr %74, align 4, !tbaa !9
  br label %2693

2693:                                             ; preds = %2688
  br label %2694

2694:                                             ; preds = %2693
  br label %2695

2695:                                             ; preds = %2694, %2669
  %2696 = load ptr, ptr %9, align 8, !tbaa !5
  %2697 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %2696, i32 0, i32 4
  %2698 = load i32, ptr %2697, align 8, !tbaa !26
  %2699 = shl i32 %2698, 8
  %2700 = load i32, ptr %74, align 4, !tbaa !9
  %2701 = or i32 %2699, %2700
  %2702 = load ptr, ptr %9, align 8, !tbaa !5
  %2703 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %2702, i32 0, i32 4
  store i32 %2701, ptr %2703, align 8, !tbaa !26
  br label %2704

2704:                                             ; preds = %2695
  %2705 = load i32, ptr %19, align 4, !tbaa !9
  %2706 = add i32 %2705, 1
  store i32 %2706, ptr %19, align 4, !tbaa !9
  br label %2611, !llvm.loop !109

2707:                                             ; preds = %2611
  br label %2708

2708:                                             ; preds = %2707, %2606
  br label %2709

2709:                                             ; preds = %2708
  br label %2710

2710:                                             ; preds = %2716, %2709
  br label %2711

2711:                                             ; preds = %2710
  store i32 0, ptr %16, align 4, !tbaa !11
  %2712 = load ptr, ptr %9, align 8, !tbaa !5
  %2713 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %2712, i32 0, i32 0
  store i32 34, ptr %2713, align 8, !tbaa !22
  br label %2720

2714:                                             ; preds = %120
  br label %2715

2715:                                             ; preds = %2714
  br label %2716

2716:                                             ; preds = %2715
  br label %2710, !llvm.loop !110

2717:                                             ; No predecessors!
  br label %2718

2718:                                             ; preds = %2717
  br label %2719

2719:                                             ; preds = %2718, %120
  br label %2720

2720:                                             ; preds = %2719, %2711, %2677, %2629, %2534, %2386, %2344, %2275, %2147, %2015, %1840, %1726, %1583, %1485, %1458, %1333, %1067, %928, %820, %729, %636, %624, %601, %555, %526, %470, %417, %354, %287, %265, %187, %161
  %2721 = load i32, ptr %16, align 4, !tbaa !11
  %2722 = icmp ne i32 %2721, 1
  br i1 %2722, label %2723, label %2742

2723:                                             ; preds = %2720
  %2724 = load i32, ptr %16, align 4, !tbaa !11
  %2725 = icmp ne i32 %2724, -4
  br i1 %2725, label %2726, label %2742

2726:                                             ; preds = %2723
  br label %2727

2727:                                             ; preds = %2736, %2726
  %2728 = load ptr, ptr %22, align 8, !tbaa !5
  %2729 = load ptr, ptr %10, align 8, !tbaa !5
  %2730 = icmp ugt ptr %2728, %2729
  br i1 %2730, label %2731, label %2734

2731:                                             ; preds = %2727
  %2732 = load i32, ptr %17, align 4, !tbaa !9
  %2733 = icmp uge i32 %2732, 8
  br label %2734

2734:                                             ; preds = %2731, %2727
  %2735 = phi i1 [ false, %2727 ], [ %2733, %2731 ]
  br i1 %2735, label %2736, label %2741

2736:                                             ; preds = %2734
  %2737 = load ptr, ptr %22, align 8, !tbaa !5
  %2738 = getelementptr inbounds i8, ptr %2737, i32 -1
  store ptr %2738, ptr %22, align 8, !tbaa !5
  %2739 = load i32, ptr %17, align 4, !tbaa !9
  %2740 = sub i32 %2739, 8
  store i32 %2740, ptr %17, align 4, !tbaa !9
  br label %2727, !llvm.loop !111

2741:                                             ; preds = %2734
  br label %2742

2742:                                             ; preds = %2741, %2723, %2720
  %2743 = load i32, ptr %17, align 4, !tbaa !9
  %2744 = load ptr, ptr %9, align 8, !tbaa !5
  %2745 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %2744, i32 0, i32 1
  store i32 %2743, ptr %2745, align 4, !tbaa !15
  %2746 = load i64, ptr %21, align 8, !tbaa !13
  %2747 = load i32, ptr %17, align 4, !tbaa !9
  %2748 = zext i32 %2747 to i64
  %2749 = shl i64 1, %2748
  %2750 = sub i64 %2749, 1
  %2751 = and i64 %2746, %2750
  %2752 = load ptr, ptr %9, align 8, !tbaa !5
  %2753 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %2752, i32 0, i32 12
  store i64 %2751, ptr %2753, align 8, !tbaa !17
  %2754 = load i32, ptr %18, align 4, !tbaa !9
  %2755 = load ptr, ptr %9, align 8, !tbaa !5
  %2756 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %2755, i32 0, i32 8
  store i32 %2754, ptr %2756, align 8, !tbaa !18
  %2757 = load i32, ptr %19, align 4, !tbaa !9
  %2758 = load ptr, ptr %9, align 8, !tbaa !5
  %2759 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %2758, i32 0, i32 9
  store i32 %2757, ptr %2759, align 4, !tbaa !19
  %2760 = load i32, ptr %20, align 4, !tbaa !9
  %2761 = load ptr, ptr %9, align 8, !tbaa !5
  %2762 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %2761, i32 0, i32 10
  store i32 %2760, ptr %2762, align 8, !tbaa !20
  %2763 = load i64, ptr %27, align 8, !tbaa !13
  %2764 = load ptr, ptr %9, align 8, !tbaa !5
  %2765 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %2764, i32 0, i32 13
  store i64 %2763, ptr %2765, align 8, !tbaa !21
  %2766 = load ptr, ptr %22, align 8, !tbaa !5
  %2767 = load ptr, ptr %10, align 8, !tbaa !5
  %2768 = ptrtoint ptr %2766 to i64
  %2769 = ptrtoint ptr %2767 to i64
  %2770 = sub i64 %2768, %2769
  %2771 = load ptr, ptr %11, align 8, !tbaa !5
  store i64 %2770, ptr %2771, align 8, !tbaa !13
  %2772 = load ptr, ptr %24, align 8, !tbaa !5
  %2773 = load ptr, ptr %13, align 8, !tbaa !5
  %2774 = ptrtoint ptr %2772 to i64
  %2775 = ptrtoint ptr %2773 to i64
  %2776 = sub i64 %2774, %2775
  %2777 = load ptr, ptr %14, align 8, !tbaa !5
  store i64 %2776, ptr %2777, align 8, !tbaa !13
  %2778 = load i32, ptr %15, align 4, !tbaa !9
  %2779 = and i32 %2778, 9
  %2780 = icmp ne i32 %2779, 0
  br i1 %2780, label %2781, label %2936

2781:                                             ; preds = %2742
  %2782 = load i32, ptr %16, align 4, !tbaa !11
  %2783 = icmp sge i32 %2782, 0
  br i1 %2783, label %2784, label %2936

2784:                                             ; preds = %2781
  call void @llvm.lifetime.start.p0(i64 8, ptr %76) #5
  %2785 = load ptr, ptr %13, align 8, !tbaa !5
  store ptr %2785, ptr %76, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %77) #5
  %2786 = load ptr, ptr %14, align 8, !tbaa !5
  %2787 = load i64, ptr %2786, align 8, !tbaa !13
  store i64 %2787, ptr %77, align 8, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 4, ptr %78) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %79) #5
  %2788 = load ptr, ptr %9, align 8, !tbaa !5
  %2789 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %2788, i32 0, i32 7
  %2790 = load i32, ptr %2789, align 4, !tbaa !25
  %2791 = and i32 %2790, 65535
  store i32 %2791, ptr %79, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %80) #5
  %2792 = load ptr, ptr %9, align 8, !tbaa !5
  %2793 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %2792, i32 0, i32 7
  %2794 = load i32, ptr %2793, align 4, !tbaa !25
  %2795 = lshr i32 %2794, 16
  store i32 %2795, ptr %80, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %81) #5
  %2796 = load i64, ptr %77, align 8, !tbaa !13
  %2797 = urem i64 %2796, 5552
  store i64 %2797, ptr %81, align 8, !tbaa !13
  br label %2798

2798:                                             ; preds = %2905, %2784
  %2799 = load i64, ptr %77, align 8, !tbaa !13
  %2800 = icmp ne i64 %2799, 0
  br i1 %2800, label %2801, label %2913

2801:                                             ; preds = %2798
  store i32 0, ptr %78, align 4, !tbaa !9
  br label %2802

2802:                                             ; preds = %2881, %2801
  %2803 = load i32, ptr %78, align 4, !tbaa !9
  %2804 = add i32 %2803, 7
  %2805 = zext i32 %2804 to i64
  %2806 = load i64, ptr %81, align 8, !tbaa !13
  %2807 = icmp ult i64 %2805, %2806
  br i1 %2807, label %2808, label %2886

2808:                                             ; preds = %2802
  %2809 = load ptr, ptr %76, align 8, !tbaa !5
  %2810 = getelementptr inbounds i8, ptr %2809, i64 0
  %2811 = load i8, ptr %2810, align 1, !tbaa !29
  %2812 = zext i8 %2811 to i32
  %2813 = load i32, ptr %79, align 4, !tbaa !9
  %2814 = add i32 %2813, %2812
  store i32 %2814, ptr %79, align 4, !tbaa !9
  %2815 = load i32, ptr %79, align 4, !tbaa !9
  %2816 = load i32, ptr %80, align 4, !tbaa !9
  %2817 = add i32 %2816, %2815
  store i32 %2817, ptr %80, align 4, !tbaa !9
  %2818 = load ptr, ptr %76, align 8, !tbaa !5
  %2819 = getelementptr inbounds i8, ptr %2818, i64 1
  %2820 = load i8, ptr %2819, align 1, !tbaa !29
  %2821 = zext i8 %2820 to i32
  %2822 = load i32, ptr %79, align 4, !tbaa !9
  %2823 = add i32 %2822, %2821
  store i32 %2823, ptr %79, align 4, !tbaa !9
  %2824 = load i32, ptr %79, align 4, !tbaa !9
  %2825 = load i32, ptr %80, align 4, !tbaa !9
  %2826 = add i32 %2825, %2824
  store i32 %2826, ptr %80, align 4, !tbaa !9
  %2827 = load ptr, ptr %76, align 8, !tbaa !5
  %2828 = getelementptr inbounds i8, ptr %2827, i64 2
  %2829 = load i8, ptr %2828, align 1, !tbaa !29
  %2830 = zext i8 %2829 to i32
  %2831 = load i32, ptr %79, align 4, !tbaa !9
  %2832 = add i32 %2831, %2830
  store i32 %2832, ptr %79, align 4, !tbaa !9
  %2833 = load i32, ptr %79, align 4, !tbaa !9
  %2834 = load i32, ptr %80, align 4, !tbaa !9
  %2835 = add i32 %2834, %2833
  store i32 %2835, ptr %80, align 4, !tbaa !9
  %2836 = load ptr, ptr %76, align 8, !tbaa !5
  %2837 = getelementptr inbounds i8, ptr %2836, i64 3
  %2838 = load i8, ptr %2837, align 1, !tbaa !29
  %2839 = zext i8 %2838 to i32
  %2840 = load i32, ptr %79, align 4, !tbaa !9
  %2841 = add i32 %2840, %2839
  store i32 %2841, ptr %79, align 4, !tbaa !9
  %2842 = load i32, ptr %79, align 4, !tbaa !9
  %2843 = load i32, ptr %80, align 4, !tbaa !9
  %2844 = add i32 %2843, %2842
  store i32 %2844, ptr %80, align 4, !tbaa !9
  %2845 = load ptr, ptr %76, align 8, !tbaa !5
  %2846 = getelementptr inbounds i8, ptr %2845, i64 4
  %2847 = load i8, ptr %2846, align 1, !tbaa !29
  %2848 = zext i8 %2847 to i32
  %2849 = load i32, ptr %79, align 4, !tbaa !9
  %2850 = add i32 %2849, %2848
  store i32 %2850, ptr %79, align 4, !tbaa !9
  %2851 = load i32, ptr %79, align 4, !tbaa !9
  %2852 = load i32, ptr %80, align 4, !tbaa !9
  %2853 = add i32 %2852, %2851
  store i32 %2853, ptr %80, align 4, !tbaa !9
  %2854 = load ptr, ptr %76, align 8, !tbaa !5
  %2855 = getelementptr inbounds i8, ptr %2854, i64 5
  %2856 = load i8, ptr %2855, align 1, !tbaa !29
  %2857 = zext i8 %2856 to i32
  %2858 = load i32, ptr %79, align 4, !tbaa !9
  %2859 = add i32 %2858, %2857
  store i32 %2859, ptr %79, align 4, !tbaa !9
  %2860 = load i32, ptr %79, align 4, !tbaa !9
  %2861 = load i32, ptr %80, align 4, !tbaa !9
  %2862 = add i32 %2861, %2860
  store i32 %2862, ptr %80, align 4, !tbaa !9
  %2863 = load ptr, ptr %76, align 8, !tbaa !5
  %2864 = getelementptr inbounds i8, ptr %2863, i64 6
  %2865 = load i8, ptr %2864, align 1, !tbaa !29
  %2866 = zext i8 %2865 to i32
  %2867 = load i32, ptr %79, align 4, !tbaa !9
  %2868 = add i32 %2867, %2866
  store i32 %2868, ptr %79, align 4, !tbaa !9
  %2869 = load i32, ptr %79, align 4, !tbaa !9
  %2870 = load i32, ptr %80, align 4, !tbaa !9
  %2871 = add i32 %2870, %2869
  store i32 %2871, ptr %80, align 4, !tbaa !9
  %2872 = load ptr, ptr %76, align 8, !tbaa !5
  %2873 = getelementptr inbounds i8, ptr %2872, i64 7
  %2874 = load i8, ptr %2873, align 1, !tbaa !29
  %2875 = zext i8 %2874 to i32
  %2876 = load i32, ptr %79, align 4, !tbaa !9
  %2877 = add i32 %2876, %2875
  store i32 %2877, ptr %79, align 4, !tbaa !9
  %2878 = load i32, ptr %79, align 4, !tbaa !9
  %2879 = load i32, ptr %80, align 4, !tbaa !9
  %2880 = add i32 %2879, %2878
  store i32 %2880, ptr %80, align 4, !tbaa !9
  br label %2881

2881:                                             ; preds = %2808
  %2882 = load i32, ptr %78, align 4, !tbaa !9
  %2883 = add i32 %2882, 8
  store i32 %2883, ptr %78, align 4, !tbaa !9
  %2884 = load ptr, ptr %76, align 8, !tbaa !5
  %2885 = getelementptr inbounds i8, ptr %2884, i64 8
  store ptr %2885, ptr %76, align 8, !tbaa !5
  br label %2802, !llvm.loop !112

2886:                                             ; preds = %2802
  br label %2887

2887:                                             ; preds = %2902, %2886
  %2888 = load i32, ptr %78, align 4, !tbaa !9
  %2889 = zext i32 %2888 to i64
  %2890 = load i64, ptr %81, align 8, !tbaa !13
  %2891 = icmp ult i64 %2889, %2890
  br i1 %2891, label %2892, label %2905

2892:                                             ; preds = %2887
  %2893 = load ptr, ptr %76, align 8, !tbaa !5
  %2894 = getelementptr inbounds i8, ptr %2893, i32 1
  store ptr %2894, ptr %76, align 8, !tbaa !5
  %2895 = load i8, ptr %2893, align 1, !tbaa !29
  %2896 = zext i8 %2895 to i32
  %2897 = load i32, ptr %79, align 4, !tbaa !9
  %2898 = add i32 %2897, %2896
  store i32 %2898, ptr %79, align 4, !tbaa !9
  %2899 = load i32, ptr %79, align 4, !tbaa !9
  %2900 = load i32, ptr %80, align 4, !tbaa !9
  %2901 = add i32 %2900, %2899
  store i32 %2901, ptr %80, align 4, !tbaa !9
  br label %2902

2902:                                             ; preds = %2892
  %2903 = load i32, ptr %78, align 4, !tbaa !9
  %2904 = add i32 %2903, 1
  store i32 %2904, ptr %78, align 4, !tbaa !9
  br label %2887, !llvm.loop !113

2905:                                             ; preds = %2887
  %2906 = load i32, ptr %79, align 4, !tbaa !9
  %2907 = urem i32 %2906, 65521
  store i32 %2907, ptr %79, align 4, !tbaa !9
  %2908 = load i32, ptr %80, align 4, !tbaa !9
  %2909 = urem i32 %2908, 65521
  store i32 %2909, ptr %80, align 4, !tbaa !9
  %2910 = load i64, ptr %81, align 8, !tbaa !13
  %2911 = load i64, ptr %77, align 8, !tbaa !13
  %2912 = sub i64 %2911, %2910
  store i64 %2912, ptr %77, align 8, !tbaa !13
  store i64 5552, ptr %81, align 8, !tbaa !13
  br label %2798, !llvm.loop !114

2913:                                             ; preds = %2798
  %2914 = load i32, ptr %80, align 4, !tbaa !9
  %2915 = shl i32 %2914, 16
  %2916 = load i32, ptr %79, align 4, !tbaa !9
  %2917 = add i32 %2915, %2916
  %2918 = load ptr, ptr %9, align 8, !tbaa !5
  %2919 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %2918, i32 0, i32 7
  store i32 %2917, ptr %2919, align 4, !tbaa !25
  %2920 = load i32, ptr %16, align 4, !tbaa !11
  %2921 = icmp eq i32 %2920, 0
  br i1 %2921, label %2922, label %2935

2922:                                             ; preds = %2913
  %2923 = load i32, ptr %15, align 4, !tbaa !9
  %2924 = and i32 %2923, 1
  %2925 = icmp ne i32 %2924, 0
  br i1 %2925, label %2926, label %2935

2926:                                             ; preds = %2922
  %2927 = load ptr, ptr %9, align 8, !tbaa !5
  %2928 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %2927, i32 0, i32 7
  %2929 = load i32, ptr %2928, align 4, !tbaa !25
  %2930 = load ptr, ptr %9, align 8, !tbaa !5
  %2931 = getelementptr inbounds %struct.tinfl_decompressor_tag, ptr %2930, i32 0, i32 4
  %2932 = load i32, ptr %2931, align 8, !tbaa !26
  %2933 = icmp ne i32 %2929, %2932
  br i1 %2933, label %2934, label %2935

2934:                                             ; preds = %2926
  store i32 -2, ptr %16, align 4, !tbaa !11
  br label %2935

2935:                                             ; preds = %2934, %2926, %2922, %2913
  call void @llvm.lifetime.end.p0(i64 8, ptr %81) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %80) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %79) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %78) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %77) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %76) #5
  br label %2936

2936:                                             ; preds = %2935, %2781, %2742
  %2937 = load i32, ptr %16, align 4, !tbaa !11
  store i32 %2937, ptr %8, align 4
  store i32 1, ptr %28, align 4
  br label %2938

2938:                                             ; preds = %2936, %117
  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 8, ptr %22) #5
  call void @llvm.lifetime.end.p0(i64 8, 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 4, ptr %17) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #5
  %2939 = load i32, ptr %8, align 4
  ret i32 %2939

2940:                                             ; preds = %2457, %1980, %1229
  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

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


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

%struct.tinfl_huff_table = type { [288 x i8], [1024 x i16], [576 x i16] }

@.str.12 = external hidden unnamed_addr constant [80 x i8], align 1
@_ZZ16tinfl_decompressE13s_length_base = external hidden local_unnamed_addr constant [31 x i32], align 16
@_ZZ16tinfl_decompressE14s_length_extra = external hidden local_unnamed_addr constant [31 x i32], align 16
@_ZZ16tinfl_decompressE11s_dist_base = external hidden local_unnamed_addr constant [32 x i32], align 16
@_ZZ16tinfl_decompressE12s_dist_extra = external hidden local_unnamed_addr constant [32 x i32], align 16
@_ZZ16tinfl_decompressE17s_length_dezigzag = external hidden local_unnamed_addr constant [19 x i8], align 16
@_ZZ16tinfl_decompressE17s_min_table_sizes = external hidden local_unnamed_addr constant [3 x i32], align 4
@.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 nounwind willreturn memory(argmem: write)
declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #0

; Function Attrs: mustprogress 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 #1 {
  %8 = ptrtoint ptr %1 to i64
  %9 = alloca [17 x i32], align 16
  %10 = alloca [16 x i32], align 16
  %11 = load i64, ptr %2, align 8, !tbaa !5
  %12 = getelementptr inbounds i8, ptr %1, i64 %11
  %13 = load i64, ptr %5, align 8, !tbaa !5
  %14 = getelementptr inbounds i8, ptr %4, i64 %13
  %15 = and i32 %6, 4
  %.not = icmp eq i32 %15, 0
  %16 = ptrtoint ptr %4 to i64
  %17 = ptrtoint ptr %3 to i64
  %18 = xor i64 %17, -1
  %19 = add i64 %18, %16
  %20 = add i64 %19, %13
  %21 = select i1 %.not, i64 %20, i64 -1
  %22 = add i64 %21, 1
  %23 = and i64 %22, %21
  %.not1559 = icmp ne i64 %23, 0
  %24 = icmp ult ptr %4, %3
  %or.cond1640 = or i1 %24, %.not1559
  br i1 %or.cond1640, label %25, label %26

25:                                               ; preds = %7
  store i64 0, ptr %5, align 8, !tbaa !5
  store i64 0, ptr %2, align 8, !tbaa !5
  br label %1262

26:                                               ; preds = %7
  %27 = getelementptr inbounds i8, ptr %0, i64 4
  %28 = load i32, ptr %27, align 4, !tbaa !9
  %.84.fr1984 = freeze i32 %28
  %29 = getelementptr inbounds i8, ptr %0, i64 56
  %30 = load i64, ptr %29, align 8, !tbaa !12
  %31 = getelementptr inbounds i8, ptr %0, i64 32
  %32 = load i32, ptr %31, align 8, !tbaa !13
  %33 = getelementptr inbounds i8, ptr %0, i64 36
  %34 = load i32, ptr %33, align 4, !tbaa !14
  %35 = getelementptr inbounds i8, ptr %0, i64 40
  %36 = load i32, ptr %35, align 8, !tbaa !15
  %37 = getelementptr inbounds i8, ptr %0, i64 64
  %38 = load i64, ptr %37, align 8, !tbaa !16
  %39 = load i32, ptr %0, align 8, !tbaa !17
  switch i32 %39, label %.thread1683 [
    i32 0, label %40
    i32 1, label %46
    i32 2, label %57
    i32 36, label %82
    i32 3, label %87
    i32 5, label %116
    i32 6, label %138
    i32 7, label %157
    i32 39, label %179
    i32 51, label %189
    i32 52, label %204
    i32 9, label %211
    i32 38, label %215
    i32 10, label %230
    i32 11, label %248
    i32 14, label %284
    i32 35, label %434
    i32 16, label %558
    i32 17, label %619
    i32 18, label %630
    i32 21, label %665
    i32 23, label %720
    i32 24, label %773
    i32 25, label %859
    i32 26, label %915
    i32 27, label %976
    i32 37, label %998
    i32 53, label %1011
    i32 32, label %1088
    i32 41, label %1117
    i32 42, label %1134
    i32 34, label %1145
  ], !llvm.loop !18

40:                                               ; preds = %26
  %41 = getelementptr inbounds i8, ptr %0, i64 12
  store i32 0, ptr %41, align 4, !tbaa !20
  %42 = getelementptr inbounds i8, ptr %0, i64 8
  store i32 0, ptr %42, align 8, !tbaa !21
  %43 = getelementptr inbounds i8, ptr %0, i64 28
  store i32 1, ptr %43, align 4, !tbaa !22
  %44 = getelementptr inbounds i8, ptr %0, i64 16
  store i32 1, ptr %44, align 8, !tbaa !23
  %45 = and i32 %6, 1
  %.not1564 = icmp eq i32 %45, 0
  br i1 %.not1564, label %83, label %46

46:                                               ; preds = %26, %40
  %.01095 = phi i64 [ %30, %26 ], [ 0, %40 ]
  %.01008 = phi i32 [ %36, %26 ], [ 0, %40 ]
  %.0924 = phi i32 [ %34, %26 ], [ 0, %40 ]
  %.0845 = phi i32 [ %32, %26 ], [ 0, %40 ]
  %.0842 = phi i32 [ %.84.fr1984, %26 ], [ 0, %40 ]
  %.not1565 = icmp sgt i64 %11, 0
  br i1 %.not1565, label %49, label %47

47:                                               ; preds = %46
  %48 = and i32 %6, 2
  %.not1635 = icmp eq i32 %48, 0
  store i32 1, ptr %0, align 8, !tbaa !17
  %spec.select1701 = select i1 %.not1635, i32 -4, i32 1
  br label %.thread1683

49:                                               ; preds = %46
  %50 = getelementptr inbounds i8, ptr %1, i64 1
  %51 = load i8, ptr %1, align 1, !tbaa !24
  %52 = zext i8 %51 to i32
  %53 = getelementptr inbounds i8, ptr %0, i64 8
  store i32 %52, ptr %53, align 8, !tbaa !21
  br label %54

54:                                               ; preds = %57, %49
  %.01179 = phi ptr [ %1, %57 ], [ %50, %49 ]
  %.11096 = phi i64 [ %30, %57 ], [ %.01095, %49 ]
  %.11009 = phi i32 [ %36, %57 ], [ %.01008, %49 ]
  %.1925 = phi i32 [ %34, %57 ], [ %.0924, %49 ]
  %.1846 = phi i32 [ %32, %57 ], [ %.0845, %49 ]
  %.1843 = phi i32 [ %.84.fr1984, %57 ], [ %.0842, %49 ]
  %.not1566 = icmp ult ptr %.01179, %12
  br i1 %.not1566, label %58, label %55

55:                                               ; preds = %54
  %56 = and i32 %6, 2
  %.not1634 = icmp eq i32 %56, 0
  store i32 2, ptr %0, align 8, !tbaa !17
  %spec.select1703 = select i1 %.not1634, i32 -4, i32 1
  br label %.thread1683

57:                                               ; preds = %26
  br label %54, !llvm.loop !25

58:                                               ; preds = %54
  %59 = getelementptr inbounds i8, ptr %.01179, i64 1
  %60 = load i8, ptr %.01179, align 1, !tbaa !24
  %61 = zext i8 %60 to i32
  %62 = getelementptr inbounds i8, ptr %0, i64 12
  store i32 %61, ptr %62, align 4, !tbaa !20
  %63 = getelementptr inbounds i8, ptr %0, i64 8
  %64 = load i32, ptr %63, align 8, !tbaa !21
  %65 = shl i32 %64, 8
  %66 = or disjoint i32 %65, %61
  %67 = urem i32 %66, 31
  %68 = and i32 %61, 32
  %69 = or disjoint i32 %67, %68
  %or.cond1641 = icmp ne i32 %69, 0
  %70 = and i32 %64, 15
  %71 = icmp ne i32 %70, 8
  %72 = select i1 %or.cond1641, i1 true, i1 %71
  br i1 %.not, label %73, label %81

73:                                               ; preds = %58
  %74 = lshr i32 %64, 4
  %75 = shl nuw i32 256, %74
  %76 = icmp ugt i32 %75, 32768
  %77 = zext nneg i32 %75 to i64
  %78 = icmp ult i64 %22, %77
  %79 = select i1 %76, i1 true, i1 %78
  %80 = or i1 %79, %72
  br i1 %80, label %1146, label %83

81:                                               ; preds = %58
  br i1 %72, label %1146, label %83

82:                                               ; preds = %26
  br label %1146, !llvm.loop !26

83:                                               ; preds = %40, %81, %73, %1082
  %.01366 = phi i64 [ %.641430, %1082 ], [ %38, %73 ], [ %38, %81 ], [ %38, %40 ]
  %.01272 = phi ptr [ %.731345, %1082 ], [ %4, %73 ], [ %4, %81 ], [ %4, %40 ]
  %.31182 = phi ptr [ %.701249, %1082 ], [ %59, %73 ], [ %59, %81 ], [ %1, %40 ]
  %.41099 = phi i64 [ %.721167, %1082 ], [ %.11096, %73 ], [ %.11096, %81 ], [ 0, %40 ]
  %.41012 = phi i32 [ %.691077, %1082 ], [ %.11009, %73 ], [ %.11009, %81 ], [ 0, %40 ]
  %.5929 = phi i32 [ %.72996, %1082 ], [ 0, %73 ], [ 0, %81 ], [ 0, %40 ]
  %.4849 = phi i32 [ %.67912, %1082 ], [ %.1846, %73 ], [ %.1846, %81 ], [ 0, %40 ]
  %.4 = phi i32 [ %.72, %1082 ], [ %.1843, %73 ], [ %.1843, %81 ], [ 0, %40 ]
  %84 = icmp ult i32 %.4, 3
  br i1 %84, label %.preheader2185, label %.loopexit2186

.preheader2185:                                   ; preds = %83, %87
  %.21368.ph = phi i64 [ %.01366, %83 ], [ %38, %87 ]
  %.21274.ph = phi ptr [ %.01272, %83 ], [ %4, %87 ]
  %.51184.ph = phi ptr [ %.31182, %83 ], [ %1, %87 ]
  %.61101.ph = phi i64 [ %.41099, %83 ], [ %30, %87 ]
  %.61014.ph = phi i32 [ %.41012, %83 ], [ %36, %87 ]
  %.7931.ph = phi i32 [ %.5929, %83 ], [ %34, %87 ]
  %.6851.ph = phi i32 [ %.4849, %83 ], [ %32, %87 ]
  %.6.ph = phi i32 [ %.4, %83 ], [ %.84.fr1984, %87 ]
  %.not1569 = icmp ult ptr %.51184.ph, %12
  br i1 %.not1569, label %88, label %85

85:                                               ; preds = %97, %.preheader2185
  %.51184.lcssa = phi ptr [ %.51184.ph, %.preheader2185 ], [ %89, %97 ]
  %.61101.lcssa = phi i64 [ %.61101.ph, %.preheader2185 ], [ %94, %97 ]
  %.6.lcssa = phi i32 [ %.6.ph, %.preheader2185 ], [ %95, %97 ]
  %86 = and i32 %6, 2
  %.not1633 = icmp eq i32 %86, 0
  store i32 3, ptr %0, align 8, !tbaa !17
  %spec.select1705 = select i1 %.not1633, i32 -4, i32 1
  br label %.thread1683

87:                                               ; preds = %26
  br label %.preheader2185, !llvm.loop !27

88:                                               ; preds = %.preheader2185
  %89 = getelementptr inbounds i8, ptr %.51184.ph, i64 1
  %90 = load i8, ptr %.51184.ph, align 1, !tbaa !24
  %91 = zext i8 %90 to i64
  %92 = zext nneg i32 %.6.ph to i64
  %93 = shl i64 %91, %92
  %94 = or i64 %93, %.61101.ph
  %95 = add i32 %.6.ph, 8
  %96 = icmp ult i32 %95, 3
  br i1 %96, label %97, label %.loopexit2186, !llvm.loop !28

97:                                               ; preds = %88
  %.not1569.1 = icmp ult ptr %89, %12
  br i1 %.not1569.1, label %98, label %85

98:                                               ; preds = %97
  %99 = getelementptr inbounds i8, ptr %.51184.ph, i64 2
  %100 = load i8, ptr %89, align 1, !tbaa !24
  %101 = zext i8 %100 to i64
  %102 = zext nneg i32 %95 to i64
  %103 = shl nuw nsw i64 %101, %102
  %104 = or i64 %103, %.61101.ph
  %105 = add nsw i32 %.6.ph, 16
  br label %.loopexit2186

.loopexit2186:                                    ; preds = %88, %98, %83
  %.31369 = phi i64 [ %.01366, %83 ], [ %.21368.ph, %98 ], [ %.21368.ph, %88 ]
  %.31275 = phi ptr [ %.01272, %83 ], [ %.21274.ph, %98 ], [ %.21274.ph, %88 ]
  %.61185 = phi ptr [ %.31182, %83 ], [ %89, %88 ], [ %99, %98 ]
  %.71102 = phi i64 [ %.41099, %83 ], [ %94, %88 ], [ %104, %98 ]
  %.71015 = phi i32 [ %.41012, %83 ], [ %.61014.ph, %98 ], [ %.61014.ph, %88 ]
  %.8932 = phi i32 [ %.5929, %83 ], [ %.7931.ph, %98 ], [ %.7931.ph, %88 ]
  %.7852 = phi i32 [ %.4849, %83 ], [ %.6851.ph, %98 ], [ %.6851.ph, %88 ]
  %.7 = phi i32 [ %.4, %83 ], [ %95, %88 ], [ %105, %98 ]
  %106 = trunc i64 %.71102 to i32
  %107 = and i32 %106, 7
  %108 = getelementptr inbounds i8, ptr %0, i64 20
  store i32 %107, ptr %108, align 4, !tbaa !29
  %109 = lshr i64 %.71102, 3
  %110 = add i32 %.7, -3
  %111 = lshr i32 %107, 1
  %112 = getelementptr inbounds i8, ptr %0, i64 24
  store i32 %111, ptr %112, align 8, !tbaa !30
  %113 = icmp ult i32 %107, 2
  br i1 %113, label %125, label %229

114:                                              ; preds = %116
  %115 = and i32 %6, 2
  %.not1563 = icmp eq i32 %115, 0
  store i32 5, ptr %0, align 8, !tbaa !17
  %spec.select1707 = select i1 %.not1563, i32 -4, i32 1
  br label %.thread1683

116:                                              ; preds = %26
  %.not1562 = icmp sgt i64 %11, 0
  br i1 %.not1562, label %117, label %114

117:                                              ; preds = %116
  %118 = getelementptr inbounds i8, ptr %1, i64 1
  %119 = load i8, ptr %1, align 1, !tbaa !24
  %120 = zext i8 %119 to i64
  %121 = zext nneg i32 %.84.fr1984 to i64
  %122 = shl i64 %120, %121
  %123 = or i64 %122, %30
  %124 = add i32 %.84.fr1984, 8
  br label %125

125:                                              ; preds = %.loopexit2186, %117
  %.61372 = phi i64 [ %38, %117 ], [ %.31369, %.loopexit2186 ]
  %.61278 = phi ptr [ %4, %117 ], [ %.31275, %.loopexit2186 ]
  %.91188 = phi ptr [ %118, %117 ], [ %.61185, %.loopexit2186 ]
  %.101105 = phi i64 [ %123, %117 ], [ %109, %.loopexit2186 ]
  %.101018 = phi i32 [ %36, %117 ], [ %.71015, %.loopexit2186 ]
  %.10855 = phi i32 [ %32, %117 ], [ %.7852, %.loopexit2186 ]
  %.10 = phi i32 [ %124, %117 ], [ %110, %.loopexit2186 ]
  %126 = and i32 %.10, 7
  %127 = zext nneg i32 %126 to i64
  %128 = lshr i64 %.101105, %127
  %129 = and i32 %.10, -8
  br label %130

130:                                              ; preds = %164, %125
  %.71373 = phi i64 [ %.61372, %125 ], [ %.121378, %164 ]
  %.71279 = phi ptr [ %.61278, %125 ], [ %.121284, %164 ]
  %.101189 = phi ptr [ %.91188, %125 ], [ %.151194, %164 ]
  %.111106 = phi i64 [ %128, %125 ], [ %.161111, %164 ]
  %.111019 = phi i32 [ %.101018, %125 ], [ %.161024, %164 ]
  %.11935 = phi i32 [ 0, %125 ], [ %165, %164 ]
  %.11856 = phi i32 [ %.10855, %125 ], [ %.16861, %164 ]
  %.11 = phi i32 [ %129, %125 ], [ %.16, %164 ]
  %131 = icmp ult i32 %.11935, 4
  br i1 %131, label %132, label %166

132:                                              ; preds = %130
  %.not1628 = icmp eq i32 %.11, 0
  br i1 %.not1628, label %154, label %133

133:                                              ; preds = %132
  %134 = icmp ult i32 %.11, 8
  br i1 %134, label %.preheader2074, label %.loopexit2075

.preheader2074:                                   ; preds = %138, %133
  %.91375.ph = phi i64 [ %.71373, %133 ], [ %38, %138 ]
  %.91281.ph = phi ptr [ %.71279, %133 ], [ %4, %138 ]
  %.121191.ph = phi ptr [ %.101189, %133 ], [ %1, %138 ]
  %.131108.ph = phi i64 [ %.111106, %133 ], [ %30, %138 ]
  %.131021.ph = phi i32 [ %.111019, %133 ], [ %36, %138 ]
  %.13937.ph = phi i32 [ %.11935, %133 ], [ %34, %138 ]
  %.13858.ph = phi i32 [ %.11856, %133 ], [ %32, %138 ]
  %.13.ph = phi i32 [ %.11, %133 ], [ %.84.fr1984, %138 ]
  br label %135

135:                                              ; preds = %.preheader2074, %139
  %.121191 = phi ptr [ %140, %139 ], [ %.121191.ph, %.preheader2074 ]
  %.131108 = phi i64 [ %145, %139 ], [ %.131108.ph, %.preheader2074 ]
  %.13 = phi i32 [ %146, %139 ], [ %.13.ph, %.preheader2074 ]
  %.not1631 = icmp ult ptr %.121191, %12
  br i1 %.not1631, label %139, label %136

136:                                              ; preds = %135
  %137 = and i32 %6, 2
  %.not1632 = icmp eq i32 %137, 0
  store i32 6, ptr %0, align 8, !tbaa !17
  %spec.select1709 = select i1 %.not1632, i32 -4, i32 1
  br label %.thread1683

138:                                              ; preds = %26
  br label %.preheader2074, !llvm.loop !31

139:                                              ; preds = %135
  %140 = getelementptr inbounds i8, ptr %.121191, i64 1
  %141 = load i8, ptr %.121191, align 1, !tbaa !24
  %142 = zext i8 %141 to i64
  %143 = zext nneg i32 %.13 to i64
  %144 = shl i64 %142, %143
  %145 = or i64 %144, %.131108
  %146 = add i32 %.13, 8
  %147 = icmp ugt i32 %.13, -9
  br i1 %147, label %135, label %.loopexit2075, !llvm.loop !32

.loopexit2075:                                    ; preds = %139, %133
  %.101376 = phi i64 [ %.71373, %133 ], [ %.91375.ph, %139 ]
  %.101282 = phi ptr [ %.71279, %133 ], [ %.91281.ph, %139 ]
  %.131192 = phi ptr [ %.101189, %133 ], [ %140, %139 ]
  %.141109 = phi i64 [ %.111106, %133 ], [ %145, %139 ]
  %.141022 = phi i32 [ %.111019, %133 ], [ %.131021.ph, %139 ]
  %.14938 = phi i32 [ %.11935, %133 ], [ %.13937.ph, %139 ]
  %.14859 = phi i32 [ %.11856, %133 ], [ %.13858.ph, %139 ]
  %.14 = phi i32 [ %.11, %133 ], [ %146, %139 ]
  %148 = trunc i64 %.141109 to i8
  %149 = getelementptr inbounds i8, ptr %0, i64 10536
  %150 = zext i32 %.14938 to i64
  %151 = getelementptr inbounds [4 x i8], ptr %149, i64 0, i64 %150
  store i8 %148, ptr %151, align 1, !tbaa !24
  %152 = lshr i64 %.141109, 8
  %153 = add i32 %.14, -8
  br label %164

154:                                              ; preds = %132, %157
  %.111377 = phi i64 [ %.71373, %132 ], [ %38, %157 ]
  %.111283 = phi ptr [ %.71279, %132 ], [ %4, %157 ]
  %.141193 = phi ptr [ %.101189, %132 ], [ %1, %157 ]
  %.151110 = phi i64 [ %.111106, %132 ], [ %30, %157 ]
  %.151023 = phi i32 [ %.111019, %132 ], [ %36, %157 ]
  %.15939 = phi i32 [ %.11935, %132 ], [ %34, %157 ]
  %.15860 = phi i32 [ %.11856, %132 ], [ %32, %157 ]
  %.15 = phi i32 [ 0, %132 ], [ %.84.fr1984, %157 ]
  %.not1629 = icmp ult ptr %.141193, %12
  br i1 %.not1629, label %158, label %155

155:                                              ; preds = %154
  %156 = and i32 %6, 2
  %.not1630 = icmp eq i32 %156, 0
  store i32 7, ptr %0, align 8, !tbaa !17
  %spec.select1711 = select i1 %.not1630, i32 -4, i32 1
  br label %.thread1683

157:                                              ; preds = %26
  br label %154, !llvm.loop !33

158:                                              ; preds = %154
  %159 = getelementptr inbounds i8, ptr %.141193, i64 1
  %160 = load i8, ptr %.141193, align 1, !tbaa !24
  %161 = getelementptr inbounds i8, ptr %0, i64 10536
  %162 = zext i32 %.15939 to i64
  %163 = getelementptr inbounds [4 x i8], ptr %161, i64 0, i64 %162
  store i8 %160, ptr %163, align 1, !tbaa !24
  br label %164

164:                                              ; preds = %.loopexit2075, %158
  %.121378 = phi i64 [ %.101376, %.loopexit2075 ], [ %.111377, %158 ]
  %.121284 = phi ptr [ %.101282, %.loopexit2075 ], [ %.111283, %158 ]
  %.151194 = phi ptr [ %.131192, %.loopexit2075 ], [ %159, %158 ]
  %.161111 = phi i64 [ %152, %.loopexit2075 ], [ %.151110, %158 ]
  %.161024 = phi i32 [ %.141022, %.loopexit2075 ], [ %.151023, %158 ]
  %.16940 = phi i32 [ %.14938, %.loopexit2075 ], [ %.15939, %158 ]
  %.16861 = phi i32 [ %.14859, %.loopexit2075 ], [ %.15860, %158 ]
  %.16 = phi i32 [ %153, %.loopexit2075 ], [ %.15, %158 ]
  %165 = add i32 %.16940, 1
  br label %130, !llvm.loop !34

166:                                              ; preds = %130
  %167 = getelementptr inbounds i8, ptr %0, i64 10536
  %168 = load i8, ptr %167, align 8, !tbaa !24
  %169 = zext i8 %168 to i32
  %170 = getelementptr inbounds i8, ptr %0, i64 10537
  %171 = load i8, ptr %170, align 1, !tbaa !24
  %172 = zext i8 %171 to i32
  %173 = shl nuw nsw i32 %172, 8
  %174 = or disjoint i32 %173, %169
  %175 = getelementptr inbounds i8, ptr %0, i64 10538
  %176 = load i16, ptr %175, align 2
  %177 = zext i16 %176 to i32
  %178 = xor i32 %174, %177
  %.not1611 = icmp eq i32 %178, 65535
  br i1 %.not1611, label %180, label %1146

179:                                              ; preds = %26
  br label %1146, !llvm.loop !35

180:                                              ; preds = %166, %205
  %.141380 = phi i64 [ %.71373, %166 ], [ %.181384, %205 ]
  %.141286 = phi ptr [ %.71279, %166 ], [ %207, %205 ]
  %.171196 = phi ptr [ %.101189, %166 ], [ %.211200, %205 ]
  %.181113 = phi i64 [ %.111106, %166 ], [ %.221117, %205 ]
  %.181026 = phi i32 [ %.111019, %166 ], [ %.221030, %205 ]
  %.18942 = phi i32 [ %174, %166 ], [ %208, %205 ]
  %.18863 = phi i32 [ %.11856, %166 ], [ %.21866, %205 ]
  %.18 = phi i32 [ %.11, %166 ], [ %.22, %205 ]
  %181 = icmp ne i32 %.18942, 0
  %182 = icmp ne i32 %.18, 0
  %183 = select i1 %181, i1 %182, i1 false
  br i1 %183, label %184, label %209

184:                                              ; preds = %180
  %185 = icmp ult i32 %.18, 8
  br i1 %185, label %.preheader2082, label %.loopexit2083

.preheader2082:                                   ; preds = %189, %184
  %.161382.ph = phi i64 [ %.141380, %184 ], [ %38, %189 ]
  %.161288.ph = phi ptr [ %.141286, %184 ], [ %4, %189 ]
  %.191198.ph = phi ptr [ %.171196, %184 ], [ %1, %189 ]
  %.201115.ph = phi i64 [ %.181113, %184 ], [ %30, %189 ]
  %.201028.ph = phi i32 [ %.181026, %184 ], [ %36, %189 ]
  %.20944.ph = phi i32 [ %.18942, %184 ], [ %34, %189 ]
  %.20865.ph = phi i32 [ %.18863, %184 ], [ %32, %189 ]
  %.20.ph = phi i32 [ %.18, %184 ], [ %.84.fr1984, %189 ]
  br label %186

186:                                              ; preds = %.preheader2082, %190
  %.191198 = phi ptr [ %191, %190 ], [ %.191198.ph, %.preheader2082 ]
  %.201115 = phi i64 [ %196, %190 ], [ %.201115.ph, %.preheader2082 ]
  %.20 = phi i32 [ %197, %190 ], [ %.20.ph, %.preheader2082 ]
  %.not1625 = icmp ult ptr %.191198, %12
  br i1 %.not1625, label %190, label %187

187:                                              ; preds = %186
  %188 = and i32 %6, 2
  %.not1627 = icmp eq i32 %188, 0
  store i32 51, ptr %0, align 8, !tbaa !17
  %spec.select1713 = select i1 %.not1627, i32 -4, i32 1
  br label %.thread1683

189:                                              ; preds = %26
  br label %.preheader2082, !llvm.loop !36

190:                                              ; preds = %186
  %191 = getelementptr inbounds i8, ptr %.191198, i64 1
  %192 = load i8, ptr %.191198, align 1, !tbaa !24
  %193 = zext i8 %192 to i64
  %194 = zext nneg i32 %.20 to i64
  %195 = shl i64 %193, %194
  %196 = or i64 %195, %.201115
  %197 = add i32 %.20, 8
  %198 = icmp ugt i32 %.20, -9
  br i1 %198, label %186, label %.loopexit2083, !llvm.loop !37

.loopexit2083:                                    ; preds = %190, %184
  %.171383 = phi i64 [ %.141380, %184 ], [ %.161382.ph, %190 ]
  %.171289 = phi ptr [ %.141286, %184 ], [ %.161288.ph, %190 ]
  %.201199 = phi ptr [ %.171196, %184 ], [ %191, %190 ]
  %.211116 = phi i64 [ %.181113, %184 ], [ %196, %190 ]
  %.211029 = phi i32 [ %.181026, %184 ], [ %.201028.ph, %190 ]
  %.21945 = phi i32 [ %.18942, %184 ], [ %.20944.ph, %190 ]
  %.21 = phi i32 [ %.18, %184 ], [ %197, %190 ]
  %199 = trunc i64 %.211116 to i32
  %200 = and i32 %199, 255
  %201 = lshr i64 %.211116, 8
  %202 = add i32 %.21, -8
  br label %203

203:                                              ; preds = %204, %.loopexit2083
  %.181384 = phi i64 [ %.171383, %.loopexit2083 ], [ %38, %204 ]
  %.181290 = phi ptr [ %.171289, %.loopexit2083 ], [ %4, %204 ]
  %.211200 = phi ptr [ %.201199, %.loopexit2083 ], [ %1, %204 ]
  %.221117 = phi i64 [ %201, %.loopexit2083 ], [ %30, %204 ]
  %.221030 = phi i32 [ %.211029, %.loopexit2083 ], [ %36, %204 ]
  %.22946 = phi i32 [ %.21945, %.loopexit2083 ], [ %34, %204 ]
  %.21866 = phi i32 [ %200, %.loopexit2083 ], [ %32, %204 ]
  %.22 = phi i32 [ %202, %.loopexit2083 ], [ %.84.fr1984, %204 ]
  %.not1626 = icmp ult ptr %.181290, %14
  br i1 %.not1626, label %205, label %1146

204:                                              ; preds = %26
  br label %203, !llvm.loop !38

205:                                              ; preds = %203
  %206 = trunc i32 %.21866 to i8
  %207 = getelementptr inbounds i8, ptr %.181290, i64 1
  store i8 %206, ptr %.181290, align 1, !tbaa !24
  %208 = add i32 %.22946, -1
  br label %180, !llvm.loop !39

209:                                              ; preds = %180, %216
  %.191385 = phi i64 [ %.141380, %180 ], [ %.211387, %216 ]
  %.191291 = phi ptr [ %.141286, %180 ], [ %226, %216 ]
  %.221201 = phi ptr [ %.171196, %180 ], [ %225, %216 ]
  %.231118 = phi i64 [ %.181113, %180 ], [ %.251120, %216 ]
  %.231031 = phi i32 [ %.181026, %180 ], [ %.251033, %216 ]
  %.23947 = phi i32 [ %.18942, %180 ], [ %228, %216 ]
  %.22867 = phi i32 [ %.18863, %180 ], [ %.24869, %216 ]
  %.23 = phi i32 [ %.18, %180 ], [ %.25, %216 ]
  %.not1612 = icmp eq i32 %.23947, 0
  br i1 %.not1612, label %1082, label %210

210:                                              ; preds = %209, %211
  %.201386 = phi i64 [ %.191385, %209 ], [ %38, %211 ]
  %.201292 = phi ptr [ %.191291, %209 ], [ %4, %211 ]
  %.231202 = phi ptr [ %.221201, %209 ], [ %1, %211 ]
  %.241119 = phi i64 [ %.231118, %209 ], [ %30, %211 ]
  %.241032 = phi i32 [ %.231031, %209 ], [ %36, %211 ]
  %.24948 = phi i32 [ %.23947, %209 ], [ %34, %211 ]
  %.23868 = phi i32 [ %.22867, %209 ], [ %32, %211 ]
  %.24 = phi i32 [ %.23, %209 ], [ %.84.fr1984, %211 ]
  %.not1622 = icmp ult ptr %.201292, %14
  br i1 %.not1622, label %212, label %1146

211:                                              ; preds = %26
  br label %210, !llvm.loop !40

212:                                              ; preds = %210, %215
  %.211387 = phi i64 [ %.201386, %210 ], [ %38, %215 ]
  %.211293 = phi ptr [ %.201292, %210 ], [ %4, %215 ]
  %.241203 = phi ptr [ %.231202, %210 ], [ %1, %215 ]
  %.251120 = phi i64 [ %.241119, %210 ], [ %30, %215 ]
  %.251033 = phi i32 [ %.241032, %210 ], [ %36, %215 ]
  %.25949 = phi i32 [ %.24948, %210 ], [ %34, %215 ]
  %.24869 = phi i32 [ %.23868, %210 ], [ %32, %215 ]
  %.25 = phi i32 [ %.24, %210 ], [ %.84.fr1984, %215 ]
  %.not1623 = icmp ult ptr %.241203, %12
  br i1 %.not1623, label %216, label %213

213:                                              ; preds = %212
  %214 = and i32 %6, 2
  %.not1624 = icmp eq i32 %214, 0
  store i32 38, ptr %0, align 8, !tbaa !17
  %spec.select1715 = select i1 %.not1624, i32 -4, i32 1
  br label %.thread1683

215:                                              ; preds = %26
  br label %212, !llvm.loop !41

216:                                              ; preds = %212
  %217 = ptrtoint ptr %14 to i64
  %218 = ptrtoint ptr %.211293 to i64
  %219 = sub i64 %217, %218
  %220 = ptrtoint ptr %12 to i64
  %221 = ptrtoint ptr %.241203 to i64
  %222 = sub i64 %220, %221
  %. = tail call i64 @llvm.umin.i64(i64 %219, i64 %222)
  %223 = zext i32 %.25949 to i64
  %224 = tail call i64 @llvm.umin.i64(i64 %., i64 %223)
  tail call void @llvm.memcpy.p0.p0.i64(ptr align 1 %.211293, ptr align 1 %.241203, i64 %224, i1 false)
  %225 = getelementptr inbounds i8, ptr %.241203, i64 %224
  %226 = getelementptr inbounds i8, ptr %.211293, i64 %224
  %227 = trunc nuw i64 %224 to i32
  %228 = sub i32 %.25949, %227
  br label %209, !llvm.loop !42

229:                                              ; preds = %.loopexit2186
  switch i32 %111, label %235 [
    i32 3, label %1146
    i32 1, label %.lr.ph1786.preheader
  ]

230:                                              ; preds = %26
  br label %1146, !llvm.loop !43

.lr.ph1786.preheader:                             ; preds = %229
  %231 = getelementptr i8, ptr %0, i64 72
  %232 = getelementptr inbounds i8, ptr %0, i64 44
  store i32 288, ptr %232, align 4, !tbaa !44
  %233 = getelementptr inbounds i8, ptr %0, i64 48
  store i32 32, ptr %233, align 4, !tbaa !44
  %234 = getelementptr inbounds i8, ptr %0, i64 3560
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %234, i8 5, i64 32, i1 false)
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 1 dereferenceable(144) %231, i8 8, i64 144, i1 false), !tbaa !24
  %scevgep = getelementptr i8, ptr %0, i64 216
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 1 dereferenceable(112) %scevgep, i8 9, i64 112, i1 false), !tbaa !24
  %scevgep1906 = getelementptr i8, ptr %0, i64 328
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 1 dereferenceable(24) %scevgep1906, i8 7, i64 24, i1 false), !tbaa !24
  %scevgep1907 = getelementptr i8, ptr %0, i64 352
  store i64 578721382704613384, ptr %scevgep1907, align 1
  br label %.loopexit1756

235:                                              ; preds = %229, %.loopexit2099
  %.231389 = phi i64 [ %.261392, %.loopexit2099 ], [ %.31369, %229 ]
  %.231295 = phi ptr [ %.261298, %.loopexit2099 ], [ %.31275, %229 ]
  %.261205 = phi ptr [ %.291208, %.loopexit2099 ], [ %.61185, %229 ]
  %.271122 = phi i64 [ %268, %.loopexit2099 ], [ %109, %229 ]
  %.271035 = phi i32 [ %.301038, %.loopexit2099 ], [ %.71015, %229 ]
  %.27951 = phi i32 [ %273, %.loopexit2099 ], [ 0, %229 ]
  %.26871 = phi i32 [ %.29874, %.loopexit2099 ], [ %.7852, %229 ]
  %.27 = phi i32 [ %269, %.loopexit2099 ], [ %110, %229 ]
  %236 = icmp ult i32 %.27951, 3
  br i1 %236, label %237, label %274

237:                                              ; preds = %235
  %238 = zext nneg i32 %.27951 to i64
  %239 = getelementptr inbounds [4 x i8], ptr @.str.14, i64 0, i64 %238
  %240 = load i8, ptr %239, align 1, !tbaa !24
  %241 = sext i8 %240 to i32
  %242 = icmp ult i32 %.27, %241
  br i1 %242, label %.preheader2098, label %.loopexit2099

.preheader2098:                                   ; preds = %248, %237
  %.251391.ph = phi i64 [ %.231389, %237 ], [ %38, %248 ]
  %.251297.ph = phi ptr [ %.231295, %237 ], [ %4, %248 ]
  %.281207.ph = phi ptr [ %.261205, %237 ], [ %1, %248 ]
  %.291124.ph = phi i64 [ %.271122, %237 ], [ %30, %248 ]
  %.291037.ph = phi i32 [ %.271035, %237 ], [ %36, %248 ]
  %.29953.ph = phi i32 [ %.27951, %237 ], [ %34, %248 ]
  %.28873.ph = phi i32 [ %.26871, %237 ], [ %32, %248 ]
  %.29.ph = phi i32 [ %.27, %237 ], [ %.84.fr1984, %248 ]
  %243 = zext i32 %.29953.ph to i64
  %244 = getelementptr inbounds [4 x i8], ptr @.str.14, i64 0, i64 %243
  br label %245

245:                                              ; preds = %.preheader2098, %249
  %.281207 = phi ptr [ %250, %249 ], [ %.281207.ph, %.preheader2098 ]
  %.291124 = phi i64 [ %255, %249 ], [ %.291124.ph, %.preheader2098 ]
  %.29 = phi i32 [ %256, %249 ], [ %.29.ph, %.preheader2098 ]
  %.not1572 = icmp ult ptr %.281207, %12
  br i1 %.not1572, label %249, label %246

246:                                              ; preds = %245
  %247 = and i32 %6, 2
  %.not1573 = icmp eq i32 %247, 0
  store i32 11, ptr %0, align 8, !tbaa !17
  %spec.select1717 = select i1 %.not1573, i32 -4, i32 1
  br label %.thread1683

248:                                              ; preds = %26
  br label %.preheader2098, !llvm.loop !45

249:                                              ; preds = %245
  %250 = getelementptr inbounds i8, ptr %.281207, i64 1
  %251 = load i8, ptr %.281207, align 1, !tbaa !24
  %252 = zext i8 %251 to i64
  %253 = zext nneg i32 %.29 to i64
  %254 = shl i64 %252, %253
  %255 = or i64 %254, %.291124
  %256 = add i32 %.29, 8
  %257 = load i8, ptr %244, align 1, !tbaa !24
  %258 = sext i8 %257 to i32
  %259 = icmp ult i32 %256, %258
  br i1 %259, label %245, label %.loopexit2099, !llvm.loop !46

.loopexit2099:                                    ; preds = %249, %237
  %.pre-phi1960 = phi i32 [ %241, %237 ], [ %258, %249 ]
  %260 = phi i8 [ %240, %237 ], [ %257, %249 ]
  %.pre-phi = phi i64 [ %238, %237 ], [ %243, %249 ]
  %.261392 = phi i64 [ %.231389, %237 ], [ %.251391.ph, %249 ]
  %.261298 = phi ptr [ %.231295, %237 ], [ %.251297.ph, %249 ]
  %.291208 = phi ptr [ %.261205, %237 ], [ %250, %249 ]
  %.301125 = phi i64 [ %.271122, %237 ], [ %255, %249 ]
  %.301038 = phi i32 [ %.271035, %237 ], [ %.291037.ph, %249 ]
  %.30954 = phi i32 [ %.27951, %237 ], [ %.29953.ph, %249 ]
  %.29874 = phi i32 [ %.26871, %237 ], [ %.28873.ph, %249 ]
  %.30 = phi i32 [ %.27, %237 ], [ %256, %249 ]
  %261 = zext nneg i8 %260 to i32
  %notmask = shl nsw i32 -1, %261
  %262 = xor i32 %notmask, -1
  %263 = trunc i64 %.301125 to i32
  %264 = and i32 %262, %263
  %265 = getelementptr inbounds i8, ptr %0, i64 44
  %266 = getelementptr inbounds [3 x i32], ptr %265, i64 0, i64 %.pre-phi
  %267 = zext nneg i32 %.pre-phi1960 to i64
  %268 = lshr i64 %.301125, %267
  %269 = sub i32 %.30, %.pre-phi1960
  %270 = getelementptr inbounds [3 x i32], ptr @_ZZ16tinfl_decompressE17s_min_table_sizes, i64 0, i64 %.pre-phi
  %271 = load i32, ptr %270, align 4, !tbaa !44
  %272 = add i32 %264, %271
  store i32 %272, ptr %266, align 4, !tbaa !44
  %273 = add i32 %.30954, 1
  br label %235, !llvm.loop !47

274:                                              ; preds = %235
  %275 = getelementptr inbounds i8, ptr %0, i64 7048
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(288) %275, i8 0, i64 288, i1 false)
  br label %276

276:                                              ; preds = %.loopexit2110, %274
  %.271393 = phi i64 [ %.231389, %274 ], [ %.301396, %.loopexit2110 ]
  %.271299 = phi ptr [ %.231295, %274 ], [ %.301302, %.loopexit2110 ]
  %.301209 = phi ptr [ %.261205, %274 ], [ %.331212, %.loopexit2110 ]
  %.311126 = phi i64 [ %.271122, %274 ], [ %305, %.loopexit2110 ]
  %.311039 = phi i32 [ %.271035, %274 ], [ %.341042, %.loopexit2110 ]
  %.31955 = phi i32 [ 0, %274 ], [ %313, %.loopexit2110 ]
  %.30875 = phi i32 [ %.26871, %274 ], [ %.33878, %.loopexit2110 ]
  %.31 = phi i32 [ %.27, %274 ], [ %306, %.loopexit2110 ]
  %277 = getelementptr inbounds i8, ptr %0, i64 52
  %278 = load i32, ptr %277, align 4, !tbaa !44
  %279 = icmp ult i32 %.31955, %278
  br i1 %279, label %280, label %314

280:                                              ; preds = %276
  %281 = icmp ult i32 %.31, 3
  br i1 %281, label %.preheader2109, label %.loopexit2110

.preheader2109:                                   ; preds = %280, %284
  %.291395.ph = phi i64 [ %.271393, %280 ], [ %38, %284 ]
  %.291301.ph = phi ptr [ %.271299, %280 ], [ %4, %284 ]
  %.321211.ph = phi ptr [ %.301209, %280 ], [ %1, %284 ]
  %.331128.ph = phi i64 [ %.311126, %280 ], [ %30, %284 ]
  %.331041.ph = phi i32 [ %.311039, %280 ], [ %36, %284 ]
  %.33957.ph = phi i32 [ %.31955, %280 ], [ %34, %284 ]
  %.32877.ph = phi i32 [ %.30875, %280 ], [ %32, %284 ]
  %.33.ph = phi i32 [ %.31, %280 ], [ %.84.fr1984, %284 ]
  %.not1570 = icmp ult ptr %.321211.ph, %12
  br i1 %.not1570, label %285, label %282

282:                                              ; preds = %294, %.preheader2109
  %.321211.lcssa = phi ptr [ %.321211.ph, %.preheader2109 ], [ %286, %294 ]
  %.331128.lcssa = phi i64 [ %.331128.ph, %.preheader2109 ], [ %291, %294 ]
  %.33.lcssa = phi i32 [ %.33.ph, %.preheader2109 ], [ %292, %294 ]
  %283 = and i32 %6, 2
  %.not1571 = icmp eq i32 %283, 0
  store i32 14, ptr %0, align 8, !tbaa !17
  %spec.select1719 = select i1 %.not1571, i32 -4, i32 1
  br label %.thread1683

284:                                              ; preds = %26
  br label %.preheader2109, !llvm.loop !48

285:                                              ; preds = %.preheader2109
  %286 = getelementptr inbounds i8, ptr %.321211.ph, i64 1
  %287 = load i8, ptr %.321211.ph, align 1, !tbaa !24
  %288 = zext i8 %287 to i64
  %289 = zext nneg i32 %.33.ph to i64
  %290 = shl i64 %288, %289
  %291 = or i64 %290, %.331128.ph
  %292 = add i32 %.33.ph, 8
  %293 = icmp ult i32 %292, 3
  br i1 %293, label %294, label %.loopexit2110, !llvm.loop !49

294:                                              ; preds = %285
  %.not1570.1 = icmp ult ptr %286, %12
  br i1 %.not1570.1, label %295, label %282

295:                                              ; preds = %294
  %296 = getelementptr inbounds i8, ptr %.321211.ph, i64 2
  %297 = load i8, ptr %286, align 1, !tbaa !24
  %298 = zext i8 %297 to i64
  %299 = zext nneg i32 %292 to i64
  %300 = shl nuw nsw i64 %298, %299
  %301 = or i64 %300, %.331128.ph
  %302 = add nsw i32 %.33.ph, 16
  br label %.loopexit2110

.loopexit2110:                                    ; preds = %285, %295, %280
  %.301396 = phi i64 [ %.271393, %280 ], [ %.291395.ph, %295 ], [ %.291395.ph, %285 ]
  %.301302 = phi ptr [ %.271299, %280 ], [ %.291301.ph, %295 ], [ %.291301.ph, %285 ]
  %.331212 = phi ptr [ %.301209, %280 ], [ %286, %285 ], [ %296, %295 ]
  %.341129 = phi i64 [ %.311126, %280 ], [ %291, %285 ], [ %301, %295 ]
  %.341042 = phi i32 [ %.311039, %280 ], [ %.331041.ph, %295 ], [ %.331041.ph, %285 ]
  %.34958 = phi i32 [ %.31955, %280 ], [ %.33957.ph, %295 ], [ %.33957.ph, %285 ]
  %.33878 = phi i32 [ %.30875, %280 ], [ %.32877.ph, %295 ], [ %.32877.ph, %285 ]
  %.34 = phi i32 [ %.31, %280 ], [ %292, %285 ], [ %302, %295 ]
  %303 = trunc i64 %.341129 to i8
  %304 = and i8 %303, 7
  %305 = lshr i64 %.341129, 3
  %306 = add i32 %.34, -3
  %307 = getelementptr inbounds i8, ptr %0, i64 7048
  %308 = zext i32 %.34958 to i64
  %309 = getelementptr inbounds [19 x i8], ptr @_ZZ16tinfl_decompressE17s_length_dezigzag, i64 0, i64 %308
  %310 = load i8, ptr %309, align 1, !tbaa !24
  %311 = zext i8 %310 to i64
  %312 = getelementptr inbounds [288 x i8], ptr %307, i64 0, i64 %311
  store i8 %304, ptr %312, align 1, !tbaa !24
  %313 = add i32 %.34958, 1
  br label %276, !llvm.loop !50

314:                                              ; preds = %276
  store i32 19, ptr %277, align 4, !tbaa !44
  %.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 !30
  br label %.loopexit1756

.loopexit1756:                                    ; preds = %314, %.lr.ph1786.preheader, %673
  %315 = phi i32 [ %676, %673 ], [ %.pre.pre, %314 ], [ 1, %.lr.ph1786.preheader ]
  %.321398 = phi i64 [ %.431409, %673 ], [ %.271393, %314 ], [ %.31369, %.lr.ph1786.preheader ]
  %.321304 = phi ptr [ %.431315, %673 ], [ %.271299, %314 ], [ %.31275, %.lr.ph1786.preheader ]
  %.351214 = phi ptr [ %.461225, %673 ], [ %.301209, %314 ], [ %.61185, %.lr.ph1786.preheader ]
  %.361131 = phi i64 [ %.471142, %673 ], [ %.311126, %314 ], [ %109, %.lr.ph1786.preheader ]
  %.361044 = phi i32 [ %.471055, %673 ], [ %.311039, %314 ], [ %.71015, %.lr.ph1786.preheader ]
  %.36960 = phi i32 [ %.47971, %673 ], [ %.31955, %314 ], [ %.8932, %.lr.ph1786.preheader ]
  %.35880 = phi i32 [ %.45890, %673 ], [ %.30875, %314 ], [ %.7852, %.lr.ph1786.preheader ]
  %.36 = phi i32 [ %.47, %673 ], [ %.31, %314 ], [ %110, %.lr.ph1786.preheader ]
  %316 = icmp sgt i32 %315, -1
  br i1 %316, label %317, label %.preheader2159

317:                                              ; preds = %.loopexit1756
  %318 = getelementptr inbounds i8, ptr %0, i64 72
  %319 = zext nneg i32 %315 to i64
  %320 = getelementptr inbounds [3 x %struct.tinfl_huff_table], ptr %318, i64 0, i64 %319
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(64) %10, i8 0, i64 64, i1 false)
  %321 = getelementptr inbounds i8, ptr %320, i64 288
  %322 = getelementptr inbounds i8, ptr %320, i64 2336
  %323 = getelementptr inbounds i8, ptr %0, i64 44
  %324 = getelementptr inbounds [3 x i32], ptr %323, i64 0, i64 %319
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 2 dereferenceable(3200) %321, i8 0, i64 3200, i1 false)
  %325 = load i32, ptr %324, align 4, !tbaa !44
  %.not1862 = icmp eq i32 %325, 0
  br i1 %.not1862, label %._crit_edge1797, label %.lr.ph1796.preheader

.lr.ph1796.preheader:                             ; preds = %317
  %wide.trip.count = zext i32 %325 to i64
  %xtraiter = and i64 %wide.trip.count, 3
  %326 = icmp ult i32 %325, 4
  br i1 %326, label %._crit_edge1797.loopexit.unr-lcssa, label %.lr.ph1796.preheader.new

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

.lr.ph1796:                                       ; preds = %.lr.ph1796, %.lr.ph1796.preheader.new
  %indvars.iv = phi i64 [ 0, %.lr.ph1796.preheader.new ], [ %indvars.iv.next.3, %.lr.ph1796 ]
  %niter = phi i64 [ 0, %.lr.ph1796.preheader.new ], [ %niter.next.3, %.lr.ph1796 ]
  %327 = getelementptr inbounds [288 x i8], ptr %320, i64 0, i64 %indvars.iv
  %328 = load i8, ptr %327, align 1, !tbaa !24
  %329 = zext i8 %328 to i64
  %330 = getelementptr inbounds [16 x i32], ptr %10, i64 0, i64 %329
  %331 = load i32, ptr %330, align 4, !tbaa !44
  %332 = add i32 %331, 1
  store i32 %332, ptr %330, align 4, !tbaa !44
  %indvars.iv.next = or disjoint i64 %indvars.iv, 1
  %333 = getelementptr inbounds [288 x i8], ptr %320, i64 0, i64 %indvars.iv.next
  %334 = load i8, ptr %333, align 1, !tbaa !24
  %335 = zext i8 %334 to i64
  %336 = getelementptr inbounds [16 x i32], ptr %10, i64 0, i64 %335
  %337 = load i32, ptr %336, align 4, !tbaa !44
  %338 = add i32 %337, 1
  store i32 %338, ptr %336, align 4, !tbaa !44
  %indvars.iv.next.1 = or disjoint i64 %indvars.iv, 2
  %339 = getelementptr inbounds [288 x i8], ptr %320, i64 0, i64 %indvars.iv.next.1
  %340 = load i8, ptr %339, align 1, !tbaa !24
  %341 = zext i8 %340 to i64
  %342 = getelementptr inbounds [16 x i32], ptr %10, i64 0, i64 %341
  %343 = load i32, ptr %342, align 4, !tbaa !44
  %344 = add i32 %343, 1
  store i32 %344, ptr %342, align 4, !tbaa !44
  %indvars.iv.next.2 = or disjoint i64 %indvars.iv, 3
  %345 = getelementptr inbounds [288 x i8], ptr %320, i64 0, i64 %indvars.iv.next.2
  %346 = load i8, ptr %345, align 1, !tbaa !24
  %347 = zext i8 %346 to i64
  %348 = getelementptr inbounds [16 x i32], ptr %10, i64 0, i64 %347
  %349 = load i32, ptr %348, align 4, !tbaa !44
  %350 = add i32 %349, 1
  store i32 %350, ptr %348, align 4, !tbaa !44
  %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_edge1797.loopexit.unr-lcssa, label %.lr.ph1796, !llvm.loop !51

._crit_edge1797.loopexit.unr-lcssa:               ; preds = %.lr.ph1796, %.lr.ph1796.preheader
  %indvars.iv.unr = phi i64 [ 0, %.lr.ph1796.preheader ], [ %indvars.iv.next.3, %.lr.ph1796 ]
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %._crit_edge1797.loopexit, label %.lr.ph1796.epil

.lr.ph1796.epil:                                  ; preds = %._crit_edge1797.loopexit.unr-lcssa, %.lr.ph1796.epil
  %indvars.iv.epil = phi i64 [ %indvars.iv.next.epil, %.lr.ph1796.epil ], [ %indvars.iv.unr, %._crit_edge1797.loopexit.unr-lcssa ]
  %epil.iter = phi i64 [ %epil.iter.next, %.lr.ph1796.epil ], [ 0, %._crit_edge1797.loopexit.unr-lcssa ]
  %351 = getelementptr inbounds [288 x i8], ptr %320, i64 0, i64 %indvars.iv.epil
  %352 = load i8, ptr %351, align 1, !tbaa !24
  %353 = zext i8 %352 to i64
  %354 = getelementptr inbounds [16 x i32], ptr %10, i64 0, i64 %353
  %355 = load i32, ptr %354, align 4, !tbaa !44
  %356 = add i32 %355, 1
  store i32 %356, ptr %354, align 4, !tbaa !44
  %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, %xtraiter
  br i1 %epil.iter.cmp.not, label %._crit_edge1797.loopexit, label %.lr.ph1796.epil, !llvm.loop !52

._crit_edge1797.loopexit:                         ; preds = %.lr.ph1796.epil, %._crit_edge1797.loopexit.unr-lcssa
  %.phi.trans.insert1931 = getelementptr inbounds i8, ptr %10, i64 4
  %.pre1932 = load i32, ptr %.phi.trans.insert1931, align 4, !tbaa !44
  %.phi.trans.insert1933 = getelementptr inbounds i8, ptr %10, i64 8
  %.pre1934 = load i32, ptr %.phi.trans.insert1933, align 8, !tbaa !44
  %.phi.trans.insert1935 = getelementptr inbounds i8, ptr %10, i64 12
  %.pre1936 = load i32, ptr %.phi.trans.insert1935, align 4, !tbaa !44
  %.phi.trans.insert1937 = getelementptr inbounds i8, ptr %10, i64 16
  %.pre1938 = load i32, ptr %.phi.trans.insert1937, align 16, !tbaa !44
  %.phi.trans.insert1939 = getelementptr inbounds i8, ptr %10, i64 20
  %.pre1940 = load i32, ptr %.phi.trans.insert1939, align 4, !tbaa !44
  %.phi.trans.insert1941 = getelementptr inbounds i8, ptr %10, i64 24
  %.pre1942 = load i32, ptr %.phi.trans.insert1941, align 8, !tbaa !44
  %.phi.trans.insert1943 = getelementptr inbounds i8, ptr %10, i64 28
  %.pre1944 = load i32, ptr %.phi.trans.insert1943, align 4, !tbaa !44
  %.phi.trans.insert1945 = getelementptr inbounds i8, ptr %10, i64 32
  %.pre1946 = load i32, ptr %.phi.trans.insert1945, align 16, !tbaa !44
  %.phi.trans.insert1947 = getelementptr inbounds i8, ptr %10, i64 36
  %.pre1948 = load i32, ptr %.phi.trans.insert1947, align 4, !tbaa !44
  %.phi.trans.insert1949 = getelementptr inbounds i8, ptr %10, i64 40
  %.pre1950 = load i32, ptr %.phi.trans.insert1949, align 8, !tbaa !44
  %.phi.trans.insert1951 = getelementptr inbounds i8, ptr %10, i64 44
  %.pre1952 = load i32, ptr %.phi.trans.insert1951, align 4, !tbaa !44
  %.phi.trans.insert1953 = getelementptr inbounds i8, ptr %10, i64 48
  %.pre1954 = load i32, ptr %.phi.trans.insert1953, align 16, !tbaa !44
  %.phi.trans.insert1955 = getelementptr inbounds i8, ptr %10, i64 52
  %.pre1956 = load i32, ptr %.phi.trans.insert1955, align 4, !tbaa !44
  %.phi.trans.insert1957 = getelementptr inbounds i8, ptr %10, i64 56
  %.pre1958 = load i32, ptr %.phi.trans.insert1957, align 8, !tbaa !44
  br label %._crit_edge1797

._crit_edge1797:                                  ; preds = %._crit_edge1797.loopexit, %317
  %357 = phi i32 [ %.pre1958, %._crit_edge1797.loopexit ], [ 0, %317 ]
  %358 = phi i32 [ %.pre1956, %._crit_edge1797.loopexit ], [ 0, %317 ]
  %359 = phi i32 [ %.pre1954, %._crit_edge1797.loopexit ], [ 0, %317 ]
  %360 = phi i32 [ %.pre1952, %._crit_edge1797.loopexit ], [ 0, %317 ]
  %361 = phi i32 [ %.pre1950, %._crit_edge1797.loopexit ], [ 0, %317 ]
  %362 = phi i32 [ %.pre1948, %._crit_edge1797.loopexit ], [ 0, %317 ]
  %363 = phi i32 [ %.pre1946, %._crit_edge1797.loopexit ], [ 0, %317 ]
  %364 = phi i32 [ %.pre1944, %._crit_edge1797.loopexit ], [ 0, %317 ]
  %365 = phi i32 [ %.pre1942, %._crit_edge1797.loopexit ], [ 0, %317 ]
  %366 = phi i32 [ %.pre1940, %._crit_edge1797.loopexit ], [ 0, %317 ]
  %367 = phi i32 [ %.pre1938, %._crit_edge1797.loopexit ], [ 0, %317 ]
  %368 = phi i32 [ %.pre1936, %._crit_edge1797.loopexit ], [ 0, %317 ]
  %369 = phi i32 [ %.pre1934, %._crit_edge1797.loopexit ], [ 0, %317 ]
  %370 = phi i32 [ %.pre1932, %._crit_edge1797.loopexit ], [ 0, %317 ]
  %371 = getelementptr inbounds i8, ptr %9, i64 4
  store i32 0, ptr %371, align 4, !tbaa !44
  store i32 0, ptr %9, align 16, !tbaa !44
  %372 = shl i32 %370, 1
  %373 = getelementptr inbounds i8, ptr %9, i64 8
  store i32 %372, ptr %373, align 8, !tbaa !44
  %374 = add i32 %369, %370
  %375 = add i32 %369, %372
  %376 = shl i32 %375, 1
  %377 = getelementptr inbounds i8, ptr %9, i64 12
  store i32 %376, ptr %377, align 4, !tbaa !44
  %378 = add i32 %368, %374
  %379 = add i32 %368, %376
  %380 = shl i32 %379, 1
  %381 = getelementptr inbounds i8, ptr %9, i64 16
  store i32 %380, ptr %381, align 16, !tbaa !44
  %382 = add i32 %367, %378
  %383 = add i32 %367, %380
  %384 = shl i32 %383, 1
  %385 = getelementptr inbounds i8, ptr %9, i64 20
  store i32 %384, ptr %385, align 4, !tbaa !44
  %386 = add i32 %366, %382
  %387 = add i32 %366, %384
  %388 = shl i32 %387, 1
  %389 = getelementptr inbounds i8, ptr %9, i64 24
  store i32 %388, ptr %389, align 8, !tbaa !44
  %390 = add i32 %365, %386
  %391 = add i32 %365, %388
  %392 = shl i32 %391, 1
  %393 = getelementptr inbounds i8, ptr %9, i64 28
  store i32 %392, ptr %393, align 4, !tbaa !44
  %394 = add i32 %364, %390
  %395 = add i32 %364, %392
  %396 = shl i32 %395, 1
  %397 = getelementptr inbounds i8, ptr %9, i64 32
  store i32 %396, ptr %397, align 16, !tbaa !44
  %398 = add i32 %363, %394
  %399 = add i32 %363, %396
  %400 = shl i32 %399, 1
  %401 = getelementptr inbounds i8, ptr %9, i64 36
  store i32 %400, ptr %401, align 4, !tbaa !44
  %402 = add i32 %362, %398
  %403 = add i32 %362, %400
  %404 = shl i32 %403, 1
  %405 = getelementptr inbounds i8, ptr %9, i64 40
  store i32 %404, ptr %405, align 8, !tbaa !44
  %406 = add i32 %361, %402
  %407 = add i32 %361, %404
  %408 = shl i32 %407, 1
  %409 = getelementptr inbounds i8, ptr %9, i64 44
  store i32 %408, ptr %409, align 4, !tbaa !44
  %410 = add i32 %360, %406
  %411 = add i32 %360, %408
  %412 = shl i32 %411, 1
  %413 = getelementptr inbounds i8, ptr %9, i64 48
  store i32 %412, ptr %413, align 16, !tbaa !44
  %414 = add i32 %359, %410
  %415 = add i32 %359, %412
  %416 = shl i32 %415, 1
  %417 = getelementptr inbounds i8, ptr %9, i64 52
  store i32 %416, ptr %417, align 4, !tbaa !44
  %418 = add i32 %358, %414
  %419 = add i32 %358, %416
  %420 = shl i32 %419, 1
  %421 = getelementptr inbounds i8, ptr %9, i64 56
  store i32 %420, ptr %421, align 8, !tbaa !44
  %422 = add i32 %357, %418
  %423 = add i32 %357, %420
  %424 = shl i32 %423, 1
  %425 = getelementptr inbounds i8, ptr %9, i64 60
  store i32 %424, ptr %425, align 4, !tbaa !44
  %426 = getelementptr inbounds i8, ptr %10, i64 60
  %427 = load i32, ptr %426, align 4, !tbaa !44
  %428 = add i32 %427, %422
  %429 = add i32 %427, %424
  %430 = shl i32 %429, 1
  %431 = getelementptr inbounds i8, ptr %9, i64 64
  store i32 %430, ptr %431, align 16, !tbaa !44
  %432 = icmp ne i32 %430, 65536
  %433 = icmp ugt i32 %428, 1
  %or.cond = select i1 %432, i1 %433, i1 false
  br i1 %or.cond, label %1146, label %.preheader1744

.preheader1744:                                   ; preds = %._crit_edge1797
  br i1 %.not1862, label %._crit_edge1821, label %.lr.ph1820.preheader

.lr.ph1820.preheader:                             ; preds = %.preheader1744
  %wide.trip.count1919 = zext i32 %325 to i64
  br label %.lr.ph1820

434:                                              ; preds = %26
  br label %1146, !llvm.loop !54

.lr.ph1820:                                       ; preds = %.lr.ph1820.preheader, %.loopexit1743
  %indvars.iv1916 = phi i64 [ 0, %.lr.ph1820.preheader ], [ %indvars.iv.next1917, %.loopexit1743 ]
  %.014691818 = phi i32 [ -1, %.lr.ph1820.preheader ], [ %.41473, %.loopexit1743 ]
  %435 = getelementptr inbounds [288 x i8], ptr %320, i64 0, i64 %indvars.iv1916
  %436 = load i8, ptr %435, align 1, !tbaa !24
  %437 = zext i8 %436 to i32
  %.not1606 = icmp eq i8 %436, 0
  br i1 %.not1606, label %.loopexit1743, label %438

438:                                              ; preds = %.lr.ph1820
  %439 = zext i8 %436 to i64
  %440 = getelementptr inbounds [17 x i32], ptr %9, i64 0, i64 %439
  %441 = load i32, ptr %440, align 4, !tbaa !44
  %442 = add i32 %441, 1
  store i32 %442, ptr %440, align 4, !tbaa !44
  %xtraiter2193 = and i32 %437, 3
  %443 = icmp ult i8 %436, 4
  br i1 %443, label %.unr-lcssa, label %.new

.new:                                             ; preds = %438
  %unroll_iter2199 = and i32 %437, 252
  br label %444

444:                                              ; preds = %444, %.new
  %.014581804 = phi i32 [ %441, %.new ], [ %458, %444 ]
  %.014601802 = phi i32 [ 0, %.new ], [ %457, %444 ]
  %niter2200 = phi i32 [ 0, %.new ], [ %niter2200.next.3, %444 ]
  %445 = shl i32 %.014601802, 3
  %446 = shl i32 %.014581804, 2
  %447 = and i32 %446, 4
  %448 = or disjoint i32 %445, %447
  %449 = and i32 %.014581804, 2
  %450 = or disjoint i32 %449, %448
  %451 = lshr i32 %.014581804, 2
  %452 = and i32 %451, 1
  %453 = or disjoint i32 %452, %450
  %454 = lshr i32 %.014581804, 3
  %455 = shl i32 %453, 1
  %456 = and i32 %454, 1
  %457 = or disjoint i32 %456, %455
  %458 = lshr i32 %.014581804, 4
  %niter2200.next.3 = add i32 %niter2200, 4
  %niter2200.ncmp.3 = icmp eq i32 %niter2200.next.3, %unroll_iter2199
  br i1 %niter2200.ncmp.3, label %.unr-lcssa, label %444, !llvm.loop !55

.unr-lcssa:                                       ; preds = %444, %438
  %.014581804.lcssa.ph = phi i32 [ poison, %438 ], [ %454, %444 ]
  %.lcssa2128.ph = phi i32 [ poison, %438 ], [ %455, %444 ]
  %.lcssa2127.ph = phi i32 [ poison, %438 ], [ %457, %444 ]
  %.014581804.unr = phi i32 [ %441, %438 ], [ %458, %444 ]
  %.014601802.unr = phi i32 [ 0, %438 ], [ %457, %444 ]
  %lcmp.mod2195.not = icmp eq i32 %xtraiter2193, 0
  br i1 %lcmp.mod2195.not, label %.epilog-lcssa, label %.epil.preheader

.epil.preheader:                                  ; preds = %.unr-lcssa, %.epil.preheader
  %.014581804.epil = phi i32 [ %462, %.epil.preheader ], [ %.014581804.unr, %.unr-lcssa ]
  %.014601802.epil = phi i32 [ %461, %.epil.preheader ], [ %.014601802.unr, %.unr-lcssa ]
  %epil.iter2194 = phi i32 [ %epil.iter2194.next, %.epil.preheader ], [ 0, %.unr-lcssa ]
  %459 = shl i32 %.014601802.epil, 1
  %460 = and i32 %.014581804.epil, 1
  %461 = or disjoint i32 %460, %459
  %462 = lshr i32 %.014581804.epil, 1
  %epil.iter2194.next = add i32 %epil.iter2194, 1
  %epil.iter2194.cmp.not = icmp eq i32 %epil.iter2194.next, %xtraiter2193
  br i1 %epil.iter2194.cmp.not, label %.epilog-lcssa, label %.epil.preheader, !llvm.loop !56

.epilog-lcssa:                                    ; preds = %.epil.preheader, %.unr-lcssa
  %.014581804.lcssa = phi i32 [ %.014581804.lcssa.ph, %.unr-lcssa ], [ %.014581804.epil, %.epil.preheader ]
  %.lcssa2128 = phi i32 [ %.lcssa2128.ph, %.unr-lcssa ], [ %459, %.epil.preheader ]
  %.lcssa2127 = phi i32 [ %.lcssa2127.ph, %.unr-lcssa ], [ %461, %.epil.preheader ]
  %463 = icmp ult i8 %436, 11
  br i1 %463, label %464, label %478

464:                                              ; preds = %.epilog-lcssa
  %465 = shl nuw nsw i32 %437, 9
  %466 = trunc nuw i64 %indvars.iv1916 to i32
  %467 = or i32 %465, %466
  %468 = trunc i32 %467 to i16
  %469 = icmp ult i32 %.lcssa2128, 1024
  br i1 %469, label %.lr.ph1817, label %.loopexit1743

.lr.ph1817:                                       ; preds = %464
  %470 = shl nuw nsw i32 1, %437
  %471 = and i32 %.014581804.lcssa, 1
  %472 = or disjoint i32 %.lcssa2128, %471
  %473 = zext nneg i32 %472 to i64
  %474 = zext nneg i32 %470 to i64
  br label %475

475:                                              ; preds = %.lr.ph1817, %475
  %indvars.iv1913 = phi i64 [ %473, %.lr.ph1817 ], [ %indvars.iv.next1914, %475 ]
  %476 = getelementptr inbounds [1024 x i16], ptr %321, i64 0, i64 %indvars.iv1913
  store i16 %468, ptr %476, align 2, !tbaa !57
  %indvars.iv.next1914 = add nuw nsw i64 %indvars.iv1913, %474
  %477 = icmp ult i64 %indvars.iv.next1914, 1024
  br i1 %477, label %475, label %.loopexit1743, !llvm.loop !59

478:                                              ; preds = %.epilog-lcssa
  %479 = and i32 %.lcssa2127, 1023
  %480 = zext nneg i32 %479 to i64
  %481 = getelementptr inbounds [1024 x i16], ptr %321, i64 0, i64 %480
  %482 = load i16, ptr %481, align 2, !tbaa !57
  %483 = sext i16 %482 to i32
  %484 = icmp eq i16 %482, 0
  br i1 %484, label %485, label %488

485:                                              ; preds = %478
  %486 = trunc i32 %.014691818 to i16
  store i16 %486, ptr %481, align 2, !tbaa !57
  %487 = add nsw i32 %.014691818, -2
  br label %488

488:                                              ; preds = %485, %478
  %.01474 = phi i32 [ %.014691818, %485 ], [ %483, %478 ]
  %.11470 = phi i32 [ %487, %485 ], [ %.014691818, %478 ]
  %489 = lshr i32 %.lcssa2128, 9
  %.not1864 = icmp eq i8 %436, 11
  br i1 %.not1864, label %._crit_edge1811, label %.lr.ph1810

.lr.ph1810:                                       ; preds = %488, %502
  %.214621808 = phi i32 [ %490, %502 ], [ %489, %488 ]
  %.014661807 = phi i32 [ %503, %502 ], [ %437, %488 ]
  %.214711806 = phi i32 [ %.31472, %502 ], [ %.11470, %488 ]
  %.114751805 = phi i32 [ %.21476, %502 ], [ %.01474, %488 ]
  %490 = lshr i32 %.214621808, 1
  %491 = and i32 %490, 1
  %492 = xor i32 %.114751805, -1
  %493 = add i32 %491, %492
  %494 = sext i32 %493 to i64
  %495 = getelementptr inbounds [576 x i16], ptr %322, i64 0, i64 %494
  %496 = load i16, ptr %495, align 2, !tbaa !57
  %.not1610 = icmp eq i16 %496, 0
  br i1 %.not1610, label %497, label %500

497:                                              ; preds = %.lr.ph1810
  %498 = trunc i32 %.214711806 to i16
  store i16 %498, ptr %495, align 2, !tbaa !57
  %499 = add nsw i32 %.214711806, -2
  br label %502

500:                                              ; preds = %.lr.ph1810
  %501 = sext i16 %496 to i32
  br label %502

502:                                              ; preds = %497, %500
  %.21476 = phi i32 [ %501, %500 ], [ %.214711806, %497 ]
  %.31472 = phi i32 [ %.214711806, %500 ], [ %499, %497 ]
  %503 = add nsw i32 %.014661807, -1
  %504 = icmp ugt i32 %503, 11
  br i1 %504, label %.lr.ph1810, label %._crit_edge1811, !llvm.loop !61

._crit_edge1811:                                  ; preds = %502, %488
  %.11475.lcssa = phi i32 [ %.01474, %488 ], [ %.21476, %502 ]
  %.21471.lcssa = phi i32 [ %.11470, %488 ], [ %.31472, %502 ]
  %.21462.lcssa = phi i32 [ %489, %488 ], [ %490, %502 ]
  %505 = lshr i32 %.21462.lcssa, 1
  %.neg = and i32 %505, 1
  %506 = trunc i64 %indvars.iv1916 to i16
  %507 = xor i32 %.11475.lcssa, -1
  %508 = add i32 %.neg, %507
  %509 = sext i32 %508 to i64
  %510 = getelementptr inbounds [576 x i16], ptr %322, i64 0, i64 %509
  store i16 %506, ptr %510, align 2, !tbaa !57
  br label %.loopexit1743

.loopexit1743:                                    ; preds = %475, %464, %.lr.ph1820, %._crit_edge1811
  %.41473 = phi i32 [ %.21471.lcssa, %._crit_edge1811 ], [ %.014691818, %.lr.ph1820 ], [ %.014691818, %464 ], [ %.014691818, %475 ]
  %indvars.iv.next1917 = add nuw nsw i64 %indvars.iv1916, 1
  %exitcond1920.not = icmp eq i64 %indvars.iv.next1917, %wide.trip.count1919
  br i1 %exitcond1920.not, label %._crit_edge1821, label %.lr.ph1820, !llvm.loop !62

._crit_edge1821:                                  ; preds = %.loopexit1743, %.preheader1744
  %511 = icmp eq i32 %315, 2
  br i1 %511, label %512, label %673

512:                                              ; preds = %._crit_edge1821, %660, %610
  %.341400 = phi i64 [ %.371403, %610 ], [ %.411407, %660 ], [ %.321398, %._crit_edge1821 ]
  %.341306 = phi ptr [ %.371309, %610 ], [ %.411313, %660 ], [ %.321304, %._crit_edge1821 ]
  %.371216 = phi ptr [ %.401219, %610 ], [ %.441223, %660 ], [ %.351214, %._crit_edge1821 ]
  %.381133 = phi i64 [ %607, %610 ], [ %645, %660 ], [ %.361131, %._crit_edge1821 ]
  %.381046 = phi i32 [ %.411049, %610 ], [ %.451053, %660 ], [ %.361044, %._crit_edge1821 ]
  %.38962 = phi i32 [ %613, %610 ], [ %663, %660 ], [ 0, %._crit_edge1821 ]
  %.37882 = phi i32 [ %.21449, %610 ], [ %.43888, %660 ], [ %.35880, %._crit_edge1821 ]
  %.38 = phi i32 [ %608, %610 ], [ %646, %660 ], [ %.36, %._crit_edge1821 ]
  %513 = getelementptr inbounds i8, ptr %0, i64 44
  %514 = load i32, ptr %513, align 4, !tbaa !44
  %515 = getelementptr inbounds i8, ptr %0, i64 48
  %516 = load i32, ptr %515, align 4, !tbaa !44
  %517 = add i32 %516, %514
  %518 = icmp ult i32 %.38962, %517
  br i1 %518, label %519, label %664

519:                                              ; preds = %512
  %520 = icmp ult i32 %.38, 15
  br i1 %520, label %521, label %583

521:                                              ; preds = %519
  %522 = ptrtoint ptr %12 to i64
  %523 = ptrtoint ptr %.371216 to i64
  %524 = sub i64 %522, %523
  %525 = icmp slt i64 %524, 2
  br i1 %525, label %526, label %568

526:                                              ; preds = %521, %559
  %.351401 = phi i64 [ %.341400, %521 ], [ %.361402, %559 ]
  %.351307 = phi ptr [ %.341306, %521 ], [ %.361308, %559 ]
  %.381217 = phi ptr [ %.371216, %521 ], [ %560, %559 ]
  %.391134 = phi i64 [ %.381133, %521 ], [ %565, %559 ]
  %.391047 = phi i32 [ %.381046, %521 ], [ %.401048, %559 ]
  %.39963 = phi i32 [ %.38962, %521 ], [ %.40964, %559 ]
  %.38883 = phi i32 [ %.37882, %521 ], [ %.39884, %559 ]
  %.39 = phi i32 [ %.38, %521 ], [ %566, %559 ]
  %527 = getelementptr inbounds i8, ptr %0, i64 7336
  %528 = and i64 %.391134, 1023
  %529 = getelementptr inbounds [1024 x i16], ptr %527, i64 0, i64 %528
  %530 = load i16, ptr %529, align 2, !tbaa !57
  %531 = sext i16 %530 to i32
  %532 = icmp sgt i16 %530, -1
  br i1 %532, label %533, label %535

533:                                              ; preds = %526
  %.not1599 = icmp ult i16 %530, 512
  %534 = lshr i32 %531, 9
  %.not1600 = icmp ult i32 %.39, %534
  %or.cond1643 = select i1 %.not1599, i1 true, i1 %.not1600
  br i1 %or.cond1643, label %555, label %583

535:                                              ; preds = %526
  %536 = icmp ugt i32 %.39, 10
  br i1 %536, label %.preheader1742, label %555

.preheader1742:                                   ; preds = %535
  %537 = getelementptr inbounds i8, ptr %0, i64 9384
  br label %538

538:                                              ; preds = %.preheader1742, %538
  %.01447 = phi i32 [ %548, %538 ], [ %531, %.preheader1742 ]
  %.01444 = phi i32 [ %541, %538 ], [ 10, %.preheader1742 ]
  %539 = xor i32 %.01447, -1
  %540 = sext i32 %539 to i64
  %541 = add i32 %.01444, 1
  %542 = zext nneg i32 %.01444 to i64
  %543 = lshr i64 %.391134, %542
  %544 = and i64 %543, 1
  %545 = add nsw i64 %544, %540
  %546 = getelementptr inbounds [576 x i16], ptr %537, i64 0, i64 %545
  %547 = load i16, ptr %546, align 2, !tbaa !57
  %548 = sext i16 %547 to i32
  %549 = icmp slt i16 %547, 0
  %550 = add i32 %.01444, 2
  %551 = icmp uge i32 %.39, %550
  %552 = select i1 %549, i1 %551, i1 false
  br i1 %552, label %538, label %553, !llvm.loop !63

553:                                              ; preds = %538
  %554 = icmp sgt i16 %547, -1
  br i1 %554, label %583, label %555

555:                                              ; preds = %535, %553, %533, %558
  %.361402 = phi i64 [ %.351401, %533 ], [ %.351401, %553 ], [ %.351401, %535 ], [ %38, %558 ]
  %.361308 = phi ptr [ %.351307, %533 ], [ %.351307, %553 ], [ %.351307, %535 ], [ %4, %558 ]
  %.391218 = phi ptr [ %.381217, %533 ], [ %.381217, %553 ], [ %.381217, %535 ], [ %1, %558 ]
  %.401135 = phi i64 [ %.391134, %533 ], [ %.391134, %553 ], [ %.391134, %535 ], [ %30, %558 ]
  %.401048 = phi i32 [ %.391047, %533 ], [ %.391047, %553 ], [ %.391047, %535 ], [ %36, %558 ]
  %.40964 = phi i32 [ %.39963, %533 ], [ %.39963, %553 ], [ %.39963, %535 ], [ %34, %558 ]
  %.39884 = phi i32 [ %.38883, %533 ], [ %.38883, %553 ], [ %.38883, %535 ], [ %32, %558 ]
  %.40 = phi i32 [ %.39, %533 ], [ %.39, %553 ], [ %.39, %535 ], [ %.84.fr1984, %558 ]
  %.not1601 = icmp ult ptr %.391218, %12
  br i1 %.not1601, label %559, label %556

556:                                              ; preds = %555
  %557 = and i32 %6, 2
  %.not1602 = icmp eq i32 %557, 0
  store i32 16, ptr %0, align 8, !tbaa !17
  %spec.select1721 = select i1 %.not1602, i32 -4, i32 1
  br label %.thread1683

558:                                              ; preds = %26
  br label %555, !llvm.loop !64

559:                                              ; preds = %555
  %560 = getelementptr inbounds i8, ptr %.391218, i64 1
  %561 = load i8, ptr %.391218, align 1, !tbaa !24
  %562 = zext i8 %561 to i64
  %563 = zext nneg i32 %.40 to i64
  %564 = shl i64 %562, %563
  %565 = or i64 %564, %.401135
  %566 = add i32 %.40, 8
  %567 = icmp ult i32 %566, 15
  br i1 %567, label %526, label %583, !llvm.loop !65

568:                                              ; preds = %521
  %569 = load i8, ptr %.371216, align 1, !tbaa !24
  %570 = zext i8 %569 to i64
  %571 = zext nneg i32 %.38 to i64
  %572 = shl nuw nsw i64 %570, %571
  %573 = getelementptr inbounds i8, ptr %.371216, i64 1
  %574 = load i8, ptr %573, align 1, !tbaa !24
  %575 = zext i8 %574 to i64
  %576 = add nuw nsw i32 %.38, 8
  %577 = zext nneg i32 %576 to i64
  %578 = shl nuw nsw i64 %575, %577
  %579 = or i64 %572, %578
  %580 = or i64 %579, %.381133
  %581 = getelementptr inbounds i8, ptr %.371216, i64 2
  %582 = or disjoint i32 %.38, 16
  br label %583

583:                                              ; preds = %533, %568, %553, %559, %519
  %.371403 = phi i64 [ %.361402, %559 ], [ %.351401, %553 ], [ %.341400, %568 ], [ %.341400, %519 ], [ %.351401, %533 ]
  %.371309 = phi ptr [ %.361308, %559 ], [ %.351307, %553 ], [ %.341306, %568 ], [ %.341306, %519 ], [ %.351307, %533 ]
  %.401219 = phi ptr [ %560, %559 ], [ %.381217, %553 ], [ %581, %568 ], [ %.371216, %519 ], [ %.381217, %533 ]
  %.411136 = phi i64 [ %565, %559 ], [ %.391134, %553 ], [ %580, %568 ], [ %.381133, %519 ], [ %.391134, %533 ]
  %.411049 = phi i32 [ %.401048, %559 ], [ %.391047, %553 ], [ %.381046, %568 ], [ %.381046, %519 ], [ %.391047, %533 ]
  %.41965 = phi i32 [ %.40964, %559 ], [ %.39963, %553 ], [ %.38962, %568 ], [ %.38962, %519 ], [ %.39963, %533 ]
  %.41 = phi i32 [ %566, %559 ], [ %.39, %553 ], [ %582, %568 ], [ %.38, %519 ], [ %.39, %533 ]
  %584 = getelementptr inbounds i8, ptr %0, i64 7336
  %585 = and i64 %.411136, 1023
  %586 = getelementptr inbounds [1024 x i16], ptr %584, i64 0, i64 %585
  %587 = load i16, ptr %586, align 2, !tbaa !57
  %588 = sext i16 %587 to i32
  %589 = icmp sgt i16 %587, -1
  br i1 %589, label %591, label %.preheader1741

.preheader1741:                                   ; preds = %583
  %590 = getelementptr inbounds i8, ptr %0, i64 9384
  br label %594

591:                                              ; preds = %583
  %592 = lshr i32 %588, 9
  %593 = and i32 %588, 511
  br label %.loopexit

594:                                              ; preds = %.preheader1741, %594
  %.11448 = phi i32 [ %604, %594 ], [ %588, %.preheader1741 ]
  %.11445 = phi i32 [ %597, %594 ], [ 10, %.preheader1741 ]
  %595 = xor i32 %.11448, -1
  %596 = sext i32 %595 to i64
  %597 = add i32 %.11445, 1
  %598 = zext nneg i32 %.11445 to i64
  %599 = lshr i64 %.411136, %598
  %600 = and i64 %599, 1
  %601 = add nsw i64 %600, %596
  %602 = getelementptr inbounds [576 x i16], ptr %590, i64 0, i64 %601
  %603 = load i16, ptr %602, align 2, !tbaa !57
  %604 = sext i16 %603 to i32
  %605 = icmp slt i16 %603, 0
  br i1 %605, label %594, label %.loopexit, !llvm.loop !66

.loopexit:                                        ; preds = %594, %591
  %.21449 = phi i32 [ %593, %591 ], [ %604, %594 ]
  %.21446 = phi i32 [ %592, %591 ], [ %597, %594 ]
  %606 = zext nneg i32 %.21446 to i64
  %607 = lshr i64 %.411136, %606
  %608 = sub i32 %.41, %.21446
  %609 = icmp ult i32 %.21449, 16
  br i1 %609, label %610, label %616

610:                                              ; preds = %.loopexit
  %611 = trunc nuw nsw i32 %.21449 to i8
  %612 = getelementptr inbounds i8, ptr %0, i64 10540
  %613 = add i32 %.41965, 1
  %614 = zext i32 %.41965 to i64
  %615 = getelementptr inbounds [457 x i8], ptr %612, i64 0, i64 %614
  store i8 %611, ptr %615, align 1, !tbaa !24
  br label %512, !llvm.loop !67

616:                                              ; preds = %.loopexit
  %617 = icmp ne i32 %.21449, 16
  %618 = icmp ne i32 %.41965, 0
  %or.cond3 = select i1 %617, i1 true, i1 %618
  br i1 %or.cond3, label %620, label %1146

619:                                              ; preds = %26
  br label %1146, !llvm.loop !68

620:                                              ; preds = %616
  %621 = add nsw i32 %.21449, -16
  %622 = zext i32 %621 to i64
  %623 = getelementptr inbounds [4 x i8], ptr @.str.15, i64 0, i64 %622
  %624 = load i8, ptr %623, align 1, !tbaa !24
  %625 = sext i8 %624 to i32
  %626 = icmp ult i32 %608, %625
  br i1 %626, label %.preheader2117, label %640

.preheader2117:                                   ; preds = %630, %620
  %.401406.ph = phi i64 [ %.371403, %620 ], [ %38, %630 ]
  %.401312.ph = phi ptr [ %.371309, %620 ], [ %4, %630 ]
  %.431222.ph = phi ptr [ %.401219, %620 ], [ %1, %630 ]
  %.441139.ph = phi i64 [ %607, %620 ], [ %30, %630 ]
  %.441052.ph = phi i32 [ %625, %620 ], [ %36, %630 ]
  %.44968.ph = phi i32 [ %.41965, %620 ], [ %34, %630 ]
  %.42887.ph = phi i32 [ %.21449, %620 ], [ %32, %630 ]
  %.44.ph = phi i32 [ %608, %620 ], [ %.84.fr1984, %630 ]
  br label %627

627:                                              ; preds = %.preheader2117, %631
  %.431222 = phi ptr [ %632, %631 ], [ %.431222.ph, %.preheader2117 ]
  %.441139 = phi i64 [ %637, %631 ], [ %.441139.ph, %.preheader2117 ]
  %.44 = phi i32 [ %638, %631 ], [ %.44.ph, %.preheader2117 ]
  %.not1603 = icmp ult ptr %.431222, %12
  br i1 %.not1603, label %631, label %628

628:                                              ; preds = %627
  %629 = and i32 %6, 2
  %.not1605 = icmp eq i32 %629, 0
  store i32 18, ptr %0, align 8, !tbaa !17
  %spec.select1723 = select i1 %.not1605, i32 -4, i32 1
  br label %.thread1683

630:                                              ; preds = %26
  br label %.preheader2117, !llvm.loop !69

631:                                              ; preds = %627
  %632 = getelementptr inbounds i8, ptr %.431222, i64 1
  %633 = load i8, ptr %.431222, align 1, !tbaa !24
  %634 = zext i8 %633 to i64
  %635 = zext nneg i32 %.44 to i64
  %636 = shl i64 %634, %635
  %637 = or i64 %636, %.441139
  %638 = add i32 %.44, 8
  %639 = icmp ult i32 %638, %.441052.ph
  br i1 %639, label %627, label %._crit_edge1961, !llvm.loop !70

._crit_edge1961:                                  ; preds = %631
  %.pre1962 = add i32 %.42887.ph, -16
  %.pre1964 = zext i32 %.pre1962 to i64
  br label %640

640:                                              ; preds = %._crit_edge1961, %620
  %.pre-phi1965 = phi i64 [ %.pre1964, %._crit_edge1961 ], [ %622, %620 ]
  %.411407 = phi i64 [ %.401406.ph, %._crit_edge1961 ], [ %.371403, %620 ]
  %.411313 = phi ptr [ %.401312.ph, %._crit_edge1961 ], [ %.371309, %620 ]
  %.441223 = phi ptr [ %632, %._crit_edge1961 ], [ %.401219, %620 ]
  %.451140 = phi i64 [ %637, %._crit_edge1961 ], [ %607, %620 ]
  %.451053 = phi i32 [ %.441052.ph, %._crit_edge1961 ], [ %625, %620 ]
  %.45969 = phi i32 [ %.44968.ph, %._crit_edge1961 ], [ %.41965, %620 ]
  %.43888 = phi i32 [ %.42887.ph, %._crit_edge1961 ], [ %.21449, %620 ]
  %.45 = phi i32 [ %638, %._crit_edge1961 ], [ %608, %620 ]
  %notmask1604 = shl nsw i32 -1, %.451053
  %641 = xor i32 %notmask1604, -1
  %642 = trunc i64 %.451140 to i32
  %643 = and i32 %641, %642
  %644 = zext nneg i32 %.451053 to i64
  %645 = lshr i64 %.451140, %644
  %646 = sub i32 %.45, %.451053
  %647 = getelementptr inbounds [4 x i8], ptr @.str.16, i64 0, i64 %.pre-phi1965
  %648 = load i8, ptr %647, align 1, !tbaa !24
  %649 = sext i8 %648 to i32
  %650 = add i32 %643, %649
  %651 = getelementptr inbounds i8, ptr %0, i64 10540
  %652 = zext i32 %.45969 to i64
  %653 = getelementptr inbounds i8, ptr %651, i64 %652
  %654 = icmp eq i32 %.43888, 16
  br i1 %654, label %655, label %660

655:                                              ; preds = %640
  %656 = add i32 %.45969, -1
  %657 = zext i32 %656 to i64
  %658 = getelementptr inbounds [457 x i8], ptr %651, i64 0, i64 %657
  %659 = load i8, ptr %658, align 1, !tbaa !24
  br label %660

660:                                              ; preds = %640, %655
  %661 = phi i8 [ %659, %655 ], [ 0, %640 ]
  %662 = zext i32 %650 to i64
  tail call void @llvm.memset.p0.i64(ptr nonnull align 1 %653, i8 %661, i64 %662, i1 false)
  %663 = add i32 %650, %.45969
  br label %512, !llvm.loop !67

664:                                              ; preds = %512
  %.not1598 = icmp eq i32 %517, %.38962
  br i1 %.not1598, label %666, label %1146

665:                                              ; preds = %26
  br label %1146, !llvm.loop !71

666:                                              ; preds = %664
  %667 = getelementptr inbounds i8, ptr %0, i64 72
  %668 = getelementptr inbounds i8, ptr %0, i64 10540
  %669 = zext i32 %514 to i64
  tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 8 %667, ptr nonnull align 4 %668, i64 %669, i1 false)
  %670 = getelementptr inbounds i8, ptr %0, i64 3560
  %671 = getelementptr inbounds i8, ptr %668, i64 %669
  %672 = zext i32 %516 to i64
  tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 8 %670, ptr nonnull align 1 %671, i64 %672, i1 false)
  br label %673

673:                                              ; preds = %._crit_edge1821, %666
  %.431409 = phi i64 [ %.341400, %666 ], [ %.321398, %._crit_edge1821 ]
  %.431315 = phi ptr [ %.341306, %666 ], [ %.321304, %._crit_edge1821 ]
  %.461225 = phi ptr [ %.371216, %666 ], [ %.351214, %._crit_edge1821 ]
  %.471142 = phi i64 [ %.381133, %666 ], [ %.361131, %._crit_edge1821 ]
  %.471055 = phi i32 [ %.381046, %666 ], [ %.361044, %._crit_edge1821 ]
  %.47971 = phi i32 [ %.38962, %666 ], [ %.36960, %._crit_edge1821 ]
  %.45890 = phi i32 [ %.37882, %666 ], [ %.35880, %._crit_edge1821 ]
  %.47 = phi i32 [ %.38, %666 ], [ %.36, %._crit_edge1821 ]
  %674 = getelementptr inbounds i8, ptr %0, i64 24
  %675 = load i32, ptr %674, align 8, !tbaa !30
  %676 = add i32 %675, -1
  store i32 %676, ptr %674, align 8, !tbaa !30
  br label %.loopexit1756, !llvm.loop !72

677:                                              ; preds = %.preheader2159, %841
  %.451317 = phi ptr [ %844, %841 ], [ %.451317.ph, %.preheader2159 ]
  %.481227 = phi ptr [ %.531232, %841 ], [ %.481227.ph, %.preheader2159 ]
  %.491144 = phi i64 [ %835, %841 ], [ %.491144.ph, %.preheader2159 ]
  %.49973 = phi i32 [ %.11269, %841 ], [ %.49973.ph, %.preheader2159 ]
  %.49 = phi i32 [ %836, %841 ], [ %.49.ph, %.preheader2159 ]
  %678 = ptrtoint ptr %.481227 to i64
  %679 = sub i64 %777, %678
  %680 = icmp slt i64 %679, 4
  %681 = ptrtoint ptr %.451317 to i64
  %682 = sub i64 %778, %681
  %683 = icmp slt i64 %682, 2
  %or.cond1647 = select i1 %680, i1 true, i1 %683
  br i1 %or.cond1647, label %684, label %782

684:                                              ; preds = %677
  %685 = icmp ult i32 %.49, 15
  br i1 %685, label %686, label %745

686:                                              ; preds = %684
  %687 = icmp slt i64 %679, 2
  br i1 %687, label %688, label %730

688:                                              ; preds = %686, %721
  %.461412 = phi i64 [ %.451411.ph, %686 ], [ %.471413, %721 ]
  %.461318 = phi ptr [ %.451317, %686 ], [ %.471319, %721 ]
  %.491228 = phi ptr [ %.481227, %686 ], [ %722, %721 ]
  %.501145 = phi i64 [ %.491144, %686 ], [ %727, %721 ]
  %.501058 = phi i32 [ %.491057.ph, %686 ], [ %.511059, %721 ]
  %.50974 = phi i32 [ %.49973, %686 ], [ %.51975, %721 ]
  %.48893 = phi i32 [ %.47892.ph, %686 ], [ %.49894, %721 ]
  %.50 = phi i32 [ %.49, %686 ], [ %728, %721 ]
  %689 = getelementptr inbounds i8, ptr %0, i64 360
  %690 = and i64 %.501145, 1023
  %691 = getelementptr inbounds [1024 x i16], ptr %689, i64 0, i64 %690
  %692 = load i16, ptr %691, align 2, !tbaa !57
  %693 = sext i16 %692 to i32
  %694 = icmp sgt i16 %692, -1
  br i1 %694, label %695, label %697

695:                                              ; preds = %688
  %.not1576 = icmp ult i16 %692, 512
  %696 = lshr i32 %693, 9
  %.not1577 = icmp ult i32 %.50, %696
  %or.cond1648 = select i1 %.not1576, i1 true, i1 %.not1577
  br i1 %or.cond1648, label %717, label %745

697:                                              ; preds = %688
  %698 = icmp ugt i32 %.50, 10
  br i1 %698, label %.preheader1750, label %717

.preheader1750:                                   ; preds = %697
  %699 = getelementptr inbounds i8, ptr %0, i64 2408
  br label %700

700:                                              ; preds = %.preheader1750, %700
  %.01360 = phi i32 [ %710, %700 ], [ %693, %.preheader1750 ]
  %.01357 = phi i32 [ %703, %700 ], [ 10, %.preheader1750 ]
  %701 = xor i32 %.01360, -1
  %702 = sext i32 %701 to i64
  %703 = add i32 %.01357, 1
  %704 = zext nneg i32 %.01357 to i64
  %705 = lshr i64 %.501145, %704
  %706 = and i64 %705, 1
  %707 = add nsw i64 %706, %702
  %708 = getelementptr inbounds [576 x i16], ptr %699, i64 0, i64 %707
  %709 = load i16, ptr %708, align 2, !tbaa !57
  %710 = sext i16 %709 to i32
  %711 = icmp slt i16 %709, 0
  %712 = add i32 %.01357, 2
  %713 = icmp uge i32 %.50, %712
  %714 = select i1 %711, i1 %713, i1 false
  br i1 %714, label %700, label %715, !llvm.loop !73

715:                                              ; preds = %700
  %716 = icmp sgt i16 %709, -1
  br i1 %716, label %745, label %717

717:                                              ; preds = %697, %715, %695, %720
  %.471413 = phi i64 [ %.461412, %695 ], [ %.461412, %715 ], [ %.461412, %697 ], [ %38, %720 ]
  %.471319 = phi ptr [ %.461318, %695 ], [ %.461318, %715 ], [ %.461318, %697 ], [ %4, %720 ]
  %.501229 = phi ptr [ %.491228, %695 ], [ %.491228, %715 ], [ %.491228, %697 ], [ %1, %720 ]
  %.511146 = phi i64 [ %.501145, %695 ], [ %.501145, %715 ], [ %.501145, %697 ], [ %30, %720 ]
  %.511059 = phi i32 [ %.501058, %695 ], [ %.501058, %715 ], [ %.501058, %697 ], [ %36, %720 ]
  %.51975 = phi i32 [ %.50974, %695 ], [ %.50974, %715 ], [ %.50974, %697 ], [ %34, %720 ]
  %.49894 = phi i32 [ %.48893, %695 ], [ %.48893, %715 ], [ %.48893, %697 ], [ %32, %720 ]
  %.51 = phi i32 [ %.50, %695 ], [ %.50, %715 ], [ %.50, %697 ], [ %.84.fr1984, %720 ]
  %.not1578 = icmp ult ptr %.501229, %12
  br i1 %.not1578, label %721, label %718

718:                                              ; preds = %717
  %719 = and i32 %6, 2
  %.not1579 = icmp eq i32 %719, 0
  store i32 23, ptr %0, align 8, !tbaa !17
  %spec.select1725 = select i1 %.not1579, i32 -4, i32 1
  br label %.thread1683

720:                                              ; preds = %26
  br label %717, !llvm.loop !74

721:                                              ; preds = %717
  %722 = getelementptr inbounds i8, ptr %.501229, i64 1
  %723 = load i8, ptr %.501229, align 1, !tbaa !24
  %724 = zext i8 %723 to i64
  %725 = zext nneg i32 %.51 to i64
  %726 = shl i64 %724, %725
  %727 = or i64 %726, %.511146
  %728 = add i32 %.51, 8
  %729 = icmp ult i32 %728, 15
  br i1 %729, label %688, label %745, !llvm.loop !75

730:                                              ; preds = %686
  %731 = load i8, ptr %.481227, align 1, !tbaa !24
  %732 = zext i8 %731 to i64
  %733 = zext nneg i32 %.49 to i64
  %734 = shl nuw nsw i64 %732, %733
  %735 = getelementptr inbounds i8, ptr %.481227, i64 1
  %736 = load i8, ptr %735, align 1, !tbaa !24
  %737 = zext i8 %736 to i64
  %738 = add nuw nsw i32 %.49, 8
  %739 = zext nneg i32 %738 to i64
  %740 = shl nuw nsw i64 %737, %739
  %741 = or i64 %734, %740
  %742 = or i64 %741, %.491144
  %743 = getelementptr inbounds i8, ptr %.481227, i64 2
  %744 = or disjoint i32 %.49, 16
  br label %745

745:                                              ; preds = %695, %730, %715, %721, %684
  %.481414 = phi i64 [ %.471413, %721 ], [ %.461412, %715 ], [ %.451411.ph, %730 ], [ %.451411.ph, %684 ], [ %.461412, %695 ]
  %.481320 = phi ptr [ %.471319, %721 ], [ %.461318, %715 ], [ %.451317, %730 ], [ %.451317, %684 ], [ %.461318, %695 ]
  %.511230 = phi ptr [ %722, %721 ], [ %.491228, %715 ], [ %743, %730 ], [ %.481227, %684 ], [ %.491228, %695 ]
  %.521147 = phi i64 [ %727, %721 ], [ %.501145, %715 ], [ %742, %730 ], [ %.491144, %684 ], [ %.501145, %695 ]
  %.521060 = phi i32 [ %.511059, %721 ], [ %.501058, %715 ], [ %.491057.ph, %730 ], [ %.491057.ph, %684 ], [ %.501058, %695 ]
  %.50895 = phi i32 [ %.49894, %721 ], [ %.48893, %715 ], [ %.47892.ph, %730 ], [ %.47892.ph, %684 ], [ %.48893, %695 ]
  %.52 = phi i32 [ %728, %721 ], [ %.50, %715 ], [ %744, %730 ], [ %.49, %684 ], [ %.50, %695 ]
  %746 = getelementptr inbounds i8, ptr %0, i64 360
  %747 = and i64 %.521147, 1023
  %748 = getelementptr inbounds [1024 x i16], ptr %746, i64 0, i64 %747
  %749 = load i16, ptr %748, align 2, !tbaa !57
  %750 = sext i16 %749 to i32
  %751 = icmp sgt i16 %749, -1
  br i1 %751, label %753, label %.preheader1748

.preheader1748:                                   ; preds = %745
  %752 = getelementptr inbounds i8, ptr %0, i64 2408
  br label %756

753:                                              ; preds = %745
  %754 = lshr i32 %750, 9
  %755 = and i32 %750, 511
  br label %.loopexit1749

756:                                              ; preds = %.preheader1748, %756
  %.11361 = phi i32 [ %766, %756 ], [ %750, %.preheader1748 ]
  %.11358 = phi i32 [ %759, %756 ], [ 10, %.preheader1748 ]
  %757 = xor i32 %.11361, -1
  %758 = sext i32 %757 to i64
  %759 = add i32 %.11358, 1
  %760 = zext nneg i32 %.11358 to i64
  %761 = lshr i64 %.521147, %760
  %762 = and i64 %761, 1
  %763 = add nsw i64 %762, %758
  %764 = getelementptr inbounds [576 x i16], ptr %752, i64 0, i64 %763
  %765 = load i16, ptr %764, align 2, !tbaa !57
  %766 = sext i16 %765 to i32
  %767 = icmp slt i16 %765, 0
  br i1 %767, label %756, label %.loopexit1749, !llvm.loop !76

.loopexit1749:                                    ; preds = %756, %753
  %.21362 = phi i32 [ %755, %753 ], [ %766, %756 ]
  %.21359 = phi i32 [ %754, %753 ], [ %759, %756 ]
  %768 = zext nneg i32 %.21359 to i64
  %769 = lshr i64 %.521147, %768
  %770 = sub i32 %.52, %.21359
  %771 = icmp ugt i32 %.21362, 255
  br i1 %771, label %.thread, label %772

772:                                              ; preds = %.loopexit1749, %773
  %.491415 = phi i64 [ %.481414, %.loopexit1749 ], [ %38, %773 ]
  %.491321 = phi ptr [ %.481320, %.loopexit1749 ], [ %4, %773 ]
  %.521231 = phi ptr [ %.511230, %.loopexit1749 ], [ %1, %773 ]
  %.531148 = phi i64 [ %769, %.loopexit1749 ], [ %30, %773 ]
  %.531061 = phi i32 [ %.521060, %.loopexit1749 ], [ %36, %773 ]
  %.52976 = phi i32 [ %.21362, %.loopexit1749 ], [ %34, %773 ]
  %.51896 = phi i32 [ %.50895, %.loopexit1749 ], [ %32, %773 ]
  %.53 = phi i32 [ %770, %.loopexit1749 ], [ %.84.fr1984, %773 ]
  %.not1580 = icmp ult ptr %.491321, %14
  br i1 %.not1580, label %774, label %1146

773:                                              ; preds = %26
  br label %772, !llvm.loop !77

774:                                              ; preds = %772
  %775 = trunc i32 %.52976 to i8
  %776 = getelementptr inbounds i8, ptr %.491321, i64 1
  store i8 %775, ptr %.491321, align 1, !tbaa !24
  br label %.preheader2159, !llvm.loop !78

.preheader2159:                                   ; preds = %1008, %.loopexit1756, %774, %1049, %1057, %1079, %._crit_edge
  %.451411.ph = phi i64 [ %995, %._crit_edge ], [ %995, %1079 ], [ %995, %1057 ], [ %995, %1049 ], [ %.491415, %774 ], [ %.321398, %.loopexit1756 ], [ %.621428, %1008 ]
  %.451317.ph = phi ptr [ %.711343.lcssa, %._crit_edge ], [ %1081, %1079 ], [ %1059, %1057 ], [ %.lcssa2030, %1049 ], [ %776, %774 ], [ %.321304, %.loopexit1756 ], [ %.651337, %1008 ]
  %.481227.ph = phi ptr [ %.661245, %._crit_edge ], [ %.661245, %1079 ], [ %.661245, %1057 ], [ %.661245, %1049 ], [ %.521231, %774 ], [ %.351214, %.loopexit1756 ], [ %.681247, %1008 ]
  %.491144.ph = phi i64 [ %.681163, %._crit_edge ], [ %.681163, %1079 ], [ %.681163, %1057 ], [ %.681163, %1049 ], [ %.531148, %774 ], [ %.361131, %.loopexit1756 ], [ %.701165, %1008 ]
  %.491057.ph = phi i32 [ %.651073, %._crit_edge ], [ %.651073, %1079 ], [ %.651073, %1057 ], [ %.651073, %1049 ], [ %.531061, %774 ], [ %.361044, %.loopexit1756 ], [ %.671075, %1008 ]
  %.49973.ph = phi i32 [ %.71995.lcssa, %._crit_edge ], [ %.71995.lcssa, %1079 ], [ %1047, %1057 ], [ %1047, %1049 ], [ %.52976, %774 ], [ %.36960, %.loopexit1756 ], [ -1, %1008 ]
  %.47892.ph = phi i32 [ %.63908, %._crit_edge ], [ %.63908, %1079 ], [ %.63908, %1057 ], [ %.63908, %1049 ], [ %.51896, %774 ], [ %.35880, %.loopexit1756 ], [ %.65910, %1008 ]
  %.49.ph = phi i32 [ %.68, %._crit_edge ], [ %.68, %1079 ], [ %.68, %1057 ], [ %.68, %1049 ], [ %.53, %774 ], [ %.36, %.loopexit1756 ], [ %.70, %1008 ]
  %777 = ptrtoint ptr %12 to i64
  %778 = ptrtoint ptr %14 to i64
  %779 = getelementptr inbounds i8, ptr %0, i64 360
  %780 = getelementptr inbounds i8, ptr %0, i64 2408
  %781 = getelementptr inbounds i8, ptr %0, i64 2408
  br label %677

782:                                              ; preds = %677
  %783 = icmp ult i32 %.49, 30
  br i1 %783, label %784, label %792

784:                                              ; preds = %782
  %785 = load i32, ptr %.481227, align 4, !tbaa !44
  %786 = zext i32 %785 to i64
  %787 = zext nneg i32 %.49 to i64
  %788 = shl nuw nsw i64 %786, %787
  %789 = or i64 %788, %.491144
  %790 = getelementptr inbounds i8, ptr %.481227, i64 4
  %791 = or disjoint i32 %.49, 32
  br label %792

792:                                              ; preds = %784, %782
  %.531232 = phi ptr [ %790, %784 ], [ %.481227, %782 ]
  %.541149 = phi i64 [ %789, %784 ], [ %.491144, %782 ]
  %.54 = phi i32 [ %791, %784 ], [ %.49, %782 ]
  %793 = and i64 %.541149, 1023
  %794 = getelementptr inbounds [1024 x i16], ptr %779, i64 0, i64 %793
  %795 = load i16, ptr %794, align 2, !tbaa !57
  %796 = sext i16 %795 to i32
  %797 = icmp sgt i16 %795, -1
  br i1 %797, label %798, label %.preheader1753

798:                                              ; preds = %792
  %799 = lshr i32 %796, 9
  br label %.loopexit1754

.preheader1753:                                   ; preds = %792, %.preheader1753
  %.01268 = phi i32 [ %809, %.preheader1753 ], [ %796, %792 ]
  %.01264 = phi i32 [ %802, %.preheader1753 ], [ 10, %792 ]
  %800 = xor i32 %.01268, -1
  %801 = sext i32 %800 to i64
  %802 = add i32 %.01264, 1
  %803 = zext nneg i32 %.01264 to i64
  %804 = lshr i64 %.541149, %803
  %805 = and i64 %804, 1
  %806 = add nsw i64 %805, %801
  %807 = getelementptr inbounds [576 x i16], ptr %780, i64 0, i64 %806
  %808 = load i16, ptr %807, align 2, !tbaa !57
  %809 = sext i16 %808 to i32
  %810 = icmp slt i16 %808, 0
  br i1 %810, label %.preheader1753, label %.loopexit1754, !llvm.loop !79

.loopexit1754:                                    ; preds = %.preheader1753, %798
  %.11269 = phi i32 [ %796, %798 ], [ %809, %.preheader1753 ]
  %.11265 = phi i32 [ %799, %798 ], [ %802, %.preheader1753 ]
  %811 = zext nneg i32 %.11265 to i64
  %812 = lshr i64 %.541149, %811
  %813 = sub i32 %.54, %.11265
  %814 = and i32 %.11269, 256
  %.not1574 = icmp eq i32 %814, 0
  br i1 %.not1574, label %815, label %.thread

815:                                              ; preds = %.loopexit1754
  %816 = and i64 %812, 1023
  %817 = getelementptr inbounds [1024 x i16], ptr %779, i64 0, i64 %816
  %818 = load i16, ptr %817, align 2, !tbaa !57
  %819 = sext i16 %818 to i32
  %820 = icmp sgt i16 %818, -1
  br i1 %820, label %821, label %.preheader1751

821:                                              ; preds = %815
  %822 = lshr i32 %819, 9
  br label %.loopexit1752

.preheader1751:                                   ; preds = %815, %.preheader1751
  %.21270 = phi i32 [ %832, %.preheader1751 ], [ %819, %815 ]
  %.21266 = phi i32 [ %825, %.preheader1751 ], [ 10, %815 ]
  %823 = xor i32 %.21270, -1
  %824 = sext i32 %823 to i64
  %825 = add i32 %.21266, 1
  %826 = zext nneg i32 %.21266 to i64
  %827 = lshr i64 %812, %826
  %828 = and i64 %827, 1
  %829 = add nsw i64 %828, %824
  %830 = getelementptr inbounds [576 x i16], ptr %781, i64 0, i64 %829
  %831 = load i16, ptr %830, align 2, !tbaa !57
  %832 = sext i16 %831 to i32
  %833 = icmp slt i16 %831, 0
  br i1 %833, label %.preheader1751, label %.loopexit1752, !llvm.loop !80

.loopexit1752:                                    ; preds = %.preheader1751, %821
  %.31271 = phi i32 [ %819, %821 ], [ %832, %.preheader1751 ]
  %.31267 = phi i32 [ %822, %821 ], [ %825, %.preheader1751 ]
  %834 = zext nneg i32 %.31267 to i64
  %835 = lshr i64 %812, %834
  %836 = sub i32 %813, %.31267
  %837 = trunc i32 %.11269 to i8
  store i8 %837, ptr %.451317, align 1, !tbaa !24
  %838 = and i32 %.31271, 256
  %.not1575 = icmp eq i32 %838, 0
  br i1 %.not1575, label %841, label %839

839:                                              ; preds = %.loopexit1752
  %840 = getelementptr inbounds i8, ptr %.451317, i64 1
  br label %.thread

841:                                              ; preds = %.loopexit1752
  %842 = trunc i32 %.31271 to i8
  %843 = getelementptr inbounds i8, ptr %.451317, i64 1
  store i8 %842, ptr %843, align 1, !tbaa !24
  %844 = getelementptr inbounds i8, ptr %.451317, i64 2
  br label %677, !llvm.loop !78

.thread:                                          ; preds = %.loopexit1754, %839, %.loopexit1749
  %.511417 = phi i64 [ %.481414, %.loopexit1749 ], [ %.451411.ph, %839 ], [ %.451411.ph, %.loopexit1754 ]
  %.521324 = phi ptr [ %.481320, %.loopexit1749 ], [ %840, %839 ], [ %.451317, %.loopexit1754 ]
  %.551234 = phi ptr [ %.511230, %.loopexit1749 ], [ %.531232, %839 ], [ %.531232, %.loopexit1754 ]
  %.571152 = phi i64 [ %769, %.loopexit1749 ], [ %835, %839 ], [ %812, %.loopexit1754 ]
  %.551063 = phi i32 [ %.521060, %.loopexit1749 ], [ %.491057.ph, %839 ], [ %.491057.ph, %.loopexit1754 ]
  %.55979 = phi i32 [ %.21362, %.loopexit1749 ], [ %.31271, %839 ], [ %.11269, %.loopexit1754 ]
  %.53898 = phi i32 [ %.50895, %.loopexit1749 ], [ %.47892.ph, %839 ], [ %.47892.ph, %.loopexit1754 ]
  %.57 = phi i32 [ %770, %.loopexit1749 ], [ %836, %839 ], [ %813, %.loopexit1754 ]
  %845 = and i32 %.55979, 511
  %846 = icmp eq i32 %845, 256
  br i1 %846, label %1082, label %847

847:                                              ; preds = %.thread
  %848 = add nsw i32 %845, -257
  %849 = zext i32 %848 to i64
  %850 = getelementptr inbounds [31 x i32], ptr @_ZZ16tinfl_decompressE14s_length_extra, i64 0, i64 %849
  %851 = load i32, ptr %850, align 4, !tbaa !44
  %852 = getelementptr inbounds [31 x i32], ptr @_ZZ16tinfl_decompressE13s_length_base, i64 0, i64 %849
  %853 = load i32, ptr %852, align 4, !tbaa !44
  %.not1581 = icmp eq i32 %851, 0
  br i1 %.not1581, label %876, label %854

854:                                              ; preds = %847
  %855 = icmp ult i32 %.57, %851
  br i1 %855, label %.preheader2148, label %.loopexit2149

.preheader2148:                                   ; preds = %859, %854
  %.531419.ph = phi i64 [ %.511417, %854 ], [ %38, %859 ]
  %.541326.ph = phi ptr [ %.521324, %854 ], [ %4, %859 ]
  %.571236.ph = phi ptr [ %.551234, %854 ], [ %1, %859 ]
  %.591154.ph = phi i64 [ %.571152, %854 ], [ %30, %859 ]
  %.571065.ph = phi i32 [ %851, %854 ], [ %36, %859 ]
  %.57981.ph = phi i32 [ %853, %854 ], [ %34, %859 ]
  %.55900.ph = phi i32 [ %.53898, %854 ], [ %32, %859 ]
  %.59.ph = phi i32 [ %.57, %854 ], [ %.84.fr1984, %859 ]
  br label %856

856:                                              ; preds = %.preheader2148, %860
  %.571236 = phi ptr [ %861, %860 ], [ %.571236.ph, %.preheader2148 ]
  %.591154 = phi i64 [ %866, %860 ], [ %.591154.ph, %.preheader2148 ]
  %.59 = phi i32 [ %867, %860 ], [ %.59.ph, %.preheader2148 ]
  %.not1582 = icmp ult ptr %.571236, %12
  br i1 %.not1582, label %860, label %857

857:                                              ; preds = %856
  %858 = and i32 %6, 2
  %.not1597 = icmp eq i32 %858, 0
  store i32 25, ptr %0, align 8, !tbaa !17
  %spec.select1727 = select i1 %.not1597, i32 -4, i32 1
  br label %.thread1683

859:                                              ; preds = %26
  br label %.preheader2148, !llvm.loop !81

860:                                              ; preds = %856
  %861 = getelementptr inbounds i8, ptr %.571236, i64 1
  %862 = load i8, ptr %.571236, align 1, !tbaa !24
  %863 = zext i8 %862 to i64
  %864 = zext nneg i32 %.59 to i64
  %865 = shl i64 %863, %864
  %866 = or i64 %865, %.591154
  %867 = add i32 %.59, 8
  %868 = icmp ult i32 %867, %.571065.ph
  br i1 %868, label %856, label %.loopexit2149, !llvm.loop !82

.loopexit2149:                                    ; preds = %860, %854
  %.541420 = phi i64 [ %.511417, %854 ], [ %.531419.ph, %860 ]
  %.551327 = phi ptr [ %.521324, %854 ], [ %.541326.ph, %860 ]
  %.581237 = phi ptr [ %.551234, %854 ], [ %861, %860 ]
  %.601155 = phi i64 [ %.571152, %854 ], [ %866, %860 ]
  %.581066 = phi i32 [ %851, %854 ], [ %.571065.ph, %860 ]
  %.58982 = phi i32 [ %853, %854 ], [ %.57981.ph, %860 ]
  %.56901 = phi i32 [ %.53898, %854 ], [ %.55900.ph, %860 ]
  %.60 = phi i32 [ %.57, %854 ], [ %867, %860 ]
  %notmask1583 = shl nsw i32 -1, %.581066
  %869 = xor i32 %notmask1583, -1
  %870 = trunc i64 %.601155 to i32
  %871 = and i32 %869, %870
  %872 = zext nneg i32 %.581066 to i64
  %873 = lshr i64 %.601155, %872
  %874 = sub i32 %.60, %.581066
  %875 = add i32 %871, %.58982
  br label %876

876:                                              ; preds = %847, %.loopexit2149
  %.551421 = phi i64 [ %.541420, %.loopexit2149 ], [ %.511417, %847 ]
  %.561328 = phi ptr [ %.551327, %.loopexit2149 ], [ %.521324, %847 ]
  %.591238 = phi ptr [ %.581237, %.loopexit2149 ], [ %.551234, %847 ]
  %.611156 = phi i64 [ %873, %.loopexit2149 ], [ %.571152, %847 ]
  %.591067 = phi i32 [ %.581066, %.loopexit2149 ], [ 0, %847 ]
  %.59983 = phi i32 [ %875, %.loopexit2149 ], [ %853, %847 ]
  %.57902 = phi i32 [ %.56901, %.loopexit2149 ], [ %.53898, %847 ]
  %.61 = phi i32 [ %874, %.loopexit2149 ], [ %.57, %847 ]
  %877 = icmp ult i32 %.61, 15
  br i1 %877, label %878, label %940

878:                                              ; preds = %876
  %879 = ptrtoint ptr %12 to i64
  %880 = ptrtoint ptr %.591238 to i64
  %881 = sub i64 %879, %880
  %882 = icmp slt i64 %881, 2
  br i1 %882, label %883, label %925

883:                                              ; preds = %878, %916
  %.561422 = phi i64 [ %.551421, %878 ], [ %.571423, %916 ]
  %.571329 = phi ptr [ %.561328, %878 ], [ %.581330, %916 ]
  %.601239 = phi ptr [ %.591238, %878 ], [ %917, %916 ]
  %.621157 = phi i64 [ %.611156, %878 ], [ %922, %916 ]
  %.601068 = phi i32 [ %.591067, %878 ], [ %.611069, %916 ]
  %.60984 = phi i32 [ %.59983, %878 ], [ %.61985, %916 ]
  %.58903 = phi i32 [ %.57902, %878 ], [ %.59904, %916 ]
  %.62 = phi i32 [ %.61, %878 ], [ %923, %916 ]
  %884 = getelementptr inbounds i8, ptr %0, i64 3848
  %885 = and i64 %.621157, 1023
  %886 = getelementptr inbounds [1024 x i16], ptr %884, i64 0, i64 %885
  %887 = load i16, ptr %886, align 2, !tbaa !57
  %888 = sext i16 %887 to i32
  %889 = icmp sgt i16 %887, -1
  br i1 %889, label %890, label %892

890:                                              ; preds = %883
  %.not1584 = icmp ult i16 %887, 512
  %891 = lshr i32 %888, 9
  %.not1585 = icmp ult i32 %.62, %891
  %or.cond1649 = or i1 %.not1584, %.not1585
  br i1 %or.cond1649, label %912, label %940

892:                                              ; preds = %883
  %893 = icmp ugt i32 %.62, 10
  br i1 %893, label %.preheader1747, label %912

.preheader1747:                                   ; preds = %892
  %894 = getelementptr inbounds i8, ptr %0, i64 5896
  br label %895

895:                                              ; preds = %.preheader1747, %895
  %.01092 = phi i32 [ %905, %895 ], [ %888, %.preheader1747 ]
  %.01089 = phi i32 [ %898, %895 ], [ 10, %.preheader1747 ]
  %896 = xor i32 %.01092, -1
  %897 = sext i32 %896 to i64
  %898 = add i32 %.01089, 1
  %899 = zext nneg i32 %.01089 to i64
  %900 = lshr i64 %.621157, %899
  %901 = and i64 %900, 1
  %902 = add nsw i64 %901, %897
  %903 = getelementptr inbounds [576 x i16], ptr %894, i64 0, i64 %902
  %904 = load i16, ptr %903, align 2, !tbaa !57
  %905 = sext i16 %904 to i32
  %906 = icmp slt i16 %904, 0
  %907 = add i32 %.01089, 2
  %908 = icmp uge i32 %.62, %907
  %909 = and i1 %906, %908
  br i1 %909, label %895, label %910, !llvm.loop !83

910:                                              ; preds = %895
  %911 = icmp sgt i16 %904, -1
  br i1 %911, label %940, label %912

912:                                              ; preds = %892, %910, %890, %915
  %.571423 = phi i64 [ %.561422, %890 ], [ %.561422, %910 ], [ %.561422, %892 ], [ %38, %915 ]
  %.581330 = phi ptr [ %.571329, %890 ], [ %.571329, %910 ], [ %.571329, %892 ], [ %4, %915 ]
  %.611240 = phi ptr [ %.601239, %890 ], [ %.601239, %910 ], [ %.601239, %892 ], [ %1, %915 ]
  %.631158 = phi i64 [ %.621157, %890 ], [ %.621157, %910 ], [ %.621157, %892 ], [ %30, %915 ]
  %.611069 = phi i32 [ %.601068, %890 ], [ %.601068, %910 ], [ %.601068, %892 ], [ %36, %915 ]
  %.61985 = phi i32 [ %.60984, %890 ], [ %.60984, %910 ], [ %.60984, %892 ], [ %34, %915 ]
  %.59904 = phi i32 [ %.58903, %890 ], [ %.58903, %910 ], [ %.58903, %892 ], [ %32, %915 ]
  %.63 = phi i32 [ %.62, %890 ], [ %.62, %910 ], [ %.62, %892 ], [ %.84.fr1984, %915 ]
  %.not1586 = icmp ult ptr %.611240, %12
  br i1 %.not1586, label %916, label %913

913:                                              ; preds = %912
  %914 = and i32 %6, 2
  %.not1587 = icmp eq i32 %914, 0
  store i32 26, ptr %0, align 8, !tbaa !17
  %spec.select1729 = select i1 %.not1587, i32 -4, i32 1
  br label %.thread1683

915:                                              ; preds = %26
  br label %912, !llvm.loop !84

916:                                              ; preds = %912
  %917 = getelementptr inbounds i8, ptr %.611240, i64 1
  %918 = load i8, ptr %.611240, align 1, !tbaa !24
  %919 = zext i8 %918 to i64
  %920 = zext nneg i32 %.63 to i64
  %921 = shl i64 %919, %920
  %922 = or i64 %921, %.631158
  %923 = add i32 %.63, 8
  %924 = icmp ult i32 %923, 15
  br i1 %924, label %883, label %940, !llvm.loop !85

925:                                              ; preds = %878
  %926 = load i8, ptr %.591238, align 1, !tbaa !24
  %927 = zext i8 %926 to i64
  %928 = zext nneg i32 %.61 to i64
  %929 = shl nuw nsw i64 %927, %928
  %930 = getelementptr inbounds i8, ptr %.591238, i64 1
  %931 = load i8, ptr %930, align 1, !tbaa !24
  %932 = zext i8 %931 to i64
  %933 = add nuw nsw i32 %.61, 8
  %934 = zext nneg i32 %933 to i64
  %935 = shl nuw nsw i64 %932, %934
  %936 = or i64 %929, %935
  %937 = or i64 %936, %.611156
  %938 = getelementptr inbounds i8, ptr %.591238, i64 2
  %939 = or disjoint i32 %.61, 16
  br label %940

940:                                              ; preds = %890, %925, %910, %916, %876
  %.581424 = phi i64 [ %.571423, %916 ], [ %.561422, %910 ], [ %.551421, %925 ], [ %.551421, %876 ], [ %.561422, %890 ]
  %.591331 = phi ptr [ %.581330, %916 ], [ %.571329, %910 ], [ %.561328, %925 ], [ %.561328, %876 ], [ %.571329, %890 ]
  %.621241 = phi ptr [ %917, %916 ], [ %.601239, %910 ], [ %938, %925 ], [ %.591238, %876 ], [ %.601239, %890 ]
  %.641159 = phi i64 [ %922, %916 ], [ %.621157, %910 ], [ %937, %925 ], [ %.611156, %876 ], [ %.621157, %890 ]
  %.62986 = phi i32 [ %.61985, %916 ], [ %.60984, %910 ], [ %.59983, %925 ], [ %.59983, %876 ], [ %.60984, %890 ]
  %.64 = phi i32 [ %923, %916 ], [ %.62, %910 ], [ %939, %925 ], [ %.61, %876 ], [ %.62, %890 ]
  %941 = getelementptr inbounds i8, ptr %0, i64 3848
  %942 = and i64 %.641159, 1023
  %943 = getelementptr inbounds [1024 x i16], ptr %941, i64 0, i64 %942
  %944 = load i16, ptr %943, align 2, !tbaa !57
  %945 = sext i16 %944 to i32
  %946 = icmp sgt i16 %944, -1
  br i1 %946, label %948, label %.preheader1745

.preheader1745:                                   ; preds = %940
  %947 = getelementptr inbounds i8, ptr %0, i64 5896
  br label %951

948:                                              ; preds = %940
  %949 = lshr i32 %945, 9
  %950 = and i32 %945, 511
  br label %.loopexit1746

951:                                              ; preds = %.preheader1745, %951
  %.11093 = phi i32 [ %961, %951 ], [ %945, %.preheader1745 ]
  %.11090 = phi i32 [ %954, %951 ], [ 10, %.preheader1745 ]
  %952 = xor i32 %.11093, -1
  %953 = sext i32 %952 to i64
  %954 = add i32 %.11090, 1
  %955 = zext nneg i32 %.11090 to i64
  %956 = lshr i64 %.641159, %955
  %957 = and i64 %956, 1
  %958 = add nsw i64 %957, %953
  %959 = getelementptr inbounds [576 x i16], ptr %947, i64 0, i64 %958
  %960 = load i16, ptr %959, align 2, !tbaa !57
  %961 = sext i16 %960 to i32
  %962 = icmp slt i16 %960, 0
  br i1 %962, label %951, label %.loopexit1746, !llvm.loop !86

.loopexit1746:                                    ; preds = %951, %948
  %.21094 = phi i32 [ %950, %948 ], [ %961, %951 ]
  %.21091 = phi i32 [ %949, %948 ], [ %954, %951 ]
  %963 = zext nneg i32 %.21091 to i64
  %964 = lshr i64 %.641159, %963
  %965 = sub i32 %.64, %.21091
  %966 = zext nneg i32 %.21094 to i64
  %967 = getelementptr inbounds [32 x i32], ptr @_ZZ16tinfl_decompressE12s_dist_extra, i64 0, i64 %966
  %968 = load i32, ptr %967, align 4, !tbaa !44
  %969 = getelementptr inbounds [32 x i32], ptr @_ZZ16tinfl_decompressE11s_dist_base, i64 0, i64 %966
  %970 = load i32, ptr %969, align 4, !tbaa !44
  %.not1588 = icmp eq i32 %968, 0
  br i1 %.not1588, label %993, label %971

971:                                              ; preds = %.loopexit1746
  %972 = icmp ult i32 %965, %968
  br i1 %972, label %.preheader2137, label %.loopexit2138

.preheader2137:                                   ; preds = %976, %971
  %.601426.ph = phi i64 [ %.581424, %971 ], [ %38, %976 ]
  %.611333.ph = phi ptr [ %.591331, %971 ], [ %4, %976 ]
  %.641243.ph = phi ptr [ %.621241, %971 ], [ %1, %976 ]
  %.661161.ph = phi i64 [ %964, %971 ], [ %30, %976 ]
  %.631071.ph = phi i32 [ %968, %971 ], [ %36, %976 ]
  %.64988.ph = phi i32 [ %.62986, %971 ], [ %34, %976 ]
  %.61906.ph = phi i32 [ %970, %971 ], [ %32, %976 ]
  %.66.ph = phi i32 [ %965, %971 ], [ %.84.fr1984, %976 ]
  br label %973

973:                                              ; preds = %.preheader2137, %977
  %.641243 = phi ptr [ %978, %977 ], [ %.641243.ph, %.preheader2137 ]
  %.661161 = phi i64 [ %983, %977 ], [ %.661161.ph, %.preheader2137 ]
  %.66 = phi i32 [ %984, %977 ], [ %.66.ph, %.preheader2137 ]
  %.not1589 = icmp ult ptr %.641243, %12
  br i1 %.not1589, label %977, label %974

974:                                              ; preds = %973
  %975 = and i32 %6, 2
  %.not1596 = icmp eq i32 %975, 0
  store i32 27, ptr %0, align 8, !tbaa !17
  %spec.select1731 = select i1 %.not1596, i32 -4, i32 1
  br label %.thread1683

976:                                              ; preds = %26
  br label %.preheader2137, !llvm.loop !87

977:                                              ; preds = %973
  %978 = getelementptr inbounds i8, ptr %.641243, i64 1
  %979 = load i8, ptr %.641243, align 1, !tbaa !24
  %980 = zext i8 %979 to i64
  %981 = zext nneg i32 %.66 to i64
  %982 = shl i64 %980, %981
  %983 = or i64 %982, %.661161
  %984 = add i32 %.66, 8
  %985 = icmp ult i32 %984, %.631071.ph
  br i1 %985, label %973, label %.loopexit2138, !llvm.loop !88

.loopexit2138:                                    ; preds = %977, %971
  %.621334 = phi ptr [ %.591331, %971 ], [ %.611333.ph, %977 ]
  %.651244 = phi ptr [ %.621241, %971 ], [ %978, %977 ]
  %.671162 = phi i64 [ %964, %971 ], [ %983, %977 ]
  %.641072 = phi i32 [ %968, %971 ], [ %.631071.ph, %977 ]
  %.65989 = phi i32 [ %.62986, %971 ], [ %.64988.ph, %977 ]
  %.62907 = phi i32 [ %970, %971 ], [ %.61906.ph, %977 ]
  %.67 = phi i32 [ %965, %971 ], [ %984, %977 ]
  %notmask1590 = shl nsw i32 -1, %.641072
  %986 = xor i32 %notmask1590, -1
  %987 = trunc i64 %.671162 to i32
  %988 = and i32 %986, %987
  %989 = zext nneg i32 %.641072 to i64
  %990 = lshr i64 %.671162, %989
  %991 = sub i32 %.67, %.641072
  %992 = add i32 %.62907, %988
  br label %993

993:                                              ; preds = %.loopexit2138, %.loopexit1746
  %.631335 = phi ptr [ %.621334, %.loopexit2138 ], [ %.591331, %.loopexit1746 ]
  %.661245 = phi ptr [ %.651244, %.loopexit2138 ], [ %.621241, %.loopexit1746 ]
  %.681163 = phi i64 [ %990, %.loopexit2138 ], [ %964, %.loopexit1746 ]
  %.651073 = phi i32 [ %.641072, %.loopexit2138 ], [ 0, %.loopexit1746 ]
  %.66990 = phi i32 [ %.65989, %.loopexit2138 ], [ %.62986, %.loopexit1746 ]
  %.63908 = phi i32 [ %992, %.loopexit2138 ], [ %970, %.loopexit1746 ]
  %.68 = phi i32 [ %991, %.loopexit2138 ], [ %965, %.loopexit1746 ]
  %994 = ptrtoint ptr %.631335 to i64
  %995 = sub i64 %994, %17
  %996 = zext i32 %.63908 to i64
  %997 = icmp uge i64 %995, %996
  %brmerge = or i1 %.not, %997
  br i1 %brmerge, label %999, label %1146

998:                                              ; preds = %26
  br label %1146, !llvm.loop !89

999:                                              ; preds = %993
  %1000 = sub i64 %995, %996
  %1001 = and i64 %1000, %21
  %1002 = getelementptr inbounds i8, ptr %3, i64 %1001
  %1003 = icmp ugt ptr %.631335, %1002
  %1004 = select i1 %1003, ptr %.631335, ptr %1002
  %1005 = zext i32 %.66990 to i64
  %1006 = getelementptr inbounds i8, ptr %1004, i64 %1005
  %1007 = icmp ugt ptr %1006, %14
  br i1 %1007, label %1008, label %1020

1008:                                             ; preds = %999, %1012
  %.621428 = phi i64 [ %1013, %1012 ], [ %995, %999 ]
  %.651337 = phi ptr [ %1019, %1012 ], [ %.631335, %999 ]
  %.681247 = phi ptr [ %.691248, %1012 ], [ %.661245, %999 ]
  %.701165 = phi i64 [ %.711166, %1012 ], [ %.681163, %999 ]
  %.671075 = phi i32 [ %.681076, %1012 ], [ %.651073, %999 ]
  %.68992 = phi i32 [ %.69993, %1012 ], [ %.66990, %999 ]
  %.65910 = phi i32 [ %.66911, %1012 ], [ %.63908, %999 ]
  %.70 = phi i32 [ %.71, %1012 ], [ %.68, %999 ]
  %1009 = add i32 %.68992, -1
  %.not1594 = icmp eq i32 %.68992, 0
  br i1 %.not1594, label %.preheader2159, label %1010, !llvm.loop !90

1010:                                             ; preds = %1008, %1011
  %.631429 = phi i64 [ %38, %1011 ], [ %.621428, %1008 ]
  %.661338 = phi ptr [ %4, %1011 ], [ %.651337, %1008 ]
  %.691248 = phi ptr [ %1, %1011 ], [ %.681247, %1008 ]
  %.711166 = phi i64 [ %30, %1011 ], [ %.701165, %1008 ]
  %.681076 = phi i32 [ %36, %1011 ], [ %.671075, %1008 ]
  %.69993 = phi i32 [ %34, %1011 ], [ %1009, %1008 ]
  %.66911 = phi i32 [ %32, %1011 ], [ %.65910, %1008 ]
  %.71 = phi i32 [ %.84.fr1984, %1011 ], [ %.70, %1008 ]
  %.not1595 = icmp ult ptr %.661338, %14
  br i1 %.not1595, label %1012, label %1146

1011:                                             ; preds = %26
  br label %1010, !llvm.loop !91

1012:                                             ; preds = %1010
  %1013 = add i64 %.631429, 1
  %1014 = zext i32 %.66911 to i64
  %1015 = sub i64 %.631429, %1014
  %1016 = and i64 %1015, %21
  %1017 = getelementptr inbounds i8, ptr %3, i64 %1016
  %1018 = load i8, ptr %1017, align 1, !tbaa !24
  %1019 = getelementptr inbounds i8, ptr %.661338, i64 1
  store i8 %1018, ptr %.661338, align 1, !tbaa !24
  br label %1008, !llvm.loop !92

1020:                                             ; preds = %999
  %1021 = icmp ult i32 %.66990, 9
  %.not1591 = icmp ugt i32 %.66990, %.63908
  %or.cond1651 = or i1 %1021, %.not1591
  br i1 %or.cond1651, label %.thread1660, label %1022

1022:                                             ; preds = %1020
  %1023 = and i32 %.66990, -8
  %1024 = zext i32 %1023 to i64
  %1025 = getelementptr inbounds i8, ptr %1002, i64 %1024
  %1026 = add i64 %1001, %17
  %1027 = add i64 %1026, %1024
  %1028 = add i64 %1026, 8
  %umax = tail call i64 @llvm.umax.i64(i64 %1027, i64 %1028)
  %1029 = xor i64 %1001, -1
  %1030 = add i64 %umax, %1029
  %1031 = sub i64 %1030, %17
  %1032 = lshr i64 %1031, 3
  %1033 = add nuw nsw i64 %1032, 1
  %min.iters.check = icmp ult i64 %1031, 72
  br i1 %min.iters.check, label %scalar.ph.preheader, label %vector.memcheck

vector.memcheck:                                  ; preds = %1022
  %1034 = add i64 %1001, %17
  %1035 = sub i64 %994, %1034
  %diff.check = icmp ult i64 %1035, 32
  br i1 %diff.check, label %scalar.ph.preheader, label %vector.ph

vector.ph:                                        ; preds = %vector.memcheck
  %n.vec = and i64 %1033, 4611686018427387900
  %1036 = shl i64 %n.vec, 3
  %ind.end = getelementptr i8, ptr %1002, i64 %1036
  %1037 = shl i64 %n.vec, 3
  %ind.end2041 = getelementptr i8, ptr %.631335, i64 %1037
  br label %vector.body

vector.body:                                      ; preds = %vector.body, %vector.ph
  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %offset.idx = shl i64 %index, 3
  %next.gep = getelementptr i8, ptr %1002, i64 %offset.idx
  %offset.idx2044 = shl i64 %index, 3
  %next.gep2045 = getelementptr i8, ptr %.631335, i64 %offset.idx2044
  %1038 = getelementptr i8, ptr %next.gep, i64 16
  %wide.load = load <2 x i64>, ptr %next.gep, align 1
  %wide.load2047 = load <2 x i64>, ptr %1038, align 1
  %1039 = getelementptr i8, ptr %next.gep2045, i64 16
  store <2 x i64> %wide.load, ptr %next.gep2045, align 1
  store <2 x i64> %wide.load2047, ptr %1039, align 1
  %index.next = add nuw i64 %index, 4
  %1040 = icmp eq i64 %index.next, %n.vec
  br i1 %1040, label %middle.block, label %vector.body, !llvm.loop !93

middle.block:                                     ; preds = %vector.body
  %cmp.n = icmp eq i64 %1033, %n.vec
  %cmo = shl i64 %n.vec, 3
  %1041 = getelementptr i8, ptr %1002, i64 %cmo
  %ind.escape = getelementptr i8, ptr %1041, i64 -8
  %cmo2048 = shl i64 %n.vec, 3
  %1042 = add i64 %cmo2048, -8
  %ind.escape2049 = getelementptr i8, ptr %.631335, i64 %1042
  br i1 %cmp.n, label %.loopexit2066, label %scalar.ph.preheader

scalar.ph.preheader:                              ; preds = %middle.block, %vector.memcheck, %1022
  %.01363.ph = phi ptr [ %1002, %vector.memcheck ], [ %1002, %1022 ], [ %ind.end, %middle.block ]
  %.671339.ph = phi ptr [ %.631335, %vector.memcheck ], [ %.631335, %1022 ], [ %ind.end2041, %middle.block ]
  br label %scalar.ph

scalar.ph:                                        ; preds = %scalar.ph.preheader, %scalar.ph
  %.01363 = phi ptr [ %1045, %scalar.ph ], [ %.01363.ph, %scalar.ph.preheader ]
  %.671339 = phi ptr [ %1044, %scalar.ph ], [ %.671339.ph, %scalar.ph.preheader ]
  %1043 = load i64, ptr %.01363, align 1
  store i64 %1043, ptr %.671339, align 1
  %1044 = getelementptr inbounds i8, ptr %.671339, i64 8
  %1045 = getelementptr inbounds i8, ptr %.01363, i64 8
  %1046 = icmp ult ptr %1045, %1025
  br i1 %1046, label %scalar.ph, label %.loopexit2066, !llvm.loop !95

.loopexit2066:                                    ; preds = %scalar.ph, %middle.block
  %.01363.lcssa = phi ptr [ %ind.escape, %middle.block ], [ %.01363, %scalar.ph ]
  %.671339.lcssa = phi ptr [ %ind.escape2049, %middle.block ], [ %.671339, %scalar.ph ]
  %.lcssa2030 = phi ptr [ %ind.end2041, %middle.block ], [ %1044, %scalar.ph ]
  %.lcssa2029 = phi ptr [ %ind.end, %middle.block ], [ %1045, %scalar.ph ]
  %1047 = and i32 %.66990, 7
  %1048 = icmp ult i32 %1047, 3
  br i1 %1048, label %1049, label %.lr.ph1790.preheader

1049:                                             ; preds = %.loopexit2066
  %.not1592 = icmp eq i32 %1047, 0
  br i1 %.not1592, label %.preheader2159, label %1050, !llvm.loop !90

1050:                                             ; preds = %1049
  %1051 = load i8, ptr %.lcssa2029, align 1, !tbaa !24
  store i8 %1051, ptr %.lcssa2030, align 1, !tbaa !24
  %1052 = icmp eq i32 %1047, 2
  br i1 %1052, label %1053, label %1057

1053:                                             ; preds = %1050
  %1054 = getelementptr inbounds i8, ptr %.01363.lcssa, i64 9
  %1055 = load i8, ptr %1054, align 1, !tbaa !24
  %1056 = getelementptr inbounds i8, ptr %.671339.lcssa, i64 9
  store i8 %1055, ptr %1056, align 1, !tbaa !24
  br label %1057

1057:                                             ; preds = %1053, %1050
  %1058 = zext nneg i32 %1047 to i64
  %1059 = getelementptr inbounds i8, ptr %.lcssa2030, i64 %1058
  br label %.preheader2159, !llvm.loop !90

.thread1660:                                      ; preds = %1020
  %1060 = icmp ugt i32 %.66990, 2
  br i1 %1060, label %.lr.ph1790.preheader, label %._crit_edge

.lr.ph1790.preheader:                             ; preds = %.loopexit2066, %.thread1660
  %.719951789.ph = phi i32 [ %1047, %.loopexit2066 ], [ %.66990, %.thread1660 ]
  %.7113431788.ph = phi ptr [ %.lcssa2030, %.loopexit2066 ], [ %.631335, %.thread1660 ]
  %.213651787.ph = phi ptr [ %.lcssa2029, %.loopexit2066 ], [ %1002, %.thread1660 ]
  br label %.lr.ph1790

.lr.ph1790:                                       ; preds = %.lr.ph1790.preheader, %.lr.ph1790
  %.719951789 = phi i32 [ %1070, %.lr.ph1790 ], [ %.719951789.ph, %.lr.ph1790.preheader ]
  %.7113431788 = phi ptr [ %1068, %.lr.ph1790 ], [ %.7113431788.ph, %.lr.ph1790.preheader ]
  %.213651787 = phi ptr [ %1069, %.lr.ph1790 ], [ %.213651787.ph, %.lr.ph1790.preheader ]
  %1061 = load i8, ptr %.213651787, align 1, !tbaa !24
  store i8 %1061, ptr %.7113431788, align 1, !tbaa !24
  %1062 = getelementptr inbounds i8, ptr %.213651787, i64 1
  %1063 = load i8, ptr %1062, align 1, !tbaa !24
  %1064 = getelementptr inbounds i8, ptr %.7113431788, i64 1
  store i8 %1063, ptr %1064, align 1, !tbaa !24
  %1065 = getelementptr inbounds i8, ptr %.213651787, i64 2
  %1066 = load i8, ptr %1065, align 1, !tbaa !24
  %1067 = getelementptr inbounds i8, ptr %.7113431788, i64 2
  store i8 %1066, ptr %1067, align 1, !tbaa !24
  %1068 = getelementptr inbounds i8, ptr %.7113431788, i64 3
  %1069 = getelementptr inbounds i8, ptr %.213651787, i64 3
  %1070 = add i32 %.719951789, -3
  %1071 = icmp ugt i32 %1070, 2
  br i1 %1071, label %.lr.ph1790, label %._crit_edge, !llvm.loop !96

._crit_edge:                                      ; preds = %.lr.ph1790, %.thread1660
  %.21365.lcssa = phi ptr [ %1002, %.thread1660 ], [ %1069, %.lr.ph1790 ]
  %.711343.lcssa = phi ptr [ %.631335, %.thread1660 ], [ %1068, %.lr.ph1790 ]
  %.71995.lcssa = phi i32 [ %.66990, %.thread1660 ], [ %1070, %.lr.ph1790 ]
  %.not1593 = icmp eq i32 %.71995.lcssa, 0
  br i1 %.not1593, label %.preheader2159, label %1072, !llvm.loop !90

1072:                                             ; preds = %._crit_edge
  %1073 = load i8, ptr %.21365.lcssa, align 1, !tbaa !24
  store i8 %1073, ptr %.711343.lcssa, align 1, !tbaa !24
  %1074 = icmp eq i32 %.71995.lcssa, 2
  br i1 %1074, label %1075, label %1079

1075:                                             ; preds = %1072
  %1076 = getelementptr inbounds i8, ptr %.21365.lcssa, i64 1
  %1077 = load i8, ptr %1076, align 1, !tbaa !24
  %1078 = getelementptr inbounds i8, ptr %.711343.lcssa, i64 1
  store i8 %1077, ptr %1078, align 1, !tbaa !24
  br label %1079

1079:                                             ; preds = %1075, %1072
  %1080 = zext nneg i32 %.71995.lcssa to i64
  %1081 = getelementptr inbounds i8, ptr %.711343.lcssa, i64 %1080
  br label %.preheader2159, !llvm.loop !90

1082:                                             ; preds = %209, %.thread
  %.641430 = phi i64 [ %.511417, %.thread ], [ %.191385, %209 ]
  %.731345 = phi ptr [ %.521324, %.thread ], [ %.191291, %209 ]
  %.701249 = phi ptr [ %.551234, %.thread ], [ %.221201, %209 ]
  %.721167 = phi i64 [ %.571152, %.thread ], [ %.231118, %209 ]
  %.691077 = phi i32 [ %.551063, %.thread ], [ %.231031, %209 ]
  %.72996 = phi i32 [ 256, %.thread ], [ 0, %209 ]
  %.67912 = phi i32 [ %.53898, %.thread ], [ %.22867, %209 ]
  %.72 = phi i32 [ %.57, %.thread ], [ %.23, %209 ]
  %1083 = getelementptr inbounds i8, ptr %0, i64 20
  %1084 = load i32, ptr %1083, align 4, !tbaa !29
  %1085 = and i32 %1084, 1
  %.not1613 = icmp eq i32 %1085, 0
  br i1 %.not1613, label %83, label %1092, !llvm.loop !97

1086:                                             ; preds = %1088
  %1087 = and i32 %6, 2
  %.not1561 = icmp eq i32 %1087, 0
  store i32 32, ptr %0, align 8, !tbaa !17
  %spec.select1733 = select i1 %.not1561, i32 -4, i32 1
  br label %.thread1683

1088:                                             ; preds = %26
  %.not1560 = icmp sgt i64 %11, 0
  br i1 %.not1560, label %1089, label %1086

1089:                                             ; preds = %1088
  %1090 = getelementptr inbounds i8, ptr %1, i64 1
  %1091 = add i32 %.84.fr1984, 8
  br label %1092

1092:                                             ; preds = %1082, %1089
  %.671433 = phi i64 [ %38, %1089 ], [ %.641430, %1082 ]
  %.761348 = phi ptr [ %4, %1089 ], [ %.731345, %1082 ]
  %.731252 = phi ptr [ %1090, %1089 ], [ %.701249, %1082 ]
  %.721080 = phi i32 [ %36, %1089 ], [ %.691077, %1082 ]
  %.75999 = phi i32 [ %34, %1089 ], [ %.72996, %1082 ]
  %.70915 = phi i32 [ %32, %1089 ], [ %.67912, %1082 ]
  %.75 = phi i32 [ %1091, %1089 ], [ %.72, %1082 ]
  %.75.fr = freeze i32 %.75
  %1093 = and i32 %.75.fr, -8
  %1094 = icmp ugt ptr %.731252, %1
  %1095 = icmp ne i32 %1093, 0
  %1096 = and i1 %1094, %1095
  br i1 %1096, label %.lr.ph1825.preheader, label %._crit_edge1826

.lr.ph1825.preheader:                             ; preds = %1092
  %.7312521921 = ptrtoint ptr %.731252 to i64
  %1097 = add i32 %1093, -8
  %1098 = lshr exact i32 %1097, 3
  %1099 = zext nneg i32 %1098 to i64
  %1100 = xor i64 %8, -1
  %1101 = add i64 %1100, %.7312521921
  %umin = tail call i64 @llvm.umin.i64(i64 %1099, i64 %1101)
  %1102 = xor i64 %umin, -1
  %scevgep1922 = getelementptr i8, ptr %.731252, i64 %1102
  %1103 = trunc nuw nsw i64 %umin to i32
  %1104 = shl nuw i32 %1103, 3
  %1105 = sub i32 %1097, %1104
  br label %._crit_edge1826

._crit_edge1826:                                  ; preds = %.lr.ph1825.preheader, %1092
  %.741253.lcssa = phi ptr [ %.731252, %1092 ], [ %scevgep1922, %.lr.ph1825.preheader ]
  %.76.lcssa = phi i32 [ %1093, %1092 ], [ %1105, %.lr.ph1825.preheader ]
  %.not1615 = icmp eq i32 %.76.lcssa, 0
  br i1 %.not1615, label %1107, label %1106

1106:                                             ; preds = %._crit_edge1826
  tail call void @__assert_fail(ptr noundef nonnull @.str.17, ptr noundef nonnull @.str.12, i32 noundef 2786, ptr noundef nonnull @__PRETTY_FUNCTION__.tinfl_decompress) #5
  unreachable

1107:                                             ; preds = %._crit_edge1826
  %1108 = and i32 %6, 1
  %.not1616 = icmp eq i32 %1108, 0
  br i1 %.not1616, label %1146, label %1109

1109:                                             ; preds = %1107, %1139
  %.681434 = phi i64 [ %.731439, %1139 ], [ %.671433, %1107 ]
  %.771349 = phi ptr [ %.821354, %1139 ], [ %.761348, %1107 ]
  %.751254 = phi ptr [ %.801259, %1139 ], [ %.741253.lcssa, %1107 ]
  %.761171 = phi i64 [ %.811176, %1139 ], [ 0, %1107 ]
  %.731081 = phi i32 [ %.781086, %1139 ], [ %.721080, %1107 ]
  %.761000 = phi i32 [ %1144, %1139 ], [ 0, %1107 ]
  %.71916 = phi i32 [ %.76921, %1139 ], [ %.70915, %1107 ]
  %.77 = phi i32 [ %.82, %1139 ], [ 0, %1107 ]
  %1110 = icmp ult i32 %.761000, 4
  br i1 %1110, label %1111, label %1146

1111:                                             ; preds = %1109
  %.not1617 = icmp eq i32 %.77, 0
  br i1 %.not1617, label %1131, label %1112

1112:                                             ; preds = %1111
  %1113 = icmp ult i32 %.77, 8
  br i1 %1113, label %.preheader2090, label %.loopexit2091

.preheader2090:                                   ; preds = %1117, %1112
  %.701436.ph = phi i64 [ %.681434, %1112 ], [ %38, %1117 ]
  %.791351.ph = phi ptr [ %.771349, %1112 ], [ %4, %1117 ]
  %.771256.ph = phi ptr [ %.751254, %1112 ], [ %1, %1117 ]
  %.781173.ph = phi i64 [ %.761171, %1112 ], [ %30, %1117 ]
  %.751083.ph = phi i32 [ %.731081, %1112 ], [ %36, %1117 ]
  %.781002.ph = phi i32 [ %.761000, %1112 ], [ %34, %1117 ]
  %.73918.ph = phi i32 [ %.71916, %1112 ], [ %32, %1117 ]
  %.79.ph = phi i32 [ %.77, %1112 ], [ %.84.fr1984, %1117 ]
  br label %1114

1114:                                             ; preds = %.preheader2090, %1118
  %.771256 = phi ptr [ %1119, %1118 ], [ %.771256.ph, %.preheader2090 ]
  %.781173 = phi i64 [ %1124, %1118 ], [ %.781173.ph, %.preheader2090 ]
  %.79 = phi i32 [ %1125, %1118 ], [ %.79.ph, %.preheader2090 ]
  %.not1620 = icmp ult ptr %.771256, %12
  br i1 %.not1620, label %1118, label %1115

1115:                                             ; preds = %1114
  %1116 = and i32 %6, 2
  %.not1621 = icmp eq i32 %1116, 0
  store i32 41, ptr %0, align 8, !tbaa !17
  %spec.select1735 = select i1 %.not1621, i32 -4, i32 1
  br label %.thread1683

1117:                                             ; preds = %26
  br label %.preheader2090, !llvm.loop !98

1118:                                             ; preds = %1114
  %1119 = getelementptr inbounds i8, ptr %.771256, i64 1
  %1120 = load i8, ptr %.771256, align 1, !tbaa !24
  %1121 = zext i8 %1120 to i64
  %1122 = zext nneg i32 %.79 to i64
  %1123 = shl i64 %1121, %1122
  %1124 = or i64 %1123, %.781173
  %1125 = add i32 %.79, 8
  %1126 = icmp ugt i32 %.79, -9
  br i1 %1126, label %1114, label %.loopexit2091, !llvm.loop !99

.loopexit2091:                                    ; preds = %1118, %1112
  %.711437 = phi i64 [ %.681434, %1112 ], [ %.701436.ph, %1118 ]
  %.801352 = phi ptr [ %.771349, %1112 ], [ %.791351.ph, %1118 ]
  %.781257 = phi ptr [ %.751254, %1112 ], [ %1119, %1118 ]
  %.791174 = phi i64 [ %.761171, %1112 ], [ %1124, %1118 ]
  %.761084 = phi i32 [ %.731081, %1112 ], [ %.751083.ph, %1118 ]
  %.791003 = phi i32 [ %.761000, %1112 ], [ %.781002.ph, %1118 ]
  %.74919 = phi i32 [ %.71916, %1112 ], [ %.73918.ph, %1118 ]
  %.80 = phi i32 [ %.77, %1112 ], [ %1125, %1118 ]
  %1127 = trunc i64 %.791174 to i32
  %1128 = and i32 %1127, 255
  %1129 = lshr i64 %.791174, 8
  %1130 = add i32 %.80, -8
  br label %1139

1131:                                             ; preds = %1111, %1134
  %.721438 = phi i64 [ %38, %1134 ], [ %.681434, %1111 ]
  %.811353 = phi ptr [ %4, %1134 ], [ %.771349, %1111 ]
  %.791258 = phi ptr [ %1, %1134 ], [ %.751254, %1111 ]
  %.801175 = phi i64 [ %30, %1134 ], [ %.761171, %1111 ]
  %.771085 = phi i32 [ %36, %1134 ], [ %.731081, %1111 ]
  %.801004 = phi i32 [ %34, %1134 ], [ %.761000, %1111 ]
  %.75920 = phi i32 [ %32, %1134 ], [ %.71916, %1111 ]
  %.81 = phi i32 [ %.84.fr1984, %1134 ], [ 0, %1111 ]
  %.not1618 = icmp ult ptr %.791258, %12
  br i1 %.not1618, label %1135, label %1132

1132:                                             ; preds = %1131
  %1133 = and i32 %6, 2
  %.not1619 = icmp eq i32 %1133, 0
  store i32 42, ptr %0, align 8, !tbaa !17
  %spec.select1737 = select i1 %.not1619, i32 -4, i32 1
  br label %.thread1683

1134:                                             ; preds = %26
  br label %1131, !llvm.loop !100

1135:                                             ; preds = %1131
  %1136 = getelementptr inbounds i8, ptr %.791258, i64 1
  %1137 = load i8, ptr %.791258, align 1, !tbaa !24
  %1138 = zext i8 %1137 to i32
  br label %1139

1139:                                             ; preds = %1135, %.loopexit2091
  %.731439 = phi i64 [ %.721438, %1135 ], [ %.711437, %.loopexit2091 ]
  %.821354 = phi ptr [ %.811353, %1135 ], [ %.801352, %.loopexit2091 ]
  %.801259 = phi ptr [ %1136, %1135 ], [ %.781257, %.loopexit2091 ]
  %.811176 = phi i64 [ %.801175, %1135 ], [ %1129, %.loopexit2091 ]
  %.781086 = phi i32 [ %.771085, %1135 ], [ %.761084, %.loopexit2091 ]
  %.811005 = phi i32 [ %.801004, %1135 ], [ %.791003, %.loopexit2091 ]
  %.76921 = phi i32 [ %.75920, %1135 ], [ %.74919, %.loopexit2091 ]
  %.82 = phi i32 [ %.81, %1135 ], [ %1130, %.loopexit2091 ]
  %.0838 = phi i32 [ %1138, %1135 ], [ %1128, %.loopexit2091 ]
  %1140 = getelementptr inbounds i8, ptr %0, i64 16
  %1141 = load i32, ptr %1140, align 8, !tbaa !23
  %1142 = shl i32 %1141, 8
  %1143 = or disjoint i32 %1142, %.0838
  store i32 %1143, ptr %1140, align 8, !tbaa !23
  %1144 = add i32 %.811005, 1
  br label %1109, !llvm.loop !101

1145:                                             ; preds = %26
  br label %1146, !llvm.loop !102

1146:                                             ; preds = %1109, %1107, %1145, %1010, %998, %993, %772, %664, %665, %616, %619, %._crit_edge1797, %434, %230, %229, %210, %203, %166, %179, %81, %82, %73
  %.sink = phi i32 [ 36, %73 ], [ %39, %82 ], [ 36, %81 ], [ %39, %179 ], [ 39, %166 ], [ 52, %203 ], [ 9, %210 ], [ 10, %229 ], [ %39, %230 ], [ %39, %434 ], [ 35, %._crit_edge1797 ], [ %39, %619 ], [ 17, %616 ], [ %39, %665 ], [ 21, %664 ], [ 24, %772 ], [ 37, %993 ], [ %39, %998 ], [ 53, %1010 ], [ %39, %1145 ], [ 34, %1107 ], [ 34, %1109 ]
  %.751441 = phi i64 [ %38, %73 ], [ %38, %82 ], [ %38, %81 ], [ %38, %179 ], [ %.71373, %166 ], [ %.181384, %203 ], [ %.201386, %210 ], [ %.31369, %229 ], [ %38, %230 ], [ %38, %434 ], [ %.321398, %._crit_edge1797 ], [ %38, %619 ], [ %.371403, %616 ], [ %38, %665 ], [ %.341400, %664 ], [ %.491415, %772 ], [ %995, %993 ], [ %38, %998 ], [ %.631429, %1010 ], [ %38, %1145 ], [ %.671433, %1107 ], [ %.681434, %1109 ]
  %.841356 = phi ptr [ %4, %73 ], [ %4, %82 ], [ %4, %81 ], [ %4, %179 ], [ %.71279, %166 ], [ %.181290, %203 ], [ %.201292, %210 ], [ %.31275, %229 ], [ %4, %230 ], [ %4, %434 ], [ %.321304, %._crit_edge1797 ], [ %4, %619 ], [ %.371309, %616 ], [ %4, %665 ], [ %.341306, %664 ], [ %.491321, %772 ], [ %.631335, %993 ], [ %4, %998 ], [ %.661338, %1010 ], [ %4, %1145 ], [ %.761348, %1107 ], [ %.771349, %1109 ]
  %.821261 = phi ptr [ %59, %73 ], [ %1, %82 ], [ %59, %81 ], [ %1, %179 ], [ %.101189, %166 ], [ %.211200, %203 ], [ %.231202, %210 ], [ %.61185, %229 ], [ %1, %230 ], [ %1, %434 ], [ %.351214, %._crit_edge1797 ], [ %1, %619 ], [ %.401219, %616 ], [ %1, %665 ], [ %.371216, %664 ], [ %.521231, %772 ], [ %.661245, %993 ], [ %1, %998 ], [ %.691248, %1010 ], [ %1, %1145 ], [ %.741253.lcssa, %1107 ], [ %.751254, %1109 ]
  %.831178 = phi i64 [ %.11096, %73 ], [ %30, %82 ], [ %.11096, %81 ], [ %30, %179 ], [ %.111106, %166 ], [ %.221117, %203 ], [ %.241119, %210 ], [ %109, %229 ], [ %30, %230 ], [ %30, %434 ], [ %.361131, %._crit_edge1797 ], [ %30, %619 ], [ %607, %616 ], [ %30, %665 ], [ %.381133, %664 ], [ %.531148, %772 ], [ %.681163, %993 ], [ %30, %998 ], [ %.711166, %1010 ], [ %30, %1145 ], [ 0, %1107 ], [ %.761171, %1109 ]
  %.801088 = phi i32 [ %.11009, %73 ], [ %36, %82 ], [ %.11009, %81 ], [ %36, %179 ], [ %.111019, %166 ], [ %.221030, %203 ], [ %.241032, %210 ], [ %.71015, %229 ], [ %36, %230 ], [ %36, %434 ], [ %.361044, %._crit_edge1797 ], [ %36, %619 ], [ %.411049, %616 ], [ %36, %665 ], [ %.381046, %664 ], [ %.531061, %772 ], [ %.651073, %993 ], [ %36, %998 ], [ %.681076, %1010 ], [ %36, %1145 ], [ %.721080, %1107 ], [ %.731081, %1109 ]
  %.831007 = phi i32 [ 1, %73 ], [ %34, %82 ], [ 1, %81 ], [ %34, %179 ], [ %174, %166 ], [ %.22946, %203 ], [ %.24948, %210 ], [ %.8932, %229 ], [ %34, %230 ], [ %34, %434 ], [ %.36960, %._crit_edge1797 ], [ %34, %619 ], [ 0, %616 ], [ %34, %665 ], [ %.38962, %664 ], [ %.52976, %772 ], [ %.66990, %993 ], [ %34, %998 ], [ %.69993, %1010 ], [ %34, %1145 ], [ %.75999, %1107 ], [ %.761000, %1109 ]
  %.78923 = phi i32 [ %.1846, %73 ], [ %32, %82 ], [ %.1846, %81 ], [ %32, %179 ], [ %.11856, %166 ], [ %.21866, %203 ], [ %.23868, %210 ], [ %.7852, %229 ], [ %32, %230 ], [ %32, %434 ], [ %.35880, %._crit_edge1797 ], [ %32, %619 ], [ 16, %616 ], [ %32, %665 ], [ %.37882, %664 ], [ %.51896, %772 ], [ %.63908, %993 ], [ %32, %998 ], [ %.66911, %1010 ], [ %32, %1145 ], [ %.70915, %1107 ], [ %.71916, %1109 ]
  %.84 = phi i32 [ %.1843, %73 ], [ %.84.fr1984, %82 ], [ %.1843, %81 ], [ %.84.fr1984, %179 ], [ %.11, %166 ], [ %.22, %203 ], [ %.24, %210 ], [ %110, %229 ], [ %.84.fr1984, %230 ], [ %.84.fr1984, %434 ], [ %.36, %._crit_edge1797 ], [ %.84.fr1984, %619 ], [ %608, %616 ], [ %.84.fr1984, %665 ], [ %.38, %664 ], [ %.53, %772 ], [ %.68, %993 ], [ %.84.fr1984, %998 ], [ %.71, %1010 ], [ %.84.fr1984, %1145 ], [ 0, %1107 ], [ %.77, %1109 ]
  %.0839 = phi i32 [ -1, %73 ], [ -1, %82 ], [ -1, %81 ], [ -1, %179 ], [ -1, %166 ], [ 2, %203 ], [ 2, %210 ], [ -1, %229 ], [ -1, %230 ], [ -1, %434 ], [ -1, %._crit_edge1797 ], [ -1, %619 ], [ -1, %616 ], [ -1, %665 ], [ -1, %664 ], [ 2, %772 ], [ -1, %993 ], [ -1, %998 ], [ 2, %1010 ], [ 0, %1145 ], [ 0, %1107 ], [ 0, %1109 ]
  store i32 %.sink, ptr %0, align 8, !tbaa !17
  %.84.fr = freeze i32 %.84
  %1147 = icmp ugt ptr %.821261, %1
  %1148 = icmp ugt i32 %.84.fr, 7
  %1149 = and i1 %1147, %1148
  br i1 %1149, label %.lr.ph1832.preheader, label %.thread1683

.lr.ph1832.preheader:                             ; preds = %1146
  %.8212611923 = ptrtoint ptr %.821261 to i64
  %1150 = add i32 %.84.fr, -8
  %1151 = lshr i32 %1150, 3
  %1152 = zext nneg i32 %1151 to i64
  %1153 = xor i64 %8, -1
  %1154 = add i64 %1153, %.8212611923
  %umin1924 = tail call i64 @llvm.umin.i64(i64 %1152, i64 %1154)
  %1155 = xor i64 %umin1924, -1
  %scevgep1925 = getelementptr i8, ptr %.821261, i64 %1155
  %1156 = trunc nuw nsw i64 %umin1924 to i32
  %1157 = shl nuw i32 %1156, 3
  %1158 = sub i32 %1150, %1157
  br label %.thread1683

.thread1683:                                      ; preds = %26, %.lr.ph1832.preheader, %1146, %1132, %1115, %1086, %974, %913, %857, %718, %628, %556, %282, %246, %213, %187, %155, %136, %114, %85, %55, %47
  %.08391700 = phi i32 [ %spec.select1737, %1132 ], [ %spec.select1735, %1115 ], [ %spec.select1733, %1086 ], [ %spec.select1705, %85 ], [ %spec.select1707, %114 ], [ %spec.select1709, %136 ], [ %spec.select1711, %155 ], [ %spec.select1713, %187 ], [ %spec.select1715, %213 ], [ %spec.select1723, %628 ], [ %spec.select1721, %556 ], [ %spec.select1717, %246 ], [ %spec.select1719, %282 ], [ %spec.select1727, %857 ], [ %spec.select1731, %974 ], [ %spec.select1729, %913 ], [ %spec.select1725, %718 ], [ %spec.select1703, %55 ], [ %spec.select1701, %47 ], [ %.0839, %1146 ], [ %.0839, %.lr.ph1832.preheader ], [ -1, %26 ]
  %.789231698 = phi i32 [ %.75920, %1132 ], [ %.73918.ph, %1115 ], [ %32, %1086 ], [ %.6851.ph, %85 ], [ %32, %114 ], [ %.13858.ph, %136 ], [ %.15860, %155 ], [ %.20865.ph, %187 ], [ %.24869, %213 ], [ %.42887.ph, %628 ], [ %.39884, %556 ], [ %.28873.ph, %246 ], [ %.32877.ph, %282 ], [ %.55900.ph, %857 ], [ %.61906.ph, %974 ], [ %.59904, %913 ], [ %.49894, %718 ], [ %.1846, %55 ], [ %.0845, %47 ], [ %.78923, %1146 ], [ %.78923, %.lr.ph1832.preheader ], [ %32, %26 ]
  %.8310071697 = phi i32 [ %.801004, %1132 ], [ %.781002.ph, %1115 ], [ %34, %1086 ], [ %.7931.ph, %85 ], [ %34, %114 ], [ %.13937.ph, %136 ], [ %.15939, %155 ], [ %.20944.ph, %187 ], [ %.25949, %213 ], [ %.44968.ph, %628 ], [ %.40964, %556 ], [ %.29953.ph, %246 ], [ %.33957.ph, %282 ], [ %.57981.ph, %857 ], [ %.64988.ph, %974 ], [ %.61985, %913 ], [ %.51975, %718 ], [ %.1925, %55 ], [ %.0924, %47 ], [ %.831007, %1146 ], [ %.831007, %.lr.ph1832.preheader ], [ %34, %26 ]
  %.8010881696 = phi i32 [ %.771085, %1132 ], [ %.751083.ph, %1115 ], [ %36, %1086 ], [ %.61014.ph, %85 ], [ %36, %114 ], [ %.131021.ph, %136 ], [ %.151023, %155 ], [ %.201028.ph, %187 ], [ %.251033, %213 ], [ %.441052.ph, %628 ], [ %.401048, %556 ], [ %.291037.ph, %246 ], [ %.331041.ph, %282 ], [ %.571065.ph, %857 ], [ %.631071.ph, %974 ], [ %.611069, %913 ], [ %.511059, %718 ], [ %.11009, %55 ], [ %.01008, %47 ], [ %.801088, %1146 ], [ %.801088, %.lr.ph1832.preheader ], [ %36, %26 ]
  %.8311781695 = phi i64 [ %.801175, %1132 ], [ %.781173, %1115 ], [ %30, %1086 ], [ %.61101.lcssa, %85 ], [ %30, %114 ], [ %.131108, %136 ], [ %.151110, %155 ], [ %.201115, %187 ], [ %.251120, %213 ], [ %.441139, %628 ], [ %.401135, %556 ], [ %.291124, %246 ], [ %.331128.lcssa, %282 ], [ %.591154, %857 ], [ %.661161, %974 ], [ %.631158, %913 ], [ %.511146, %718 ], [ %.11096, %55 ], [ %.01095, %47 ], [ %.831178, %1146 ], [ %.831178, %.lr.ph1832.preheader ], [ %30, %26 ]
  %.8413561694 = phi ptr [ %.811353, %1132 ], [ %.791351.ph, %1115 ], [ %4, %1086 ], [ %.21274.ph, %85 ], [ %4, %114 ], [ %.91281.ph, %136 ], [ %.111283, %155 ], [ %.161288.ph, %187 ], [ %.211293, %213 ], [ %.401312.ph, %628 ], [ %.361308, %556 ], [ %.251297.ph, %246 ], [ %.291301.ph, %282 ], [ %.541326.ph, %857 ], [ %.611333.ph, %974 ], [ %.581330, %913 ], [ %.471319, %718 ], [ %4, %55 ], [ %4, %47 ], [ %.841356, %1146 ], [ %.841356, %.lr.ph1832.preheader ], [ %4, %26 ]
  %.7514411693 = phi i64 [ %.721438, %1132 ], [ %.701436.ph, %1115 ], [ %38, %1086 ], [ %.21368.ph, %85 ], [ %38, %114 ], [ %.91375.ph, %136 ], [ %.111377, %155 ], [ %.161382.ph, %187 ], [ %.211387, %213 ], [ %.401406.ph, %628 ], [ %.361402, %556 ], [ %.251391.ph, %246 ], [ %.291395.ph, %282 ], [ %.531419.ph, %857 ], [ %.601426.ph, %974 ], [ %.571423, %913 ], [ %.471413, %718 ], [ %38, %55 ], [ %38, %47 ], [ %.751441, %1146 ], [ %.751441, %.lr.ph1832.preheader ], [ %38, %26 ]
  %.841263 = phi ptr [ %.791258, %1132 ], [ %.771256, %1115 ], [ %1, %1086 ], [ %.51184.lcssa, %85 ], [ %1, %114 ], [ %.121191, %136 ], [ %.141193, %155 ], [ %.191198, %187 ], [ %.241203, %213 ], [ %.431222, %628 ], [ %.391218, %556 ], [ %.281207, %246 ], [ %.321211.lcssa, %282 ], [ %.571236, %857 ], [ %.641243, %974 ], [ %.611240, %913 ], [ %.501229, %718 ], [ %.01179, %55 ], [ %1, %47 ], [ %.821261, %1146 ], [ %scevgep1925, %.lr.ph1832.preheader ], [ %1, %26 ]
  %.86 = phi i32 [ %.81, %1132 ], [ %.79, %1115 ], [ %.84.fr1984, %1086 ], [ %.6.lcssa, %85 ], [ %.84.fr1984, %114 ], [ %.13, %136 ], [ %.15, %155 ], [ %.20, %187 ], [ %.25, %213 ], [ %.44, %628 ], [ %.40, %556 ], [ %.29, %246 ], [ %.33.lcssa, %282 ], [ %.59, %857 ], [ %.66, %974 ], [ %.63, %913 ], [ %.51, %718 ], [ %.1843, %55 ], [ %.0842, %47 ], [ %.84.fr, %1146 ], [ %1158, %.lr.ph1832.preheader ], [ %.84.fr1984, %26 ]
  store i32 %.86, ptr %27, align 4, !tbaa !9
  %1159 = zext nneg i32 %.86 to i64
  %notmask1636 = shl nsw i64 -1, %1159
  %1160 = xor i64 %notmask1636, -1
  %1161 = and i64 %.8311781695, %1160
  store i64 %1161, ptr %29, align 8, !tbaa !12
  store i32 %.789231698, ptr %31, align 8, !tbaa !13
  store i32 %.8310071697, ptr %33, align 4, !tbaa !14
  store i32 %.8010881696, ptr %35, align 8, !tbaa !15
  store i64 %.7514411693, ptr %37, align 8, !tbaa !16
  %1162 = ptrtoint ptr %.841263 to i64
  %1163 = sub i64 %1162, %8
  store i64 %1163, ptr %2, align 8, !tbaa !5
  %1164 = ptrtoint ptr %.8413561694 to i64
  %1165 = sub i64 %1164, %16
  store i64 %1165, ptr %5, align 8, !tbaa !5
  %1166 = and i32 %6, 9
  %1167 = icmp ne i32 %1166, 0
  %1168 = icmp sgt i32 %.08391700, -1
  %or.cond7 = and i1 %1167, %1168
  br i1 %or.cond7, label %1169, label %1262

1169:                                             ; preds = %.thread1683
  %1170 = getelementptr inbounds i8, ptr %0, i64 28
  %1171 = load i32, ptr %1170, align 4, !tbaa !22
  %1172 = and i32 %1171, 65535
  %1173 = lshr i32 %1171, 16
  %.not16371853 = icmp eq i64 %1165, 0
  br i1 %.not16371853, label %._crit_edge1859, label %.preheader1740.preheader

.preheader1740.preheader:                         ; preds = %1169
  %1174 = urem i64 %1165, 5552
  br label %.preheader1740

.preheader1740:                                   ; preds = %.preheader1740.preheader, %._crit_edge1849
  %.01858 = phi i64 [ 5552, %._crit_edge1849 ], [ %1174, %.preheader1740.preheader ]
  %.08271857 = phi i32 [ %1252, %._crit_edge1849 ], [ %1173, %.preheader1740.preheader ]
  %.08281856 = phi i32 [ %1251, %._crit_edge1849 ], [ %1172, %.preheader1740.preheader ]
  %.08331855 = phi i64 [ %1253, %._crit_edge1849 ], [ %1165, %.preheader1740.preheader ]
  %.08341854 = phi ptr [ %.2836.lcssa, %._crit_edge1849 ], [ %4, %.preheader1740.preheader ]
  %1175 = icmp ugt i64 %.01858, 7
  br i1 %1175, label %.lr.ph1839.preheader, label %.preheader

.lr.ph1839.preheader:                             ; preds = %.preheader1740
  %1176 = trunc nuw nsw i64 %.01858 to i32
  br label %.lr.ph1839

.preheader:                                       ; preds = %.lr.ph1839, %.preheader1740
  %.1835.lcssa = phi ptr [ %.08341854, %.preheader1740 ], [ %1228, %.lr.ph1839 ]
  %.0831.lcssa = phi i32 [ 0, %.preheader1740 ], [ %1227, %.lr.ph1839 ]
  %.1829.lcssa = phi i32 [ %.08281856, %.preheader1740 ], [ %1225, %.lr.ph1839 ]
  %.1.lcssa = phi i32 [ %.08271857, %.preheader1740 ], [ %1226, %.lr.ph1839 ]
  %1177 = zext i32 %.0831.lcssa to i64
  %1178 = icmp ugt i64 %.01858, %1177
  br i1 %1178, label %.lr.ph1848.preheader, label %._crit_edge1849

.lr.ph1848.preheader:                             ; preds = %.preheader
  %1179 = sub nsw i64 %.01858, %1177
  %1180 = sub nsw i64 %.01858, %1177
  %xtraiter2201 = and i64 %1180, 3
  %lcmp.mod2202.not = icmp eq i64 %xtraiter2201, 0
  br i1 %lcmp.mod2202.not, label %.lr.ph1848.prol.loopexit, label %.lr.ph1848.prol

.lr.ph1848.prol:                                  ; preds = %.lr.ph1848.preheader, %.lr.ph1848.prol
  %indvars.iv1926.prol = phi i64 [ %indvars.iv.next1927.prol, %.lr.ph1848.prol ], [ %1177, %.lr.ph1848.preheader ]
  %.21847.prol = phi i32 [ %1185, %.lr.ph1848.prol ], [ %.1.lcssa, %.lr.ph1848.preheader ]
  %.28301846.prol = phi i32 [ %1184, %.lr.ph1848.prol ], [ %.1829.lcssa, %.lr.ph1848.preheader ]
  %.28361844.prol = phi ptr [ %1181, %.lr.ph1848.prol ], [ %.1835.lcssa, %.lr.ph1848.preheader ]
  %prol.iter = phi i64 [ %prol.iter.next, %.lr.ph1848.prol ], [ 0, %.lr.ph1848.preheader ]
  %1181 = getelementptr inbounds i8, ptr %.28361844.prol, i64 1
  %1182 = load i8, ptr %.28361844.prol, align 1, !tbaa !24
  %1183 = zext i8 %1182 to i32
  %1184 = add i32 %.28301846.prol, %1183
  %1185 = add i32 %1184, %.21847.prol
  %indvars.iv.next1927.prol = add nuw nsw i64 %indvars.iv1926.prol, 1
  %prol.iter.next = add i64 %prol.iter, 1
  %prol.iter.cmp.not = icmp eq i64 %prol.iter.next, %xtraiter2201
  br i1 %prol.iter.cmp.not, label %.lr.ph1848.prol.loopexit, label %.lr.ph1848.prol, !llvm.loop !103

.lr.ph1848.prol.loopexit:                         ; preds = %.lr.ph1848.prol, %.lr.ph1848.preheader
  %.lcssa2071.unr = phi i32 [ poison, %.lr.ph1848.preheader ], [ %1184, %.lr.ph1848.prol ]
  %.lcssa2070.unr = phi i32 [ poison, %.lr.ph1848.preheader ], [ %1185, %.lr.ph1848.prol ]
  %indvars.iv1926.unr = phi i64 [ %1177, %.lr.ph1848.preheader ], [ %indvars.iv.next1927.prol, %.lr.ph1848.prol ]
  %.21847.unr = phi i32 [ %.1.lcssa, %.lr.ph1848.preheader ], [ %1185, %.lr.ph1848.prol ]
  %.28301846.unr = phi i32 [ %.1829.lcssa, %.lr.ph1848.preheader ], [ %1184, %.lr.ph1848.prol ]
  %.28361844.unr = phi ptr [ %.1835.lcssa, %.lr.ph1848.preheader ], [ %1181, %.lr.ph1848.prol ]
  %1186 = sub nsw i64 %1177, %.01858
  %1187 = icmp ugt i64 %1186, -4
  br i1 %1187, label %._crit_edge1849.loopexit, label %.lr.ph1848

.lr.ph1839:                                       ; preds = %.lr.ph1839.preheader, %.lr.ph1839
  %.11838 = phi i32 [ %1226, %.lr.ph1839 ], [ %.08271857, %.lr.ph1839.preheader ]
  %.18291837 = phi i32 [ %1225, %.lr.ph1839 ], [ %.08281856, %.lr.ph1839.preheader ]
  %.08311836 = phi i32 [ %1227, %.lr.ph1839 ], [ 0, %.lr.ph1839.preheader ]
  %.18351835 = phi ptr [ %1228, %.lr.ph1839 ], [ %.08341854, %.lr.ph1839.preheader ]
  %1188 = load i8, ptr %.18351835, align 1, !tbaa !24
  %1189 = zext i8 %1188 to i32
  %1190 = add i32 %.18291837, %1189
  %1191 = add i32 %1190, %.11838
  %1192 = getelementptr inbounds i8, ptr %.18351835, i64 1
  %1193 = load i8, ptr %1192, align 1, !tbaa !24
  %1194 = zext i8 %1193 to i32
  %1195 = add i32 %1190, %1194
  %1196 = add i32 %1191, %1195
  %1197 = getelementptr inbounds i8, ptr %.18351835, i64 2
  %1198 = load i8, ptr %1197, align 1, !tbaa !24
  %1199 = zext i8 %1198 to i32
  %1200 = add i32 %1195, %1199
  %1201 = add i32 %1196, %1200
  %1202 = getelementptr inbounds i8, ptr %.18351835, i64 3
  %1203 = load i8, ptr %1202, align 1, !tbaa !24
  %1204 = zext i8 %1203 to i32
  %1205 = add i32 %1200, %1204
  %1206 = add i32 %1201, %1205
  %1207 = getelementptr inbounds i8, ptr %.18351835, i64 4
  %1208 = load i8, ptr %1207, align 1, !tbaa !24
  %1209 = zext i8 %1208 to i32
  %1210 = add i32 %1205, %1209
  %1211 = add i32 %1206, %1210
  %1212 = getelementptr inbounds i8, ptr %.18351835, i64 5
  %1213 = load i8, ptr %1212, align 1, !tbaa !24
  %1214 = zext i8 %1213 to i32
  %1215 = add i32 %1210, %1214
  %1216 = add i32 %1211, %1215
  %1217 = getelementptr inbounds i8, ptr %.18351835, i64 6
  %1218 = load i8, ptr %1217, align 1, !tbaa !24
  %1219 = zext i8 %1218 to i32
  %1220 = add i32 %1215, %1219
  %1221 = add i32 %1216, %1220
  %1222 = getelementptr inbounds i8, ptr %.18351835, i64 7
  %1223 = load i8, ptr %1222, align 1, !tbaa !24
  %1224 = zext i8 %1223 to i32
  %1225 = add i32 %1220, %1224
  %1226 = add i32 %1221, %1225
  %1227 = add nuw i32 %.08311836, 8
  %1228 = getelementptr inbounds i8, ptr %.18351835, i64 8
  %1229 = or disjoint i32 %1227, 7
  %1230 = icmp ult i32 %1229, %1176
  br i1 %1230, label %.lr.ph1839, label %.preheader, !llvm.loop !104

.lr.ph1848:                                       ; preds = %.lr.ph1848.prol.loopexit, %.lr.ph1848
  %indvars.iv1926 = phi i64 [ %indvars.iv.next1927.3, %.lr.ph1848 ], [ %indvars.iv1926.unr, %.lr.ph1848.prol.loopexit ]
  %.21847 = phi i32 [ %1250, %.lr.ph1848 ], [ %.21847.unr, %.lr.ph1848.prol.loopexit ]
  %.28301846 = phi i32 [ %1249, %.lr.ph1848 ], [ %.28301846.unr, %.lr.ph1848.prol.loopexit ]
  %.28361844 = phi ptr [ %1246, %.lr.ph1848 ], [ %.28361844.unr, %.lr.ph1848.prol.loopexit ]
  %1231 = getelementptr inbounds i8, ptr %.28361844, i64 1
  %1232 = load i8, ptr %.28361844, align 1, !tbaa !24
  %1233 = zext i8 %1232 to i32
  %1234 = add i32 %.28301846, %1233
  %1235 = add i32 %1234, %.21847
  %1236 = getelementptr inbounds i8, ptr %.28361844, i64 2
  %1237 = load i8, ptr %1231, align 1, !tbaa !24
  %1238 = zext i8 %1237 to i32
  %1239 = add i32 %1234, %1238
  %1240 = add i32 %1239, %1235
  %1241 = getelementptr inbounds i8, ptr %.28361844, i64 3
  %1242 = load i8, ptr %1236, align 1, !tbaa !24
  %1243 = zext i8 %1242 to i32
  %1244 = add i32 %1239, %1243
  %1245 = add i32 %1244, %1240
  %1246 = getelementptr inbounds i8, ptr %.28361844, i64 4
  %1247 = load i8, ptr %1241, align 1, !tbaa !24
  %1248 = zext i8 %1247 to i32
  %1249 = add i32 %1244, %1248
  %1250 = add i32 %1249, %1245
  %indvars.iv.next1927.3 = add nuw nsw i64 %indvars.iv1926, 4
  %exitcond1930.not.3 = icmp eq i64 %indvars.iv.next1927.3, %.01858
  br i1 %exitcond1930.not.3, label %._crit_edge1849.loopexit, label %.lr.ph1848, !llvm.loop !105

._crit_edge1849.loopexit:                         ; preds = %.lr.ph1848, %.lr.ph1848.prol.loopexit
  %.lcssa2071 = phi i32 [ %.lcssa2071.unr, %.lr.ph1848.prol.loopexit ], [ %1249, %.lr.ph1848 ]
  %.lcssa2070 = phi i32 [ %.lcssa2070.unr, %.lr.ph1848.prol.loopexit ], [ %1250, %.lr.ph1848 ]
  %scevgep1928 = getelementptr i8, ptr %.1835.lcssa, i64 %1179
  br label %._crit_edge1849

._crit_edge1849:                                  ; preds = %._crit_edge1849.loopexit, %.preheader
  %.2836.lcssa = phi ptr [ %.1835.lcssa, %.preheader ], [ %scevgep1928, %._crit_edge1849.loopexit ]
  %.2830.lcssa = phi i32 [ %.1829.lcssa, %.preheader ], [ %.lcssa2071, %._crit_edge1849.loopexit ]
  %.2.lcssa = phi i32 [ %.1.lcssa, %.preheader ], [ %.lcssa2070, %._crit_edge1849.loopexit ]
  %1251 = urem i32 %.2830.lcssa, 65521
  %1252 = urem i32 %.2.lcssa, 65521
  %1253 = sub i64 %.08331855, %.01858
  %.not1637 = icmp eq i64 %1253, 0
  br i1 %.not1637, label %._crit_edge1859, label %.preheader1740, !llvm.loop !106

._crit_edge1859:                                  ; preds = %._crit_edge1849, %1169
  %.0828.lcssa = phi i32 [ %1172, %1169 ], [ %1251, %._crit_edge1849 ]
  %.0827.lcssa = phi i32 [ %1173, %1169 ], [ %1252, %._crit_edge1849 ]
  %1254 = shl nuw i32 %.0827.lcssa, 16
  %1255 = or disjoint i32 %1254, %.0828.lcssa
  store i32 %1255, ptr %1170, align 4, !tbaa !22
  %1256 = icmp eq i32 %.08391700, 0
  br i1 %1256, label %1257, label %1262

1257:                                             ; preds = %._crit_edge1859
  %1258 = and i32 %6, 1
  %.not1638 = icmp eq i32 %1258, 0
  br i1 %.not1638, label %1262, label %1259

1259:                                             ; preds = %1257
  %1260 = getelementptr inbounds i8, ptr %0, i64 16
  %1261 = load i32, ptr %1260, align 8, !tbaa !23
  %.not1639 = icmp eq i32 %1255, %1261
  %spec.select = select i1 %.not1639, i32 0, i32 -2
  br label %1262

1262:                                             ; preds = %1259, %.thread1683, %1257, %._crit_edge1859, %25
  %.0837 = phi i32 [ -3, %25 ], [ %.08391700, %.thread1683 ], [ 0, %1257 ], [ %.08391700, %._crit_edge1859 ], [ %spec.select, %1259 ]
  ret i32 %.0837
}

; 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) #2

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

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

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

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


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