; LLVM IR from litespeedtech/ls-qpack :: lsqpack (lsqpack_dec_enc_in)

; 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.static_table_entry = type { ptr, ptr, i32, i32 }
%struct.huff_decode_retval = type { i32, i32, i32 }
%struct.lsqpack_dec = type { i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, ptr, ptr, %struct.lsqpack_ringbuf, %struct.anon.8, [8 x %struct.anon.9], i32, float, %struct.anon.10, %struct.lsqpack_dec_err }
%struct.lsqpack_ringbuf = type { i32, i32, i32, ptr }
%struct.anon.8 = type { ptr, ptr }
%struct.anon.9 = type { ptr, ptr }
%struct.anon.10 = type { i32, %union.anon }
%union.anon = type { %struct.anon.11 }
%struct.anon.11 = type { %struct.lsqpack_dec_int_state, %struct.lsqpack_huff_decode_state, i32, i32, ptr, ptr, ptr, i32, i32, i32, i32, i8, i8 }
%struct.lsqpack_dec_int_state = type { i32, i32, i32, i64 }
%struct.lsqpack_huff_decode_state = type { i32, %struct.lsqpack_decode_status }
%struct.lsqpack_decode_status = type { i8, i8 }
%struct.lsqpack_dec_err = type { i32, i32, i64, i64 }
%struct.anon.12 = type { %struct.lsqpack_dec_int_state, %struct.lsqpack_huff_decode_state, i32, ptr, i32, i32, i32, i8 }
%struct.anon.14 = type { %struct.lsqpack_dec_int_state, i64 }
%struct.anon.13 = type { %struct.lsqpack_dec_int_state, i32 }
%struct.lsqpack_dec_table_entry = type { i32, i32, i32, i32, i32, i32, i32, [0 x i8] }

@.str.2 = external hidden unnamed_addr constant [2 x i8], align 1
@static_table = external hidden constant [99 x %struct.static_table_entry], align 16
@.str.8 = external hidden unnamed_addr constant [66 x i8], align 1
@name_hashes = external hidden constant [99 x i32], align 16
@.str.37 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.54 = external hidden unnamed_addr constant [32 x i8], align 1
@.str.55 = external hidden unnamed_addr constant [37 x i8], align 1
@__PRETTY_FUNCTION__.lsqpack_dec_enc_in = external hidden unnamed_addr constant [76 x i8], align 1
@.str.56 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.57 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.58 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.59 = external hidden unnamed_addr constant [2 x i8], align 1

; Function Attrs: nounwind
declare i32 @fprintf(ptr noundef, ptr noundef, ...) #0

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

; Function Attrs: nounwind allocsize(0)
declare noalias ptr @malloc(i64 noundef) #2

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

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

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

; Function Attrs: nounwind uwtable
declare dso_local i32 @lsqpack_dec_int(ptr noundef, ptr noundef, i32 noundef, ptr noundef, ptr noundef) #5

; Function Attrs: nounwind uwtable
declare dso_local i32 @lsqpack_dec_int24(ptr noundef, ptr noundef, i32 noundef, ptr noundef, ptr noundef) #5

; Function Attrs: nounwind uwtable
declare hidden void @qdec_decref_entry(ptr noundef) #5

; Function Attrs: nounwind uwtable
define dso_local i32 @lsqpack_dec_enc_in(ptr noundef %0, ptr noundef %1, i64 noundef %2) #5 {
  %4 = alloca i32, align 4
  %5 = alloca ptr, align 8
  %6 = alloca ptr, align 8
  %7 = alloca i64, align 8
  %8 = alloca ptr, align 8
  %9 = alloca ptr, align 8
  %10 = alloca ptr, align 8
  %11 = alloca %struct.huff_decode_retval, align 4
  %12 = alloca i32, align 4
  %13 = alloca i64, align 8
  %14 = alloca i32, align 4
  %15 = alloca i32, align 4
  %16 = alloca %struct.huff_decode_retval, align 4
  %17 = alloca { i64, i32 }, align 8
  %18 = alloca %struct.huff_decode_retval, align 4
  %19 = alloca { i64, i32 }, align 8
  %20 = alloca %struct.huff_decode_retval, align 4
  %21 = alloca { i64, i32 }, align 8
  store ptr %0, ptr %5, align 8, !tbaa !5
  store ptr %1, ptr %6, align 8, !tbaa !5
  store i64 %2, ptr %7, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %8) #7
  %22 = load ptr, ptr %6, align 8, !tbaa !5
  %23 = load i64, ptr %7, align 8, !tbaa !9
  %24 = getelementptr inbounds i8, ptr %22, i64 %23
  store ptr %24, ptr %8, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %9) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %10) #7
  call void @llvm.lifetime.start.p0(i64 12, ptr %11) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #7
  store i32 -1, ptr %12, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %13) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #7
  br label %25

25:                                               ; preds = %3
  %26 = load ptr, ptr %5, align 8, !tbaa !5
  %27 = getelementptr inbounds %struct.lsqpack_dec, ptr %26, i32 0, i32 11
  %28 = load ptr, ptr %27, align 8, !tbaa !13
  %29 = icmp ne ptr %28, null
  br i1 %29, label %30, label %44

30:                                               ; preds = %25
  %31 = load ptr, ptr %5, align 8, !tbaa !5
  %32 = getelementptr inbounds %struct.lsqpack_dec, ptr %31, i32 0, i32 11
  %33 = load ptr, ptr %32, align 8, !tbaa !13
  %34 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %33, ptr noundef @.str.37) #7
  %35 = load ptr, ptr %5, align 8, !tbaa !5
  %36 = getelementptr inbounds %struct.lsqpack_dec, ptr %35, i32 0, i32 11
  %37 = load ptr, ptr %36, align 8, !tbaa !13
  %38 = load i64, ptr %7, align 8, !tbaa !9
  %39 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %37, ptr noundef @.str.54, i64 noundef %38) #7
  %40 = load ptr, ptr %5, align 8, !tbaa !5
  %41 = getelementptr inbounds %struct.lsqpack_dec, ptr %40, i32 0, i32 11
  %42 = load ptr, ptr %41, align 8, !tbaa !13
  %43 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %42, ptr noundef @.str.2) #7
  br label %44

44:                                               ; preds = %30, %25
  br label %45

45:                                               ; preds = %44
  br label %46

46:                                               ; preds = %45
  %47 = load i64, ptr %7, align 8, !tbaa !9
  %48 = trunc i64 %47 to i32
  %49 = load ptr, ptr %5, align 8, !tbaa !5
  %50 = getelementptr inbounds %struct.lsqpack_dec, ptr %49, i32 0, i32 6
  %51 = load i32, ptr %50, align 8, !tbaa !20
  %52 = add i32 %51, %48
  store i32 %52, ptr %50, align 8, !tbaa !20
  br label %53

53:                                               ; preds = %2094, %46
  %54 = load ptr, ptr %6, align 8, !tbaa !5
  %55 = load ptr, ptr %8, align 8, !tbaa !5
  %56 = icmp ult ptr %54, %55
  br i1 %56, label %57, label %2095

57:                                               ; preds = %53
  %58 = load ptr, ptr %5, align 8, !tbaa !5
  %59 = getelementptr inbounds %struct.lsqpack_dec, ptr %58, i32 0, i32 17
  %60 = getelementptr inbounds %struct.anon.10, ptr %59, i32 0, i32 0
  %61 = load i32, ptr %60, align 8, !tbaa !21
  switch i32 %61, label %2093 [
    i32 0, label %62
    i32 1, label %155
    i32 2, label %229
    i32 3, label %250
    i32 5, label %542
    i32 4, label %812
    i32 8, label %995
    i32 9, label %1116
    i32 10, label %1306
    i32 11, label %1415
    i32 12, label %1436
    i32 13, label %1521
    i32 14, label %1766
    i32 6, label %1961
    i32 7, label %2024
  ]

62:                                               ; preds = %57
  %63 = load ptr, ptr %6, align 8, !tbaa !5
  %64 = getelementptr inbounds i8, ptr %63, i64 0
  %65 = load i8, ptr %64, align 1, !tbaa !22
  %66 = zext i8 %65 to i32
  %67 = and i32 %66, 128
  %68 = icmp ne i32 %67, 0
  br i1 %68, label %69, label %98

69:                                               ; preds = %62
  %70 = load ptr, ptr %6, align 8, !tbaa !5
  %71 = getelementptr inbounds i8, ptr %70, i64 0
  %72 = load i8, ptr %71, align 1, !tbaa !22
  %73 = zext i8 %72 to i32
  %74 = and i32 %73, 64
  %75 = icmp sgt i32 %74, 0
  %76 = zext i1 %75 to i32
  %77 = trunc i32 %76 to i8
  %78 = load ptr, ptr %5, align 8, !tbaa !5
  %79 = getelementptr inbounds %struct.lsqpack_dec, ptr %78, i32 0, i32 17
  %80 = getelementptr inbounds %struct.anon.10, ptr %79, i32 0, i32 1
  %81 = getelementptr inbounds %struct.anon.11, ptr %80, i32 0, i32 12
  store i8 %77, ptr %81, align 1, !tbaa !22
  %82 = load ptr, ptr %5, align 8, !tbaa !5
  %83 = getelementptr inbounds %struct.lsqpack_dec, ptr %82, i32 0, i32 17
  %84 = getelementptr inbounds %struct.anon.10, ptr %83, i32 0, i32 1
  %85 = getelementptr inbounds %struct.anon.11, ptr %84, i32 0, i32 0
  %86 = getelementptr inbounds %struct.lsqpack_dec_int_state, ptr %85, i32 0, i32 0
  store i32 0, ptr %86, align 8, !tbaa !22
  %87 = load ptr, ptr %5, align 8, !tbaa !5
  %88 = getelementptr inbounds %struct.lsqpack_dec, ptr %87, i32 0, i32 17
  %89 = getelementptr inbounds %struct.anon.10, ptr %88, i32 0, i32 1
  %90 = getelementptr inbounds %struct.anon.11, ptr %89, i32 0, i32 4
  store ptr null, ptr %90, align 8, !tbaa !22
  %91 = load ptr, ptr %5, align 8, !tbaa !5
  %92 = getelementptr inbounds %struct.lsqpack_dec, ptr %91, i32 0, i32 17
  %93 = getelementptr inbounds %struct.anon.10, ptr %92, i32 0, i32 1
  %94 = getelementptr inbounds %struct.anon.11, ptr %93, i32 0, i32 5
  store ptr null, ptr %94, align 8, !tbaa !22
  %95 = load ptr, ptr %5, align 8, !tbaa !5
  %96 = getelementptr inbounds %struct.lsqpack_dec, ptr %95, i32 0, i32 17
  %97 = getelementptr inbounds %struct.anon.10, ptr %96, i32 0, i32 0
  store i32 1, ptr %97, align 8, !tbaa !21
  store i32 6, ptr %12, align 4, !tbaa !11
  br label %156

98:                                               ; preds = %62
  %99 = load ptr, ptr %6, align 8, !tbaa !5
  %100 = getelementptr inbounds i8, ptr %99, i64 0
  %101 = load i8, ptr %100, align 1, !tbaa !22
  %102 = zext i8 %101 to i32
  %103 = and i32 %102, 64
  %104 = icmp ne i32 %103, 0
  br i1 %104, label %105, label %130

105:                                              ; preds = %98
  %106 = load ptr, ptr %6, align 8, !tbaa !5
  %107 = getelementptr inbounds i8, ptr %106, i64 0
  %108 = load i8, ptr %107, align 1, !tbaa !22
  %109 = zext i8 %108 to i32
  %110 = and i32 %109, 32
  %111 = icmp sgt i32 %110, 0
  %112 = zext i1 %111 to i32
  %113 = trunc i32 %112 to i8
  %114 = load ptr, ptr %5, align 8, !tbaa !5
  %115 = getelementptr inbounds %struct.lsqpack_dec, ptr %114, i32 0, i32 17
  %116 = getelementptr inbounds %struct.anon.10, ptr %115, i32 0, i32 1
  %117 = getelementptr inbounds %struct.anon.12, ptr %116, i32 0, i32 7
  store i8 %113, ptr %117, align 4, !tbaa !22
  %118 = load ptr, ptr %5, align 8, !tbaa !5
  %119 = getelementptr inbounds %struct.lsqpack_dec, ptr %118, i32 0, i32 17
  %120 = getelementptr inbounds %struct.anon.10, ptr %119, i32 0, i32 1
  %121 = getelementptr inbounds %struct.anon.12, ptr %120, i32 0, i32 0
  %122 = getelementptr inbounds %struct.lsqpack_dec_int_state, ptr %121, i32 0, i32 0
  store i32 0, ptr %122, align 8, !tbaa !22
  %123 = load ptr, ptr %5, align 8, !tbaa !5
  %124 = getelementptr inbounds %struct.lsqpack_dec, ptr %123, i32 0, i32 17
  %125 = getelementptr inbounds %struct.anon.10, ptr %124, i32 0, i32 1
  %126 = getelementptr inbounds %struct.anon.12, ptr %125, i32 0, i32 3
  store ptr null, ptr %126, align 8, !tbaa !22
  %127 = load ptr, ptr %5, align 8, !tbaa !5
  %128 = getelementptr inbounds %struct.lsqpack_dec, ptr %127, i32 0, i32 17
  %129 = getelementptr inbounds %struct.anon.10, ptr %128, i32 0, i32 0
  store i32 8, ptr %129, align 8, !tbaa !21
  store i32 5, ptr %12, align 4, !tbaa !11
  br label %996

130:                                              ; preds = %98
  %131 = load ptr, ptr %6, align 8, !tbaa !5
  %132 = getelementptr inbounds i8, ptr %131, i64 0
  %133 = load i8, ptr %132, align 1, !tbaa !22
  %134 = zext i8 %133 to i32
  %135 = and i32 %134, 32
  %136 = icmp ne i32 %135, 0
  br i1 %136, label %137, label %146

137:                                              ; preds = %130
  %138 = load ptr, ptr %5, align 8, !tbaa !5
  %139 = getelementptr inbounds %struct.lsqpack_dec, ptr %138, i32 0, i32 17
  %140 = getelementptr inbounds %struct.anon.10, ptr %139, i32 0, i32 1
  %141 = getelementptr inbounds %struct.anon.14, ptr %140, i32 0, i32 0
  %142 = getelementptr inbounds %struct.lsqpack_dec_int_state, ptr %141, i32 0, i32 0
  store i32 0, ptr %142, align 8, !tbaa !22
  %143 = load ptr, ptr %5, align 8, !tbaa !5
  %144 = getelementptr inbounds %struct.lsqpack_dec, ptr %143, i32 0, i32 17
  %145 = getelementptr inbounds %struct.anon.10, ptr %144, i32 0, i32 0
  store i32 7, ptr %145, align 8, !tbaa !21
  store i32 5, ptr %12, align 4, !tbaa !11
  br label %2025

146:                                              ; preds = %130
  %147 = load ptr, ptr %5, align 8, !tbaa !5
  %148 = getelementptr inbounds %struct.lsqpack_dec, ptr %147, i32 0, i32 17
  %149 = getelementptr inbounds %struct.anon.10, ptr %148, i32 0, i32 1
  %150 = getelementptr inbounds %struct.anon.13, ptr %149, i32 0, i32 0
  %151 = getelementptr inbounds %struct.lsqpack_dec_int_state, ptr %150, i32 0, i32 0
  store i32 0, ptr %151, align 8, !tbaa !22
  %152 = load ptr, ptr %5, align 8, !tbaa !5
  %153 = getelementptr inbounds %struct.lsqpack_dec, ptr %152, i32 0, i32 17
  %154 = getelementptr inbounds %struct.anon.10, ptr %153, i32 0, i32 0
  store i32 6, ptr %154, align 8, !tbaa !21
  store i32 5, ptr %12, align 4, !tbaa !11
  br label %1962

155:                                              ; preds = %57
  br label %156

156:                                              ; preds = %155, %69
  %157 = load ptr, ptr %8, align 8, !tbaa !5
  %158 = load i32, ptr %12, align 4, !tbaa !11
  %159 = load ptr, ptr %5, align 8, !tbaa !5
  %160 = getelementptr inbounds %struct.lsqpack_dec, ptr %159, i32 0, i32 17
  %161 = getelementptr inbounds %struct.anon.10, ptr %160, i32 0, i32 1
  %162 = getelementptr inbounds %struct.anon.11, ptr %161, i32 0, i32 2
  %163 = load ptr, ptr %5, align 8, !tbaa !5
  %164 = getelementptr inbounds %struct.lsqpack_dec, ptr %163, i32 0, i32 17
  %165 = getelementptr inbounds %struct.anon.10, ptr %164, i32 0, i32 1
  %166 = getelementptr inbounds %struct.anon.11, ptr %165, i32 0, i32 0
  %167 = call i32 @lsqpack_dec_int24(ptr noundef %6, ptr noundef %157, i32 noundef %158, ptr noundef %162, ptr noundef %166)
  store i32 %167, ptr %14, align 4, !tbaa !11
  %168 = load i32, ptr %14, align 4, !tbaa !11
  %169 = icmp eq i32 %168, 0
  br i1 %169, label %170, label %224

170:                                              ; preds = %156
  %171 = load ptr, ptr %5, align 8, !tbaa !5
  %172 = getelementptr inbounds %struct.lsqpack_dec, ptr %171, i32 0, i32 17
  %173 = getelementptr inbounds %struct.anon.10, ptr %172, i32 0, i32 1
  %174 = getelementptr inbounds %struct.anon.11, ptr %173, i32 0, i32 12
  %175 = load i8, ptr %174, align 1, !tbaa !22
  %176 = icmp ne i8 %175, 0
  br i1 %176, label %177, label %192

177:                                              ; preds = %170
  %178 = load ptr, ptr %5, align 8, !tbaa !5
  %179 = getelementptr inbounds %struct.lsqpack_dec, ptr %178, i32 0, i32 17
  %180 = getelementptr inbounds %struct.anon.10, ptr %179, i32 0, i32 1
  %181 = getelementptr inbounds %struct.anon.11, ptr %180, i32 0, i32 2
  %182 = load i32, ptr %181, align 8, !tbaa !22
  %183 = zext i32 %182 to i64
  %184 = icmp ult i64 %183, 99
  br i1 %184, label %185, label %190

185:                                              ; preds = %177
  %186 = load ptr, ptr %5, align 8, !tbaa !5
  %187 = getelementptr inbounds %struct.lsqpack_dec, ptr %186, i32 0, i32 17
  %188 = getelementptr inbounds %struct.anon.10, ptr %187, i32 0, i32 1
  %189 = getelementptr inbounds %struct.anon.11, ptr %188, i32 0, i32 4
  store ptr null, ptr %189, align 8, !tbaa !22
  br label %191

190:                                              ; preds = %177
  store i32 -1, ptr %4, align 4
  store i32 1, ptr %15, align 4
  br label %2096

191:                                              ; preds = %185
  br label %220

192:                                              ; preds = %170
  %193 = load ptr, ptr %5, align 8, !tbaa !5
  %194 = load ptr, ptr %5, align 8, !tbaa !5
  %195 = getelementptr inbounds %struct.lsqpack_dec, ptr %194, i32 0, i32 17
  %196 = getelementptr inbounds %struct.anon.10, ptr %195, i32 0, i32 1
  %197 = getelementptr inbounds %struct.anon.11, ptr %196, i32 0, i32 2
  %198 = load i32, ptr %197, align 8, !tbaa !22
  %199 = call ptr @qdec_get_table_entry_rel(ptr noundef %193, i32 noundef %198)
  %200 = load ptr, ptr %5, align 8, !tbaa !5
  %201 = getelementptr inbounds %struct.lsqpack_dec, ptr %200, i32 0, i32 17
  %202 = getelementptr inbounds %struct.anon.10, ptr %201, i32 0, i32 1
  %203 = getelementptr inbounds %struct.anon.11, ptr %202, i32 0, i32 4
  store ptr %199, ptr %203, align 8, !tbaa !22
  %204 = load ptr, ptr %5, align 8, !tbaa !5
  %205 = getelementptr inbounds %struct.lsqpack_dec, ptr %204, i32 0, i32 17
  %206 = getelementptr inbounds %struct.anon.10, ptr %205, i32 0, i32 1
  %207 = getelementptr inbounds %struct.anon.11, ptr %206, i32 0, i32 4
  %208 = load ptr, ptr %207, align 8, !tbaa !22
  %209 = icmp ne ptr %208, null
  br i1 %209, label %211, label %210

210:                                              ; preds = %192
  store i32 -1, ptr %4, align 4
  store i32 1, ptr %15, align 4
  br label %2096

211:                                              ; preds = %192
  %212 = load ptr, ptr %5, align 8, !tbaa !5
  %213 = getelementptr inbounds %struct.lsqpack_dec, ptr %212, i32 0, i32 17
  %214 = getelementptr inbounds %struct.anon.10, ptr %213, i32 0, i32 1
  %215 = getelementptr inbounds %struct.anon.11, ptr %214, i32 0, i32 4
  %216 = load ptr, ptr %215, align 8, !tbaa !22
  %217 = getelementptr inbounds %struct.lsqpack_dec_table_entry, ptr %216, i32 0, i32 2
  %218 = load i32, ptr %217, align 4, !tbaa !23
  %219 = add i32 %218, 1
  store i32 %219, ptr %217, align 4, !tbaa !23
  br label %220

220:                                              ; preds = %211, %191
  %221 = load ptr, ptr %5, align 8, !tbaa !5
  %222 = getelementptr inbounds %struct.lsqpack_dec, ptr %221, i32 0, i32 17
  %223 = getelementptr inbounds %struct.anon.10, ptr %222, i32 0, i32 0
  store i32 2, ptr %223, align 8, !tbaa !21
  br label %2094

224:                                              ; preds = %156
  %225 = load i32, ptr %14, align 4, !tbaa !11
  %226 = icmp eq i32 %225, -1
  br i1 %226, label %227, label %228

227:                                              ; preds = %224
  store i32 0, ptr %4, align 4
  store i32 1, ptr %15, align 4
  br label %2096

228:                                              ; preds = %224
  store i32 -1, ptr %4, align 4
  store i32 1, ptr %15, align 4
  br label %2096

229:                                              ; preds = %57
  %230 = load ptr, ptr %6, align 8, !tbaa !5
  %231 = getelementptr inbounds i8, ptr %230, i64 0
  %232 = load i8, ptr %231, align 1, !tbaa !22
  %233 = zext i8 %232 to i32
  %234 = and i32 %233, 128
  %235 = icmp sgt i32 %234, 0
  %236 = zext i1 %235 to i32
  %237 = trunc i32 %236 to i8
  %238 = load ptr, ptr %5, align 8, !tbaa !5
  %239 = getelementptr inbounds %struct.lsqpack_dec, ptr %238, i32 0, i32 17
  %240 = getelementptr inbounds %struct.anon.10, ptr %239, i32 0, i32 1
  %241 = getelementptr inbounds %struct.anon.11, ptr %240, i32 0, i32 11
  store i8 %237, ptr %241, align 8, !tbaa !22
  %242 = load ptr, ptr %5, align 8, !tbaa !5
  %243 = getelementptr inbounds %struct.lsqpack_dec, ptr %242, i32 0, i32 17
  %244 = getelementptr inbounds %struct.anon.10, ptr %243, i32 0, i32 1
  %245 = getelementptr inbounds %struct.anon.11, ptr %244, i32 0, i32 0
  %246 = getelementptr inbounds %struct.lsqpack_dec_int_state, ptr %245, i32 0, i32 0
  store i32 0, ptr %246, align 8, !tbaa !22
  %247 = load ptr, ptr %5, align 8, !tbaa !5
  %248 = getelementptr inbounds %struct.lsqpack_dec, ptr %247, i32 0, i32 17
  %249 = getelementptr inbounds %struct.anon.10, ptr %248, i32 0, i32 0
  store i32 3, ptr %249, align 8, !tbaa !21
  store i32 7, ptr %12, align 4, !tbaa !11
  br label %250

250:                                              ; preds = %229, %57
  %251 = load ptr, ptr %8, align 8, !tbaa !5
  %252 = load i32, ptr %12, align 4, !tbaa !11
  %253 = load ptr, ptr %5, align 8, !tbaa !5
  %254 = getelementptr inbounds %struct.lsqpack_dec, ptr %253, i32 0, i32 17
  %255 = getelementptr inbounds %struct.anon.10, ptr %254, i32 0, i32 1
  %256 = getelementptr inbounds %struct.anon.11, ptr %255, i32 0, i32 3
  %257 = load ptr, ptr %5, align 8, !tbaa !5
  %258 = getelementptr inbounds %struct.lsqpack_dec, ptr %257, i32 0, i32 17
  %259 = getelementptr inbounds %struct.anon.10, ptr %258, i32 0, i32 1
  %260 = getelementptr inbounds %struct.anon.11, ptr %259, i32 0, i32 0
  %261 = call i32 @lsqpack_dec_int24(ptr noundef %6, ptr noundef %251, i32 noundef %252, ptr noundef %256, ptr noundef %260)
  store i32 %261, ptr %14, align 4, !tbaa !11
  %262 = load i32, ptr %14, align 4, !tbaa !11
  %263 = icmp eq i32 %262, 0
  br i1 %263, label %264, label %536

264:                                              ; preds = %250
  %265 = load ptr, ptr %5, align 8, !tbaa !5
  %266 = getelementptr inbounds %struct.lsqpack_dec, ptr %265, i32 0, i32 17
  %267 = getelementptr inbounds %struct.anon.10, ptr %266, i32 0, i32 1
  %268 = getelementptr inbounds %struct.anon.11, ptr %267, i32 0, i32 12
  %269 = load i8, ptr %268, align 1, !tbaa !22
  %270 = icmp ne i8 %269, 0
  br i1 %270, label %271, label %298

271:                                              ; preds = %264
  %272 = load ptr, ptr %5, align 8, !tbaa !5
  %273 = getelementptr inbounds %struct.lsqpack_dec, ptr %272, i32 0, i32 17
  %274 = getelementptr inbounds %struct.anon.10, ptr %273, i32 0, i32 1
  %275 = getelementptr inbounds %struct.anon.11, ptr %274, i32 0, i32 2
  %276 = load i32, ptr %275, align 8, !tbaa !22
  %277 = zext i32 %276 to i64
  %278 = getelementptr inbounds [99 x %struct.static_table_entry], ptr @static_table, i64 0, i64 %277
  %279 = getelementptr inbounds %struct.static_table_entry, ptr %278, i32 0, i32 2
  %280 = load i32, ptr %279, align 8, !tbaa !25
  %281 = load ptr, ptr %5, align 8, !tbaa !5
  %282 = getelementptr inbounds %struct.lsqpack_dec, ptr %281, i32 0, i32 17
  %283 = getelementptr inbounds %struct.anon.10, ptr %282, i32 0, i32 1
  %284 = getelementptr inbounds %struct.anon.11, ptr %283, i32 0, i32 10
  store i32 %280, ptr %284, align 4, !tbaa !22
  %285 = load ptr, ptr %5, align 8, !tbaa !5
  %286 = getelementptr inbounds %struct.lsqpack_dec, ptr %285, i32 0, i32 17
  %287 = getelementptr inbounds %struct.anon.10, ptr %286, i32 0, i32 1
  %288 = getelementptr inbounds %struct.anon.11, ptr %287, i32 0, i32 2
  %289 = load i32, ptr %288, align 8, !tbaa !22
  %290 = zext i32 %289 to i64
  %291 = getelementptr inbounds [99 x %struct.static_table_entry], ptr @static_table, i64 0, i64 %290
  %292 = getelementptr inbounds %struct.static_table_entry, ptr %291, i32 0, i32 0
  %293 = load ptr, ptr %292, align 8, !tbaa !27
  %294 = load ptr, ptr %5, align 8, !tbaa !5
  %295 = getelementptr inbounds %struct.lsqpack_dec, ptr %294, i32 0, i32 17
  %296 = getelementptr inbounds %struct.anon.10, ptr %295, i32 0, i32 1
  %297 = getelementptr inbounds %struct.anon.11, ptr %296, i32 0, i32 6
  store ptr %293, ptr %297, align 8, !tbaa !22
  br label %321

298:                                              ; preds = %264
  %299 = load ptr, ptr %5, align 8, !tbaa !5
  %300 = getelementptr inbounds %struct.lsqpack_dec, ptr %299, i32 0, i32 17
  %301 = getelementptr inbounds %struct.anon.10, ptr %300, i32 0, i32 1
  %302 = getelementptr inbounds %struct.anon.11, ptr %301, i32 0, i32 4
  %303 = load ptr, ptr %302, align 8, !tbaa !22
  %304 = getelementptr inbounds %struct.lsqpack_dec_table_entry, ptr %303, i32 0, i32 0
  %305 = load i32, ptr %304, align 4, !tbaa !28
  %306 = load ptr, ptr %5, align 8, !tbaa !5
  %307 = getelementptr inbounds %struct.lsqpack_dec, ptr %306, i32 0, i32 17
  %308 = getelementptr inbounds %struct.anon.10, ptr %307, i32 0, i32 1
  %309 = getelementptr inbounds %struct.anon.11, ptr %308, i32 0, i32 10
  store i32 %305, ptr %309, align 4, !tbaa !22
  %310 = load ptr, ptr %5, align 8, !tbaa !5
  %311 = getelementptr inbounds %struct.lsqpack_dec, ptr %310, i32 0, i32 17
  %312 = getelementptr inbounds %struct.anon.10, ptr %311, i32 0, i32 1
  %313 = getelementptr inbounds %struct.anon.11, ptr %312, i32 0, i32 4
  %314 = load ptr, ptr %313, align 8, !tbaa !22
  %315 = getelementptr inbounds %struct.lsqpack_dec_table_entry, ptr %314, i32 0, i32 7
  %316 = getelementptr inbounds [0 x i8], ptr %315, i64 0, i64 0
  %317 = load ptr, ptr %5, align 8, !tbaa !5
  %318 = getelementptr inbounds %struct.lsqpack_dec, ptr %317, i32 0, i32 17
  %319 = getelementptr inbounds %struct.anon.10, ptr %318, i32 0, i32 1
  %320 = getelementptr inbounds %struct.anon.11, ptr %319, i32 0, i32 6
  store ptr %316, ptr %320, align 8, !tbaa !22
  br label %321

321:                                              ; preds = %298, %271
  %322 = load ptr, ptr %5, align 8, !tbaa !5
  %323 = getelementptr inbounds %struct.lsqpack_dec, ptr %322, i32 0, i32 17
  %324 = getelementptr inbounds %struct.anon.10, ptr %323, i32 0, i32 1
  %325 = getelementptr inbounds %struct.anon.11, ptr %324, i32 0, i32 3
  %326 = load i32, ptr %325, align 4, !tbaa !22
  %327 = load ptr, ptr %5, align 8, !tbaa !5
  %328 = getelementptr inbounds %struct.lsqpack_dec, ptr %327, i32 0, i32 2
  %329 = load i32, ptr %328, align 8, !tbaa !29
  %330 = load ptr, ptr %5, align 8, !tbaa !5
  %331 = getelementptr inbounds %struct.lsqpack_dec, ptr %330, i32 0, i32 17
  %332 = getelementptr inbounds %struct.anon.10, ptr %331, i32 0, i32 1
  %333 = getelementptr inbounds %struct.anon.11, ptr %332, i32 0, i32 10
  %334 = load i32, ptr %333, align 4, !tbaa !22
  %335 = sub i32 %329, %334
  %336 = load ptr, ptr %5, align 8, !tbaa !5
  %337 = getelementptr inbounds %struct.lsqpack_dec, ptr %336, i32 0, i32 17
  %338 = getelementptr inbounds %struct.anon.10, ptr %337, i32 0, i32 1
  %339 = getelementptr inbounds %struct.anon.11, ptr %338, i32 0, i32 11
  %340 = load i8, ptr %339, align 8, !tbaa !22
  %341 = sext i8 %340 to i32
  %342 = shl i32 %341, 1
  %343 = shl i32 %335, %342
  %344 = icmp ugt i32 %326, %343
  br i1 %344, label %345, label %346

345:                                              ; preds = %321
  store i32 -1, ptr %4, align 4
  store i32 1, ptr %15, align 4
  br label %2096

346:                                              ; preds = %321
  %347 = load ptr, ptr %5, align 8, !tbaa !5
  %348 = getelementptr inbounds %struct.lsqpack_dec, ptr %347, i32 0, i32 17
  %349 = getelementptr inbounds %struct.anon.10, ptr %348, i32 0, i32 1
  %350 = getelementptr inbounds %struct.anon.11, ptr %349, i32 0, i32 11
  %351 = load i8, ptr %350, align 8, !tbaa !22
  %352 = icmp ne i8 %351, 0
  br i1 %352, label %353, label %370

353:                                              ; preds = %346
  %354 = load ptr, ptr %5, align 8, !tbaa !5
  %355 = getelementptr inbounds %struct.lsqpack_dec, ptr %354, i32 0, i32 17
  %356 = getelementptr inbounds %struct.anon.10, ptr %355, i32 0, i32 1
  %357 = getelementptr inbounds %struct.anon.11, ptr %356, i32 0, i32 3
  %358 = load i32, ptr %357, align 4, !tbaa !22
  %359 = load ptr, ptr %5, align 8, !tbaa !5
  %360 = getelementptr inbounds %struct.lsqpack_dec, ptr %359, i32 0, i32 17
  %361 = getelementptr inbounds %struct.anon.10, ptr %360, i32 0, i32 1
  %362 = getelementptr inbounds %struct.anon.11, ptr %361, i32 0, i32 3
  %363 = load i32, ptr %362, align 4, !tbaa !22
  %364 = udiv i32 %363, 2
  %365 = add i32 %358, %364
  %366 = load ptr, ptr %5, align 8, !tbaa !5
  %367 = getelementptr inbounds %struct.lsqpack_dec, ptr %366, i32 0, i32 17
  %368 = getelementptr inbounds %struct.anon.10, ptr %367, i32 0, i32 1
  %369 = getelementptr inbounds %struct.anon.11, ptr %368, i32 0, i32 7
  store i32 %365, ptr %369, align 8, !tbaa !22
  br label %380

370:                                              ; preds = %346
  %371 = load ptr, ptr %5, align 8, !tbaa !5
  %372 = getelementptr inbounds %struct.lsqpack_dec, ptr %371, i32 0, i32 17
  %373 = getelementptr inbounds %struct.anon.10, ptr %372, i32 0, i32 1
  %374 = getelementptr inbounds %struct.anon.11, ptr %373, i32 0, i32 3
  %375 = load i32, ptr %374, align 4, !tbaa !22
  %376 = load ptr, ptr %5, align 8, !tbaa !5
  %377 = getelementptr inbounds %struct.lsqpack_dec, ptr %376, i32 0, i32 17
  %378 = getelementptr inbounds %struct.anon.10, ptr %377, i32 0, i32 1
  %379 = getelementptr inbounds %struct.anon.11, ptr %378, i32 0, i32 7
  store i32 %375, ptr %379, align 8, !tbaa !22
  br label %380

380:                                              ; preds = %370, %353
  %381 = load ptr, ptr %5, align 8, !tbaa !5
  %382 = getelementptr inbounds %struct.lsqpack_dec, ptr %381, i32 0, i32 17
  %383 = getelementptr inbounds %struct.anon.10, ptr %382, i32 0, i32 1
  %384 = getelementptr inbounds %struct.anon.11, ptr %383, i32 0, i32 10
  %385 = load i32, ptr %384, align 4, !tbaa !22
  %386 = zext i32 %385 to i64
  %387 = add i64 28, %386
  %388 = load ptr, ptr %5, align 8, !tbaa !5
  %389 = getelementptr inbounds %struct.lsqpack_dec, ptr %388, i32 0, i32 17
  %390 = getelementptr inbounds %struct.anon.10, ptr %389, i32 0, i32 1
  %391 = getelementptr inbounds %struct.anon.11, ptr %390, i32 0, i32 7
  %392 = load i32, ptr %391, align 8, !tbaa !22
  %393 = zext i32 %392 to i64
  %394 = add i64 %387, %393
  %395 = call noalias ptr @malloc(i64 noundef %394) #8
  %396 = load ptr, ptr %5, align 8, !tbaa !5
  %397 = getelementptr inbounds %struct.lsqpack_dec, ptr %396, i32 0, i32 17
  %398 = getelementptr inbounds %struct.anon.10, ptr %397, i32 0, i32 1
  %399 = getelementptr inbounds %struct.anon.11, ptr %398, i32 0, i32 5
  store ptr %395, ptr %399, align 8, !tbaa !22
  %400 = load ptr, ptr %5, align 8, !tbaa !5
  %401 = getelementptr inbounds %struct.lsqpack_dec, ptr %400, i32 0, i32 17
  %402 = getelementptr inbounds %struct.anon.10, ptr %401, i32 0, i32 1
  %403 = getelementptr inbounds %struct.anon.11, ptr %402, i32 0, i32 5
  %404 = load ptr, ptr %403, align 8, !tbaa !22
  %405 = icmp ne ptr %404, null
  br i1 %405, label %407, label %406

406:                                              ; preds = %380
  store i32 -1, ptr %4, align 4
  store i32 1, ptr %15, align 4
  br label %2096

407:                                              ; preds = %380
  %408 = load ptr, ptr %5, align 8, !tbaa !5
  %409 = getelementptr inbounds %struct.lsqpack_dec, ptr %408, i32 0, i32 17
  %410 = getelementptr inbounds %struct.anon.10, ptr %409, i32 0, i32 1
  %411 = getelementptr inbounds %struct.anon.11, ptr %410, i32 0, i32 12
  %412 = load i8, ptr %411, align 1, !tbaa !22
  %413 = icmp ne i8 %412, 0
  br i1 %413, label %414, label %446

414:                                              ; preds = %407
  %415 = load ptr, ptr %5, align 8, !tbaa !5
  %416 = getelementptr inbounds %struct.lsqpack_dec, ptr %415, i32 0, i32 17
  %417 = getelementptr inbounds %struct.anon.10, ptr %416, i32 0, i32 1
  %418 = getelementptr inbounds %struct.anon.11, ptr %417, i32 0, i32 5
  %419 = load ptr, ptr %418, align 8, !tbaa !22
  %420 = getelementptr inbounds %struct.lsqpack_dec_table_entry, ptr %419, i32 0, i32 6
  store i32 5, ptr %420, align 4, !tbaa !30
  %421 = load ptr, ptr %5, align 8, !tbaa !5
  %422 = getelementptr inbounds %struct.lsqpack_dec, ptr %421, i32 0, i32 17
  %423 = getelementptr inbounds %struct.anon.10, ptr %422, i32 0, i32 1
  %424 = getelementptr inbounds %struct.anon.11, ptr %423, i32 0, i32 2
  %425 = load i32, ptr %424, align 8, !tbaa !22
  %426 = zext i32 %425 to i64
  %427 = getelementptr inbounds [99 x i32], ptr @name_hashes, i64 0, i64 %426
  %428 = load i32, ptr %427, align 4, !tbaa !11
  %429 = load ptr, ptr %5, align 8, !tbaa !5
  %430 = getelementptr inbounds %struct.lsqpack_dec, ptr %429, i32 0, i32 17
  %431 = getelementptr inbounds %struct.anon.10, ptr %430, i32 0, i32 1
  %432 = getelementptr inbounds %struct.anon.11, ptr %431, i32 0, i32 5
  %433 = load ptr, ptr %432, align 8, !tbaa !22
  %434 = getelementptr inbounds %struct.lsqpack_dec_table_entry, ptr %433, i32 0, i32 3
  store i32 %428, ptr %434, align 4, !tbaa !31
  %435 = load ptr, ptr %5, align 8, !tbaa !5
  %436 = getelementptr inbounds %struct.lsqpack_dec, ptr %435, i32 0, i32 17
  %437 = getelementptr inbounds %struct.anon.10, ptr %436, i32 0, i32 1
  %438 = getelementptr inbounds %struct.anon.11, ptr %437, i32 0, i32 2
  %439 = load i32, ptr %438, align 8, !tbaa !22
  %440 = load ptr, ptr %5, align 8, !tbaa !5
  %441 = getelementptr inbounds %struct.lsqpack_dec, ptr %440, i32 0, i32 17
  %442 = getelementptr inbounds %struct.anon.10, ptr %441, i32 0, i32 1
  %443 = getelementptr inbounds %struct.anon.11, ptr %442, i32 0, i32 5
  %444 = load ptr, ptr %443, align 8, !tbaa !22
  %445 = getelementptr inbounds %struct.lsqpack_dec_table_entry, ptr %444, i32 0, i32 5
  store i32 %439, ptr %445, align 4, !tbaa !32
  br label %487

446:                                              ; preds = %407
  %447 = load ptr, ptr %5, align 8, !tbaa !5
  %448 = getelementptr inbounds %struct.lsqpack_dec, ptr %447, i32 0, i32 17
  %449 = getelementptr inbounds %struct.anon.10, ptr %448, i32 0, i32 1
  %450 = getelementptr inbounds %struct.anon.11, ptr %449, i32 0, i32 4
  %451 = load ptr, ptr %450, align 8, !tbaa !22
  %452 = getelementptr inbounds %struct.lsqpack_dec_table_entry, ptr %451, i32 0, i32 6
  %453 = load i32, ptr %452, align 4, !tbaa !30
  %454 = and i32 %453, 5
  %455 = load ptr, ptr %5, align 8, !tbaa !5
  %456 = getelementptr inbounds %struct.lsqpack_dec, ptr %455, i32 0, i32 17
  %457 = getelementptr inbounds %struct.anon.10, ptr %456, i32 0, i32 1
  %458 = getelementptr inbounds %struct.anon.11, ptr %457, i32 0, i32 5
  %459 = load ptr, ptr %458, align 8, !tbaa !22
  %460 = getelementptr inbounds %struct.lsqpack_dec_table_entry, ptr %459, i32 0, i32 6
  store i32 %454, ptr %460, align 4, !tbaa !30
  %461 = load ptr, ptr %5, align 8, !tbaa !5
  %462 = getelementptr inbounds %struct.lsqpack_dec, ptr %461, i32 0, i32 17
  %463 = getelementptr inbounds %struct.anon.10, ptr %462, i32 0, i32 1
  %464 = getelementptr inbounds %struct.anon.11, ptr %463, i32 0, i32 4
  %465 = load ptr, ptr %464, align 8, !tbaa !22
  %466 = getelementptr inbounds %struct.lsqpack_dec_table_entry, ptr %465, i32 0, i32 3
  %467 = load i32, ptr %466, align 4, !tbaa !31
  %468 = load ptr, ptr %5, align 8, !tbaa !5
  %469 = getelementptr inbounds %struct.lsqpack_dec, ptr %468, i32 0, i32 17
  %470 = getelementptr inbounds %struct.anon.10, ptr %469, i32 0, i32 1
  %471 = getelementptr inbounds %struct.anon.11, ptr %470, i32 0, i32 5
  %472 = load ptr, ptr %471, align 8, !tbaa !22
  %473 = getelementptr inbounds %struct.lsqpack_dec_table_entry, ptr %472, i32 0, i32 3
  store i32 %467, ptr %473, align 4, !tbaa !31
  %474 = load ptr, ptr %5, align 8, !tbaa !5
  %475 = getelementptr inbounds %struct.lsqpack_dec, ptr %474, i32 0, i32 17
  %476 = getelementptr inbounds %struct.anon.10, ptr %475, i32 0, i32 1
  %477 = getelementptr inbounds %struct.anon.11, ptr %476, i32 0, i32 4
  %478 = load ptr, ptr %477, align 8, !tbaa !22
  %479 = getelementptr inbounds %struct.lsqpack_dec_table_entry, ptr %478, i32 0, i32 5
  %480 = load i32, ptr %479, align 4, !tbaa !32
  %481 = load ptr, ptr %5, align 8, !tbaa !5
  %482 = getelementptr inbounds %struct.lsqpack_dec, ptr %481, i32 0, i32 17
  %483 = getelementptr inbounds %struct.anon.10, ptr %482, i32 0, i32 1
  %484 = getelementptr inbounds %struct.anon.11, ptr %483, i32 0, i32 5
  %485 = load ptr, ptr %484, align 8, !tbaa !22
  %486 = getelementptr inbounds %struct.lsqpack_dec_table_entry, ptr %485, i32 0, i32 5
  store i32 %480, ptr %486, align 4, !tbaa !32
  br label %487

487:                                              ; preds = %446, %414
  %488 = load ptr, ptr %5, align 8, !tbaa !5
  %489 = getelementptr inbounds %struct.lsqpack_dec, ptr %488, i32 0, i32 17
  %490 = getelementptr inbounds %struct.anon.10, ptr %489, i32 0, i32 1
  %491 = getelementptr inbounds %struct.anon.11, ptr %490, i32 0, i32 10
  %492 = load i32, ptr %491, align 4, !tbaa !22
  %493 = load ptr, ptr %5, align 8, !tbaa !5
  %494 = getelementptr inbounds %struct.lsqpack_dec, ptr %493, i32 0, i32 17
  %495 = getelementptr inbounds %struct.anon.10, ptr %494, i32 0, i32 1
  %496 = getelementptr inbounds %struct.anon.11, ptr %495, i32 0, i32 5
  %497 = load ptr, ptr %496, align 8, !tbaa !22
  %498 = getelementptr inbounds %struct.lsqpack_dec_table_entry, ptr %497, i32 0, i32 0
  store i32 %492, ptr %498, align 4, !tbaa !28
  %499 = load ptr, ptr %5, align 8, !tbaa !5
  %500 = getelementptr inbounds %struct.lsqpack_dec, ptr %499, i32 0, i32 17
  %501 = getelementptr inbounds %struct.anon.10, ptr %500, i32 0, i32 1
  %502 = getelementptr inbounds %struct.anon.11, ptr %501, i32 0, i32 9
  store i32 0, ptr %502, align 8, !tbaa !22
  %503 = load ptr, ptr %5, align 8, !tbaa !5
  %504 = getelementptr inbounds %struct.lsqpack_dec, ptr %503, i32 0, i32 17
  %505 = getelementptr inbounds %struct.anon.10, ptr %504, i32 0, i32 1
  %506 = getelementptr inbounds %struct.anon.11, ptr %505, i32 0, i32 8
  store i32 0, ptr %506, align 4, !tbaa !22
  %507 = load ptr, ptr %5, align 8, !tbaa !5
  %508 = getelementptr inbounds %struct.lsqpack_dec, ptr %507, i32 0, i32 17
  %509 = getelementptr inbounds %struct.anon.10, ptr %508, i32 0, i32 1
  %510 = getelementptr inbounds %struct.anon.11, ptr %509, i32 0, i32 3
  %511 = load i32, ptr %510, align 4, !tbaa !22
  %512 = icmp ne i32 %511, 0
  br i1 %512, label %513, label %534

513:                                              ; preds = %487
  %514 = load ptr, ptr %5, align 8, !tbaa !5
  %515 = getelementptr inbounds %struct.lsqpack_dec, ptr %514, i32 0, i32 17
  %516 = getelementptr inbounds %struct.anon.10, ptr %515, i32 0, i32 1
  %517 = getelementptr inbounds %struct.anon.11, ptr %516, i32 0, i32 11
  %518 = load i8, ptr %517, align 8, !tbaa !22
  %519 = icmp ne i8 %518, 0
  br i1 %519, label %520, label %529

520:                                              ; preds = %513
  %521 = load ptr, ptr %5, align 8, !tbaa !5
  %522 = getelementptr inbounds %struct.lsqpack_dec, ptr %521, i32 0, i32 17
  %523 = getelementptr inbounds %struct.anon.10, ptr %522, i32 0, i32 0
  store i32 5, ptr %523, align 8, !tbaa !21
  %524 = load ptr, ptr %5, align 8, !tbaa !5
  %525 = getelementptr inbounds %struct.lsqpack_dec, ptr %524, i32 0, i32 17
  %526 = getelementptr inbounds %struct.anon.10, ptr %525, i32 0, i32 1
  %527 = getelementptr inbounds %struct.anon.11, ptr %526, i32 0, i32 1
  %528 = getelementptr inbounds %struct.lsqpack_huff_decode_state, ptr %527, i32 0, i32 0
  store i32 0, ptr %528, align 8, !tbaa !22
  br label %533

529:                                              ; preds = %513
  %530 = load ptr, ptr %5, align 8, !tbaa !5
  %531 = getelementptr inbounds %struct.lsqpack_dec, ptr %530, i32 0, i32 17
  %532 = getelementptr inbounds %struct.anon.10, ptr %531, i32 0, i32 0
  store i32 4, ptr %532, align 8, !tbaa !21
  br label %533

533:                                              ; preds = %529, %520
  br label %535

534:                                              ; preds = %487
  br label %914

535:                                              ; preds = %533
  br label %541

536:                                              ; preds = %250
  %537 = load i32, ptr %14, align 4, !tbaa !11
  %538 = icmp eq i32 %537, -1
  br i1 %538, label %539, label %540

539:                                              ; preds = %536
  store i32 0, ptr %4, align 4
  store i32 1, ptr %15, align 4
  br label %2096

540:                                              ; preds = %536
  store i32 -1, ptr %4, align 4
  store i32 1, ptr %15, align 4
  br label %2096

541:                                              ; preds = %535
  br label %2094

542:                                              ; preds = %57
  %543 = load ptr, ptr %8, align 8, !tbaa !5
  %544 = load ptr, ptr %6, align 8, !tbaa !5
  %545 = ptrtoint ptr %543 to i64
  %546 = ptrtoint ptr %544 to i64
  %547 = sub i64 %545, %546
  %548 = trunc i64 %547 to i32
  %549 = load ptr, ptr %5, align 8, !tbaa !5
  %550 = getelementptr inbounds %struct.lsqpack_dec, ptr %549, i32 0, i32 17
  %551 = getelementptr inbounds %struct.anon.10, ptr %550, i32 0, i32 1
  %552 = getelementptr inbounds %struct.anon.11, ptr %551, i32 0, i32 3
  %553 = load i32, ptr %552, align 4, !tbaa !22
  %554 = load ptr, ptr %5, align 8, !tbaa !5
  %555 = getelementptr inbounds %struct.lsqpack_dec, ptr %554, i32 0, i32 17
  %556 = getelementptr inbounds %struct.anon.10, ptr %555, i32 0, i32 1
  %557 = getelementptr inbounds %struct.anon.11, ptr %556, i32 0, i32 9
  %558 = load i32, ptr %557, align 8, !tbaa !22
  %559 = sub i32 %553, %558
  %560 = icmp ult i32 %548, %559
  br i1 %560, label %561, label %568

561:                                              ; preds = %542
  %562 = load ptr, ptr %8, align 8, !tbaa !5
  %563 = load ptr, ptr %6, align 8, !tbaa !5
  %564 = ptrtoint ptr %562 to i64
  %565 = ptrtoint ptr %563 to i64
  %566 = sub i64 %564, %565
  %567 = trunc i64 %566 to i32
  br label %580

568:                                              ; preds = %542
  %569 = load ptr, ptr %5, align 8, !tbaa !5
  %570 = getelementptr inbounds %struct.lsqpack_dec, ptr %569, i32 0, i32 17
  %571 = getelementptr inbounds %struct.anon.10, ptr %570, i32 0, i32 1
  %572 = getelementptr inbounds %struct.anon.11, ptr %571, i32 0, i32 3
  %573 = load i32, ptr %572, align 4, !tbaa !22
  %574 = load ptr, ptr %5, align 8, !tbaa !5
  %575 = getelementptr inbounds %struct.lsqpack_dec, ptr %574, i32 0, i32 17
  %576 = getelementptr inbounds %struct.anon.10, ptr %575, i32 0, i32 1
  %577 = getelementptr inbounds %struct.anon.11, ptr %576, i32 0, i32 9
  %578 = load i32, ptr %577, align 8, !tbaa !22
  %579 = sub i32 %573, %578
  br label %580

580:                                              ; preds = %568, %561
  %581 = phi i32 [ %567, %561 ], [ %579, %568 ]
  %582 = zext i32 %581 to i64
  store i64 %582, ptr %13, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 12, ptr %16) #7
  %583 = load ptr, ptr %6, align 8, !tbaa !5
  %584 = load i64, ptr %13, align 8, !tbaa !9
  %585 = trunc i64 %584 to i32
  %586 = load ptr, ptr %5, align 8, !tbaa !5
  %587 = getelementptr inbounds %struct.lsqpack_dec, ptr %586, i32 0, i32 17
  %588 = getelementptr inbounds %struct.anon.10, ptr %587, i32 0, i32 1
  %589 = getelementptr inbounds %struct.anon.11, ptr %588, i32 0, i32 5
  %590 = load ptr, ptr %589, align 8, !tbaa !22
  %591 = getelementptr inbounds %struct.lsqpack_dec_table_entry, ptr %590, i32 0, i32 7
  %592 = load ptr, ptr %5, align 8, !tbaa !5
  %593 = getelementptr inbounds %struct.lsqpack_dec, ptr %592, i32 0, i32 17
  %594 = getelementptr inbounds %struct.anon.10, ptr %593, i32 0, i32 1
  %595 = getelementptr inbounds %struct.anon.11, ptr %594, i32 0, i32 5
  %596 = load ptr, ptr %595, align 8, !tbaa !22
  %597 = getelementptr inbounds %struct.lsqpack_dec_table_entry, ptr %596, i32 0, i32 0
  %598 = load i32, ptr %597, align 4, !tbaa !28
  %599 = zext i32 %598 to i64
  %600 = getelementptr inbounds [0 x i8], ptr %591, i64 0, i64 %599
  %601 = load ptr, ptr %5, align 8, !tbaa !5
  %602 = getelementptr inbounds %struct.lsqpack_dec, ptr %601, i32 0, i32 17
  %603 = getelementptr inbounds %struct.anon.10, ptr %602, i32 0, i32 1
  %604 = getelementptr inbounds %struct.anon.11, ptr %603, i32 0, i32 8
  %605 = load i32, ptr %604, align 4, !tbaa !22
  %606 = zext i32 %605 to i64
  %607 = getelementptr inbounds i8, ptr %600, i64 %606
  %608 = load ptr, ptr %5, align 8, !tbaa !5
  %609 = getelementptr inbounds %struct.lsqpack_dec, ptr %608, i32 0, i32 17
  %610 = getelementptr inbounds %struct.anon.10, ptr %609, i32 0, i32 1
  %611 = getelementptr inbounds %struct.anon.11, ptr %610, i32 0, i32 7
  %612 = load i32, ptr %611, align 8, !tbaa !22
  %613 = load ptr, ptr %5, align 8, !tbaa !5
  %614 = getelementptr inbounds %struct.lsqpack_dec, ptr %613, i32 0, i32 17
  %615 = getelementptr inbounds %struct.anon.10, ptr %614, i32 0, i32 1
  %616 = getelementptr inbounds %struct.anon.11, ptr %615, i32 0, i32 8
  %617 = load i32, ptr %616, align 4, !tbaa !22
  %618 = sub i32 %612, %617
  %619 = load ptr, ptr %5, align 8, !tbaa !5
  %620 = getelementptr inbounds %struct.lsqpack_dec, ptr %619, i32 0, i32 17
  %621 = getelementptr inbounds %struct.anon.10, ptr %620, i32 0, i32 1
  %622 = getelementptr inbounds %struct.anon.11, ptr %621, i32 0, i32 1
  %623 = load ptr, ptr %5, align 8, !tbaa !5
  %624 = getelementptr inbounds %struct.lsqpack_dec, ptr %623, i32 0, i32 17
  %625 = getelementptr inbounds %struct.anon.10, ptr %624, i32 0, i32 1
  %626 = getelementptr inbounds %struct.anon.11, ptr %625, i32 0, i32 9
  %627 = load i32, ptr %626, align 8, !tbaa !22
  %628 = zext i32 %627 to i64
  %629 = load i64, ptr %13, align 8, !tbaa !9
  %630 = add i64 %628, %629
  %631 = load ptr, ptr %5, align 8, !tbaa !5
  %632 = getelementptr inbounds %struct.lsqpack_dec, ptr %631, i32 0, i32 17
  %633 = getelementptr inbounds %struct.anon.10, ptr %632, i32 0, i32 1
  %634 = getelementptr inbounds %struct.anon.11, ptr %633, i32 0, i32 3
  %635 = load i32, ptr %634, align 4, !tbaa !22
  %636 = zext i32 %635 to i64
  %637 = icmp eq i64 %630, %636
  %638 = zext i1 %637 to i32
  %639 = call { i64, i32 } @lsqpack_huff_decode(ptr noundef %583, i32 noundef %585, ptr noundef %607, i32 noundef %618, ptr noundef %622, i32 noundef %638)
  store { i64, i32 } %639, ptr %17, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %16, ptr align 8 %17, i64 12, i1 false)
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %11, ptr align 4 %16, i64 12, i1 false), !tbaa.struct !33
  call void @llvm.lifetime.end.p0(i64 12, ptr %16) #7
  %640 = getelementptr inbounds %struct.huff_decode_retval, ptr %11, i32 0, i32 0
  %641 = load i32, ptr %640, align 4, !tbaa !34
  switch i32 %641, label %810 [
    i32 0, label %642
    i32 1, label %730
    i32 2, label %752
    i32 3, label %809
  ]

642:                                              ; preds = %580
  %643 = getelementptr inbounds %struct.huff_decode_retval, ptr %11, i32 0, i32 2
  %644 = load i32, ptr %643, align 4, !tbaa !36
  %645 = load ptr, ptr %6, align 8, !tbaa !5
  %646 = zext i32 %644 to i64
  %647 = getelementptr inbounds i8, ptr %645, i64 %646
  store ptr %647, ptr %6, align 8, !tbaa !5
  %648 = load ptr, ptr %5, align 8, !tbaa !5
  %649 = getelementptr inbounds %struct.lsqpack_dec, ptr %648, i32 0, i32 17
  %650 = getelementptr inbounds %struct.anon.10, ptr %649, i32 0, i32 1
  %651 = getelementptr inbounds %struct.anon.11, ptr %650, i32 0, i32 8
  %652 = load i32, ptr %651, align 4, !tbaa !22
  %653 = getelementptr inbounds %struct.huff_decode_retval, ptr %11, i32 0, i32 1
  %654 = load i32, ptr %653, align 4, !tbaa !37
  %655 = add i32 %652, %654
  %656 = load ptr, ptr %5, align 8, !tbaa !5
  %657 = getelementptr inbounds %struct.lsqpack_dec, ptr %656, i32 0, i32 17
  %658 = getelementptr inbounds %struct.anon.10, ptr %657, i32 0, i32 1
  %659 = getelementptr inbounds %struct.anon.11, ptr %658, i32 0, i32 5
  %660 = load ptr, ptr %659, align 8, !tbaa !22
  %661 = getelementptr inbounds %struct.lsqpack_dec_table_entry, ptr %660, i32 0, i32 1
  store i32 %655, ptr %661, align 4, !tbaa !38
  %662 = load ptr, ptr %5, align 8, !tbaa !5
  %663 = getelementptr inbounds %struct.lsqpack_dec, ptr %662, i32 0, i32 17
  %664 = getelementptr inbounds %struct.anon.10, ptr %663, i32 0, i32 1
  %665 = getelementptr inbounds %struct.anon.11, ptr %664, i32 0, i32 5
  %666 = load ptr, ptr %665, align 8, !tbaa !22
  %667 = getelementptr inbounds %struct.lsqpack_dec_table_entry, ptr %666, i32 0, i32 2
  store i32 1, ptr %667, align 4, !tbaa !23
  %668 = load ptr, ptr %5, align 8, !tbaa !5
  %669 = getelementptr inbounds %struct.lsqpack_dec, ptr %668, i32 0, i32 17
  %670 = getelementptr inbounds %struct.anon.10, ptr %669, i32 0, i32 1
  %671 = getelementptr inbounds %struct.anon.11, ptr %670, i32 0, i32 5
  %672 = load ptr, ptr %671, align 8, !tbaa !22
  %673 = getelementptr inbounds %struct.lsqpack_dec_table_entry, ptr %672, i32 0, i32 7
  %674 = getelementptr inbounds [0 x i8], ptr %673, i64 0, i64 0
  %675 = load ptr, ptr %5, align 8, !tbaa !5
  %676 = getelementptr inbounds %struct.lsqpack_dec, ptr %675, i32 0, i32 17
  %677 = getelementptr inbounds %struct.anon.10, ptr %676, i32 0, i32 1
  %678 = getelementptr inbounds %struct.anon.11, ptr %677, i32 0, i32 6
  %679 = load ptr, ptr %678, align 8, !tbaa !22
  %680 = load ptr, ptr %5, align 8, !tbaa !5
  %681 = getelementptr inbounds %struct.lsqpack_dec, ptr %680, i32 0, i32 17
  %682 = getelementptr inbounds %struct.anon.10, ptr %681, i32 0, i32 1
  %683 = getelementptr inbounds %struct.anon.11, ptr %682, i32 0, i32 10
  %684 = load i32, ptr %683, align 4, !tbaa !22
  %685 = zext i32 %684 to i64
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %674, ptr align 1 %679, i64 %685, i1 false)
  %686 = load ptr, ptr %5, align 8, !tbaa !5
  %687 = getelementptr inbounds %struct.lsqpack_dec, ptr %686, i32 0, i32 17
  %688 = getelementptr inbounds %struct.anon.10, ptr %687, i32 0, i32 1
  %689 = getelementptr inbounds %struct.anon.11, ptr %688, i32 0, i32 4
  %690 = load ptr, ptr %689, align 8, !tbaa !22
  %691 = icmp ne ptr %690, null
  br i1 %691, label %692, label %702

692:                                              ; preds = %642
  %693 = load ptr, ptr %5, align 8, !tbaa !5
  %694 = getelementptr inbounds %struct.lsqpack_dec, ptr %693, i32 0, i32 17
  %695 = getelementptr inbounds %struct.anon.10, ptr %694, i32 0, i32 1
  %696 = getelementptr inbounds %struct.anon.11, ptr %695, i32 0, i32 4
  %697 = load ptr, ptr %696, align 8, !tbaa !22
  call void @qdec_decref_entry(ptr noundef %697)
  %698 = load ptr, ptr %5, align 8, !tbaa !5
  %699 = getelementptr inbounds %struct.lsqpack_dec, ptr %698, i32 0, i32 17
  %700 = getelementptr inbounds %struct.anon.10, ptr %699, i32 0, i32 1
  %701 = getelementptr inbounds %struct.anon.11, ptr %700, i32 0, i32 4
  store ptr null, ptr %701, align 8, !tbaa !22
  br label %702

702:                                              ; preds = %692, %642
  %703 = load ptr, ptr %5, align 8, !tbaa !5
  %704 = load ptr, ptr %5, align 8, !tbaa !5
  %705 = getelementptr inbounds %struct.lsqpack_dec, ptr %704, i32 0, i32 17
  %706 = getelementptr inbounds %struct.anon.10, ptr %705, i32 0, i32 1
  %707 = getelementptr inbounds %struct.anon.11, ptr %706, i32 0, i32 5
  %708 = load ptr, ptr %707, align 8, !tbaa !22
  %709 = call i32 @lsqpack_dec_push_entry(ptr noundef %703, ptr noundef %708)
  store i32 %709, ptr %14, align 4, !tbaa !11
  %710 = load i32, ptr %14, align 4, !tbaa !11
  %711 = icmp eq i32 0, %710
  br i1 %711, label %712, label %720

712:                                              ; preds = %702
  %713 = load ptr, ptr %5, align 8, !tbaa !5
  %714 = getelementptr inbounds %struct.lsqpack_dec, ptr %713, i32 0, i32 17
  %715 = getelementptr inbounds %struct.anon.10, ptr %714, i32 0, i32 0
  store i32 0, ptr %715, align 8, !tbaa !21
  %716 = load ptr, ptr %5, align 8, !tbaa !5
  %717 = getelementptr inbounds %struct.lsqpack_dec, ptr %716, i32 0, i32 17
  %718 = getelementptr inbounds %struct.anon.10, ptr %717, i32 0, i32 1
  %719 = getelementptr inbounds %struct.anon.11, ptr %718, i32 0, i32 5
  store ptr null, ptr %719, align 8, !tbaa !22
  br label %811

720:                                              ; preds = %702
  %721 = load ptr, ptr %5, align 8, !tbaa !5
  %722 = getelementptr inbounds %struct.lsqpack_dec, ptr %721, i32 0, i32 17
  %723 = getelementptr inbounds %struct.anon.10, ptr %722, i32 0, i32 1
  %724 = getelementptr inbounds %struct.anon.11, ptr %723, i32 0, i32 5
  %725 = load ptr, ptr %724, align 8, !tbaa !22
  call void @qdec_decref_entry(ptr noundef %725)
  %726 = load ptr, ptr %5, align 8, !tbaa !5
  %727 = getelementptr inbounds %struct.lsqpack_dec, ptr %726, i32 0, i32 17
  %728 = getelementptr inbounds %struct.anon.10, ptr %727, i32 0, i32 1
  %729 = getelementptr inbounds %struct.anon.11, ptr %728, i32 0, i32 5
  store ptr null, ptr %729, align 8, !tbaa !22
  store i32 -1, ptr %4, align 4
  store i32 1, ptr %15, align 4
  br label %2096

730:                                              ; preds = %580
  %731 = getelementptr inbounds %struct.huff_decode_retval, ptr %11, i32 0, i32 2
  %732 = load i32, ptr %731, align 4, !tbaa !36
  %733 = load ptr, ptr %6, align 8, !tbaa !5
  %734 = zext i32 %732 to i64
  %735 = getelementptr inbounds i8, ptr %733, i64 %734
  store ptr %735, ptr %6, align 8, !tbaa !5
  %736 = getelementptr inbounds %struct.huff_decode_retval, ptr %11, i32 0, i32 2
  %737 = load i32, ptr %736, align 4, !tbaa !36
  %738 = load ptr, ptr %5, align 8, !tbaa !5
  %739 = getelementptr inbounds %struct.lsqpack_dec, ptr %738, i32 0, i32 17
  %740 = getelementptr inbounds %struct.anon.10, ptr %739, i32 0, i32 1
  %741 = getelementptr inbounds %struct.anon.11, ptr %740, i32 0, i32 9
  %742 = load i32, ptr %741, align 8, !tbaa !22
  %743 = add i32 %742, %737
  store i32 %743, ptr %741, align 8, !tbaa !22
  %744 = getelementptr inbounds %struct.huff_decode_retval, ptr %11, i32 0, i32 1
  %745 = load i32, ptr %744, align 4, !tbaa !37
  %746 = load ptr, ptr %5, align 8, !tbaa !5
  %747 = getelementptr inbounds %struct.lsqpack_dec, ptr %746, i32 0, i32 17
  %748 = getelementptr inbounds %struct.anon.10, ptr %747, i32 0, i32 1
  %749 = getelementptr inbounds %struct.anon.11, ptr %748, i32 0, i32 8
  %750 = load i32, ptr %749, align 4, !tbaa !22
  %751 = add i32 %750, %745
  store i32 %751, ptr %749, align 4, !tbaa !22
  br label %811

752:                                              ; preds = %580
  %753 = load ptr, ptr %5, align 8, !tbaa !5
  %754 = getelementptr inbounds %struct.lsqpack_dec, ptr %753, i32 0, i32 17
  %755 = getelementptr inbounds %struct.anon.10, ptr %754, i32 0, i32 1
  %756 = getelementptr inbounds %struct.anon.11, ptr %755, i32 0, i32 7
  %757 = load i32, ptr %756, align 8, !tbaa !22
  %758 = mul i32 %757, 2
  store i32 %758, ptr %756, align 8, !tbaa !22
  %759 = load ptr, ptr %5, align 8, !tbaa !5
  %760 = getelementptr inbounds %struct.lsqpack_dec, ptr %759, i32 0, i32 17
  %761 = getelementptr inbounds %struct.anon.10, ptr %760, i32 0, i32 1
  %762 = getelementptr inbounds %struct.anon.11, ptr %761, i32 0, i32 5
  %763 = load ptr, ptr %762, align 8, !tbaa !22
  %764 = load ptr, ptr %5, align 8, !tbaa !5
  %765 = getelementptr inbounds %struct.lsqpack_dec, ptr %764, i32 0, i32 17
  %766 = getelementptr inbounds %struct.anon.10, ptr %765, i32 0, i32 1
  %767 = getelementptr inbounds %struct.anon.11, ptr %766, i32 0, i32 10
  %768 = load i32, ptr %767, align 4, !tbaa !22
  %769 = zext i32 %768 to i64
  %770 = add i64 28, %769
  %771 = load ptr, ptr %5, align 8, !tbaa !5
  %772 = getelementptr inbounds %struct.lsqpack_dec, ptr %771, i32 0, i32 17
  %773 = getelementptr inbounds %struct.anon.10, ptr %772, i32 0, i32 1
  %774 = getelementptr inbounds %struct.anon.11, ptr %773, i32 0, i32 7
  %775 = load i32, ptr %774, align 8, !tbaa !22
  %776 = zext i32 %775 to i64
  %777 = add i64 %770, %776
  %778 = call ptr @realloc(ptr noundef %763, i64 noundef %777) #9
  store ptr %778, ptr %9, align 8, !tbaa !5
  %779 = load ptr, ptr %9, align 8, !tbaa !5
  %780 = icmp ne ptr %779, null
  br i1 %780, label %782, label %781

781:                                              ; preds = %752
  store i32 -1, ptr %4, align 4
  store i32 1, ptr %15, align 4
  br label %2096

782:                                              ; preds = %752
  %783 = load ptr, ptr %9, align 8, !tbaa !5
  %784 = load ptr, ptr %5, align 8, !tbaa !5
  %785 = getelementptr inbounds %struct.lsqpack_dec, ptr %784, i32 0, i32 17
  %786 = getelementptr inbounds %struct.anon.10, ptr %785, i32 0, i32 1
  %787 = getelementptr inbounds %struct.anon.11, ptr %786, i32 0, i32 5
  store ptr %783, ptr %787, align 8, !tbaa !22
  %788 = getelementptr inbounds %struct.huff_decode_retval, ptr %11, i32 0, i32 2
  %789 = load i32, ptr %788, align 4, !tbaa !36
  %790 = load ptr, ptr %6, align 8, !tbaa !5
  %791 = zext i32 %789 to i64
  %792 = getelementptr inbounds i8, ptr %790, i64 %791
  store ptr %792, ptr %6, align 8, !tbaa !5
  %793 = getelementptr inbounds %struct.huff_decode_retval, ptr %11, i32 0, i32 2
  %794 = load i32, ptr %793, align 4, !tbaa !36
  %795 = load ptr, ptr %5, align 8, !tbaa !5
  %796 = getelementptr inbounds %struct.lsqpack_dec, ptr %795, i32 0, i32 17
  %797 = getelementptr inbounds %struct.anon.10, ptr %796, i32 0, i32 1
  %798 = getelementptr inbounds %struct.anon.11, ptr %797, i32 0, i32 9
  %799 = load i32, ptr %798, align 8, !tbaa !22
  %800 = add i32 %799, %794
  store i32 %800, ptr %798, align 8, !tbaa !22
  %801 = getelementptr inbounds %struct.huff_decode_retval, ptr %11, i32 0, i32 1
  %802 = load i32, ptr %801, align 4, !tbaa !37
  %803 = load ptr, ptr %5, align 8, !tbaa !5
  %804 = getelementptr inbounds %struct.lsqpack_dec, ptr %803, i32 0, i32 17
  %805 = getelementptr inbounds %struct.anon.10, ptr %804, i32 0, i32 1
  %806 = getelementptr inbounds %struct.anon.11, ptr %805, i32 0, i32 8
  %807 = load i32, ptr %806, align 4, !tbaa !22
  %808 = add i32 %807, %802
  store i32 %808, ptr %806, align 4, !tbaa !22
  br label %811

809:                                              ; preds = %580
  br label %810

810:                                              ; preds = %809, %580
  store i32 -1, ptr %4, align 4
  store i32 1, ptr %15, align 4
  br label %2096

811:                                              ; preds = %782, %730, %712
  br label %2094

812:                                              ; preds = %57
  %813 = load ptr, ptr %5, align 8, !tbaa !5
  %814 = getelementptr inbounds %struct.lsqpack_dec, ptr %813, i32 0, i32 17
  %815 = getelementptr inbounds %struct.anon.10, ptr %814, i32 0, i32 1
  %816 = getelementptr inbounds %struct.anon.11, ptr %815, i32 0, i32 7
  %817 = load i32, ptr %816, align 8, !tbaa !22
  %818 = load ptr, ptr %5, align 8, !tbaa !5
  %819 = getelementptr inbounds %struct.lsqpack_dec, ptr %818, i32 0, i32 17
  %820 = getelementptr inbounds %struct.anon.10, ptr %819, i32 0, i32 1
  %821 = getelementptr inbounds %struct.anon.11, ptr %820, i32 0, i32 3
  %822 = load i32, ptr %821, align 4, !tbaa !22
  %823 = icmp uge i32 %817, %822
  br i1 %823, label %824, label %825

824:                                              ; preds = %812
  br label %826

825:                                              ; preds = %812
  call void @__assert_fail(ptr noundef @.str.55, ptr noundef @.str.8, i32 noundef 4752, ptr noundef @__PRETTY_FUNCTION__.lsqpack_dec_enc_in) #10
  unreachable

826:                                              ; preds = %824
  %827 = load ptr, ptr %8, align 8, !tbaa !5
  %828 = load ptr, ptr %6, align 8, !tbaa !5
  %829 = ptrtoint ptr %827 to i64
  %830 = ptrtoint ptr %828 to i64
  %831 = sub i64 %829, %830
  %832 = trunc i64 %831 to i32
  %833 = load ptr, ptr %5, align 8, !tbaa !5
  %834 = getelementptr inbounds %struct.lsqpack_dec, ptr %833, i32 0, i32 17
  %835 = getelementptr inbounds %struct.anon.10, ptr %834, i32 0, i32 1
  %836 = getelementptr inbounds %struct.anon.11, ptr %835, i32 0, i32 3
  %837 = load i32, ptr %836, align 4, !tbaa !22
  %838 = load ptr, ptr %5, align 8, !tbaa !5
  %839 = getelementptr inbounds %struct.lsqpack_dec, ptr %838, i32 0, i32 17
  %840 = getelementptr inbounds %struct.anon.10, ptr %839, i32 0, i32 1
  %841 = getelementptr inbounds %struct.anon.11, ptr %840, i32 0, i32 8
  %842 = load i32, ptr %841, align 4, !tbaa !22
  %843 = sub i32 %837, %842
  %844 = icmp ult i32 %832, %843
  br i1 %844, label %845, label %852

845:                                              ; preds = %826
  %846 = load ptr, ptr %8, align 8, !tbaa !5
  %847 = load ptr, ptr %6, align 8, !tbaa !5
  %848 = ptrtoint ptr %846 to i64
  %849 = ptrtoint ptr %847 to i64
  %850 = sub i64 %848, %849
  %851 = trunc i64 %850 to i32
  br label %864

852:                                              ; preds = %826
  %853 = load ptr, ptr %5, align 8, !tbaa !5
  %854 = getelementptr inbounds %struct.lsqpack_dec, ptr %853, i32 0, i32 17
  %855 = getelementptr inbounds %struct.anon.10, ptr %854, i32 0, i32 1
  %856 = getelementptr inbounds %struct.anon.11, ptr %855, i32 0, i32 3
  %857 = load i32, ptr %856, align 4, !tbaa !22
  %858 = load ptr, ptr %5, align 8, !tbaa !5
  %859 = getelementptr inbounds %struct.lsqpack_dec, ptr %858, i32 0, i32 17
  %860 = getelementptr inbounds %struct.anon.10, ptr %859, i32 0, i32 1
  %861 = getelementptr inbounds %struct.anon.11, ptr %860, i32 0, i32 8
  %862 = load i32, ptr %861, align 4, !tbaa !22
  %863 = sub i32 %857, %862
  br label %864

864:                                              ; preds = %852, %845
  %865 = phi i32 [ %851, %845 ], [ %863, %852 ]
  %866 = zext i32 %865 to i64
  store i64 %866, ptr %13, align 8, !tbaa !9
  %867 = load ptr, ptr %5, align 8, !tbaa !5
  %868 = getelementptr inbounds %struct.lsqpack_dec, ptr %867, i32 0, i32 17
  %869 = getelementptr inbounds %struct.anon.10, ptr %868, i32 0, i32 1
  %870 = getelementptr inbounds %struct.anon.11, ptr %869, i32 0, i32 5
  %871 = load ptr, ptr %870, align 8, !tbaa !22
  %872 = getelementptr inbounds %struct.lsqpack_dec_table_entry, ptr %871, i32 0, i32 7
  %873 = load ptr, ptr %5, align 8, !tbaa !5
  %874 = getelementptr inbounds %struct.lsqpack_dec, ptr %873, i32 0, i32 17
  %875 = getelementptr inbounds %struct.anon.10, ptr %874, i32 0, i32 1
  %876 = getelementptr inbounds %struct.anon.11, ptr %875, i32 0, i32 5
  %877 = load ptr, ptr %876, align 8, !tbaa !22
  %878 = getelementptr inbounds %struct.lsqpack_dec_table_entry, ptr %877, i32 0, i32 0
  %879 = load i32, ptr %878, align 4, !tbaa !28
  %880 = zext i32 %879 to i64
  %881 = getelementptr inbounds [0 x i8], ptr %872, i64 0, i64 %880
  %882 = load ptr, ptr %5, align 8, !tbaa !5
  %883 = getelementptr inbounds %struct.lsqpack_dec, ptr %882, i32 0, i32 17
  %884 = getelementptr inbounds %struct.anon.10, ptr %883, i32 0, i32 1
  %885 = getelementptr inbounds %struct.anon.11, ptr %884, i32 0, i32 8
  %886 = load i32, ptr %885, align 4, !tbaa !22
  %887 = zext i32 %886 to i64
  %888 = getelementptr inbounds i8, ptr %881, i64 %887
  %889 = load ptr, ptr %6, align 8, !tbaa !5
  %890 = load i64, ptr %13, align 8, !tbaa !9
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %888, ptr align 1 %889, i64 %890, i1 false)
  %891 = load i64, ptr %13, align 8, !tbaa !9
  %892 = trunc i64 %891 to i32
  %893 = load ptr, ptr %5, align 8, !tbaa !5
  %894 = getelementptr inbounds %struct.lsqpack_dec, ptr %893, i32 0, i32 17
  %895 = getelementptr inbounds %struct.anon.10, ptr %894, i32 0, i32 1
  %896 = getelementptr inbounds %struct.anon.11, ptr %895, i32 0, i32 8
  %897 = load i32, ptr %896, align 4, !tbaa !22
  %898 = add i32 %897, %892
  store i32 %898, ptr %896, align 4, !tbaa !22
  %899 = load i64, ptr %13, align 8, !tbaa !9
  %900 = load ptr, ptr %6, align 8, !tbaa !5
  %901 = getelementptr inbounds i8, ptr %900, i64 %899
  store ptr %901, ptr %6, align 8, !tbaa !5
  %902 = load ptr, ptr %5, align 8, !tbaa !5
  %903 = getelementptr inbounds %struct.lsqpack_dec, ptr %902, i32 0, i32 17
  %904 = getelementptr inbounds %struct.anon.10, ptr %903, i32 0, i32 1
  %905 = getelementptr inbounds %struct.anon.11, ptr %904, i32 0, i32 8
  %906 = load i32, ptr %905, align 4, !tbaa !22
  %907 = load ptr, ptr %5, align 8, !tbaa !5
  %908 = getelementptr inbounds %struct.lsqpack_dec, ptr %907, i32 0, i32 17
  %909 = getelementptr inbounds %struct.anon.10, ptr %908, i32 0, i32 1
  %910 = getelementptr inbounds %struct.anon.11, ptr %909, i32 0, i32 3
  %911 = load i32, ptr %910, align 4, !tbaa !22
  %912 = icmp eq i32 %906, %911
  br i1 %912, label %913, label %994

913:                                              ; preds = %864
  br label %914

914:                                              ; preds = %913, %534
  %915 = load ptr, ptr %5, align 8, !tbaa !5
  %916 = getelementptr inbounds %struct.lsqpack_dec, ptr %915, i32 0, i32 17
  %917 = getelementptr inbounds %struct.anon.10, ptr %916, i32 0, i32 1
  %918 = getelementptr inbounds %struct.anon.11, ptr %917, i32 0, i32 8
  %919 = load i32, ptr %918, align 4, !tbaa !22
  %920 = load ptr, ptr %5, align 8, !tbaa !5
  %921 = getelementptr inbounds %struct.lsqpack_dec, ptr %920, i32 0, i32 17
  %922 = getelementptr inbounds %struct.anon.10, ptr %921, i32 0, i32 1
  %923 = getelementptr inbounds %struct.anon.11, ptr %922, i32 0, i32 5
  %924 = load ptr, ptr %923, align 8, !tbaa !22
  %925 = getelementptr inbounds %struct.lsqpack_dec_table_entry, ptr %924, i32 0, i32 1
  store i32 %919, ptr %925, align 4, !tbaa !38
  %926 = load ptr, ptr %5, align 8, !tbaa !5
  %927 = getelementptr inbounds %struct.lsqpack_dec, ptr %926, i32 0, i32 17
  %928 = getelementptr inbounds %struct.anon.10, ptr %927, i32 0, i32 1
  %929 = getelementptr inbounds %struct.anon.11, ptr %928, i32 0, i32 5
  %930 = load ptr, ptr %929, align 8, !tbaa !22
  %931 = getelementptr inbounds %struct.lsqpack_dec_table_entry, ptr %930, i32 0, i32 2
  store i32 1, ptr %931, align 4, !tbaa !23
  %932 = load ptr, ptr %5, align 8, !tbaa !5
  %933 = getelementptr inbounds %struct.lsqpack_dec, ptr %932, i32 0, i32 17
  %934 = getelementptr inbounds %struct.anon.10, ptr %933, i32 0, i32 1
  %935 = getelementptr inbounds %struct.anon.11, ptr %934, i32 0, i32 5
  %936 = load ptr, ptr %935, align 8, !tbaa !22
  %937 = getelementptr inbounds %struct.lsqpack_dec_table_entry, ptr %936, i32 0, i32 7
  %938 = getelementptr inbounds [0 x i8], ptr %937, i64 0, i64 0
  %939 = load ptr, ptr %5, align 8, !tbaa !5
  %940 = getelementptr inbounds %struct.lsqpack_dec, ptr %939, i32 0, i32 17
  %941 = getelementptr inbounds %struct.anon.10, ptr %940, i32 0, i32 1
  %942 = getelementptr inbounds %struct.anon.11, ptr %941, i32 0, i32 6
  %943 = load ptr, ptr %942, align 8, !tbaa !22
  %944 = load ptr, ptr %5, align 8, !tbaa !5
  %945 = getelementptr inbounds %struct.lsqpack_dec, ptr %944, i32 0, i32 17
  %946 = getelementptr inbounds %struct.anon.10, ptr %945, i32 0, i32 1
  %947 = getelementptr inbounds %struct.anon.11, ptr %946, i32 0, i32 10
  %948 = load i32, ptr %947, align 4, !tbaa !22
  %949 = zext i32 %948 to i64
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %938, ptr align 1 %943, i64 %949, i1 false)
  %950 = load ptr, ptr %5, align 8, !tbaa !5
  %951 = getelementptr inbounds %struct.lsqpack_dec, ptr %950, i32 0, i32 17
  %952 = getelementptr inbounds %struct.anon.10, ptr %951, i32 0, i32 1
  %953 = getelementptr inbounds %struct.anon.11, ptr %952, i32 0, i32 4
  %954 = load ptr, ptr %953, align 8, !tbaa !22
  %955 = icmp ne ptr %954, null
  br i1 %955, label %956, label %966

956:                                              ; preds = %914
  %957 = load ptr, ptr %5, align 8, !tbaa !5
  %958 = getelementptr inbounds %struct.lsqpack_dec, ptr %957, i32 0, i32 17
  %959 = getelementptr inbounds %struct.anon.10, ptr %958, i32 0, i32 1
  %960 = getelementptr inbounds %struct.anon.11, ptr %959, i32 0, i32 4
  %961 = load ptr, ptr %960, align 8, !tbaa !22
  call void @qdec_decref_entry(ptr noundef %961)
  %962 = load ptr, ptr %5, align 8, !tbaa !5
  %963 = getelementptr inbounds %struct.lsqpack_dec, ptr %962, i32 0, i32 17
  %964 = getelementptr inbounds %struct.anon.10, ptr %963, i32 0, i32 1
  %965 = getelementptr inbounds %struct.anon.11, ptr %964, i32 0, i32 4
  store ptr null, ptr %965, align 8, !tbaa !22
  br label %966

966:                                              ; preds = %956, %914
  %967 = load ptr, ptr %5, align 8, !tbaa !5
  %968 = load ptr, ptr %5, align 8, !tbaa !5
  %969 = getelementptr inbounds %struct.lsqpack_dec, ptr %968, i32 0, i32 17
  %970 = getelementptr inbounds %struct.anon.10, ptr %969, i32 0, i32 1
  %971 = getelementptr inbounds %struct.anon.11, ptr %970, i32 0, i32 5
  %972 = load ptr, ptr %971, align 8, !tbaa !22
  %973 = call i32 @lsqpack_dec_push_entry(ptr noundef %967, ptr noundef %972)
  store i32 %973, ptr %14, align 4, !tbaa !11
  %974 = load i32, ptr %14, align 4, !tbaa !11
  %975 = icmp eq i32 0, %974
  br i1 %975, label %976, label %984

976:                                              ; preds = %966
  %977 = load ptr, ptr %5, align 8, !tbaa !5
  %978 = getelementptr inbounds %struct.lsqpack_dec, ptr %977, i32 0, i32 17
  %979 = getelementptr inbounds %struct.anon.10, ptr %978, i32 0, i32 0
  store i32 0, ptr %979, align 8, !tbaa !21
  %980 = load ptr, ptr %5, align 8, !tbaa !5
  %981 = getelementptr inbounds %struct.lsqpack_dec, ptr %980, i32 0, i32 17
  %982 = getelementptr inbounds %struct.anon.10, ptr %981, i32 0, i32 1
  %983 = getelementptr inbounds %struct.anon.11, ptr %982, i32 0, i32 5
  store ptr null, ptr %983, align 8, !tbaa !22
  br label %2094

984:                                              ; preds = %966
  %985 = load ptr, ptr %5, align 8, !tbaa !5
  %986 = getelementptr inbounds %struct.lsqpack_dec, ptr %985, i32 0, i32 17
  %987 = getelementptr inbounds %struct.anon.10, ptr %986, i32 0, i32 1
  %988 = getelementptr inbounds %struct.anon.11, ptr %987, i32 0, i32 5
  %989 = load ptr, ptr %988, align 8, !tbaa !22
  call void @qdec_decref_entry(ptr noundef %989)
  %990 = load ptr, ptr %5, align 8, !tbaa !5
  %991 = getelementptr inbounds %struct.lsqpack_dec, ptr %990, i32 0, i32 17
  %992 = getelementptr inbounds %struct.anon.10, ptr %991, i32 0, i32 1
  %993 = getelementptr inbounds %struct.anon.11, ptr %992, i32 0, i32 5
  store ptr null, ptr %993, align 8, !tbaa !22
  store i32 -1, ptr %4, align 4
  store i32 1, ptr %15, align 4
  br label %2096

994:                                              ; preds = %864
  br label %2094

995:                                              ; preds = %57
  br label %996

996:                                              ; preds = %995, %105
  %997 = load ptr, ptr %8, align 8, !tbaa !5
  %998 = load i32, ptr %12, align 4, !tbaa !11
  %999 = load ptr, ptr %5, align 8, !tbaa !5
  %1000 = getelementptr inbounds %struct.lsqpack_dec, ptr %999, i32 0, i32 17
  %1001 = getelementptr inbounds %struct.anon.10, ptr %1000, i32 0, i32 1
  %1002 = getelementptr inbounds %struct.anon.12, ptr %1001, i32 0, i32 2
  %1003 = load ptr, ptr %5, align 8, !tbaa !5
  %1004 = getelementptr inbounds %struct.lsqpack_dec, ptr %1003, i32 0, i32 17
  %1005 = getelementptr inbounds %struct.anon.10, ptr %1004, i32 0, i32 1
  %1006 = getelementptr inbounds %struct.anon.13, ptr %1005, i32 0, i32 0
  %1007 = call i32 @lsqpack_dec_int24(ptr noundef %6, ptr noundef %997, i32 noundef %998, ptr noundef %1002, ptr noundef %1006)
  store i32 %1007, ptr %14, align 4, !tbaa !11
  %1008 = load i32, ptr %14, align 4, !tbaa !11
  %1009 = icmp eq i32 %1008, 0
  br i1 %1009, label %1010, label %1111

1010:                                             ; preds = %996
  %1011 = load ptr, ptr %5, align 8, !tbaa !5
  %1012 = getelementptr inbounds %struct.lsqpack_dec, ptr %1011, i32 0, i32 17
  %1013 = getelementptr inbounds %struct.anon.10, ptr %1012, i32 0, i32 1
  %1014 = getelementptr inbounds %struct.anon.12, ptr %1013, i32 0, i32 2
  %1015 = load i32, ptr %1014, align 8, !tbaa !22
  %1016 = load ptr, ptr %5, align 8, !tbaa !5
  %1017 = getelementptr inbounds %struct.lsqpack_dec, ptr %1016, i32 0, i32 2
  %1018 = load i32, ptr %1017, align 8, !tbaa !29
  %1019 = load ptr, ptr %5, align 8, !tbaa !5
  %1020 = getelementptr inbounds %struct.lsqpack_dec, ptr %1019, i32 0, i32 17
  %1021 = getelementptr inbounds %struct.anon.10, ptr %1020, i32 0, i32 1
  %1022 = getelementptr inbounds %struct.anon.12, ptr %1021, i32 0, i32 7
  %1023 = load i8, ptr %1022, align 4, !tbaa !22
  %1024 = sext i8 %1023 to i32
  %1025 = shl i32 %1024, 1
  %1026 = shl i32 %1018, %1025
  %1027 = icmp ugt i32 %1015, %1026
  br i1 %1027, label %1028, label %1029

1028:                                             ; preds = %1010
  store i32 -1, ptr %4, align 4
  store i32 1, ptr %15, align 4
  br label %2096

1029:                                             ; preds = %1010
  %1030 = load ptr, ptr %5, align 8, !tbaa !5
  %1031 = getelementptr inbounds %struct.lsqpack_dec, ptr %1030, i32 0, i32 17
  %1032 = getelementptr inbounds %struct.anon.10, ptr %1031, i32 0, i32 1
  %1033 = getelementptr inbounds %struct.anon.12, ptr %1032, i32 0, i32 2
  %1034 = load i32, ptr %1033, align 8, !tbaa !22
  %1035 = icmp ne i32 %1034, 0
  br i1 %1035, label %1036, label %1049

1036:                                             ; preds = %1029
  %1037 = load ptr, ptr %5, align 8, !tbaa !5
  %1038 = getelementptr inbounds %struct.lsqpack_dec, ptr %1037, i32 0, i32 17
  %1039 = getelementptr inbounds %struct.anon.10, ptr %1038, i32 0, i32 1
  %1040 = getelementptr inbounds %struct.anon.12, ptr %1039, i32 0, i32 2
  %1041 = load i32, ptr %1040, align 8, !tbaa !22
  %1042 = load ptr, ptr %5, align 8, !tbaa !5
  %1043 = getelementptr inbounds %struct.lsqpack_dec, ptr %1042, i32 0, i32 17
  %1044 = getelementptr inbounds %struct.anon.10, ptr %1043, i32 0, i32 1
  %1045 = getelementptr inbounds %struct.anon.12, ptr %1044, i32 0, i32 2
  %1046 = load i32, ptr %1045, align 8, !tbaa !22
  %1047 = udiv i32 %1046, 2
  %1048 = add i32 %1041, %1047
  br label %1050

1049:                                             ; preds = %1029
  br label %1050

1050:                                             ; preds = %1049, %1036
  %1051 = phi i32 [ %1048, %1036 ], [ 16, %1049 ]
  %1052 = load ptr, ptr %5, align 8, !tbaa !5
  %1053 = getelementptr inbounds %struct.lsqpack_dec, ptr %1052, i32 0, i32 17
  %1054 = getelementptr inbounds %struct.anon.10, ptr %1053, i32 0, i32 1
  %1055 = getelementptr inbounds %struct.anon.12, ptr %1054, i32 0, i32 4
  store i32 %1051, ptr %1055, align 8, !tbaa !22
  %1056 = load ptr, ptr %5, align 8, !tbaa !5
  %1057 = getelementptr inbounds %struct.lsqpack_dec, ptr %1056, i32 0, i32 17
  %1058 = getelementptr inbounds %struct.anon.10, ptr %1057, i32 0, i32 1
  %1059 = getelementptr inbounds %struct.anon.12, ptr %1058, i32 0, i32 4
  %1060 = load i32, ptr %1059, align 8, !tbaa !22
  %1061 = zext i32 %1060 to i64
  %1062 = add i64 28, %1061
  store i64 %1062, ptr %13, align 8, !tbaa !9
  %1063 = load i64, ptr %13, align 8, !tbaa !9
  %1064 = call noalias ptr @malloc(i64 noundef %1063) #8
  %1065 = load ptr, ptr %5, align 8, !tbaa !5
  %1066 = getelementptr inbounds %struct.lsqpack_dec, ptr %1065, i32 0, i32 17
  %1067 = getelementptr inbounds %struct.anon.10, ptr %1066, i32 0, i32 1
  %1068 = getelementptr inbounds %struct.anon.12, ptr %1067, i32 0, i32 3
  store ptr %1064, ptr %1068, align 8, !tbaa !22
  %1069 = load ptr, ptr %5, align 8, !tbaa !5
  %1070 = getelementptr inbounds %struct.lsqpack_dec, ptr %1069, i32 0, i32 17
  %1071 = getelementptr inbounds %struct.anon.10, ptr %1070, i32 0, i32 1
  %1072 = getelementptr inbounds %struct.anon.12, ptr %1071, i32 0, i32 3
  %1073 = load ptr, ptr %1072, align 8, !tbaa !22
  %1074 = icmp ne ptr %1073, null
  br i1 %1074, label %1076, label %1075

1075:                                             ; preds = %1050
  store i32 -1, ptr %4, align 4
  store i32 1, ptr %15, align 4
  br label %2096

1076:                                             ; preds = %1050
  %1077 = load ptr, ptr %5, align 8, !tbaa !5
  %1078 = getelementptr inbounds %struct.lsqpack_dec, ptr %1077, i32 0, i32 17
  %1079 = getelementptr inbounds %struct.anon.10, ptr %1078, i32 0, i32 1
  %1080 = getelementptr inbounds %struct.anon.12, ptr %1079, i32 0, i32 3
  %1081 = load ptr, ptr %1080, align 8, !tbaa !22
  %1082 = getelementptr inbounds %struct.lsqpack_dec_table_entry, ptr %1081, i32 0, i32 6
  store i32 0, ptr %1082, align 4, !tbaa !30
  %1083 = load ptr, ptr %5, align 8, !tbaa !5
  %1084 = getelementptr inbounds %struct.lsqpack_dec, ptr %1083, i32 0, i32 17
  %1085 = getelementptr inbounds %struct.anon.10, ptr %1084, i32 0, i32 1
  %1086 = getelementptr inbounds %struct.anon.12, ptr %1085, i32 0, i32 6
  store i32 0, ptr %1086, align 8, !tbaa !22
  %1087 = load ptr, ptr %5, align 8, !tbaa !5
  %1088 = getelementptr inbounds %struct.lsqpack_dec, ptr %1087, i32 0, i32 17
  %1089 = getelementptr inbounds %struct.anon.10, ptr %1088, i32 0, i32 1
  %1090 = getelementptr inbounds %struct.anon.12, ptr %1089, i32 0, i32 5
  store i32 0, ptr %1090, align 4, !tbaa !22
  %1091 = load ptr, ptr %5, align 8, !tbaa !5
  %1092 = getelementptr inbounds %struct.lsqpack_dec, ptr %1091, i32 0, i32 17
  %1093 = getelementptr inbounds %struct.anon.10, ptr %1092, i32 0, i32 1
  %1094 = getelementptr inbounds %struct.anon.12, ptr %1093, i32 0, i32 7
  %1095 = load i8, ptr %1094, align 4, !tbaa !22
  %1096 = icmp ne i8 %1095, 0
  br i1 %1096, label %1097, label %1106

1097:                                             ; preds = %1076
  %1098 = load ptr, ptr %5, align 8, !tbaa !5
  %1099 = getelementptr inbounds %struct.lsqpack_dec, ptr %1098, i32 0, i32 17
  %1100 = getelementptr inbounds %struct.anon.10, ptr %1099, i32 0, i32 0
  store i32 9, ptr %1100, align 8, !tbaa !21
  %1101 = load ptr, ptr %5, align 8, !tbaa !5
  %1102 = getelementptr inbounds %struct.lsqpack_dec, ptr %1101, i32 0, i32 17
  %1103 = getelementptr inbounds %struct.anon.10, ptr %1102, i32 0, i32 1
  %1104 = getelementptr inbounds %struct.anon.12, ptr %1103, i32 0, i32 1
  %1105 = getelementptr inbounds %struct.lsqpack_huff_decode_state, ptr %1104, i32 0, i32 0
  store i32 0, ptr %1105, align 8, !tbaa !22
  br label %1110

1106:                                             ; preds = %1076
  %1107 = load ptr, ptr %5, align 8, !tbaa !5
  %1108 = getelementptr inbounds %struct.lsqpack_dec, ptr %1107, i32 0, i32 17
  %1109 = getelementptr inbounds %struct.anon.10, ptr %1108, i32 0, i32 0
  store i32 10, ptr %1109, align 8, !tbaa !21
  br label %1110

1110:                                             ; preds = %1106, %1097
  br label %2094

1111:                                             ; preds = %996
  %1112 = load i32, ptr %14, align 4, !tbaa !11
  %1113 = icmp eq i32 %1112, -1
  br i1 %1113, label %1114, label %1115

1114:                                             ; preds = %1111
  store i32 0, ptr %4, align 4
  store i32 1, ptr %15, align 4
  br label %2096

1115:                                             ; preds = %1111
  store i32 -1, ptr %4, align 4
  store i32 1, ptr %15, align 4
  br label %2096

1116:                                             ; preds = %57
  %1117 = load ptr, ptr %8, align 8, !tbaa !5
  %1118 = load ptr, ptr %6, align 8, !tbaa !5
  %1119 = ptrtoint ptr %1117 to i64
  %1120 = ptrtoint ptr %1118 to i64
  %1121 = sub i64 %1119, %1120
  %1122 = trunc i64 %1121 to i32
  %1123 = load ptr, ptr %5, align 8, !tbaa !5
  %1124 = getelementptr inbounds %struct.lsqpack_dec, ptr %1123, i32 0, i32 17
  %1125 = getelementptr inbounds %struct.anon.10, ptr %1124, i32 0, i32 1
  %1126 = getelementptr inbounds %struct.anon.12, ptr %1125, i32 0, i32 2
  %1127 = load i32, ptr %1126, align 8, !tbaa !22
  %1128 = load ptr, ptr %5, align 8, !tbaa !5
  %1129 = getelementptr inbounds %struct.lsqpack_dec, ptr %1128, i32 0, i32 17
  %1130 = getelementptr inbounds %struct.anon.10, ptr %1129, i32 0, i32 1
  %1131 = getelementptr inbounds %struct.anon.12, ptr %1130, i32 0, i32 6
  %1132 = load i32, ptr %1131, align 8, !tbaa !22
  %1133 = sub i32 %1127, %1132
  %1134 = icmp ult i32 %1122, %1133
  br i1 %1134, label %1135, label %1142

1135:                                             ; preds = %1116
  %1136 = load ptr, ptr %8, align 8, !tbaa !5
  %1137 = load ptr, ptr %6, align 8, !tbaa !5
  %1138 = ptrtoint ptr %1136 to i64
  %1139 = ptrtoint ptr %1137 to i64
  %1140 = sub i64 %1138, %1139
  %1141 = trunc i64 %1140 to i32
  br label %1154

1142:                                             ; preds = %1116
  %1143 = load ptr, ptr %5, align 8, !tbaa !5
  %1144 = getelementptr inbounds %struct.lsqpack_dec, ptr %1143, i32 0, i32 17
  %1145 = getelementptr inbounds %struct.anon.10, ptr %1144, i32 0, i32 1
  %1146 = getelementptr inbounds %struct.anon.12, ptr %1145, i32 0, i32 2
  %1147 = load i32, ptr %1146, align 8, !tbaa !22
  %1148 = load ptr, ptr %5, align 8, !tbaa !5
  %1149 = getelementptr inbounds %struct.lsqpack_dec, ptr %1148, i32 0, i32 17
  %1150 = getelementptr inbounds %struct.anon.10, ptr %1149, i32 0, i32 1
  %1151 = getelementptr inbounds %struct.anon.12, ptr %1150, i32 0, i32 6
  %1152 = load i32, ptr %1151, align 8, !tbaa !22
  %1153 = sub i32 %1147, %1152
  br label %1154

1154:                                             ; preds = %1142, %1135
  %1155 = phi i32 [ %1141, %1135 ], [ %1153, %1142 ]
  %1156 = zext i32 %1155 to i64
  store i64 %1156, ptr %13, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 12, ptr %18) #7
  %1157 = load ptr, ptr %6, align 8, !tbaa !5
  %1158 = load i64, ptr %13, align 8, !tbaa !9
  %1159 = trunc i64 %1158 to i32
  %1160 = load ptr, ptr %5, align 8, !tbaa !5
  %1161 = getelementptr inbounds %struct.lsqpack_dec, ptr %1160, i32 0, i32 17
  %1162 = getelementptr inbounds %struct.anon.10, ptr %1161, i32 0, i32 1
  %1163 = getelementptr inbounds %struct.anon.12, ptr %1162, i32 0, i32 3
  %1164 = load ptr, ptr %1163, align 8, !tbaa !22
  %1165 = getelementptr inbounds %struct.lsqpack_dec_table_entry, ptr %1164, i32 0, i32 7
  %1166 = getelementptr inbounds [0 x i8], ptr %1165, i64 0, i64 0
  %1167 = load ptr, ptr %5, align 8, !tbaa !5
  %1168 = getelementptr inbounds %struct.lsqpack_dec, ptr %1167, i32 0, i32 17
  %1169 = getelementptr inbounds %struct.anon.10, ptr %1168, i32 0, i32 1
  %1170 = getelementptr inbounds %struct.anon.12, ptr %1169, i32 0, i32 5
  %1171 = load i32, ptr %1170, align 4, !tbaa !22
  %1172 = zext i32 %1171 to i64
  %1173 = getelementptr inbounds i8, ptr %1166, i64 %1172
  %1174 = load ptr, ptr %5, align 8, !tbaa !5
  %1175 = getelementptr inbounds %struct.lsqpack_dec, ptr %1174, i32 0, i32 17
  %1176 = getelementptr inbounds %struct.anon.10, ptr %1175, i32 0, i32 1
  %1177 = getelementptr inbounds %struct.anon.12, ptr %1176, i32 0, i32 4
  %1178 = load i32, ptr %1177, align 8, !tbaa !22
  %1179 = load ptr, ptr %5, align 8, !tbaa !5
  %1180 = getelementptr inbounds %struct.lsqpack_dec, ptr %1179, i32 0, i32 17
  %1181 = getelementptr inbounds %struct.anon.10, ptr %1180, i32 0, i32 1
  %1182 = getelementptr inbounds %struct.anon.12, ptr %1181, i32 0, i32 5
  %1183 = load i32, ptr %1182, align 4, !tbaa !22
  %1184 = sub i32 %1178, %1183
  %1185 = load ptr, ptr %5, align 8, !tbaa !5
  %1186 = getelementptr inbounds %struct.lsqpack_dec, ptr %1185, i32 0, i32 17
  %1187 = getelementptr inbounds %struct.anon.10, ptr %1186, i32 0, i32 1
  %1188 = getelementptr inbounds %struct.anon.12, ptr %1187, i32 0, i32 1
  %1189 = load ptr, ptr %5, align 8, !tbaa !5
  %1190 = getelementptr inbounds %struct.lsqpack_dec, ptr %1189, i32 0, i32 17
  %1191 = getelementptr inbounds %struct.anon.10, ptr %1190, i32 0, i32 1
  %1192 = getelementptr inbounds %struct.anon.12, ptr %1191, i32 0, i32 6
  %1193 = load i32, ptr %1192, align 8, !tbaa !22
  %1194 = zext i32 %1193 to i64
  %1195 = load i64, ptr %13, align 8, !tbaa !9
  %1196 = add i64 %1194, %1195
  %1197 = load ptr, ptr %5, align 8, !tbaa !5
  %1198 = getelementptr inbounds %struct.lsqpack_dec, ptr %1197, i32 0, i32 17
  %1199 = getelementptr inbounds %struct.anon.10, ptr %1198, i32 0, i32 1
  %1200 = getelementptr inbounds %struct.anon.12, ptr %1199, i32 0, i32 2
  %1201 = load i32, ptr %1200, align 8, !tbaa !22
  %1202 = zext i32 %1201 to i64
  %1203 = icmp eq i64 %1196, %1202
  %1204 = zext i1 %1203 to i32
  %1205 = call { i64, i32 } @lsqpack_huff_decode(ptr noundef %1157, i32 noundef %1159, ptr noundef %1173, i32 noundef %1184, ptr noundef %1188, i32 noundef %1204)
  store { i64, i32 } %1205, ptr %19, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %18, ptr align 8 %19, i64 12, i1 false)
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %11, ptr align 4 %18, i64 12, i1 false), !tbaa.struct !33
  call void @llvm.lifetime.end.p0(i64 12, ptr %18) #7
  %1206 = getelementptr inbounds %struct.huff_decode_retval, ptr %11, i32 0, i32 0
  %1207 = load i32, ptr %1206, align 4, !tbaa !34
  switch i32 %1207, label %1304 [
    i32 0, label %1208
    i32 1, label %1231
    i32 2, label %1253
    i32 3, label %1303
  ]

1208:                                             ; preds = %1154
  %1209 = getelementptr inbounds %struct.huff_decode_retval, ptr %11, i32 0, i32 2
  %1210 = load i32, ptr %1209, align 4, !tbaa !36
  %1211 = load ptr, ptr %6, align 8, !tbaa !5
  %1212 = zext i32 %1210 to i64
  %1213 = getelementptr inbounds i8, ptr %1211, i64 %1212
  store ptr %1213, ptr %6, align 8, !tbaa !5
  %1214 = load ptr, ptr %5, align 8, !tbaa !5
  %1215 = getelementptr inbounds %struct.lsqpack_dec, ptr %1214, i32 0, i32 17
  %1216 = getelementptr inbounds %struct.anon.10, ptr %1215, i32 0, i32 1
  %1217 = getelementptr inbounds %struct.anon.12, ptr %1216, i32 0, i32 5
  %1218 = load i32, ptr %1217, align 4, !tbaa !22
  %1219 = getelementptr inbounds %struct.huff_decode_retval, ptr %11, i32 0, i32 1
  %1220 = load i32, ptr %1219, align 4, !tbaa !37
  %1221 = add i32 %1218, %1220
  %1222 = load ptr, ptr %5, align 8, !tbaa !5
  %1223 = getelementptr inbounds %struct.lsqpack_dec, ptr %1222, i32 0, i32 17
  %1224 = getelementptr inbounds %struct.anon.10, ptr %1223, i32 0, i32 1
  %1225 = getelementptr inbounds %struct.anon.12, ptr %1224, i32 0, i32 3
  %1226 = load ptr, ptr %1225, align 8, !tbaa !22
  %1227 = getelementptr inbounds %struct.lsqpack_dec_table_entry, ptr %1226, i32 0, i32 0
  store i32 %1221, ptr %1227, align 4, !tbaa !28
  %1228 = load ptr, ptr %5, align 8, !tbaa !5
  %1229 = getelementptr inbounds %struct.lsqpack_dec, ptr %1228, i32 0, i32 17
  %1230 = getelementptr inbounds %struct.anon.10, ptr %1229, i32 0, i32 0
  store i32 11, ptr %1230, align 8, !tbaa !21
  br label %1305

1231:                                             ; preds = %1154
  %1232 = getelementptr inbounds %struct.huff_decode_retval, ptr %11, i32 0, i32 2
  %1233 = load i32, ptr %1232, align 4, !tbaa !36
  %1234 = load ptr, ptr %6, align 8, !tbaa !5
  %1235 = zext i32 %1233 to i64
  %1236 = getelementptr inbounds i8, ptr %1234, i64 %1235
  store ptr %1236, ptr %6, align 8, !tbaa !5
  %1237 = getelementptr inbounds %struct.huff_decode_retval, ptr %11, i32 0, i32 2
  %1238 = load i32, ptr %1237, align 4, !tbaa !36
  %1239 = load ptr, ptr %5, align 8, !tbaa !5
  %1240 = getelementptr inbounds %struct.lsqpack_dec, ptr %1239, i32 0, i32 17
  %1241 = getelementptr inbounds %struct.anon.10, ptr %1240, i32 0, i32 1
  %1242 = getelementptr inbounds %struct.anon.12, ptr %1241, i32 0, i32 6
  %1243 = load i32, ptr %1242, align 8, !tbaa !22
  %1244 = add i32 %1243, %1238
  store i32 %1244, ptr %1242, align 8, !tbaa !22
  %1245 = getelementptr inbounds %struct.huff_decode_retval, ptr %11, i32 0, i32 1
  %1246 = load i32, ptr %1245, align 4, !tbaa !37
  %1247 = load ptr, ptr %5, align 8, !tbaa !5
  %1248 = getelementptr inbounds %struct.lsqpack_dec, ptr %1247, i32 0, i32 17
  %1249 = getelementptr inbounds %struct.anon.10, ptr %1248, i32 0, i32 1
  %1250 = getelementptr inbounds %struct.anon.12, ptr %1249, i32 0, i32 5
  %1251 = load i32, ptr %1250, align 4, !tbaa !22
  %1252 = add i32 %1251, %1246
  store i32 %1252, ptr %1250, align 4, !tbaa !22
  br label %1305

1253:                                             ; preds = %1154
  %1254 = load ptr, ptr %5, align 8, !tbaa !5
  %1255 = getelementptr inbounds %struct.lsqpack_dec, ptr %1254, i32 0, i32 17
  %1256 = getelementptr inbounds %struct.anon.10, ptr %1255, i32 0, i32 1
  %1257 = getelementptr inbounds %struct.anon.12, ptr %1256, i32 0, i32 4
  %1258 = load i32, ptr %1257, align 8, !tbaa !22
  %1259 = mul i32 %1258, 2
  store i32 %1259, ptr %1257, align 8, !tbaa !22
  %1260 = load ptr, ptr %5, align 8, !tbaa !5
  %1261 = getelementptr inbounds %struct.lsqpack_dec, ptr %1260, i32 0, i32 17
  %1262 = getelementptr inbounds %struct.anon.10, ptr %1261, i32 0, i32 1
  %1263 = getelementptr inbounds %struct.anon.12, ptr %1262, i32 0, i32 3
  %1264 = load ptr, ptr %1263, align 8, !tbaa !22
  %1265 = load ptr, ptr %5, align 8, !tbaa !5
  %1266 = getelementptr inbounds %struct.lsqpack_dec, ptr %1265, i32 0, i32 17
  %1267 = getelementptr inbounds %struct.anon.10, ptr %1266, i32 0, i32 1
  %1268 = getelementptr inbounds %struct.anon.12, ptr %1267, i32 0, i32 4
  %1269 = load i32, ptr %1268, align 8, !tbaa !22
  %1270 = zext i32 %1269 to i64
  %1271 = add i64 28, %1270
  %1272 = call ptr @realloc(ptr noundef %1264, i64 noundef %1271) #9
  store ptr %1272, ptr %9, align 8, !tbaa !5
  %1273 = load ptr, ptr %9, align 8, !tbaa !5
  %1274 = icmp ne ptr %1273, null
  br i1 %1274, label %1276, label %1275

1275:                                             ; preds = %1253
  store i32 -1, ptr %4, align 4
  store i32 1, ptr %15, align 4
  br label %2096

1276:                                             ; preds = %1253
  %1277 = load ptr, ptr %9, align 8, !tbaa !5
  %1278 = load ptr, ptr %5, align 8, !tbaa !5
  %1279 = getelementptr inbounds %struct.lsqpack_dec, ptr %1278, i32 0, i32 17
  %1280 = getelementptr inbounds %struct.anon.10, ptr %1279, i32 0, i32 1
  %1281 = getelementptr inbounds %struct.anon.12, ptr %1280, i32 0, i32 3
  store ptr %1277, ptr %1281, align 8, !tbaa !22
  %1282 = getelementptr inbounds %struct.huff_decode_retval, ptr %11, i32 0, i32 2
  %1283 = load i32, ptr %1282, align 4, !tbaa !36
  %1284 = load ptr, ptr %6, align 8, !tbaa !5
  %1285 = zext i32 %1283 to i64
  %1286 = getelementptr inbounds i8, ptr %1284, i64 %1285
  store ptr %1286, ptr %6, align 8, !tbaa !5
  %1287 = getelementptr inbounds %struct.huff_decode_retval, ptr %11, i32 0, i32 2
  %1288 = load i32, ptr %1287, align 4, !tbaa !36
  %1289 = load ptr, ptr %5, align 8, !tbaa !5
  %1290 = getelementptr inbounds %struct.lsqpack_dec, ptr %1289, i32 0, i32 17
  %1291 = getelementptr inbounds %struct.anon.10, ptr %1290, i32 0, i32 1
  %1292 = getelementptr inbounds %struct.anon.12, ptr %1291, i32 0, i32 6
  %1293 = load i32, ptr %1292, align 8, !tbaa !22
  %1294 = add i32 %1293, %1288
  store i32 %1294, ptr %1292, align 8, !tbaa !22
  %1295 = getelementptr inbounds %struct.huff_decode_retval, ptr %11, i32 0, i32 1
  %1296 = load i32, ptr %1295, align 4, !tbaa !37
  %1297 = load ptr, ptr %5, align 8, !tbaa !5
  %1298 = getelementptr inbounds %struct.lsqpack_dec, ptr %1297, i32 0, i32 17
  %1299 = getelementptr inbounds %struct.anon.10, ptr %1298, i32 0, i32 1
  %1300 = getelementptr inbounds %struct.anon.12, ptr %1299, i32 0, i32 5
  %1301 = load i32, ptr %1300, align 4, !tbaa !22
  %1302 = add i32 %1301, %1296
  store i32 %1302, ptr %1300, align 4, !tbaa !22
  br label %1305

1303:                                             ; preds = %1154
  br label %1304

1304:                                             ; preds = %1303, %1154
  store i32 -1, ptr %4, align 4
  store i32 1, ptr %15, align 4
  br label %2096

1305:                                             ; preds = %1276, %1231, %1208
  br label %2094

1306:                                             ; preds = %57
  %1307 = load ptr, ptr %5, align 8, !tbaa !5
  %1308 = getelementptr inbounds %struct.lsqpack_dec, ptr %1307, i32 0, i32 17
  %1309 = getelementptr inbounds %struct.anon.10, ptr %1308, i32 0, i32 1
  %1310 = getelementptr inbounds %struct.anon.12, ptr %1309, i32 0, i32 4
  %1311 = load i32, ptr %1310, align 8, !tbaa !22
  %1312 = load ptr, ptr %5, align 8, !tbaa !5
  %1313 = getelementptr inbounds %struct.lsqpack_dec, ptr %1312, i32 0, i32 17
  %1314 = getelementptr inbounds %struct.anon.10, ptr %1313, i32 0, i32 1
  %1315 = getelementptr inbounds %struct.anon.12, ptr %1314, i32 0, i32 2
  %1316 = load i32, ptr %1315, align 8, !tbaa !22
  %1317 = icmp uge i32 %1311, %1316
  br i1 %1317, label %1318, label %1319

1318:                                             ; preds = %1306
  br label %1320

1319:                                             ; preds = %1306
  call void @__assert_fail(ptr noundef @.str.56, ptr noundef @.str.8, i32 noundef 4847, ptr noundef @__PRETTY_FUNCTION__.lsqpack_dec_enc_in) #10
  unreachable

1320:                                             ; preds = %1318
  %1321 = load ptr, ptr %8, align 8, !tbaa !5
  %1322 = load ptr, ptr %6, align 8, !tbaa !5
  %1323 = ptrtoint ptr %1321 to i64
  %1324 = ptrtoint ptr %1322 to i64
  %1325 = sub i64 %1323, %1324
  %1326 = trunc i64 %1325 to i32
  %1327 = load ptr, ptr %5, align 8, !tbaa !5
  %1328 = getelementptr inbounds %struct.lsqpack_dec, ptr %1327, i32 0, i32 17
  %1329 = getelementptr inbounds %struct.anon.10, ptr %1328, i32 0, i32 1
  %1330 = getelementptr inbounds %struct.anon.12, ptr %1329, i32 0, i32 2
  %1331 = load i32, ptr %1330, align 8, !tbaa !22
  %1332 = load ptr, ptr %5, align 8, !tbaa !5
  %1333 = getelementptr inbounds %struct.lsqpack_dec, ptr %1332, i32 0, i32 17
  %1334 = getelementptr inbounds %struct.anon.10, ptr %1333, i32 0, i32 1
  %1335 = getelementptr inbounds %struct.anon.12, ptr %1334, i32 0, i32 5
  %1336 = load i32, ptr %1335, align 4, !tbaa !22
  %1337 = sub i32 %1331, %1336
  %1338 = icmp ult i32 %1326, %1337
  br i1 %1338, label %1339, label %1346

1339:                                             ; preds = %1320
  %1340 = load ptr, ptr %8, align 8, !tbaa !5
  %1341 = load ptr, ptr %6, align 8, !tbaa !5
  %1342 = ptrtoint ptr %1340 to i64
  %1343 = ptrtoint ptr %1341 to i64
  %1344 = sub i64 %1342, %1343
  %1345 = trunc i64 %1344 to i32
  br label %1358

1346:                                             ; preds = %1320
  %1347 = load ptr, ptr %5, align 8, !tbaa !5
  %1348 = getelementptr inbounds %struct.lsqpack_dec, ptr %1347, i32 0, i32 17
  %1349 = getelementptr inbounds %struct.anon.10, ptr %1348, i32 0, i32 1
  %1350 = getelementptr inbounds %struct.anon.12, ptr %1349, i32 0, i32 2
  %1351 = load i32, ptr %1350, align 8, !tbaa !22
  %1352 = load ptr, ptr %5, align 8, !tbaa !5
  %1353 = getelementptr inbounds %struct.lsqpack_dec, ptr %1352, i32 0, i32 17
  %1354 = getelementptr inbounds %struct.anon.10, ptr %1353, i32 0, i32 1
  %1355 = getelementptr inbounds %struct.anon.12, ptr %1354, i32 0, i32 5
  %1356 = load i32, ptr %1355, align 4, !tbaa !22
  %1357 = sub i32 %1351, %1356
  br label %1358

1358:                                             ; preds = %1346, %1339
  %1359 = phi i32 [ %1345, %1339 ], [ %1357, %1346 ]
  %1360 = zext i32 %1359 to i64
  store i64 %1360, ptr %13, align 8, !tbaa !9
  %1361 = load ptr, ptr %5, align 8, !tbaa !5
  %1362 = getelementptr inbounds %struct.lsqpack_dec, ptr %1361, i32 0, i32 17
  %1363 = getelementptr inbounds %struct.anon.10, ptr %1362, i32 0, i32 1
  %1364 = getelementptr inbounds %struct.anon.12, ptr %1363, i32 0, i32 3
  %1365 = load ptr, ptr %1364, align 8, !tbaa !22
  %1366 = getelementptr inbounds %struct.lsqpack_dec_table_entry, ptr %1365, i32 0, i32 7
  %1367 = getelementptr inbounds [0 x i8], ptr %1366, i64 0, i64 0
  %1368 = load ptr, ptr %5, align 8, !tbaa !5
  %1369 = getelementptr inbounds %struct.lsqpack_dec, ptr %1368, i32 0, i32 17
  %1370 = getelementptr inbounds %struct.anon.10, ptr %1369, i32 0, i32 1
  %1371 = getelementptr inbounds %struct.anon.12, ptr %1370, i32 0, i32 5
  %1372 = load i32, ptr %1371, align 4, !tbaa !22
  %1373 = zext i32 %1372 to i64
  %1374 = getelementptr inbounds i8, ptr %1367, i64 %1373
  %1375 = load ptr, ptr %6, align 8, !tbaa !5
  %1376 = load i64, ptr %13, align 8, !tbaa !9
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %1374, ptr align 1 %1375, i64 %1376, i1 false)
  %1377 = load i64, ptr %13, align 8, !tbaa !9
  %1378 = trunc i64 %1377 to i32
  %1379 = load ptr, ptr %5, align 8, !tbaa !5
  %1380 = getelementptr inbounds %struct.lsqpack_dec, ptr %1379, i32 0, i32 17
  %1381 = getelementptr inbounds %struct.anon.10, ptr %1380, i32 0, i32 1
  %1382 = getelementptr inbounds %struct.anon.12, ptr %1381, i32 0, i32 5
  %1383 = load i32, ptr %1382, align 4, !tbaa !22
  %1384 = add i32 %1383, %1378
  store i32 %1384, ptr %1382, align 4, !tbaa !22
  %1385 = load i64, ptr %13, align 8, !tbaa !9
  %1386 = load ptr, ptr %6, align 8, !tbaa !5
  %1387 = getelementptr inbounds i8, ptr %1386, i64 %1385
  store ptr %1387, ptr %6, align 8, !tbaa !5
  %1388 = load ptr, ptr %5, align 8, !tbaa !5
  %1389 = getelementptr inbounds %struct.lsqpack_dec, ptr %1388, i32 0, i32 17
  %1390 = getelementptr inbounds %struct.anon.10, ptr %1389, i32 0, i32 1
  %1391 = getelementptr inbounds %struct.anon.12, ptr %1390, i32 0, i32 5
  %1392 = load i32, ptr %1391, align 4, !tbaa !22
  %1393 = load ptr, ptr %5, align 8, !tbaa !5
  %1394 = getelementptr inbounds %struct.lsqpack_dec, ptr %1393, i32 0, i32 17
  %1395 = getelementptr inbounds %struct.anon.10, ptr %1394, i32 0, i32 1
  %1396 = getelementptr inbounds %struct.anon.12, ptr %1395, i32 0, i32 2
  %1397 = load i32, ptr %1396, align 8, !tbaa !22
  %1398 = icmp eq i32 %1392, %1397
  br i1 %1398, label %1399, label %1414

1399:                                             ; preds = %1358
  %1400 = load ptr, ptr %5, align 8, !tbaa !5
  %1401 = getelementptr inbounds %struct.lsqpack_dec, ptr %1400, i32 0, i32 17
  %1402 = getelementptr inbounds %struct.anon.10, ptr %1401, i32 0, i32 1
  %1403 = getelementptr inbounds %struct.anon.12, ptr %1402, i32 0, i32 5
  %1404 = load i32, ptr %1403, align 4, !tbaa !22
  %1405 = load ptr, ptr %5, align 8, !tbaa !5
  %1406 = getelementptr inbounds %struct.lsqpack_dec, ptr %1405, i32 0, i32 17
  %1407 = getelementptr inbounds %struct.anon.10, ptr %1406, i32 0, i32 1
  %1408 = getelementptr inbounds %struct.anon.12, ptr %1407, i32 0, i32 3
  %1409 = load ptr, ptr %1408, align 8, !tbaa !22
  %1410 = getelementptr inbounds %struct.lsqpack_dec_table_entry, ptr %1409, i32 0, i32 0
  store i32 %1404, ptr %1410, align 4, !tbaa !28
  %1411 = load ptr, ptr %5, align 8, !tbaa !5
  %1412 = getelementptr inbounds %struct.lsqpack_dec, ptr %1411, i32 0, i32 17
  %1413 = getelementptr inbounds %struct.anon.10, ptr %1412, i32 0, i32 0
  store i32 11, ptr %1413, align 8, !tbaa !21
  br label %1414

1414:                                             ; preds = %1399, %1358
  br label %2094

1415:                                             ; preds = %57
  %1416 = load ptr, ptr %6, align 8, !tbaa !5
  %1417 = getelementptr inbounds i8, ptr %1416, i64 0
  %1418 = load i8, ptr %1417, align 1, !tbaa !22
  %1419 = zext i8 %1418 to i32
  %1420 = and i32 %1419, 128
  %1421 = icmp sgt i32 %1420, 0
  %1422 = zext i1 %1421 to i32
  %1423 = trunc i32 %1422 to i8
  %1424 = load ptr, ptr %5, align 8, !tbaa !5
  %1425 = getelementptr inbounds %struct.lsqpack_dec, ptr %1424, i32 0, i32 17
  %1426 = getelementptr inbounds %struct.anon.10, ptr %1425, i32 0, i32 1
  %1427 = getelementptr inbounds %struct.anon.12, ptr %1426, i32 0, i32 7
  store i8 %1423, ptr %1427, align 4, !tbaa !22
  %1428 = load ptr, ptr %5, align 8, !tbaa !5
  %1429 = getelementptr inbounds %struct.lsqpack_dec, ptr %1428, i32 0, i32 17
  %1430 = getelementptr inbounds %struct.anon.10, ptr %1429, i32 0, i32 1
  %1431 = getelementptr inbounds %struct.anon.12, ptr %1430, i32 0, i32 0
  %1432 = getelementptr inbounds %struct.lsqpack_dec_int_state, ptr %1431, i32 0, i32 0
  store i32 0, ptr %1432, align 8, !tbaa !22
  %1433 = load ptr, ptr %5, align 8, !tbaa !5
  %1434 = getelementptr inbounds %struct.lsqpack_dec, ptr %1433, i32 0, i32 17
  %1435 = getelementptr inbounds %struct.anon.10, ptr %1434, i32 0, i32 0
  store i32 12, ptr %1435, align 8, !tbaa !21
  store i32 7, ptr %12, align 4, !tbaa !11
  br label %1436

1436:                                             ; preds = %1415, %57
  %1437 = load ptr, ptr %8, align 8, !tbaa !5
  %1438 = load i32, ptr %12, align 4, !tbaa !11
  %1439 = load ptr, ptr %5, align 8, !tbaa !5
  %1440 = getelementptr inbounds %struct.lsqpack_dec, ptr %1439, i32 0, i32 17
  %1441 = getelementptr inbounds %struct.anon.10, ptr %1440, i32 0, i32 1
  %1442 = getelementptr inbounds %struct.anon.12, ptr %1441, i32 0, i32 2
  %1443 = load ptr, ptr %5, align 8, !tbaa !5
  %1444 = getelementptr inbounds %struct.lsqpack_dec, ptr %1443, i32 0, i32 17
  %1445 = getelementptr inbounds %struct.anon.10, ptr %1444, i32 0, i32 1
  %1446 = getelementptr inbounds %struct.anon.12, ptr %1445, i32 0, i32 0
  %1447 = call i32 @lsqpack_dec_int24(ptr noundef %6, ptr noundef %1437, i32 noundef %1438, ptr noundef %1442, ptr noundef %1446)
  store i32 %1447, ptr %14, align 4, !tbaa !11
  %1448 = load i32, ptr %14, align 4, !tbaa !11
  %1449 = icmp eq i32 %1448, 0
  br i1 %1449, label %1450, label %1515

1450:                                             ; preds = %1436
  %1451 = load ptr, ptr %5, align 8, !tbaa !5
  %1452 = getelementptr inbounds %struct.lsqpack_dec, ptr %1451, i32 0, i32 17
  %1453 = getelementptr inbounds %struct.anon.10, ptr %1452, i32 0, i32 1
  %1454 = getelementptr inbounds %struct.anon.12, ptr %1453, i32 0, i32 2
  %1455 = load i32, ptr %1454, align 8, !tbaa !22
  %1456 = load ptr, ptr %5, align 8, !tbaa !5
  %1457 = getelementptr inbounds %struct.lsqpack_dec, ptr %1456, i32 0, i32 2
  %1458 = load i32, ptr %1457, align 8, !tbaa !29
  %1459 = load ptr, ptr %5, align 8, !tbaa !5
  %1460 = getelementptr inbounds %struct.lsqpack_dec, ptr %1459, i32 0, i32 17
  %1461 = getelementptr inbounds %struct.anon.10, ptr %1460, i32 0, i32 1
  %1462 = getelementptr inbounds %struct.anon.12, ptr %1461, i32 0, i32 3
  %1463 = load ptr, ptr %1462, align 8, !tbaa !22
  %1464 = getelementptr inbounds %struct.lsqpack_dec_table_entry, ptr %1463, i32 0, i32 0
  %1465 = load i32, ptr %1464, align 4, !tbaa !28
  %1466 = sub i32 %1458, %1465
  %1467 = load ptr, ptr %5, align 8, !tbaa !5
  %1468 = getelementptr inbounds %struct.lsqpack_dec, ptr %1467, i32 0, i32 17
  %1469 = getelementptr inbounds %struct.anon.10, ptr %1468, i32 0, i32 1
  %1470 = getelementptr inbounds %struct.anon.12, ptr %1469, i32 0, i32 7
  %1471 = load i8, ptr %1470, align 4, !tbaa !22
  %1472 = sext i8 %1471 to i32
  %1473 = shl i32 %1472, 1
  %1474 = shl i32 %1466, %1473
  %1475 = icmp ugt i32 %1455, %1474
  br i1 %1475, label %1476, label %1477

1476:                                             ; preds = %1450
  store i32 -1, ptr %4, align 4
  store i32 1, ptr %15, align 4
  br label %2096

1477:                                             ; preds = %1450
  %1478 = load ptr, ptr %5, align 8, !tbaa !5
  %1479 = getelementptr inbounds %struct.lsqpack_dec, ptr %1478, i32 0, i32 17
  %1480 = getelementptr inbounds %struct.anon.10, ptr %1479, i32 0, i32 1
  %1481 = getelementptr inbounds %struct.anon.12, ptr %1480, i32 0, i32 6
  store i32 0, ptr %1481, align 8, !tbaa !22
  %1482 = load ptr, ptr %5, align 8, !tbaa !5
  %1483 = getelementptr inbounds %struct.lsqpack_dec, ptr %1482, i32 0, i32 17
  %1484 = getelementptr inbounds %struct.anon.10, ptr %1483, i32 0, i32 1
  %1485 = getelementptr inbounds %struct.anon.12, ptr %1484, i32 0, i32 5
  store i32 0, ptr %1485, align 4, !tbaa !22
  %1486 = load ptr, ptr %5, align 8, !tbaa !5
  %1487 = getelementptr inbounds %struct.lsqpack_dec, ptr %1486, i32 0, i32 17
  %1488 = getelementptr inbounds %struct.anon.10, ptr %1487, i32 0, i32 1
  %1489 = getelementptr inbounds %struct.anon.12, ptr %1488, i32 0, i32 2
  %1490 = load i32, ptr %1489, align 8, !tbaa !22
  %1491 = icmp ne i32 %1490, 0
  br i1 %1491, label %1492, label %1513

1492:                                             ; preds = %1477
  %1493 = load ptr, ptr %5, align 8, !tbaa !5
  %1494 = getelementptr inbounds %struct.lsqpack_dec, ptr %1493, i32 0, i32 17
  %1495 = getelementptr inbounds %struct.anon.10, ptr %1494, i32 0, i32 1
  %1496 = getelementptr inbounds %struct.anon.12, ptr %1495, i32 0, i32 7
  %1497 = load i8, ptr %1496, align 4, !tbaa !22
  %1498 = icmp ne i8 %1497, 0
  br i1 %1498, label %1499, label %1508

1499:                                             ; preds = %1492
  %1500 = load ptr, ptr %5, align 8, !tbaa !5
  %1501 = getelementptr inbounds %struct.lsqpack_dec, ptr %1500, i32 0, i32 17
  %1502 = getelementptr inbounds %struct.anon.10, ptr %1501, i32 0, i32 0
  store i32 13, ptr %1502, align 8, !tbaa !21
  %1503 = load ptr, ptr %5, align 8, !tbaa !5
  %1504 = getelementptr inbounds %struct.lsqpack_dec, ptr %1503, i32 0, i32 17
  %1505 = getelementptr inbounds %struct.anon.10, ptr %1504, i32 0, i32 1
  %1506 = getelementptr inbounds %struct.anon.12, ptr %1505, i32 0, i32 1
  %1507 = getelementptr inbounds %struct.lsqpack_huff_decode_state, ptr %1506, i32 0, i32 0
  store i32 0, ptr %1507, align 8, !tbaa !22
  br label %1512

1508:                                             ; preds = %1492
  %1509 = load ptr, ptr %5, align 8, !tbaa !5
  %1510 = getelementptr inbounds %struct.lsqpack_dec, ptr %1509, i32 0, i32 17
  %1511 = getelementptr inbounds %struct.anon.10, ptr %1510, i32 0, i32 0
  store i32 14, ptr %1511, align 8, !tbaa !21
  br label %1512

1512:                                             ; preds = %1508, %1499
  br label %1514

1513:                                             ; preds = %1477
  br label %1915

1514:                                             ; preds = %1512
  br label %1520

1515:                                             ; preds = %1436
  %1516 = load i32, ptr %14, align 4, !tbaa !11
  %1517 = icmp eq i32 %1516, -1
  br i1 %1517, label %1518, label %1519

1518:                                             ; preds = %1515
  store i32 0, ptr %4, align 4
  store i32 1, ptr %15, align 4
  br label %2096

1519:                                             ; preds = %1515
  store i32 -1, ptr %4, align 4
  store i32 1, ptr %15, align 4
  br label %2096

1520:                                             ; preds = %1514
  br label %2094

1521:                                             ; preds = %57
  %1522 = load ptr, ptr %8, align 8, !tbaa !5
  %1523 = load ptr, ptr %6, align 8, !tbaa !5
  %1524 = ptrtoint ptr %1522 to i64
  %1525 = ptrtoint ptr %1523 to i64
  %1526 = sub i64 %1524, %1525
  %1527 = trunc i64 %1526 to i32
  %1528 = load ptr, ptr %5, align 8, !tbaa !5
  %1529 = getelementptr inbounds %struct.lsqpack_dec, ptr %1528, i32 0, i32 17
  %1530 = getelementptr inbounds %struct.anon.10, ptr %1529, i32 0, i32 1
  %1531 = getelementptr inbounds %struct.anon.12, ptr %1530, i32 0, i32 2
  %1532 = load i32, ptr %1531, align 8, !tbaa !22
  %1533 = load ptr, ptr %5, align 8, !tbaa !5
  %1534 = getelementptr inbounds %struct.lsqpack_dec, ptr %1533, i32 0, i32 17
  %1535 = getelementptr inbounds %struct.anon.10, ptr %1534, i32 0, i32 1
  %1536 = getelementptr inbounds %struct.anon.12, ptr %1535, i32 0, i32 6
  %1537 = load i32, ptr %1536, align 8, !tbaa !22
  %1538 = sub i32 %1532, %1537
  %1539 = icmp ult i32 %1527, %1538
  br i1 %1539, label %1540, label %1547

1540:                                             ; preds = %1521
  %1541 = load ptr, ptr %8, align 8, !tbaa !5
  %1542 = load ptr, ptr %6, align 8, !tbaa !5
  %1543 = ptrtoint ptr %1541 to i64
  %1544 = ptrtoint ptr %1542 to i64
  %1545 = sub i64 %1543, %1544
  %1546 = trunc i64 %1545 to i32
  br label %1559

1547:                                             ; preds = %1521
  %1548 = load ptr, ptr %5, align 8, !tbaa !5
  %1549 = getelementptr inbounds %struct.lsqpack_dec, ptr %1548, i32 0, i32 17
  %1550 = getelementptr inbounds %struct.anon.10, ptr %1549, i32 0, i32 1
  %1551 = getelementptr inbounds %struct.anon.12, ptr %1550, i32 0, i32 2
  %1552 = load i32, ptr %1551, align 8, !tbaa !22
  %1553 = load ptr, ptr %5, align 8, !tbaa !5
  %1554 = getelementptr inbounds %struct.lsqpack_dec, ptr %1553, i32 0, i32 17
  %1555 = getelementptr inbounds %struct.anon.10, ptr %1554, i32 0, i32 1
  %1556 = getelementptr inbounds %struct.anon.12, ptr %1555, i32 0, i32 6
  %1557 = load i32, ptr %1556, align 8, !tbaa !22
  %1558 = sub i32 %1552, %1557
  br label %1559

1559:                                             ; preds = %1547, %1540
  %1560 = phi i32 [ %1546, %1540 ], [ %1558, %1547 ]
  %1561 = zext i32 %1560 to i64
  store i64 %1561, ptr %13, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 12, ptr %20) #7
  %1562 = load ptr, ptr %6, align 8, !tbaa !5
  %1563 = load i64, ptr %13, align 8, !tbaa !9
  %1564 = trunc i64 %1563 to i32
  %1565 = load ptr, ptr %5, align 8, !tbaa !5
  %1566 = getelementptr inbounds %struct.lsqpack_dec, ptr %1565, i32 0, i32 17
  %1567 = getelementptr inbounds %struct.anon.10, ptr %1566, i32 0, i32 1
  %1568 = getelementptr inbounds %struct.anon.12, ptr %1567, i32 0, i32 3
  %1569 = load ptr, ptr %1568, align 8, !tbaa !22
  %1570 = getelementptr inbounds %struct.lsqpack_dec_table_entry, ptr %1569, i32 0, i32 7
  %1571 = load ptr, ptr %5, align 8, !tbaa !5
  %1572 = getelementptr inbounds %struct.lsqpack_dec, ptr %1571, i32 0, i32 17
  %1573 = getelementptr inbounds %struct.anon.10, ptr %1572, i32 0, i32 1
  %1574 = getelementptr inbounds %struct.anon.12, ptr %1573, i32 0, i32 3
  %1575 = load ptr, ptr %1574, align 8, !tbaa !22
  %1576 = getelementptr inbounds %struct.lsqpack_dec_table_entry, ptr %1575, i32 0, i32 0
  %1577 = load i32, ptr %1576, align 4, !tbaa !28
  %1578 = zext i32 %1577 to i64
  %1579 = getelementptr inbounds [0 x i8], ptr %1570, i64 0, i64 %1578
  %1580 = load ptr, ptr %5, align 8, !tbaa !5
  %1581 = getelementptr inbounds %struct.lsqpack_dec, ptr %1580, i32 0, i32 17
  %1582 = getelementptr inbounds %struct.anon.10, ptr %1581, i32 0, i32 1
  %1583 = getelementptr inbounds %struct.anon.12, ptr %1582, i32 0, i32 5
  %1584 = load i32, ptr %1583, align 4, !tbaa !22
  %1585 = zext i32 %1584 to i64
  %1586 = getelementptr inbounds i8, ptr %1579, i64 %1585
  %1587 = load ptr, ptr %5, align 8, !tbaa !5
  %1588 = getelementptr inbounds %struct.lsqpack_dec, ptr %1587, i32 0, i32 17
  %1589 = getelementptr inbounds %struct.anon.10, ptr %1588, i32 0, i32 1
  %1590 = getelementptr inbounds %struct.anon.12, ptr %1589, i32 0, i32 4
  %1591 = load i32, ptr %1590, align 8, !tbaa !22
  %1592 = load ptr, ptr %5, align 8, !tbaa !5
  %1593 = getelementptr inbounds %struct.lsqpack_dec, ptr %1592, i32 0, i32 17
  %1594 = getelementptr inbounds %struct.anon.10, ptr %1593, i32 0, i32 1
  %1595 = getelementptr inbounds %struct.anon.12, ptr %1594, i32 0, i32 3
  %1596 = load ptr, ptr %1595, align 8, !tbaa !22
  %1597 = getelementptr inbounds %struct.lsqpack_dec_table_entry, ptr %1596, i32 0, i32 0
  %1598 = load i32, ptr %1597, align 4, !tbaa !28
  %1599 = sub i32 %1591, %1598
  %1600 = load ptr, ptr %5, align 8, !tbaa !5
  %1601 = getelementptr inbounds %struct.lsqpack_dec, ptr %1600, i32 0, i32 17
  %1602 = getelementptr inbounds %struct.anon.10, ptr %1601, i32 0, i32 1
  %1603 = getelementptr inbounds %struct.anon.12, ptr %1602, i32 0, i32 5
  %1604 = load i32, ptr %1603, align 4, !tbaa !22
  %1605 = sub i32 %1599, %1604
  %1606 = load ptr, ptr %5, align 8, !tbaa !5
  %1607 = getelementptr inbounds %struct.lsqpack_dec, ptr %1606, i32 0, i32 17
  %1608 = getelementptr inbounds %struct.anon.10, ptr %1607, i32 0, i32 1
  %1609 = getelementptr inbounds %struct.anon.12, ptr %1608, i32 0, i32 1
  %1610 = load ptr, ptr %5, align 8, !tbaa !5
  %1611 = getelementptr inbounds %struct.lsqpack_dec, ptr %1610, i32 0, i32 17
  %1612 = getelementptr inbounds %struct.anon.10, ptr %1611, i32 0, i32 1
  %1613 = getelementptr inbounds %struct.anon.12, ptr %1612, i32 0, i32 6
  %1614 = load i32, ptr %1613, align 8, !tbaa !22
  %1615 = zext i32 %1614 to i64
  %1616 = load i64, ptr %13, align 8, !tbaa !9
  %1617 = add i64 %1615, %1616
  %1618 = load ptr, ptr %5, align 8, !tbaa !5
  %1619 = getelementptr inbounds %struct.lsqpack_dec, ptr %1618, i32 0, i32 17
  %1620 = getelementptr inbounds %struct.anon.10, ptr %1619, i32 0, i32 1
  %1621 = getelementptr inbounds %struct.anon.12, ptr %1620, i32 0, i32 2
  %1622 = load i32, ptr %1621, align 8, !tbaa !22
  %1623 = zext i32 %1622 to i64
  %1624 = icmp eq i64 %1617, %1623
  %1625 = zext i1 %1624 to i32
  %1626 = call { i64, i32 } @lsqpack_huff_decode(ptr noundef %1562, i32 noundef %1564, ptr noundef %1586, i32 noundef %1605, ptr noundef %1609, i32 noundef %1625)
  store { i64, i32 } %1626, ptr %21, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %20, ptr align 8 %21, i64 12, i1 false)
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %11, ptr align 4 %20, i64 12, i1 false), !tbaa.struct !33
  call void @llvm.lifetime.end.p0(i64 12, ptr %20) #7
  %1627 = getelementptr inbounds %struct.huff_decode_retval, ptr %11, i32 0, i32 0
  %1628 = load i32, ptr %1627, align 4, !tbaa !34
  switch i32 %1628, label %1764 [
    i32 0, label %1629
    i32 1, label %1682
    i32 2, label %1704
    i32 3, label %1763
  ]

1629:                                             ; preds = %1559
  %1630 = getelementptr inbounds %struct.huff_decode_retval, ptr %11, i32 0, i32 2
  %1631 = load i32, ptr %1630, align 4, !tbaa !36
  %1632 = load ptr, ptr %6, align 8, !tbaa !5
  %1633 = zext i32 %1631 to i64
  %1634 = getelementptr inbounds i8, ptr %1632, i64 %1633
  store ptr %1634, ptr %6, align 8, !tbaa !5
  %1635 = load ptr, ptr %5, align 8, !tbaa !5
  %1636 = getelementptr inbounds %struct.lsqpack_dec, ptr %1635, i32 0, i32 17
  %1637 = getelementptr inbounds %struct.anon.10, ptr %1636, i32 0, i32 1
  %1638 = getelementptr inbounds %struct.anon.12, ptr %1637, i32 0, i32 5
  %1639 = load i32, ptr %1638, align 4, !tbaa !22
  %1640 = getelementptr inbounds %struct.huff_decode_retval, ptr %11, i32 0, i32 1
  %1641 = load i32, ptr %1640, align 4, !tbaa !37
  %1642 = add i32 %1639, %1641
  %1643 = load ptr, ptr %5, align 8, !tbaa !5
  %1644 = getelementptr inbounds %struct.lsqpack_dec, ptr %1643, i32 0, i32 17
  %1645 = getelementptr inbounds %struct.anon.10, ptr %1644, i32 0, i32 1
  %1646 = getelementptr inbounds %struct.anon.12, ptr %1645, i32 0, i32 3
  %1647 = load ptr, ptr %1646, align 8, !tbaa !22
  %1648 = getelementptr inbounds %struct.lsqpack_dec_table_entry, ptr %1647, i32 0, i32 1
  store i32 %1642, ptr %1648, align 4, !tbaa !38
  %1649 = load ptr, ptr %5, align 8, !tbaa !5
  %1650 = getelementptr inbounds %struct.lsqpack_dec, ptr %1649, i32 0, i32 17
  %1651 = getelementptr inbounds %struct.anon.10, ptr %1650, i32 0, i32 1
  %1652 = getelementptr inbounds %struct.anon.12, ptr %1651, i32 0, i32 3
  %1653 = load ptr, ptr %1652, align 8, !tbaa !22
  %1654 = getelementptr inbounds %struct.lsqpack_dec_table_entry, ptr %1653, i32 0, i32 2
  store i32 1, ptr %1654, align 4, !tbaa !23
  %1655 = load ptr, ptr %5, align 8, !tbaa !5
  %1656 = load ptr, ptr %5, align 8, !tbaa !5
  %1657 = getelementptr inbounds %struct.lsqpack_dec, ptr %1656, i32 0, i32 17
  %1658 = getelementptr inbounds %struct.anon.10, ptr %1657, i32 0, i32 1
  %1659 = getelementptr inbounds %struct.anon.12, ptr %1658, i32 0, i32 3
  %1660 = load ptr, ptr %1659, align 8, !tbaa !22
  %1661 = call i32 @lsqpack_dec_push_entry(ptr noundef %1655, ptr noundef %1660)
  store i32 %1661, ptr %14, align 4, !tbaa !11
  %1662 = load i32, ptr %14, align 4, !tbaa !11
  %1663 = icmp eq i32 0, %1662
  br i1 %1663, label %1664, label %1672

1664:                                             ; preds = %1629
  %1665 = load ptr, ptr %5, align 8, !tbaa !5
  %1666 = getelementptr inbounds %struct.lsqpack_dec, ptr %1665, i32 0, i32 17
  %1667 = getelementptr inbounds %struct.anon.10, ptr %1666, i32 0, i32 0
  store i32 0, ptr %1667, align 8, !tbaa !21
  %1668 = load ptr, ptr %5, align 8, !tbaa !5
  %1669 = getelementptr inbounds %struct.lsqpack_dec, ptr %1668, i32 0, i32 17
  %1670 = getelementptr inbounds %struct.anon.10, ptr %1669, i32 0, i32 1
  %1671 = getelementptr inbounds %struct.anon.12, ptr %1670, i32 0, i32 3
  store ptr null, ptr %1671, align 8, !tbaa !22
  br label %1765

1672:                                             ; preds = %1629
  %1673 = load ptr, ptr %5, align 8, !tbaa !5
  %1674 = getelementptr inbounds %struct.lsqpack_dec, ptr %1673, i32 0, i32 17
  %1675 = getelementptr inbounds %struct.anon.10, ptr %1674, i32 0, i32 1
  %1676 = getelementptr inbounds %struct.anon.12, ptr %1675, i32 0, i32 3
  %1677 = load ptr, ptr %1676, align 8, !tbaa !22
  call void @qdec_decref_entry(ptr noundef %1677)
  %1678 = load ptr, ptr %5, align 8, !tbaa !5
  %1679 = getelementptr inbounds %struct.lsqpack_dec, ptr %1678, i32 0, i32 17
  %1680 = getelementptr inbounds %struct.anon.10, ptr %1679, i32 0, i32 1
  %1681 = getelementptr inbounds %struct.anon.12, ptr %1680, i32 0, i32 3
  store ptr null, ptr %1681, align 8, !tbaa !22
  store i32 -1, ptr %4, align 4
  store i32 1, ptr %15, align 4
  br label %2096

1682:                                             ; preds = %1559
  %1683 = getelementptr inbounds %struct.huff_decode_retval, ptr %11, i32 0, i32 2
  %1684 = load i32, ptr %1683, align 4, !tbaa !36
  %1685 = load ptr, ptr %6, align 8, !tbaa !5
  %1686 = zext i32 %1684 to i64
  %1687 = getelementptr inbounds i8, ptr %1685, i64 %1686
  store ptr %1687, ptr %6, align 8, !tbaa !5
  %1688 = getelementptr inbounds %struct.huff_decode_retval, ptr %11, i32 0, i32 2
  %1689 = load i32, ptr %1688, align 4, !tbaa !36
  %1690 = load ptr, ptr %5, align 8, !tbaa !5
  %1691 = getelementptr inbounds %struct.lsqpack_dec, ptr %1690, i32 0, i32 17
  %1692 = getelementptr inbounds %struct.anon.10, ptr %1691, i32 0, i32 1
  %1693 = getelementptr inbounds %struct.anon.12, ptr %1692, i32 0, i32 6
  %1694 = load i32, ptr %1693, align 8, !tbaa !22
  %1695 = add i32 %1694, %1689
  store i32 %1695, ptr %1693, align 8, !tbaa !22
  %1696 = getelementptr inbounds %struct.huff_decode_retval, ptr %11, i32 0, i32 1
  %1697 = load i32, ptr %1696, align 4, !tbaa !37
  %1698 = load ptr, ptr %5, align 8, !tbaa !5
  %1699 = getelementptr inbounds %struct.lsqpack_dec, ptr %1698, i32 0, i32 17
  %1700 = getelementptr inbounds %struct.anon.10, ptr %1699, i32 0, i32 1
  %1701 = getelementptr inbounds %struct.anon.12, ptr %1700, i32 0, i32 5
  %1702 = load i32, ptr %1701, align 4, !tbaa !22
  %1703 = add i32 %1702, %1697
  store i32 %1703, ptr %1701, align 4, !tbaa !22
  br label %1765

1704:                                             ; preds = %1559
  %1705 = load ptr, ptr %5, align 8, !tbaa !5
  %1706 = getelementptr inbounds %struct.lsqpack_dec, ptr %1705, i32 0, i32 17
  %1707 = getelementptr inbounds %struct.anon.10, ptr %1706, i32 0, i32 1
  %1708 = getelementptr inbounds %struct.anon.12, ptr %1707, i32 0, i32 4
  %1709 = load i32, ptr %1708, align 8, !tbaa !22
  %1710 = icmp ne i32 %1709, 0
  br i1 %1710, label %1711, label %1712

1711:                                             ; preds = %1704
  br label %1713

1712:                                             ; preds = %1704
  call void @__assert_fail(ptr noundef @.str.57, ptr noundef @.str.8, i32 noundef 4923, ptr noundef @__PRETTY_FUNCTION__.lsqpack_dec_enc_in) #10
  unreachable

1713:                                             ; preds = %1711
  %1714 = load ptr, ptr %5, align 8, !tbaa !5
  %1715 = getelementptr inbounds %struct.lsqpack_dec, ptr %1714, i32 0, i32 17
  %1716 = getelementptr inbounds %struct.anon.10, ptr %1715, i32 0, i32 1
  %1717 = getelementptr inbounds %struct.anon.12, ptr %1716, i32 0, i32 4
  %1718 = load i32, ptr %1717, align 8, !tbaa !22
  %1719 = mul i32 %1718, 2
  store i32 %1719, ptr %1717, align 8, !tbaa !22
  %1720 = load ptr, ptr %5, align 8, !tbaa !5
  %1721 = getelementptr inbounds %struct.lsqpack_dec, ptr %1720, i32 0, i32 17
  %1722 = getelementptr inbounds %struct.anon.10, ptr %1721, i32 0, i32 1
  %1723 = getelementptr inbounds %struct.anon.12, ptr %1722, i32 0, i32 3
  %1724 = load ptr, ptr %1723, align 8, !tbaa !22
  %1725 = load ptr, ptr %5, align 8, !tbaa !5
  %1726 = getelementptr inbounds %struct.lsqpack_dec, ptr %1725, i32 0, i32 17
  %1727 = getelementptr inbounds %struct.anon.10, ptr %1726, i32 0, i32 1
  %1728 = getelementptr inbounds %struct.anon.12, ptr %1727, i32 0, i32 4
  %1729 = load i32, ptr %1728, align 8, !tbaa !22
  %1730 = zext i32 %1729 to i64
  %1731 = add i64 28, %1730
  %1732 = call ptr @realloc(ptr noundef %1724, i64 noundef %1731) #9
  store ptr %1732, ptr %9, align 8, !tbaa !5
  %1733 = load ptr, ptr %9, align 8, !tbaa !5
  %1734 = icmp ne ptr %1733, null
  br i1 %1734, label %1736, label %1735

1735:                                             ; preds = %1713
  store i32 -1, ptr %4, align 4
  store i32 1, ptr %15, align 4
  br label %2096

1736:                                             ; preds = %1713
  %1737 = load ptr, ptr %9, align 8, !tbaa !5
  %1738 = load ptr, ptr %5, align 8, !tbaa !5
  %1739 = getelementptr inbounds %struct.lsqpack_dec, ptr %1738, i32 0, i32 17
  %1740 = getelementptr inbounds %struct.anon.10, ptr %1739, i32 0, i32 1
  %1741 = getelementptr inbounds %struct.anon.12, ptr %1740, i32 0, i32 3
  store ptr %1737, ptr %1741, align 8, !tbaa !22
  %1742 = getelementptr inbounds %struct.huff_decode_retval, ptr %11, i32 0, i32 2
  %1743 = load i32, ptr %1742, align 4, !tbaa !36
  %1744 = load ptr, ptr %6, align 8, !tbaa !5
  %1745 = zext i32 %1743 to i64
  %1746 = getelementptr inbounds i8, ptr %1744, i64 %1745
  store ptr %1746, ptr %6, align 8, !tbaa !5
  %1747 = getelementptr inbounds %struct.huff_decode_retval, ptr %11, i32 0, i32 2
  %1748 = load i32, ptr %1747, align 4, !tbaa !36
  %1749 = load ptr, ptr %5, align 8, !tbaa !5
  %1750 = getelementptr inbounds %struct.lsqpack_dec, ptr %1749, i32 0, i32 17
  %1751 = getelementptr inbounds %struct.anon.10, ptr %1750, i32 0, i32 1
  %1752 = getelementptr inbounds %struct.anon.12, ptr %1751, i32 0, i32 6
  %1753 = load i32, ptr %1752, align 8, !tbaa !22
  %1754 = add i32 %1753, %1748
  store i32 %1754, ptr %1752, align 8, !tbaa !22
  %1755 = getelementptr inbounds %struct.huff_decode_retval, ptr %11, i32 0, i32 1
  %1756 = load i32, ptr %1755, align 4, !tbaa !37
  %1757 = load ptr, ptr %5, align 8, !tbaa !5
  %1758 = getelementptr inbounds %struct.lsqpack_dec, ptr %1757, i32 0, i32 17
  %1759 = getelementptr inbounds %struct.anon.10, ptr %1758, i32 0, i32 1
  %1760 = getelementptr inbounds %struct.anon.12, ptr %1759, i32 0, i32 5
  %1761 = load i32, ptr %1760, align 4, !tbaa !22
  %1762 = add i32 %1761, %1756
  store i32 %1762, ptr %1760, align 4, !tbaa !22
  br label %1765

1763:                                             ; preds = %1559
  br label %1764

1764:                                             ; preds = %1763, %1559
  store i32 -1, ptr %4, align 4
  store i32 1, ptr %15, align 4
  br label %2096

1765:                                             ; preds = %1736, %1682, %1664
  br label %2094

1766:                                             ; preds = %57
  %1767 = load ptr, ptr %5, align 8, !tbaa !5
  %1768 = getelementptr inbounds %struct.lsqpack_dec, ptr %1767, i32 0, i32 17
  %1769 = getelementptr inbounds %struct.anon.10, ptr %1768, i32 0, i32 1
  %1770 = getelementptr inbounds %struct.anon.12, ptr %1769, i32 0, i32 4
  %1771 = load i32, ptr %1770, align 8, !tbaa !22
  %1772 = load ptr, ptr %5, align 8, !tbaa !5
  %1773 = getelementptr inbounds %struct.lsqpack_dec, ptr %1772, i32 0, i32 17
  %1774 = getelementptr inbounds %struct.anon.10, ptr %1773, i32 0, i32 1
  %1775 = getelementptr inbounds %struct.anon.12, ptr %1774, i32 0, i32 3
  %1776 = load ptr, ptr %1775, align 8, !tbaa !22
  %1777 = getelementptr inbounds %struct.lsqpack_dec_table_entry, ptr %1776, i32 0, i32 0
  %1778 = load i32, ptr %1777, align 4, !tbaa !28
  %1779 = load ptr, ptr %5, align 8, !tbaa !5
  %1780 = getelementptr inbounds %struct.lsqpack_dec, ptr %1779, i32 0, i32 17
  %1781 = getelementptr inbounds %struct.anon.10, ptr %1780, i32 0, i32 1
  %1782 = getelementptr inbounds %struct.anon.12, ptr %1781, i32 0, i32 2
  %1783 = load i32, ptr %1782, align 8, !tbaa !22
  %1784 = add i32 %1778, %1783
  %1785 = icmp ult i32 %1771, %1784
  br i1 %1785, label %1786, label %1827

1786:                                             ; preds = %1766
  %1787 = load ptr, ptr %5, align 8, !tbaa !5
  %1788 = getelementptr inbounds %struct.lsqpack_dec, ptr %1787, i32 0, i32 17
  %1789 = getelementptr inbounds %struct.anon.10, ptr %1788, i32 0, i32 1
  %1790 = getelementptr inbounds %struct.anon.12, ptr %1789, i32 0, i32 3
  %1791 = load ptr, ptr %1790, align 8, !tbaa !22
  %1792 = getelementptr inbounds %struct.lsqpack_dec_table_entry, ptr %1791, i32 0, i32 0
  %1793 = load i32, ptr %1792, align 4, !tbaa !28
  %1794 = load ptr, ptr %5, align 8, !tbaa !5
  %1795 = getelementptr inbounds %struct.lsqpack_dec, ptr %1794, i32 0, i32 17
  %1796 = getelementptr inbounds %struct.anon.10, ptr %1795, i32 0, i32 1
  %1797 = getelementptr inbounds %struct.anon.12, ptr %1796, i32 0, i32 2
  %1798 = load i32, ptr %1797, align 8, !tbaa !22
  %1799 = add i32 %1793, %1798
  %1800 = load ptr, ptr %5, align 8, !tbaa !5
  %1801 = getelementptr inbounds %struct.lsqpack_dec, ptr %1800, i32 0, i32 17
  %1802 = getelementptr inbounds %struct.anon.10, ptr %1801, i32 0, i32 1
  %1803 = getelementptr inbounds %struct.anon.12, ptr %1802, i32 0, i32 4
  store i32 %1799, ptr %1803, align 8, !tbaa !22
  %1804 = load ptr, ptr %5, align 8, !tbaa !5
  %1805 = getelementptr inbounds %struct.lsqpack_dec, ptr %1804, i32 0, i32 17
  %1806 = getelementptr inbounds %struct.anon.10, ptr %1805, i32 0, i32 1
  %1807 = getelementptr inbounds %struct.anon.12, ptr %1806, i32 0, i32 3
  %1808 = load ptr, ptr %1807, align 8, !tbaa !22
  %1809 = load ptr, ptr %5, align 8, !tbaa !5
  %1810 = getelementptr inbounds %struct.lsqpack_dec, ptr %1809, i32 0, i32 17
  %1811 = getelementptr inbounds %struct.anon.10, ptr %1810, i32 0, i32 1
  %1812 = getelementptr inbounds %struct.anon.12, ptr %1811, i32 0, i32 4
  %1813 = load i32, ptr %1812, align 8, !tbaa !22
  %1814 = zext i32 %1813 to i64
  %1815 = add i64 28, %1814
  %1816 = call ptr @realloc(ptr noundef %1808, i64 noundef %1815) #9
  store ptr %1816, ptr %9, align 8, !tbaa !5
  %1817 = load ptr, ptr %9, align 8, !tbaa !5
  %1818 = icmp ne ptr %1817, null
  br i1 %1818, label %1819, label %1825

1819:                                             ; preds = %1786
  %1820 = load ptr, ptr %9, align 8, !tbaa !5
  %1821 = load ptr, ptr %5, align 8, !tbaa !5
  %1822 = getelementptr inbounds %struct.lsqpack_dec, ptr %1821, i32 0, i32 17
  %1823 = getelementptr inbounds %struct.anon.10, ptr %1822, i32 0, i32 1
  %1824 = getelementptr inbounds %struct.anon.12, ptr %1823, i32 0, i32 3
  store ptr %1820, ptr %1824, align 8, !tbaa !22
  br label %1826

1825:                                             ; preds = %1786
  store i32 -1, ptr %4, align 4
  store i32 1, ptr %15, align 4
  br label %2096

1826:                                             ; preds = %1819
  br label %1827

1827:                                             ; preds = %1826, %1766
  %1828 = load ptr, ptr %8, align 8, !tbaa !5
  %1829 = load ptr, ptr %6, align 8, !tbaa !5
  %1830 = ptrtoint ptr %1828 to i64
  %1831 = ptrtoint ptr %1829 to i64
  %1832 = sub i64 %1830, %1831
  %1833 = trunc i64 %1832 to i32
  %1834 = load ptr, ptr %5, align 8, !tbaa !5
  %1835 = getelementptr inbounds %struct.lsqpack_dec, ptr %1834, i32 0, i32 17
  %1836 = getelementptr inbounds %struct.anon.10, ptr %1835, i32 0, i32 1
  %1837 = getelementptr inbounds %struct.anon.12, ptr %1836, i32 0, i32 2
  %1838 = load i32, ptr %1837, align 8, !tbaa !22
  %1839 = load ptr, ptr %5, align 8, !tbaa !5
  %1840 = getelementptr inbounds %struct.lsqpack_dec, ptr %1839, i32 0, i32 17
  %1841 = getelementptr inbounds %struct.anon.10, ptr %1840, i32 0, i32 1
  %1842 = getelementptr inbounds %struct.anon.12, ptr %1841, i32 0, i32 5
  %1843 = load i32, ptr %1842, align 4, !tbaa !22
  %1844 = sub i32 %1838, %1843
  %1845 = icmp ult i32 %1833, %1844
  br i1 %1845, label %1846, label %1853

1846:                                             ; preds = %1827
  %1847 = load ptr, ptr %8, align 8, !tbaa !5
  %1848 = load ptr, ptr %6, align 8, !tbaa !5
  %1849 = ptrtoint ptr %1847 to i64
  %1850 = ptrtoint ptr %1848 to i64
  %1851 = sub i64 %1849, %1850
  %1852 = trunc i64 %1851 to i32
  br label %1865

1853:                                             ; preds = %1827
  %1854 = load ptr, ptr %5, align 8, !tbaa !5
  %1855 = getelementptr inbounds %struct.lsqpack_dec, ptr %1854, i32 0, i32 17
  %1856 = getelementptr inbounds %struct.anon.10, ptr %1855, i32 0, i32 1
  %1857 = getelementptr inbounds %struct.anon.12, ptr %1856, i32 0, i32 2
  %1858 = load i32, ptr %1857, align 8, !tbaa !22
  %1859 = load ptr, ptr %5, align 8, !tbaa !5
  %1860 = getelementptr inbounds %struct.lsqpack_dec, ptr %1859, i32 0, i32 17
  %1861 = getelementptr inbounds %struct.anon.10, ptr %1860, i32 0, i32 1
  %1862 = getelementptr inbounds %struct.anon.12, ptr %1861, i32 0, i32 5
  %1863 = load i32, ptr %1862, align 4, !tbaa !22
  %1864 = sub i32 %1858, %1863
  br label %1865

1865:                                             ; preds = %1853, %1846
  %1866 = phi i32 [ %1852, %1846 ], [ %1864, %1853 ]
  %1867 = zext i32 %1866 to i64
  store i64 %1867, ptr %13, align 8, !tbaa !9
  %1868 = load ptr, ptr %5, align 8, !tbaa !5
  %1869 = getelementptr inbounds %struct.lsqpack_dec, ptr %1868, i32 0, i32 17
  %1870 = getelementptr inbounds %struct.anon.10, ptr %1869, i32 0, i32 1
  %1871 = getelementptr inbounds %struct.anon.12, ptr %1870, i32 0, i32 3
  %1872 = load ptr, ptr %1871, align 8, !tbaa !22
  %1873 = getelementptr inbounds %struct.lsqpack_dec_table_entry, ptr %1872, i32 0, i32 7
  %1874 = load ptr, ptr %5, align 8, !tbaa !5
  %1875 = getelementptr inbounds %struct.lsqpack_dec, ptr %1874, i32 0, i32 17
  %1876 = getelementptr inbounds %struct.anon.10, ptr %1875, i32 0, i32 1
  %1877 = getelementptr inbounds %struct.anon.12, ptr %1876, i32 0, i32 3
  %1878 = load ptr, ptr %1877, align 8, !tbaa !22
  %1879 = getelementptr inbounds %struct.lsqpack_dec_table_entry, ptr %1878, i32 0, i32 0
  %1880 = load i32, ptr %1879, align 4, !tbaa !28
  %1881 = zext i32 %1880 to i64
  %1882 = getelementptr inbounds [0 x i8], ptr %1873, i64 0, i64 %1881
  %1883 = load ptr, ptr %5, align 8, !tbaa !5
  %1884 = getelementptr inbounds %struct.lsqpack_dec, ptr %1883, i32 0, i32 17
  %1885 = getelementptr inbounds %struct.anon.10, ptr %1884, i32 0, i32 1
  %1886 = getelementptr inbounds %struct.anon.12, ptr %1885, i32 0, i32 5
  %1887 = load i32, ptr %1886, align 4, !tbaa !22
  %1888 = zext i32 %1887 to i64
  %1889 = getelementptr inbounds i8, ptr %1882, i64 %1888
  %1890 = load ptr, ptr %6, align 8, !tbaa !5
  %1891 = load i64, ptr %13, align 8, !tbaa !9
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %1889, ptr align 1 %1890, i64 %1891, i1 false)
  %1892 = load i64, ptr %13, align 8, !tbaa !9
  %1893 = trunc i64 %1892 to i32
  %1894 = load ptr, ptr %5, align 8, !tbaa !5
  %1895 = getelementptr inbounds %struct.lsqpack_dec, ptr %1894, i32 0, i32 17
  %1896 = getelementptr inbounds %struct.anon.10, ptr %1895, i32 0, i32 1
  %1897 = getelementptr inbounds %struct.anon.12, ptr %1896, i32 0, i32 5
  %1898 = load i32, ptr %1897, align 4, !tbaa !22
  %1899 = add i32 %1898, %1893
  store i32 %1899, ptr %1897, align 4, !tbaa !22
  %1900 = load i64, ptr %13, align 8, !tbaa !9
  %1901 = load ptr, ptr %6, align 8, !tbaa !5
  %1902 = getelementptr inbounds i8, ptr %1901, i64 %1900
  store ptr %1902, ptr %6, align 8, !tbaa !5
  %1903 = load ptr, ptr %5, align 8, !tbaa !5
  %1904 = getelementptr inbounds %struct.lsqpack_dec, ptr %1903, i32 0, i32 17
  %1905 = getelementptr inbounds %struct.anon.10, ptr %1904, i32 0, i32 1
  %1906 = getelementptr inbounds %struct.anon.12, ptr %1905, i32 0, i32 5
  %1907 = load i32, ptr %1906, align 4, !tbaa !22
  %1908 = load ptr, ptr %5, align 8, !tbaa !5
  %1909 = getelementptr inbounds %struct.lsqpack_dec, ptr %1908, i32 0, i32 17
  %1910 = getelementptr inbounds %struct.anon.10, ptr %1909, i32 0, i32 1
  %1911 = getelementptr inbounds %struct.anon.12, ptr %1910, i32 0, i32 2
  %1912 = load i32, ptr %1911, align 8, !tbaa !22
  %1913 = icmp eq i32 %1907, %1912
  br i1 %1913, label %1914, label %1960

1914:                                             ; preds = %1865
  br label %1915

1915:                                             ; preds = %1914, %1513
  %1916 = load ptr, ptr %5, align 8, !tbaa !5
  %1917 = getelementptr inbounds %struct.lsqpack_dec, ptr %1916, i32 0, i32 17
  %1918 = getelementptr inbounds %struct.anon.10, ptr %1917, i32 0, i32 1
  %1919 = getelementptr inbounds %struct.anon.12, ptr %1918, i32 0, i32 5
  %1920 = load i32, ptr %1919, align 4, !tbaa !22
  %1921 = load ptr, ptr %5, align 8, !tbaa !5
  %1922 = getelementptr inbounds %struct.lsqpack_dec, ptr %1921, i32 0, i32 17
  %1923 = getelementptr inbounds %struct.anon.10, ptr %1922, i32 0, i32 1
  %1924 = getelementptr inbounds %struct.anon.12, ptr %1923, i32 0, i32 3
  %1925 = load ptr, ptr %1924, align 8, !tbaa !22
  %1926 = getelementptr inbounds %struct.lsqpack_dec_table_entry, ptr %1925, i32 0, i32 1
  store i32 %1920, ptr %1926, align 4, !tbaa !38
  %1927 = load ptr, ptr %5, align 8, !tbaa !5
  %1928 = getelementptr inbounds %struct.lsqpack_dec, ptr %1927, i32 0, i32 17
  %1929 = getelementptr inbounds %struct.anon.10, ptr %1928, i32 0, i32 1
  %1930 = getelementptr inbounds %struct.anon.12, ptr %1929, i32 0, i32 3
  %1931 = load ptr, ptr %1930, align 8, !tbaa !22
  %1932 = getelementptr inbounds %struct.lsqpack_dec_table_entry, ptr %1931, i32 0, i32 2
  store i32 1, ptr %1932, align 4, !tbaa !23
  %1933 = load ptr, ptr %5, align 8, !tbaa !5
  %1934 = load ptr, ptr %5, align 8, !tbaa !5
  %1935 = getelementptr inbounds %struct.lsqpack_dec, ptr %1934, i32 0, i32 17
  %1936 = getelementptr inbounds %struct.anon.10, ptr %1935, i32 0, i32 1
  %1937 = getelementptr inbounds %struct.anon.12, ptr %1936, i32 0, i32 3
  %1938 = load ptr, ptr %1937, align 8, !tbaa !22
  %1939 = call i32 @lsqpack_dec_push_entry(ptr noundef %1933, ptr noundef %1938)
  store i32 %1939, ptr %14, align 4, !tbaa !11
  %1940 = load i32, ptr %14, align 4, !tbaa !11
  %1941 = icmp eq i32 0, %1940
  br i1 %1941, label %1942, label %1950

1942:                                             ; preds = %1915
  %1943 = load ptr, ptr %5, align 8, !tbaa !5
  %1944 = getelementptr inbounds %struct.lsqpack_dec, ptr %1943, i32 0, i32 17
  %1945 = getelementptr inbounds %struct.anon.10, ptr %1944, i32 0, i32 0
  store i32 0, ptr %1945, align 8, !tbaa !21
  %1946 = load ptr, ptr %5, align 8, !tbaa !5
  %1947 = getelementptr inbounds %struct.lsqpack_dec, ptr %1946, i32 0, i32 17
  %1948 = getelementptr inbounds %struct.anon.10, ptr %1947, i32 0, i32 1
  %1949 = getelementptr inbounds %struct.anon.12, ptr %1948, i32 0, i32 3
  store ptr null, ptr %1949, align 8, !tbaa !22
  br label %2094

1950:                                             ; preds = %1915
  %1951 = load ptr, ptr %5, align 8, !tbaa !5
  %1952 = getelementptr inbounds %struct.lsqpack_dec, ptr %1951, i32 0, i32 17
  %1953 = getelementptr inbounds %struct.anon.10, ptr %1952, i32 0, i32 1
  %1954 = getelementptr inbounds %struct.anon.12, ptr %1953, i32 0, i32 3
  %1955 = load ptr, ptr %1954, align 8, !tbaa !22
  call void @qdec_decref_entry(ptr noundef %1955)
  %1956 = load ptr, ptr %5, align 8, !tbaa !5
  %1957 = getelementptr inbounds %struct.lsqpack_dec, ptr %1956, i32 0, i32 17
  %1958 = getelementptr inbounds %struct.anon.10, ptr %1957, i32 0, i32 1
  %1959 = getelementptr inbounds %struct.anon.12, ptr %1958, i32 0, i32 3
  store ptr null, ptr %1959, align 8, !tbaa !22
  store i32 -1, ptr %4, align 4
  store i32 1, ptr %15, align 4
  br label %2096

1960:                                             ; preds = %1865
  br label %2094

1961:                                             ; preds = %57
  br label %1962

1962:                                             ; preds = %1961, %146
  %1963 = load ptr, ptr %8, align 8, !tbaa !5
  %1964 = load i32, ptr %12, align 4, !tbaa !11
  %1965 = load ptr, ptr %5, align 8, !tbaa !5
  %1966 = getelementptr inbounds %struct.lsqpack_dec, ptr %1965, i32 0, i32 17
  %1967 = getelementptr inbounds %struct.anon.10, ptr %1966, i32 0, i32 1
  %1968 = getelementptr inbounds %struct.anon.13, ptr %1967, i32 0, i32 1
  %1969 = load ptr, ptr %5, align 8, !tbaa !5
  %1970 = getelementptr inbounds %struct.lsqpack_dec, ptr %1969, i32 0, i32 17
  %1971 = getelementptr inbounds %struct.anon.10, ptr %1970, i32 0, i32 1
  %1972 = getelementptr inbounds %struct.anon.13, ptr %1971, i32 0, i32 0
  %1973 = call i32 @lsqpack_dec_int24(ptr noundef %6, ptr noundef %1963, i32 noundef %1964, ptr noundef %1968, ptr noundef %1972)
  store i32 %1973, ptr %14, align 4, !tbaa !11
  %1974 = load i32, ptr %14, align 4, !tbaa !11
  %1975 = icmp eq i32 %1974, 0
  br i1 %1975, label %1976, label %2019

1976:                                             ; preds = %1962
  %1977 = load ptr, ptr %5, align 8, !tbaa !5
  %1978 = load ptr, ptr %5, align 8, !tbaa !5
  %1979 = getelementptr inbounds %struct.lsqpack_dec, ptr %1978, i32 0, i32 17
  %1980 = getelementptr inbounds %struct.anon.10, ptr %1979, i32 0, i32 1
  %1981 = getelementptr inbounds %struct.anon.13, ptr %1980, i32 0, i32 1
  %1982 = load i32, ptr %1981, align 8, !tbaa !22
  %1983 = call ptr @qdec_get_table_entry_rel(ptr noundef %1977, i32 noundef %1982)
  store ptr %1983, ptr %9, align 8, !tbaa !5
  %1984 = load ptr, ptr %9, align 8, !tbaa !5
  %1985 = icmp ne ptr %1984, null
  br i1 %1985, label %1987, label %1986

1986:                                             ; preds = %1976
  store i32 -1, ptr %4, align 4
  store i32 1, ptr %15, align 4
  br label %2096

1987:                                             ; preds = %1976
  %1988 = load ptr, ptr %9, align 8, !tbaa !5
  %1989 = getelementptr inbounds %struct.lsqpack_dec_table_entry, ptr %1988, i32 0, i32 0
  %1990 = load i32, ptr %1989, align 4, !tbaa !28
  %1991 = zext i32 %1990 to i64
  %1992 = add i64 28, %1991
  %1993 = load ptr, ptr %9, align 8, !tbaa !5
  %1994 = getelementptr inbounds %struct.lsqpack_dec_table_entry, ptr %1993, i32 0, i32 1
  %1995 = load i32, ptr %1994, align 4, !tbaa !38
  %1996 = zext i32 %1995 to i64
  %1997 = add i64 %1992, %1996
  store i64 %1997, ptr %13, align 8, !tbaa !9
  %1998 = load i64, ptr %13, align 8, !tbaa !9
  %1999 = call noalias ptr @malloc(i64 noundef %1998) #8
  store ptr %1999, ptr %10, align 8, !tbaa !5
  %2000 = load ptr, ptr %10, align 8, !tbaa !5
  %2001 = icmp ne ptr %2000, null
  br i1 %2001, label %2003, label %2002

2002:                                             ; preds = %1987
  store i32 -1, ptr %4, align 4
  store i32 1, ptr %15, align 4
  br label %2096

2003:                                             ; preds = %1987
  %2004 = load ptr, ptr %10, align 8, !tbaa !5
  %2005 = load ptr, ptr %9, align 8, !tbaa !5
  %2006 = load i64, ptr %13, align 8, !tbaa !9
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %2004, ptr align 4 %2005, i64 %2006, i1 false)
  %2007 = load ptr, ptr %10, align 8, !tbaa !5
  %2008 = getelementptr inbounds %struct.lsqpack_dec_table_entry, ptr %2007, i32 0, i32 2
  store i32 1, ptr %2008, align 4, !tbaa !23
  %2009 = load ptr, ptr %5, align 8, !tbaa !5
  %2010 = load ptr, ptr %10, align 8, !tbaa !5
  %2011 = call i32 @lsqpack_dec_push_entry(ptr noundef %2009, ptr noundef %2010)
  %2012 = icmp eq i32 0, %2011
  br i1 %2012, label %2013, label %2017

2013:                                             ; preds = %2003
  %2014 = load ptr, ptr %5, align 8, !tbaa !5
  %2015 = getelementptr inbounds %struct.lsqpack_dec, ptr %2014, i32 0, i32 17
  %2016 = getelementptr inbounds %struct.anon.10, ptr %2015, i32 0, i32 0
  store i32 0, ptr %2016, align 8, !tbaa !21
  br label %2094

2017:                                             ; preds = %2003
  %2018 = load ptr, ptr %10, align 8, !tbaa !5
  call void @qdec_decref_entry(ptr noundef %2018)
  store i32 -1, ptr %4, align 4
  store i32 1, ptr %15, align 4
  br label %2096

2019:                                             ; preds = %1962
  %2020 = load i32, ptr %14, align 4, !tbaa !11
  %2021 = icmp eq i32 %2020, -1
  br i1 %2021, label %2022, label %2023

2022:                                             ; preds = %2019
  store i32 0, ptr %4, align 4
  store i32 1, ptr %15, align 4
  br label %2096

2023:                                             ; preds = %2019
  store i32 -1, ptr %4, align 4
  store i32 1, ptr %15, align 4
  br label %2096

2024:                                             ; preds = %57
  br label %2025

2025:                                             ; preds = %2024, %137
  %2026 = load ptr, ptr %8, align 8, !tbaa !5
  %2027 = load i32, ptr %12, align 4, !tbaa !11
  %2028 = load ptr, ptr %5, align 8, !tbaa !5
  %2029 = getelementptr inbounds %struct.lsqpack_dec, ptr %2028, i32 0, i32 17
  %2030 = getelementptr inbounds %struct.anon.10, ptr %2029, i32 0, i32 1
  %2031 = getelementptr inbounds %struct.anon.14, ptr %2030, i32 0, i32 1
  %2032 = load ptr, ptr %5, align 8, !tbaa !5
  %2033 = getelementptr inbounds %struct.lsqpack_dec, ptr %2032, i32 0, i32 17
  %2034 = getelementptr inbounds %struct.anon.10, ptr %2033, i32 0, i32 1
  %2035 = getelementptr inbounds %struct.anon.14, ptr %2034, i32 0, i32 0
  %2036 = call i32 @lsqpack_dec_int(ptr noundef %6, ptr noundef %2026, i32 noundef %2027, ptr noundef %2031, ptr noundef %2035)
  store i32 %2036, ptr %14, align 4, !tbaa !11
  %2037 = load i32, ptr %14, align 4, !tbaa !11
  %2038 = icmp eq i32 %2037, 0
  br i1 %2038, label %2039, label %2088

2039:                                             ; preds = %2025
  %2040 = load ptr, ptr %5, align 8, !tbaa !5
  %2041 = getelementptr inbounds %struct.lsqpack_dec, ptr %2040, i32 0, i32 17
  %2042 = getelementptr inbounds %struct.anon.10, ptr %2041, i32 0, i32 1
  %2043 = getelementptr inbounds %struct.anon.14, ptr %2042, i32 0, i32 1
  %2044 = load i64, ptr %2043, align 8, !tbaa !22
  %2045 = load ptr, ptr %5, align 8, !tbaa !5
  %2046 = getelementptr inbounds %struct.lsqpack_dec, ptr %2045, i32 0, i32 1
  %2047 = load i32, ptr %2046, align 4, !tbaa !39
  %2048 = zext i32 %2047 to i64
  %2049 = icmp ule i64 %2044, %2048
  br i1 %2049, label %2050, label %2087

2050:                                             ; preds = %2039
  %2051 = load ptr, ptr %5, align 8, !tbaa !5
  %2052 = getelementptr inbounds %struct.lsqpack_dec, ptr %2051, i32 0, i32 17
  %2053 = getelementptr inbounds %struct.anon.10, ptr %2052, i32 0, i32 0
  store i32 0, ptr %2053, align 8, !tbaa !21
  br label %2054

2054:                                             ; preds = %2050
  %2055 = load ptr, ptr %5, align 8, !tbaa !5
  %2056 = getelementptr inbounds %struct.lsqpack_dec, ptr %2055, i32 0, i32 11
  %2057 = load ptr, ptr %2056, align 8, !tbaa !13
  %2058 = icmp ne ptr %2057, null
  br i1 %2058, label %2059, label %2077

2059:                                             ; preds = %2054
  %2060 = load ptr, ptr %5, align 8, !tbaa !5
  %2061 = getelementptr inbounds %struct.lsqpack_dec, ptr %2060, i32 0, i32 11
  %2062 = load ptr, ptr %2061, align 8, !tbaa !13
  %2063 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2062, ptr noundef @.str.37) #7
  %2064 = load ptr, ptr %5, align 8, !tbaa !5
  %2065 = getelementptr inbounds %struct.lsqpack_dec, ptr %2064, i32 0, i32 11
  %2066 = load ptr, ptr %2065, align 8, !tbaa !13
  %2067 = load ptr, ptr %5, align 8, !tbaa !5
  %2068 = getelementptr inbounds %struct.lsqpack_dec, ptr %2067, i32 0, i32 17
  %2069 = getelementptr inbounds %struct.anon.10, ptr %2068, i32 0, i32 1
  %2070 = getelementptr inbounds %struct.anon.14, ptr %2069, i32 0, i32 1
  %2071 = load i64, ptr %2070, align 8, !tbaa !22
  %2072 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2066, ptr noundef @.str.58, i64 noundef %2071) #7
  %2073 = load ptr, ptr %5, align 8, !tbaa !5
  %2074 = getelementptr inbounds %struct.lsqpack_dec, ptr %2073, i32 0, i32 11
  %2075 = load ptr, ptr %2074, align 8, !tbaa !13
  %2076 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2075, ptr noundef @.str.2) #7
  br label %2077

2077:                                             ; preds = %2059, %2054
  br label %2078

2078:                                             ; preds = %2077
  br label %2079

2079:                                             ; preds = %2078
  %2080 = load ptr, ptr %5, align 8, !tbaa !5
  %2081 = load ptr, ptr %5, align 8, !tbaa !5
  %2082 = getelementptr inbounds %struct.lsqpack_dec, ptr %2081, i32 0, i32 17
  %2083 = getelementptr inbounds %struct.anon.10, ptr %2082, i32 0, i32 1
  %2084 = getelementptr inbounds %struct.anon.14, ptr %2083, i32 0, i32 1
  %2085 = load i64, ptr %2084, align 8, !tbaa !22
  %2086 = trunc i64 %2085 to i32
  call void @qdec_update_max_capacity(ptr noundef %2080, i32 noundef %2086)
  br label %2094

2087:                                             ; preds = %2039
  store i32 -1, ptr %4, align 4
  store i32 1, ptr %15, align 4
  br label %2096

2088:                                             ; preds = %2025
  %2089 = load i32, ptr %14, align 4, !tbaa !11
  %2090 = icmp eq i32 %2089, -1
  br i1 %2090, label %2091, label %2092

2091:                                             ; preds = %2088
  store i32 0, ptr %4, align 4
  store i32 1, ptr %15, align 4
  br label %2096

2092:                                             ; preds = %2088
  store i32 -1, ptr %4, align 4
  store i32 1, ptr %15, align 4
  br label %2096

2093:                                             ; preds = %57
  call void @__assert_fail(ptr noundef @.str.59, ptr noundef @.str.8, i32 noundef 5019, ptr noundef @__PRETTY_FUNCTION__.lsqpack_dec_enc_in) #10
  unreachable

2094:                                             ; preds = %2079, %2013, %1960, %1942, %1765, %1520, %1414, %1305, %1110, %994, %976, %811, %541, %220
  br label %53, !llvm.loop !40

2095:                                             ; preds = %53
  store i32 0, ptr %4, align 4
  store i32 1, ptr %15, align 4
  br label %2096

2096:                                             ; preds = %2095, %2092, %2091, %2087, %2023, %2022, %2017, %2002, %1986, %1950, %1825, %1764, %1735, %1672, %1519, %1518, %1476, %1304, %1275, %1115, %1114, %1075, %1028, %984, %810, %781, %720, %540, %539, %406, %345, %228, %227, %210, %190
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #7
  call void @llvm.lifetime.end.p0(i64 12, ptr %11) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #7
  %2097 = load i32, ptr %4, align 4
  ret i32 %2097
}

; Function Attrs: nounwind uwtable
declare hidden ptr @qdec_get_table_entry_rel(ptr noundef, i32 noundef) #5

; Function Attrs: nounwind uwtable
declare hidden { i64, i32 } @lsqpack_huff_decode(ptr noundef, i32 noundef, ptr noundef, i32 noundef, ptr noundef, i32 noundef) #5

; Function Attrs: nounwind uwtable
declare hidden i32 @lsqpack_dec_push_entry(ptr noundef, ptr noundef) #5

; Function Attrs: nounwind allocsize(1)
declare ptr @realloc(ptr noundef, i64 noundef) #6

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

attributes #0 = { 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 #1 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { nounwind allocsize(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 = { 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 nounwind willreturn memory(argmem: readwrite) }
attributes #5 = { 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 #6 = { nounwind allocsize(1) "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 #7 = { nounwind }
attributes #8 = { nounwind allocsize(0) }
attributes #9 = { nounwind allocsize(1) }
attributes #10 = { noreturn nounwind }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"long", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"int", !7, i64 0}
!13 = !{!14, !6, i64 48}
!14 = !{!"lsqpack_dec", !12, i64 0, !12, i64 4, !12, i64 8, !12, i64 12, !12, i64 16, !12, i64 20, !12, i64 24, !12, i64 28, !12, i64 32, !12, i64 36, !6, i64 40, !6, i64 48, !15, i64 56, !16, i64 80, !7, i64 96, !12, i64 224, !17, i64 228, !18, i64 232, !19, i64 328}
!15 = !{!"lsqpack_ringbuf", !12, i64 0, !12, i64 4, !12, i64 8, !6, i64 16}
!16 = !{!"", !6, i64 0, !6, i64 8}
!17 = !{!"float", !7, i64 0}
!18 = !{!"", !12, i64 0, !7, i64 8}
!19 = !{!"lsqpack_dec_err", !12, i64 0, !12, i64 4, !10, i64 8, !10, i64 16}
!20 = !{!14, !12, i64 24}
!21 = !{!14, !12, i64 232}
!22 = !{!7, !7, i64 0}
!23 = !{!24, !12, i64 8}
!24 = !{!"lsqpack_dec_table_entry", !12, i64 0, !12, i64 4, !12, i64 8, !12, i64 12, !12, i64 16, !12, i64 20, !12, i64 24, !7, i64 28}
!25 = !{!26, !12, i64 16}
!26 = !{!"static_table_entry", !6, i64 0, !6, i64 8, !12, i64 16, !12, i64 20}
!27 = !{!26, !6, i64 0}
!28 = !{!24, !12, i64 0}
!29 = !{!14, !12, i64 8}
!30 = !{!24, !12, i64 24}
!31 = !{!24, !12, i64 12}
!32 = !{!24, !12, i64 20}
!33 = !{i64 0, i64 4, !11, i64 4, i64 4, !11, i64 8, i64 4, !11}
!34 = !{!35, !12, i64 0}
!35 = !{!"huff_decode_retval", !12, i64 0, !12, i64 4, !12, i64 8}
!36 = !{!35, !12, i64 8}
!37 = !{!35, !12, i64 4}
!38 = !{!24, !12, i64 4}
!39 = !{!14, !12, i64 4}
!40 = distinct !{!40, !41}
!41 = !{!"llvm.loop.mustprogress"}


; 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.static_table_entry = type { ptr, ptr, i32, i32 }

@.str.2 = external hidden unnamed_addr constant [2 x i8], align 1
@static_table = external hidden local_unnamed_addr constant [99 x %struct.static_table_entry], align 16
@.str.8 = external hidden unnamed_addr constant [66 x i8], align 1
@name_hashes = external hidden local_unnamed_addr constant [99 x i32], align 16
@.str.37 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.54 = external hidden unnamed_addr constant [32 x i8], align 1
@.str.55 = external hidden unnamed_addr constant [37 x i8], align 1
@__PRETTY_FUNCTION__.lsqpack_dec_enc_in = external hidden unnamed_addr constant [76 x i8], align 1
@.str.56 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.57 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.58 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.59 = external hidden unnamed_addr constant [2 x i8], align 1

; Function Attrs: nofree nounwind
declare noundef i32 @fprintf(ptr nocapture noundef, ptr nocapture noundef readonly, ...) local_unnamed_addr #0

; Function Attrs: mustprogress nofree nounwind willreturn allockind("alloc,uninitialized") allocsize(0) memory(inaccessiblemem: readwrite)
declare noalias noundef ptr @malloc(i64 noundef) local_unnamed_addr #1

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

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

; Function Attrs: nounwind uwtable
declare dso_local i32 @lsqpack_dec_int(ptr noundef, ptr noundef, i32 noundef, ptr noundef, ptr noundef) local_unnamed_addr #4

; Function Attrs: nounwind uwtable
declare dso_local i32 @lsqpack_dec_int24(ptr noundef, ptr noundef, i32 noundef, ptr noundef, ptr noundef) local_unnamed_addr #4

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

; Function Attrs: nounwind uwtable
define dso_local range(i32 -1, 1) i32 @lsqpack_dec_enc_in(ptr noundef %0, ptr noundef %1, i64 noundef %2) local_unnamed_addr #4 {
  %4 = alloca ptr, align 8
  store ptr %1, ptr %4, align 8, !tbaa !5
  %5 = getelementptr inbounds i8, ptr %1, i64 %2
  %6 = getelementptr inbounds i8, ptr %0, i64 48
  %7 = load ptr, ptr %6, align 8, !tbaa !9
  %.not = icmp eq ptr %7, null
  br i1 %.not, label %14, label %8

8:                                                ; preds = %3
  %9 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef nonnull %7, ptr noundef nonnull @.str.37) #8
  %10 = load ptr, ptr %6, align 8, !tbaa !9
  %11 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %10, ptr noundef nonnull @.str.54, i64 noundef %2) #8
  %12 = load ptr, ptr %6, align 8, !tbaa !9
  %13 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %12, ptr noundef nonnull @.str.2) #8
  br label %14

14:                                               ; preds = %8, %3
  %15 = trunc i64 %2 to i32
  %16 = getelementptr inbounds i8, ptr %0, i64 24
  %17 = load i32, ptr %16, align 8, !tbaa !18
  %18 = add i32 %17, %15
  store i32 %18, ptr %16, align 8, !tbaa !18
  %19 = icmp sgt i64 %2, 0
  br i1 %19, label %.lr.ph, label %.loopexit

.lr.ph:                                           ; preds = %14
  %20 = getelementptr inbounds i8, ptr %0, i64 232
  %21 = getelementptr inbounds i8, ptr %0, i64 288
  %22 = getelementptr inbounds i8, ptr %0, i64 280
  %23 = getelementptr inbounds i8, ptr %0, i64 272
  %24 = ptrtoint ptr %5 to i64
  %25 = getelementptr inbounds i8, ptr %0, i64 292
  %26 = getelementptr inbounds i8, ptr %0, i64 296
  %27 = getelementptr inbounds i8, ptr %0, i64 264
  %28 = getelementptr inbounds i8, ptr %0, i64 240
  %29 = getelementptr inbounds i8, ptr %0, i64 300
  %30 = getelementptr inbounds i8, ptr %0, i64 8
  %31 = getelementptr inbounds i8, ptr %0, i64 304
  %32 = getelementptr inbounds i8, ptr %0, i64 276
  %33 = getelementptr inbounds i8, ptr %0, i64 308
  %34 = getelementptr inbounds i8, ptr %0, i64 312
  %35 = getelementptr inbounds i8, ptr %0, i64 316
  %36 = getelementptr inbounds i8, ptr %0, i64 320
  %37 = getelementptr inbounds i8, ptr %0, i64 321
  %38 = getelementptr inbounds i8, ptr %0, i64 4
  br label %39

39:                                               ; preds = %.lr.ph, %505
  %40 = phi ptr [ %1, %.lr.ph ], [ %506, %505 ]
  %.0425510 = phi i32 [ -1, %.lr.ph ], [ %.9, %505 ]
  %41 = load i32, ptr %20, align 8, !tbaa !19
  switch i32 %41, label %504 [
    i32 0, label %42
    i32 1, label %52
    i32 2, label %67
    i32 3, label %69
    i32 5, label %122
    i32 4, label %196
    i32 8, label %240
    i32 9, label %261
    i32 10, label %312
    i32 11, label %335
    i32 12, label %337
    i32 13, label %354
    i32 14, label %420
    i32 6, label %466
    i32 7, label %486
  ]

42:                                               ; preds = %39
  %43 = load i8, ptr %40, align 1, !tbaa !20
  %.not484 = icmp sgt i8 %43, -1
  br i1 %.not484, label %46, label %44

44:                                               ; preds = %42
  %45 = lshr i8 %43, 6
  %.lobit495 = and i8 %45, 1
  store i8 %.lobit495, ptr %37, align 1, !tbaa !20
  store i32 0, ptr %28, align 8, !tbaa !20
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %22, i8 0, i64 16, i1 false)
  store i32 1, ptr %20, align 8, !tbaa !19
  br label %52

46:                                               ; preds = %42
  %.not485 = icmp ult i8 %43, 64
  br i1 %.not485, label %49, label %47

47:                                               ; preds = %46
  %48 = lshr i8 %43, 5
  %.lobit491 = and i8 %48, 1
  store i8 %.lobit491, ptr %29, align 4, !tbaa !20
  store i32 0, ptr %28, align 8, !tbaa !20
  store ptr null, ptr %22, align 8, !tbaa !20
  store i32 8, ptr %20, align 8, !tbaa !19
  br label %240

49:                                               ; preds = %46
  %.not486 = icmp ult i8 %43, 32
  store i32 0, ptr %28, align 8, !tbaa !20
  br i1 %.not486, label %51, label %50

50:                                               ; preds = %49
  store i32 7, ptr %20, align 8, !tbaa !19
  br label %486

51:                                               ; preds = %49
  store i32 6, ptr %20, align 8, !tbaa !19
  br label %466

52:                                               ; preds = %39, %44
  %.1 = phi i32 [ %.0425510, %39 ], [ 6, %44 ]
  %53 = call i32 @lsqpack_dec_int24(ptr noundef nonnull %4, ptr noundef nonnull %5, i32 noundef %.1, ptr noundef nonnull %23, ptr noundef nonnull %28)
  switch i32 %53, label %.loopexit [
    i32 0, label %54
    i32 -1, label %.loopexit.loopexit
  ]

54:                                               ; preds = %52
  %55 = load i8, ptr %37, align 1, !tbaa !20
  %.not496 = icmp eq i8 %55, 0
  %56 = load i32, ptr %23, align 8, !tbaa !20
  br i1 %.not496, label %60, label %57

57:                                               ; preds = %54
  %58 = icmp ult i32 %56, 99
  br i1 %58, label %59, label %.loopexit.loopexit

59:                                               ; preds = %57
  store ptr null, ptr %22, align 8, !tbaa !20
  br label %66

60:                                               ; preds = %54
  %61 = call ptr @qdec_get_table_entry_rel(ptr noundef nonnull %0, i32 noundef %56)
  store ptr %61, ptr %22, align 8, !tbaa !20
  %.not497 = icmp eq ptr %61, null
  br i1 %.not497, label %.loopexit.loopexit, label %62

62:                                               ; preds = %60
  %63 = getelementptr inbounds i8, ptr %61, i64 8
  %64 = load i32, ptr %63, align 4, !tbaa !21
  %65 = add i32 %64, 1
  store i32 %65, ptr %63, align 4, !tbaa !21
  br label %66

66:                                               ; preds = %62, %59
  store i32 2, ptr %20, align 8, !tbaa !19
  br label %505

67:                                               ; preds = %39
  %68 = load i8, ptr %40, align 1, !tbaa !20
  %.lobit476 = lshr i8 %68, 7
  store i8 %.lobit476, ptr %36, align 8, !tbaa !20
  store i32 0, ptr %28, align 8, !tbaa !20
  store i32 3, ptr %20, align 8, !tbaa !19
  br label %69

69:                                               ; preds = %67, %39
  %.2 = phi i32 [ %.0425510, %39 ], [ 7, %67 ]
  %70 = call i32 @lsqpack_dec_int24(ptr noundef nonnull %4, ptr noundef nonnull %5, i32 noundef %.2, ptr noundef nonnull %32, ptr noundef nonnull %28)
  switch i32 %70, label %.loopexit [
    i32 0, label %71
    i32 -1, label %.loopexit.loopexit
  ]

71:                                               ; preds = %69
  %72 = load i8, ptr %37, align 1, !tbaa !20
  %.not477 = icmp eq i8 %72, 0
  br i1 %.not477, label %80, label %73

73:                                               ; preds = %71
  %74 = load i32, ptr %23, align 8, !tbaa !20
  %75 = zext i32 %74 to i64
  %76 = getelementptr inbounds [99 x %struct.static_table_entry], ptr @static_table, i64 0, i64 %75, i32 2
  %77 = load i32, ptr %76, align 8, !tbaa !23
  store i32 %77, ptr %35, align 4, !tbaa !20
  %78 = getelementptr inbounds [99 x %struct.static_table_entry], ptr @static_table, i64 0, i64 %75
  %79 = load ptr, ptr %78, align 8, !tbaa !25
  br label %84

80:                                               ; preds = %71
  %81 = load ptr, ptr %22, align 8, !tbaa !20
  %82 = load i32, ptr %81, align 4, !tbaa !26
  store i32 %82, ptr %35, align 4, !tbaa !20
  %83 = getelementptr inbounds i8, ptr %81, i64 28
  br label %84

84:                                               ; preds = %80, %73
  %storemerge = phi ptr [ %79, %73 ], [ %83, %80 ]
  %85 = phi i32 [ %77, %73 ], [ %82, %80 ]
  store ptr %storemerge, ptr %26, align 8, !tbaa !20
  %86 = load i32, ptr %32, align 4, !tbaa !20
  %87 = load i32, ptr %30, align 8, !tbaa !27
  %88 = sub i32 %87, %85
  %89 = load i8, ptr %36, align 8, !tbaa !20
  %90 = sext i8 %89 to i32
  %91 = shl nsw i32 %90, 1
  %92 = shl i32 %88, %91
  %93 = icmp ugt i32 %86, %92
  br i1 %93, label %.loopexit.loopexit, label %94

94:                                               ; preds = %84
  %.not478 = icmp eq i8 %89, 0
  %95 = lshr i32 %86, 1
  %96 = select i1 %.not478, i32 0, i32 %95
  %storemerge564 = add i32 %86, %96
  store i32 %storemerge564, ptr %31, align 8, !tbaa !20
  %97 = zext i32 %85 to i64
  %98 = add nuw nsw i64 %97, 28
  %99 = zext i32 %storemerge564 to i64
  %100 = add nuw nsw i64 %98, %99
  %101 = call noalias ptr @malloc(i64 noundef %100) #9
  store ptr %101, ptr %21, align 8, !tbaa !20
  %.not479 = icmp eq ptr %101, null
  br i1 %.not479, label %.loopexit.loopexit, label %102

102:                                              ; preds = %94
  br i1 %.not477, label %107, label %103

103:                                              ; preds = %102
  %104 = load i32, ptr %23, align 8, !tbaa !20
  %105 = zext i32 %104 to i64
  %106 = getelementptr inbounds [99 x i32], ptr @name_hashes, i64 0, i64 %105
  br label %115

107:                                              ; preds = %102
  %108 = load ptr, ptr %22, align 8, !tbaa !20
  %109 = getelementptr inbounds i8, ptr %108, i64 24
  %110 = load i32, ptr %109, align 4, !tbaa !28
  %111 = and i32 %110, 5
  %112 = getelementptr inbounds i8, ptr %108, i64 12
  %113 = getelementptr inbounds i8, ptr %108, i64 20
  %114 = load i32, ptr %113, align 4, !tbaa !29
  br label %115

115:                                              ; preds = %107, %103
  %.sink559 = phi i32 [ %111, %107 ], [ 5, %103 ]
  %.sink558.in = phi ptr [ %112, %107 ], [ %106, %103 ]
  %.sink = phi i32 [ %114, %107 ], [ %104, %103 ]
  %.sink558 = load i32, ptr %.sink558.in, align 4, !tbaa !30
  %116 = getelementptr inbounds i8, ptr %101, i64 24
  store i32 %.sink559, ptr %116, align 4
  %117 = getelementptr inbounds i8, ptr %101, i64 12
  store i32 %.sink558, ptr %117, align 4
  %118 = getelementptr inbounds i8, ptr %101, i64 20
  store i32 %.sink, ptr %118, align 4
  store i32 %85, ptr %101, align 4, !tbaa !26
  store i32 0, ptr %34, align 8, !tbaa !20
  store i32 0, ptr %33, align 4, !tbaa !20
  %.not481 = icmp eq i32 %86, 0
  br i1 %.not481, label %220, label %119

119:                                              ; preds = %115
  br i1 %.not478, label %121, label %120

120:                                              ; preds = %119
  store i32 5, ptr %20, align 8, !tbaa !19
  store i32 0, ptr %27, align 8, !tbaa !20
  br label %505

121:                                              ; preds = %119
  store i32 4, ptr %20, align 8, !tbaa !19
  br label %505

122:                                              ; preds = %39
  %123 = ptrtoint ptr %40 to i64
  %124 = sub i64 %24, %123
  %125 = trunc i64 %124 to i32
  %126 = load i32, ptr %32, align 4, !tbaa !20
  %127 = load i32, ptr %34, align 8, !tbaa !20
  %128 = sub i32 %126, %127
  %. = call i32 @llvm.umin.i32(i32 %128, i32 %125)
  %129 = zext i32 %. to i64
  %130 = load ptr, ptr %21, align 8, !tbaa !20
  %131 = getelementptr inbounds i8, ptr %130, i64 28
  %132 = load i32, ptr %130, align 4, !tbaa !26
  %133 = zext i32 %132 to i64
  %134 = getelementptr inbounds [0 x i8], ptr %131, i64 0, i64 %133
  %135 = load i32, ptr %33, align 4, !tbaa !20
  %136 = zext i32 %135 to i64
  %137 = getelementptr inbounds i8, ptr %134, i64 %136
  %138 = load i32, ptr %31, align 8, !tbaa !20
  %139 = sub i32 %138, %135
  %140 = zext i32 %127 to i64
  %141 = add nuw nsw i64 %129, %140
  %142 = zext i32 %126 to i64
  %143 = icmp eq i64 %141, %142
  %144 = zext i1 %143 to i32
  %145 = call { i64, i32 } @lsqpack_huff_decode(ptr noundef %40, i32 noundef %., ptr noundef nonnull %137, i32 noundef %139, ptr noundef nonnull %27, i32 noundef %144)
  %.fca.0.extract8 = extractvalue { i64, i32 } %145, 0
  %.fca.1.extract9 = extractvalue { i64, i32 } %145, 1
  %.sroa.053.0.extract.trunc = trunc i64 %.fca.0.extract8 to i32
  switch i32 %.sroa.053.0.extract.trunc, label %.loopexit.loopexit [
    i32 0, label %146
    i32 1, label %170
    i32 2, label %178
  ]

146:                                              ; preds = %122
  %147 = load ptr, ptr %4, align 8, !tbaa !5
  %148 = zext i32 %.fca.1.extract9 to i64
  %149 = getelementptr inbounds i8, ptr %147, i64 %148
  store ptr %149, ptr %4, align 8, !tbaa !5
  %150 = load i32, ptr %33, align 4, !tbaa !20
  %.sroa.053.4.extract.shift = lshr i64 %.fca.0.extract8, 32
  %.sroa.053.4.extract.trunc = trunc nuw i64 %.sroa.053.4.extract.shift to i32
  %151 = add i32 %150, %.sroa.053.4.extract.trunc
  %152 = load ptr, ptr %21, align 8, !tbaa !20
  %153 = getelementptr inbounds i8, ptr %152, i64 4
  store i32 %151, ptr %153, align 4, !tbaa !31
  %154 = load ptr, ptr %21, align 8, !tbaa !20
  %155 = getelementptr inbounds i8, ptr %154, i64 8
  store i32 1, ptr %155, align 4, !tbaa !21
  %156 = load ptr, ptr %21, align 8, !tbaa !20
  %157 = getelementptr inbounds i8, ptr %156, i64 28
  %158 = load ptr, ptr %26, align 8, !tbaa !20
  %159 = load i32, ptr %35, align 4, !tbaa !20
  %160 = zext i32 %159 to i64
  call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 4 %157, ptr align 1 %158, i64 %160, i1 false)
  %161 = load ptr, ptr %22, align 8, !tbaa !20
  %.not475 = icmp eq ptr %161, null
  br i1 %.not475, label %163, label %162

162:                                              ; preds = %146
  call void @qdec_decref_entry(ptr noundef nonnull %161)
  store ptr null, ptr %22, align 8, !tbaa !20
  br label %163

163:                                              ; preds = %162, %146
  %164 = load ptr, ptr %21, align 8, !tbaa !20
  %165 = call i32 @lsqpack_dec_push_entry(ptr noundef nonnull %0, ptr noundef %164)
  %166 = icmp eq i32 %165, 0
  br i1 %166, label %167, label %168

167:                                              ; preds = %163
  store i32 0, ptr %20, align 8, !tbaa !19
  store ptr null, ptr %21, align 8, !tbaa !20
  br label %505

168:                                              ; preds = %163
  %169 = load ptr, ptr %21, align 8, !tbaa !20
  call void @qdec_decref_entry(ptr noundef %169)
  store ptr null, ptr %21, align 8, !tbaa !20
  br label %.loopexit

170:                                              ; preds = %122
  %171 = load ptr, ptr %4, align 8, !tbaa !5
  %172 = zext i32 %.fca.1.extract9 to i64
  %173 = getelementptr inbounds i8, ptr %171, i64 %172
  store ptr %173, ptr %4, align 8, !tbaa !5
  %174 = load i32, ptr %34, align 8, !tbaa !20
  %175 = add i32 %174, %.fca.1.extract9
  store i32 %175, ptr %34, align 8, !tbaa !20
  %.sroa.053.4.extract.shift59 = lshr i64 %.fca.0.extract8, 32
  %.sroa.053.4.extract.trunc60 = trunc nuw i64 %.sroa.053.4.extract.shift59 to i32
  %176 = load i32, ptr %33, align 4, !tbaa !20
  %177 = add i32 %176, %.sroa.053.4.extract.trunc60
  store i32 %177, ptr %33, align 4, !tbaa !20
  br label %505

178:                                              ; preds = %122
  %179 = load i32, ptr %31, align 8, !tbaa !20
  %180 = shl i32 %179, 1
  store i32 %180, ptr %31, align 8, !tbaa !20
  %181 = load ptr, ptr %21, align 8, !tbaa !20
  %182 = load i32, ptr %35, align 4, !tbaa !20
  %183 = zext i32 %182 to i64
  %184 = zext i32 %180 to i64
  %185 = add nuw nsw i64 %184, 28
  %186 = add nuw nsw i64 %185, %183
  %187 = call ptr @realloc(ptr noundef %181, i64 noundef %186) #10
  %.not474 = icmp eq ptr %187, null
  br i1 %.not474, label %.loopexit.loopexit, label %188

188:                                              ; preds = %178
  store ptr %187, ptr %21, align 8, !tbaa !20
  %189 = load ptr, ptr %4, align 8, !tbaa !5
  %190 = zext i32 %.fca.1.extract9 to i64
  %191 = getelementptr inbounds i8, ptr %189, i64 %190
  store ptr %191, ptr %4, align 8, !tbaa !5
  %192 = load i32, ptr %34, align 8, !tbaa !20
  %193 = add i32 %192, %.fca.1.extract9
  store i32 %193, ptr %34, align 8, !tbaa !20
  %.sroa.053.4.extract.shift62 = lshr i64 %.fca.0.extract8, 32
  %.sroa.053.4.extract.trunc63 = trunc nuw i64 %.sroa.053.4.extract.shift62 to i32
  %194 = load i32, ptr %33, align 4, !tbaa !20
  %195 = add i32 %194, %.sroa.053.4.extract.trunc63
  store i32 %195, ptr %33, align 4, !tbaa !20
  br label %505

196:                                              ; preds = %39
  %197 = load i32, ptr %31, align 8, !tbaa !20
  %198 = load i32, ptr %32, align 4, !tbaa !20
  %.not473 = icmp ult i32 %197, %198
  br i1 %.not473, label %199, label %200

199:                                              ; preds = %196
  call void @__assert_fail(ptr noundef nonnull @.str.55, ptr noundef nonnull @.str.8, i32 noundef 4752, ptr noundef nonnull @__PRETTY_FUNCTION__.lsqpack_dec_enc_in) #11
  unreachable

200:                                              ; preds = %196
  %201 = ptrtoint ptr %40 to i64
  %202 = sub i64 %24, %201
  %203 = trunc i64 %202 to i32
  %204 = load i32, ptr %33, align 4, !tbaa !20
  %205 = sub i32 %198, %204
  %.498 = call i32 @llvm.umin.i32(i32 %205, i32 %203)
  %206 = zext i32 %.498 to i64
  %207 = load ptr, ptr %21, align 8, !tbaa !20
  %208 = getelementptr inbounds i8, ptr %207, i64 28
  %209 = load i32, ptr %207, align 4, !tbaa !26
  %210 = zext i32 %209 to i64
  %211 = getelementptr inbounds [0 x i8], ptr %208, i64 0, i64 %210
  %212 = zext i32 %204 to i64
  %213 = getelementptr inbounds i8, ptr %211, i64 %212
  call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %213, ptr align 1 %40, i64 %206, i1 false)
  %214 = load i32, ptr %33, align 4, !tbaa !20
  %215 = add i32 %214, %.498
  store i32 %215, ptr %33, align 4, !tbaa !20
  %216 = load ptr, ptr %4, align 8, !tbaa !5
  %217 = getelementptr inbounds i8, ptr %216, i64 %206
  store ptr %217, ptr %4, align 8, !tbaa !5
  %218 = load i32, ptr %32, align 4, !tbaa !20
  %219 = icmp eq i32 %215, %218
  br i1 %219, label %220, label %505

220:                                              ; preds = %200, %115
  %221 = phi i32 [ %215, %200 ], [ 0, %115 ]
  %.3 = phi i32 [ %.0425510, %200 ], [ %.2, %115 ]
  %222 = load ptr, ptr %21, align 8, !tbaa !20
  %223 = getelementptr inbounds i8, ptr %222, i64 4
  store i32 %221, ptr %223, align 4, !tbaa !31
  %224 = load ptr, ptr %21, align 8, !tbaa !20
  %225 = getelementptr inbounds i8, ptr %224, i64 8
  store i32 1, ptr %225, align 4, !tbaa !21
  %226 = load ptr, ptr %21, align 8, !tbaa !20
  %227 = getelementptr inbounds i8, ptr %226, i64 28
  %228 = load ptr, ptr %26, align 8, !tbaa !20
  %229 = load i32, ptr %35, align 4, !tbaa !20
  %230 = zext i32 %229 to i64
  call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 4 %227, ptr align 1 %228, i64 %230, i1 false)
  %231 = load ptr, ptr %22, align 8, !tbaa !20
  %.not482 = icmp eq ptr %231, null
  br i1 %.not482, label %233, label %232

232:                                              ; preds = %220
  call void @qdec_decref_entry(ptr noundef nonnull %231)
  store ptr null, ptr %22, align 8, !tbaa !20
  br label %233

233:                                              ; preds = %232, %220
  %234 = load ptr, ptr %21, align 8, !tbaa !20
  %235 = call i32 @lsqpack_dec_push_entry(ptr noundef nonnull %0, ptr noundef %234)
  %236 = icmp eq i32 %235, 0
  br i1 %236, label %237, label %238

237:                                              ; preds = %233
  store i32 0, ptr %20, align 8, !tbaa !19
  store ptr null, ptr %21, align 8, !tbaa !20
  br label %505

238:                                              ; preds = %233
  %239 = load ptr, ptr %21, align 8, !tbaa !20
  call void @qdec_decref_entry(ptr noundef %239)
  store ptr null, ptr %21, align 8, !tbaa !20
  br label %.loopexit

240:                                              ; preds = %39, %47
  %.4 = phi i32 [ %.0425510, %39 ], [ 5, %47 ]
  %241 = call i32 @lsqpack_dec_int24(ptr noundef nonnull %4, ptr noundef nonnull %5, i32 noundef %.4, ptr noundef nonnull %23, ptr noundef nonnull %28)
  switch i32 %241, label %.loopexit [
    i32 0, label %242
    i32 -1, label %.loopexit.loopexit
  ]

242:                                              ; preds = %240
  %243 = load i32, ptr %23, align 8, !tbaa !20
  %244 = load i32, ptr %30, align 8, !tbaa !27
  %245 = load i8, ptr %29, align 4, !tbaa !20
  %246 = sext i8 %245 to i32
  %247 = shl nsw i32 %246, 1
  %248 = shl i32 %244, %247
  %249 = icmp ugt i32 %243, %248
  br i1 %249, label %.loopexit.loopexit, label %250

250:                                              ; preds = %242
  %.not492 = icmp eq i32 %243, 0
  %251 = lshr i32 %243, 1
  %252 = add i32 %251, %243
  %253 = select i1 %.not492, i32 16, i32 %252
  store i32 %253, ptr %21, align 8, !tbaa !20
  %254 = zext i32 %253 to i64
  %255 = add nuw nsw i64 %254, 28
  %256 = call noalias ptr @malloc(i64 noundef %255) #9
  store ptr %256, ptr %22, align 8, !tbaa !20
  %.not493 = icmp eq ptr %256, null
  br i1 %.not493, label %.loopexit.loopexit, label %257

257:                                              ; preds = %250
  %258 = getelementptr inbounds i8, ptr %256, i64 24
  store i32 0, ptr %258, align 4, !tbaa !28
  store i32 0, ptr %26, align 8, !tbaa !20
  store i32 0, ptr %25, align 4, !tbaa !20
  %.not494 = icmp eq i8 %245, 0
  br i1 %.not494, label %260, label %259

259:                                              ; preds = %257
  store i32 9, ptr %20, align 8, !tbaa !19
  store i32 0, ptr %27, align 8, !tbaa !20
  br label %505

260:                                              ; preds = %257
  store i32 10, ptr %20, align 8, !tbaa !19
  br label %505

261:                                              ; preds = %39
  %262 = ptrtoint ptr %40 to i64
  %263 = sub i64 %24, %262
  %264 = trunc i64 %263 to i32
  %265 = load i32, ptr %23, align 8, !tbaa !20
  %266 = load i32, ptr %26, align 8, !tbaa !20
  %267 = sub i32 %265, %266
  %.499 = call i32 @llvm.umin.i32(i32 %267, i32 %264)
  %268 = zext i32 %.499 to i64
  %269 = load ptr, ptr %22, align 8, !tbaa !20
  %270 = getelementptr inbounds i8, ptr %269, i64 28
  %271 = load i32, ptr %25, align 4, !tbaa !20
  %272 = zext i32 %271 to i64
  %273 = getelementptr inbounds i8, ptr %270, i64 %272
  %274 = load i32, ptr %21, align 8, !tbaa !20
  %275 = sub i32 %274, %271
  %276 = zext i32 %266 to i64
  %277 = add nuw nsw i64 %268, %276
  %278 = zext i32 %265 to i64
  %279 = icmp eq i64 %277, %278
  %280 = zext i1 %279 to i32
  %281 = call { i64, i32 } @lsqpack_huff_decode(ptr noundef %40, i32 noundef %.499, ptr noundef nonnull %273, i32 noundef %275, ptr noundef nonnull %27, i32 noundef %280)
  %.fca.0.extract2 = extractvalue { i64, i32 } %281, 0
  %.fca.1.extract3 = extractvalue { i64, i32 } %281, 1
  %.sroa.053.0.extract.trunc55 = trunc i64 %.fca.0.extract2 to i32
  switch i32 %.sroa.053.0.extract.trunc55, label %.loopexit.loopexit [
    i32 0, label %282
    i32 1, label %289
    i32 2, label %297
  ]

282:                                              ; preds = %261
  %283 = load ptr, ptr %4, align 8, !tbaa !5
  %284 = zext i32 %.fca.1.extract3 to i64
  %285 = getelementptr inbounds i8, ptr %283, i64 %284
  store ptr %285, ptr %4, align 8, !tbaa !5
  %286 = load i32, ptr %25, align 4, !tbaa !20
  %.sroa.053.4.extract.shift65 = lshr i64 %.fca.0.extract2, 32
  %.sroa.053.4.extract.trunc66 = trunc nuw i64 %.sroa.053.4.extract.shift65 to i32
  %287 = add i32 %286, %.sroa.053.4.extract.trunc66
  %288 = load ptr, ptr %22, align 8, !tbaa !20
  store i32 %287, ptr %288, align 4, !tbaa !26
  store i32 11, ptr %20, align 8, !tbaa !19
  br label %505

289:                                              ; preds = %261
  %290 = load ptr, ptr %4, align 8, !tbaa !5
  %291 = zext i32 %.fca.1.extract3 to i64
  %292 = getelementptr inbounds i8, ptr %290, i64 %291
  store ptr %292, ptr %4, align 8, !tbaa !5
  %293 = load i32, ptr %26, align 8, !tbaa !20
  %294 = add i32 %293, %.fca.1.extract3
  store i32 %294, ptr %26, align 8, !tbaa !20
  %.sroa.053.4.extract.shift68 = lshr i64 %.fca.0.extract2, 32
  %.sroa.053.4.extract.trunc69 = trunc nuw i64 %.sroa.053.4.extract.shift68 to i32
  %295 = load i32, ptr %25, align 4, !tbaa !20
  %296 = add i32 %295, %.sroa.053.4.extract.trunc69
  store i32 %296, ptr %25, align 4, !tbaa !20
  br label %505

297:                                              ; preds = %261
  %298 = load i32, ptr %21, align 8, !tbaa !20
  %299 = shl i32 %298, 1
  store i32 %299, ptr %21, align 8, !tbaa !20
  %300 = load ptr, ptr %22, align 8, !tbaa !20
  %301 = zext i32 %299 to i64
  %302 = add nuw nsw i64 %301, 28
  %303 = call ptr @realloc(ptr noundef %300, i64 noundef %302) #10
  %.not472 = icmp eq ptr %303, null
  br i1 %.not472, label %.loopexit.loopexit, label %304

304:                                              ; preds = %297
  store ptr %303, ptr %22, align 8, !tbaa !20
  %305 = load ptr, ptr %4, align 8, !tbaa !5
  %306 = zext i32 %.fca.1.extract3 to i64
  %307 = getelementptr inbounds i8, ptr %305, i64 %306
  store ptr %307, ptr %4, align 8, !tbaa !5
  %308 = load i32, ptr %26, align 8, !tbaa !20
  %309 = add i32 %308, %.fca.1.extract3
  store i32 %309, ptr %26, align 8, !tbaa !20
  %.sroa.053.4.extract.shift71 = lshr i64 %.fca.0.extract2, 32
  %.sroa.053.4.extract.trunc72 = trunc nuw i64 %.sroa.053.4.extract.shift71 to i32
  %310 = load i32, ptr %25, align 4, !tbaa !20
  %311 = add i32 %310, %.sroa.053.4.extract.trunc72
  store i32 %311, ptr %25, align 4, !tbaa !20
  br label %505

312:                                              ; preds = %39
  %313 = load i32, ptr %21, align 8, !tbaa !20
  %314 = load i32, ptr %23, align 8, !tbaa !20
  %.not471 = icmp ult i32 %313, %314
  br i1 %.not471, label %315, label %316

315:                                              ; preds = %312
  call void @__assert_fail(ptr noundef nonnull @.str.56, ptr noundef nonnull @.str.8, i32 noundef 4847, ptr noundef nonnull @__PRETTY_FUNCTION__.lsqpack_dec_enc_in) #11
  unreachable

316:                                              ; preds = %312
  %317 = ptrtoint ptr %40 to i64
  %318 = sub i64 %24, %317
  %319 = trunc i64 %318 to i32
  %320 = load i32, ptr %25, align 4, !tbaa !20
  %321 = sub i32 %314, %320
  %.500 = call i32 @llvm.umin.i32(i32 %321, i32 %319)
  %322 = zext i32 %.500 to i64
  %323 = load ptr, ptr %22, align 8, !tbaa !20
  %324 = getelementptr inbounds i8, ptr %323, i64 28
  %325 = zext i32 %320 to i64
  %326 = getelementptr inbounds i8, ptr %324, i64 %325
  call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %326, ptr align 1 %40, i64 %322, i1 false)
  %327 = load i32, ptr %25, align 4, !tbaa !20
  %328 = add i32 %327, %.500
  store i32 %328, ptr %25, align 4, !tbaa !20
  %329 = load ptr, ptr %4, align 8, !tbaa !5
  %330 = getelementptr inbounds i8, ptr %329, i64 %322
  store ptr %330, ptr %4, align 8, !tbaa !5
  %331 = load i32, ptr %23, align 8, !tbaa !20
  %332 = icmp eq i32 %328, %331
  br i1 %332, label %333, label %505

333:                                              ; preds = %316
  %334 = load ptr, ptr %22, align 8, !tbaa !20
  store i32 %328, ptr %334, align 4, !tbaa !26
  store i32 11, ptr %20, align 8, !tbaa !19
  br label %505

335:                                              ; preds = %39
  %336 = load i8, ptr %40, align 1, !tbaa !20
  %.lobit = lshr i8 %336, 7
  store i8 %.lobit, ptr %29, align 4, !tbaa !20
  store i32 0, ptr %28, align 8, !tbaa !20
  store i32 12, ptr %20, align 8, !tbaa !19
  br label %337

337:                                              ; preds = %335, %39
  %.5 = phi i32 [ %.0425510, %39 ], [ 7, %335 ]
  %338 = call i32 @lsqpack_dec_int24(ptr noundef nonnull %4, ptr noundef nonnull %5, i32 noundef %.5, ptr noundef nonnull %23, ptr noundef nonnull %28)
  switch i32 %338, label %.loopexit [
    i32 0, label %339
    i32 -1, label %.loopexit.loopexit
  ]

339:                                              ; preds = %337
  %340 = load i32, ptr %23, align 8, !tbaa !20
  %341 = load i32, ptr %30, align 8, !tbaa !27
  %342 = load ptr, ptr %22, align 8, !tbaa !20
  %343 = load i32, ptr %342, align 4, !tbaa !26
  %344 = sub i32 %341, %343
  %345 = load i8, ptr %29, align 4, !tbaa !20
  %346 = sext i8 %345 to i32
  %347 = shl nsw i32 %346, 1
  %348 = shl i32 %344, %347
  %349 = icmp ugt i32 %340, %348
  br i1 %349, label %.loopexit.loopexit, label %350

350:                                              ; preds = %339
  store i32 0, ptr %26, align 8, !tbaa !20
  store i32 0, ptr %25, align 4, !tbaa !20
  %.not469 = icmp eq i32 %340, 0
  br i1 %.not469, label %454, label %351

351:                                              ; preds = %350
  %.not470 = icmp eq i8 %345, 0
  br i1 %.not470, label %353, label %352

352:                                              ; preds = %351
  store i32 13, ptr %20, align 8, !tbaa !19
  store i32 0, ptr %27, align 8, !tbaa !20
  br label %505

353:                                              ; preds = %351
  store i32 14, ptr %20, align 8, !tbaa !19
  br label %505

354:                                              ; preds = %39
  %355 = ptrtoint ptr %40 to i64
  %356 = sub i64 %24, %355
  %357 = trunc i64 %356 to i32
  %358 = load i32, ptr %23, align 8, !tbaa !20
  %359 = load i32, ptr %26, align 8, !tbaa !20
  %360 = sub i32 %358, %359
  %.501 = call i32 @llvm.umin.i32(i32 %360, i32 %357)
  %361 = zext i32 %.501 to i64
  %362 = load ptr, ptr %22, align 8, !tbaa !20
  %363 = getelementptr inbounds i8, ptr %362, i64 28
  %364 = load i32, ptr %362, align 4, !tbaa !26
  %365 = zext i32 %364 to i64
  %366 = getelementptr inbounds [0 x i8], ptr %363, i64 0, i64 %365
  %367 = load i32, ptr %25, align 4, !tbaa !20
  %368 = zext i32 %367 to i64
  %369 = getelementptr inbounds i8, ptr %366, i64 %368
  %370 = load i32, ptr %21, align 8, !tbaa !20
  %371 = add i32 %367, %364
  %372 = sub i32 %370, %371
  %373 = zext i32 %359 to i64
  %374 = add nuw nsw i64 %361, %373
  %375 = zext i32 %358 to i64
  %376 = icmp eq i64 %374, %375
  %377 = zext i1 %376 to i32
  %378 = call { i64, i32 } @lsqpack_huff_decode(ptr noundef %40, i32 noundef %.501, ptr noundef nonnull %369, i32 noundef %372, ptr noundef nonnull %27, i32 noundef %377)
  %.fca.0.extract = extractvalue { i64, i32 } %378, 0
  %.fca.1.extract = extractvalue { i64, i32 } %378, 1
  %.sroa.053.0.extract.trunc57 = trunc i64 %.fca.0.extract to i32
  switch i32 %.sroa.053.0.extract.trunc57, label %.loopexit.loopexit [
    i32 0, label %379
    i32 1, label %395
    i32 2, label %403
  ]

379:                                              ; preds = %354
  %380 = load ptr, ptr %4, align 8, !tbaa !5
  %381 = zext i32 %.fca.1.extract to i64
  %382 = getelementptr inbounds i8, ptr %380, i64 %381
  store ptr %382, ptr %4, align 8, !tbaa !5
  %383 = load i32, ptr %25, align 4, !tbaa !20
  %.sroa.053.4.extract.shift74 = lshr i64 %.fca.0.extract, 32
  %.sroa.053.4.extract.trunc75 = trunc nuw i64 %.sroa.053.4.extract.shift74 to i32
  %384 = add i32 %383, %.sroa.053.4.extract.trunc75
  %385 = load ptr, ptr %22, align 8, !tbaa !20
  %386 = getelementptr inbounds i8, ptr %385, i64 4
  store i32 %384, ptr %386, align 4, !tbaa !31
  %387 = load ptr, ptr %22, align 8, !tbaa !20
  %388 = getelementptr inbounds i8, ptr %387, i64 8
  store i32 1, ptr %388, align 4, !tbaa !21
  %389 = load ptr, ptr %22, align 8, !tbaa !20
  %390 = call i32 @lsqpack_dec_push_entry(ptr noundef nonnull %0, ptr noundef %389)
  %391 = icmp eq i32 %390, 0
  br i1 %391, label %392, label %393

392:                                              ; preds = %379
  store i32 0, ptr %20, align 8, !tbaa !19
  store ptr null, ptr %22, align 8, !tbaa !20
  br label %505

393:                                              ; preds = %379
  %394 = load ptr, ptr %22, align 8, !tbaa !20
  call void @qdec_decref_entry(ptr noundef %394)
  store ptr null, ptr %22, align 8, !tbaa !20
  br label %.loopexit

395:                                              ; preds = %354
  %396 = load ptr, ptr %4, align 8, !tbaa !5
  %397 = zext i32 %.fca.1.extract to i64
  %398 = getelementptr inbounds i8, ptr %396, i64 %397
  store ptr %398, ptr %4, align 8, !tbaa !5
  %399 = load i32, ptr %26, align 8, !tbaa !20
  %400 = add i32 %399, %.fca.1.extract
  store i32 %400, ptr %26, align 8, !tbaa !20
  %.sroa.053.4.extract.shift77 = lshr i64 %.fca.0.extract, 32
  %.sroa.053.4.extract.trunc78 = trunc nuw i64 %.sroa.053.4.extract.shift77 to i32
  %401 = load i32, ptr %25, align 4, !tbaa !20
  %402 = add i32 %401, %.sroa.053.4.extract.trunc78
  store i32 %402, ptr %25, align 4, !tbaa !20
  br label %505

403:                                              ; preds = %354
  %404 = load i32, ptr %21, align 8, !tbaa !20
  %.not467 = icmp eq i32 %404, 0
  br i1 %.not467, label %405, label %406

405:                                              ; preds = %403
  call void @__assert_fail(ptr noundef nonnull @.str.57, ptr noundef nonnull @.str.8, i32 noundef 4923, ptr noundef nonnull @__PRETTY_FUNCTION__.lsqpack_dec_enc_in) #11
  unreachable

406:                                              ; preds = %403
  %407 = shl i32 %404, 1
  store i32 %407, ptr %21, align 8, !tbaa !20
  %408 = load ptr, ptr %22, align 8, !tbaa !20
  %409 = zext i32 %407 to i64
  %410 = add nuw nsw i64 %409, 28
  %411 = call ptr @realloc(ptr noundef %408, i64 noundef %410) #10
  %.not468 = icmp eq ptr %411, null
  br i1 %.not468, label %.loopexit.loopexit, label %412

412:                                              ; preds = %406
  store ptr %411, ptr %22, align 8, !tbaa !20
  %413 = load ptr, ptr %4, align 8, !tbaa !5
  %414 = zext i32 %.fca.1.extract to i64
  %415 = getelementptr inbounds i8, ptr %413, i64 %414
  store ptr %415, ptr %4, align 8, !tbaa !5
  %416 = load i32, ptr %26, align 8, !tbaa !20
  %417 = add i32 %416, %.fca.1.extract
  store i32 %417, ptr %26, align 8, !tbaa !20
  %.sroa.053.4.extract.shift80 = lshr i64 %.fca.0.extract, 32
  %.sroa.053.4.extract.trunc81 = trunc nuw i64 %.sroa.053.4.extract.shift80 to i32
  %418 = load i32, ptr %25, align 4, !tbaa !20
  %419 = add i32 %418, %.sroa.053.4.extract.trunc81
  store i32 %419, ptr %25, align 4, !tbaa !20
  br label %505

420:                                              ; preds = %39
  %421 = load i32, ptr %21, align 8, !tbaa !20
  %422 = load ptr, ptr %22, align 8, !tbaa !20
  %423 = load i32, ptr %422, align 4, !tbaa !26
  %424 = load i32, ptr %23, align 8, !tbaa !20
  %425 = add i32 %424, %423
  %426 = icmp ult i32 %421, %425
  br i1 %426, label %427, label %432

427:                                              ; preds = %420
  store i32 %425, ptr %21, align 8, !tbaa !20
  %428 = zext i32 %425 to i64
  %429 = add nuw nsw i64 %428, 28
  %430 = call ptr @realloc(ptr noundef nonnull %422, i64 noundef %429) #10
  %.not466 = icmp eq ptr %430, null
  br i1 %.not466, label %.loopexit.loopexit, label %431

431:                                              ; preds = %427
  store ptr %430, ptr %22, align 8, !tbaa !20
  %.pre = load ptr, ptr %4, align 8, !tbaa !5
  %.pre560 = load i32, ptr %23, align 8, !tbaa !20
  %.pre561 = load i32, ptr %430, align 4, !tbaa !26
  br label %432

432:                                              ; preds = %431, %420
  %433 = phi i32 [ %.pre561, %431 ], [ %423, %420 ]
  %434 = phi ptr [ %430, %431 ], [ %422, %420 ]
  %435 = phi i32 [ %.pre560, %431 ], [ %424, %420 ]
  %436 = phi ptr [ %.pre, %431 ], [ %40, %420 ]
  %437 = ptrtoint ptr %436 to i64
  %438 = sub i64 %24, %437
  %439 = trunc i64 %438 to i32
  %440 = load i32, ptr %25, align 4, !tbaa !20
  %441 = sub i32 %435, %440
  %.502 = call i32 @llvm.umin.i32(i32 %441, i32 %439)
  %442 = zext i32 %.502 to i64
  %443 = getelementptr inbounds i8, ptr %434, i64 28
  %444 = zext i32 %433 to i64
  %445 = getelementptr inbounds [0 x i8], ptr %443, i64 0, i64 %444
  %446 = zext i32 %440 to i64
  %447 = getelementptr inbounds i8, ptr %445, i64 %446
  call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %447, ptr align 1 %436, i64 %442, i1 false)
  %448 = load i32, ptr %25, align 4, !tbaa !20
  %449 = add i32 %448, %.502
  store i32 %449, ptr %25, align 4, !tbaa !20
  %450 = load ptr, ptr %4, align 8, !tbaa !5
  %451 = getelementptr inbounds i8, ptr %450, i64 %442
  store ptr %451, ptr %4, align 8, !tbaa !5
  %452 = load i32, ptr %23, align 8, !tbaa !20
  %453 = icmp eq i32 %449, %452
  br i1 %453, label %._crit_edge, label %505

._crit_edge:                                      ; preds = %432
  %.pre562 = load ptr, ptr %22, align 8, !tbaa !20
  br label %454

454:                                              ; preds = %._crit_edge, %350
  %455 = phi ptr [ %.pre562, %._crit_edge ], [ %342, %350 ]
  %456 = phi i32 [ %449, %._crit_edge ], [ 0, %350 ]
  %.6 = phi i32 [ %.0425510, %._crit_edge ], [ %.5, %350 ]
  %457 = getelementptr inbounds i8, ptr %455, i64 4
  store i32 %456, ptr %457, align 4, !tbaa !31
  %458 = load ptr, ptr %22, align 8, !tbaa !20
  %459 = getelementptr inbounds i8, ptr %458, i64 8
  store i32 1, ptr %459, align 4, !tbaa !21
  %460 = load ptr, ptr %22, align 8, !tbaa !20
  %461 = call i32 @lsqpack_dec_push_entry(ptr noundef nonnull %0, ptr noundef %460)
  %462 = icmp eq i32 %461, 0
  br i1 %462, label %463, label %464

463:                                              ; preds = %454
  store i32 0, ptr %20, align 8, !tbaa !19
  store ptr null, ptr %22, align 8, !tbaa !20
  br label %505

464:                                              ; preds = %454
  %465 = load ptr, ptr %22, align 8, !tbaa !20
  call void @qdec_decref_entry(ptr noundef %465)
  store ptr null, ptr %22, align 8, !tbaa !20
  br label %.loopexit

466:                                              ; preds = %39, %51
  %.7 = phi i32 [ %.0425510, %39 ], [ 5, %51 ]
  %467 = call i32 @lsqpack_dec_int24(ptr noundef nonnull %4, ptr noundef nonnull %5, i32 noundef %.7, ptr noundef nonnull %27, ptr noundef nonnull %28)
  switch i32 %467, label %.loopexit [
    i32 0, label %468
    i32 -1, label %.loopexit.loopexit
  ]

468:                                              ; preds = %466
  %469 = load i32, ptr %27, align 8, !tbaa !20
  %470 = call ptr @qdec_get_table_entry_rel(ptr noundef nonnull %0, i32 noundef %469)
  %.not487 = icmp eq ptr %470, null
  br i1 %.not487, label %.loopexit.loopexit, label %471

471:                                              ; preds = %468
  %472 = load i32, ptr %470, align 4, !tbaa !26
  %473 = zext i32 %472 to i64
  %474 = add nuw nsw i64 %473, 28
  %475 = getelementptr inbounds i8, ptr %470, i64 4
  %476 = load i32, ptr %475, align 4, !tbaa !31
  %477 = zext i32 %476 to i64
  %478 = add nuw nsw i64 %474, %477
  %479 = call noalias ptr @malloc(i64 noundef %478) #9
  %.not488 = icmp eq ptr %479, null
  br i1 %.not488, label %.loopexit.loopexit, label %480

480:                                              ; preds = %471
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(1) %479, ptr noundef nonnull align 4 dereferenceable(1) %470, i64 %478, i1 false)
  %481 = getelementptr inbounds i8, ptr %479, i64 8
  store i32 1, ptr %481, align 4, !tbaa !21
  %482 = call i32 @lsqpack_dec_push_entry(ptr noundef nonnull %0, ptr noundef nonnull %479)
  %483 = icmp eq i32 %482, 0
  br i1 %483, label %484, label %485

484:                                              ; preds = %480
  store i32 0, ptr %20, align 8, !tbaa !19
  br label %505

485:                                              ; preds = %480
  call void @qdec_decref_entry(ptr noundef nonnull %479)
  br label %.loopexit

486:                                              ; preds = %39, %50
  %.8 = phi i32 [ %.0425510, %39 ], [ 5, %50 ]
  %487 = call i32 @lsqpack_dec_int(ptr noundef nonnull %4, ptr noundef nonnull %5, i32 noundef %.8, ptr noundef nonnull %27, ptr noundef nonnull %28)
  switch i32 %487, label %.loopexit [
    i32 0, label %488
    i32 -1, label %.loopexit.loopexit
  ]

488:                                              ; preds = %486
  %489 = load i64, ptr %27, align 8, !tbaa !20
  %490 = load i32, ptr %38, align 4, !tbaa !32
  %491 = zext i32 %490 to i64
  %.not489 = icmp ugt i64 %489, %491
  br i1 %.not489, label %.loopexit.loopexit, label %492

492:                                              ; preds = %488
  store i32 0, ptr %20, align 8, !tbaa !19
  %493 = load ptr, ptr %6, align 8, !tbaa !9
  %.not490 = icmp eq ptr %493, null
  br i1 %.not490, label %501, label %494

494:                                              ; preds = %492
  %495 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef nonnull %493, ptr noundef nonnull @.str.37) #8
  %496 = load ptr, ptr %6, align 8, !tbaa !9
  %497 = load i64, ptr %27, align 8, !tbaa !20
  %498 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %496, ptr noundef nonnull @.str.58, i64 noundef %497) #8
  %499 = load ptr, ptr %6, align 8, !tbaa !9
  %500 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %499, ptr noundef nonnull @.str.2) #8
  %.pre563 = load i64, ptr %27, align 8, !tbaa !20
  br label %501

501:                                              ; preds = %494, %492
  %502 = phi i64 [ %.pre563, %494 ], [ %489, %492 ]
  %503 = trunc i64 %502 to i32
  call void @qdec_update_max_capacity(ptr noundef nonnull %0, i32 noundef %503)
  br label %505

504:                                              ; preds = %39
  call void @__assert_fail(ptr noundef nonnull @.str.59, ptr noundef nonnull @.str.8, i32 noundef 5019, ptr noundef nonnull @__PRETTY_FUNCTION__.lsqpack_dec_enc_in) #11
  unreachable

505:                                              ; preds = %432, %392, %395, %412, %352, %353, %316, %333, %282, %289, %304, %259, %260, %200, %167, %170, %188, %120, %121, %501, %484, %463, %237, %66
  %.9 = phi i32 [ %.8, %501 ], [ %.7, %484 ], [ %.6, %463 ], [ %.0425510, %432 ], [ %.0425510, %412 ], [ %.0425510, %395 ], [ %.0425510, %392 ], [ %.5, %352 ], [ %.5, %353 ], [ %.0425510, %333 ], [ %.0425510, %316 ], [ %.0425510, %304 ], [ %.0425510, %289 ], [ %.0425510, %282 ], [ %.4, %259 ], [ %.4, %260 ], [ %.3, %237 ], [ %.0425510, %200 ], [ %.0425510, %188 ], [ %.0425510, %170 ], [ %.0425510, %167 ], [ %.2, %120 ], [ %.2, %121 ], [ %.1, %66 ]
  %506 = load ptr, ptr %4, align 8, !tbaa !5
  %507 = icmp ult ptr %506, %5
  br i1 %507, label %39, label %.loopexit.loopexit, !llvm.loop !33

.loopexit.loopexit:                               ; preds = %505, %486, %488, %466, %471, %468, %427, %354, %406, %337, %339, %261, %297, %240, %250, %242, %122, %178, %69, %94, %84, %52, %60, %57
  %.0.ph = phi i32 [ 0, %505 ], [ 0, %486 ], [ -1, %488 ], [ 0, %466 ], [ -1, %471 ], [ -1, %468 ], [ -1, %427 ], [ -1, %354 ], [ -1, %406 ], [ 0, %337 ], [ -1, %339 ], [ -1, %261 ], [ -1, %297 ], [ 0, %240 ], [ -1, %250 ], [ -1, %242 ], [ -1, %122 ], [ -1, %178 ], [ 0, %69 ], [ -1, %94 ], [ -1, %84 ], [ 0, %52 ], [ -1, %60 ], [ -1, %57 ]
  br label %.loopexit

.loopexit:                                        ; preds = %486, %466, %337, %240, %69, %52, %.loopexit.loopexit, %14, %485, %464, %393, %238, %168
  %.0 = phi i32 [ -1, %485 ], [ -1, %464 ], [ -1, %393 ], [ -1, %238 ], [ -1, %168 ], [ 0, %14 ], [ %.0.ph, %.loopexit.loopexit ], [ -1, %52 ], [ -1, %69 ], [ -1, %240 ], [ -1, %337 ], [ -1, %466 ], [ -1, %486 ]
  ret i32 %.0
}

; Function Attrs: nounwind uwtable
declare hidden ptr @qdec_get_table_entry_rel(ptr noundef, i32 noundef) local_unnamed_addr #4

; Function Attrs: nounwind uwtable
declare hidden { i64, i32 } @lsqpack_huff_decode(ptr noundef, i32 noundef, ptr noundef, i32 noundef, ptr noundef, i32 noundef) local_unnamed_addr #4

; Function Attrs: nounwind uwtable
declare hidden i32 @lsqpack_dec_push_entry(ptr noundef, ptr noundef) local_unnamed_addr #4

; Function Attrs: mustprogress nounwind willreturn allockind("realloc") allocsize(1) memory(argmem: readwrite, inaccessiblemem: readwrite)
declare noalias noundef ptr @realloc(ptr allocptr nocapture noundef, i64 noundef) local_unnamed_addr #5

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

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

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

attributes #0 = { nofree 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 #1 = { mustprogress nofree nounwind willreturn allockind("alloc,uninitialized") allocsize(0) memory(inaccessiblemem: readwrite) "alloc-family"="malloc" "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 = { 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 #3 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #4 = { 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 #5 = { mustprogress nounwind willreturn allockind("realloc") allocsize(1) memory(argmem: readwrite, inaccessiblemem: readwrite) "alloc-family"="malloc" "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 #6 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #7 = { nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #8 = { nounwind }
attributes #9 = { nounwind allocsize(0) }
attributes #10 = { nounwind allocsize(1) }
attributes #11 = { noreturn nounwind }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !6, i64 48}
!10 = !{!"lsqpack_dec", !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, !6, i64 40, !6, i64 48, !12, i64 56, !13, i64 80, !7, i64 96, !11, i64 224, !14, i64 228, !15, i64 232, !16, i64 328}
!11 = !{!"int", !7, i64 0}
!12 = !{!"lsqpack_ringbuf", !11, i64 0, !11, i64 4, !11, i64 8, !6, i64 16}
!13 = !{!"", !6, i64 0, !6, i64 8}
!14 = !{!"float", !7, i64 0}
!15 = !{!"", !11, i64 0, !7, i64 8}
!16 = !{!"lsqpack_dec_err", !11, i64 0, !11, i64 4, !17, i64 8, !17, i64 16}
!17 = !{!"long", !7, i64 0}
!18 = !{!10, !11, i64 24}
!19 = !{!10, !11, i64 232}
!20 = !{!7, !7, i64 0}
!21 = !{!22, !11, i64 8}
!22 = !{!"lsqpack_dec_table_entry", !11, i64 0, !11, i64 4, !11, i64 8, !11, i64 12, !11, i64 16, !11, i64 20, !11, i64 24, !7, i64 28}
!23 = !{!24, !11, i64 16}
!24 = !{!"static_table_entry", !6, i64 0, !6, i64 8, !11, i64 16, !11, i64 20}
!25 = !{!24, !6, i64 0}
!26 = !{!22, !11, i64 0}
!27 = !{!10, !11, i64 8}
!28 = !{!22, !11, i64 24}
!29 = !{!22, !11, i64 20}
!30 = !{!11, !11, i64 0}
!31 = !{!22, !11, i64 4}
!32 = !{!10, !11, i64 4}
!33 = distinct !{!33, !34}
!34 = !{!"llvm.loop.mustprogress"}


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