; LLVM IR from bitbank2/PNGdec :: src (inflate)

; 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.code = type { i8, i8, i16 }
%struct.z_stream_s = type { ptr, i32, i64, ptr, i32, i64, ptr, ptr, ptr, ptr, ptr, i32, i64, i64 }
%struct.inflate_state = type { ptr, i32, i32, i32, i32, i32, i32, i64, i64, ptr, i32, i32, i32, i32, ptr, i64, i32, i32, i32, i32, ptr, ptr, i32, i32, i32, i32, i32, i32, ptr, [320 x i16], [288 x i16], [1444 x %struct.code], i32, i32, i32 }
%struct.gz_header_s = type { i32, i64, i32, i32, ptr, i32, i32, ptr, i32, ptr, i32, i32, i32 }

@inflate.order = external hidden constant [19 x i16], align 16
@.str.1 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [23 x i8], align 1

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

; Function Attrs: nounwind uwtable
declare hidden i32 @inflateStateCheck(ptr noundef) #1

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

; Function Attrs: nounwind uwtable
define dso_local i32 @inflate(ptr noundef %0, i32 noundef %1, i32 noundef %2) #1 {
  %4 = alloca i32, align 4
  %5 = alloca ptr, align 8
  %6 = alloca i32, align 4
  %7 = alloca i32, align 4
  %8 = alloca ptr, align 8
  %9 = alloca ptr, align 8
  %10 = alloca ptr, align 8
  %11 = alloca i32, align 4
  %12 = alloca i32, align 4
  %13 = alloca i64, align 8
  %14 = alloca i32, align 4
  %15 = alloca i32, align 4
  %16 = alloca i32, align 4
  %17 = alloca i32, align 4
  %18 = alloca ptr, align 8
  %19 = alloca %struct.code, align 2
  %20 = alloca %struct.code, align 2
  %21 = alloca i32, align 4
  %22 = alloca i32, align 4
  %23 = alloca [4 x i8], align 1
  %24 = alloca i32, align 4
  %25 = alloca ptr, align 8
  %26 = alloca i32, align 4
  %27 = alloca i32, align 4
  store ptr %0, ptr %5, align 8, !tbaa !5
  store i32 %1, ptr %6, align 4, !tbaa !9
  store i32 %2, ptr %7, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %8) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %9) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %10) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %11) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %13) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #4
  %28 = load ptr, ptr %5, align 8, !tbaa !5
  %29 = call i32 @inflateStateCheck(ptr noundef %28)
  %30 = icmp ne i32 %29, 0
  br i1 %30, label %46, label %31

31:                                               ; preds = %3
  %32 = load ptr, ptr %5, align 8, !tbaa !5
  %33 = getelementptr inbounds %struct.z_stream_s, ptr %32, i32 0, i32 3
  %34 = load ptr, ptr %33, align 8, !tbaa !11
  %35 = icmp eq ptr %34, null
  br i1 %35, label %46, label %36

36:                                               ; preds = %31
  %37 = load ptr, ptr %5, align 8, !tbaa !5
  %38 = getelementptr inbounds %struct.z_stream_s, ptr %37, i32 0, i32 0
  %39 = load ptr, ptr %38, align 8, !tbaa !14
  %40 = icmp eq ptr %39, null
  br i1 %40, label %41, label %47

41:                                               ; preds = %36
  %42 = load ptr, ptr %5, align 8, !tbaa !5
  %43 = getelementptr inbounds %struct.z_stream_s, ptr %42, i32 0, i32 1
  %44 = load i32, ptr %43, align 8, !tbaa !15
  %45 = icmp ne i32 %44, 0
  br i1 %45, label %46, label %47

46:                                               ; preds = %41, %31, %3
  store i32 -2, ptr %4, align 4
  store i32 1, ptr %24, align 4
  br label %3183

47:                                               ; preds = %41, %36
  %48 = load ptr, ptr %5, align 8, !tbaa !5
  %49 = getelementptr inbounds %struct.z_stream_s, ptr %48, i32 0, i32 7
  %50 = load ptr, ptr %49, align 8, !tbaa !16
  store ptr %50, ptr %8, align 8, !tbaa !5
  %51 = load ptr, ptr %8, align 8, !tbaa !5
  %52 = getelementptr inbounds %struct.inflate_state, ptr %51, i32 0, i32 1
  %53 = load i32, ptr %52, align 8, !tbaa !17
  %54 = icmp eq i32 %53, 16191
  br i1 %54, label %55, label %58

55:                                               ; preds = %47
  %56 = load ptr, ptr %8, align 8, !tbaa !5
  %57 = getelementptr inbounds %struct.inflate_state, ptr %56, i32 0, i32 1
  store i32 16192, ptr %57, align 8, !tbaa !17
  br label %58

58:                                               ; preds = %55, %47
  br label %59

59:                                               ; preds = %58
  %60 = load ptr, ptr %5, align 8, !tbaa !5
  %61 = getelementptr inbounds %struct.z_stream_s, ptr %60, i32 0, i32 3
  %62 = load ptr, ptr %61, align 8, !tbaa !11
  store ptr %62, ptr %10, align 8, !tbaa !5
  %63 = load ptr, ptr %5, align 8, !tbaa !5
  %64 = getelementptr inbounds %struct.z_stream_s, ptr %63, i32 0, i32 4
  %65 = load i32, ptr %64, align 8, !tbaa !19
  store i32 %65, ptr %12, align 4, !tbaa !9
  %66 = load ptr, ptr %5, align 8, !tbaa !5
  %67 = getelementptr inbounds %struct.z_stream_s, ptr %66, i32 0, i32 0
  %68 = load ptr, ptr %67, align 8, !tbaa !14
  store ptr %68, ptr %9, align 8, !tbaa !5
  %69 = load ptr, ptr %5, align 8, !tbaa !5
  %70 = getelementptr inbounds %struct.z_stream_s, ptr %69, i32 0, i32 1
  %71 = load i32, ptr %70, align 8, !tbaa !15
  store i32 %71, ptr %11, align 4, !tbaa !9
  %72 = load ptr, ptr %8, align 8, !tbaa !5
  %73 = getelementptr inbounds %struct.inflate_state, ptr %72, i32 0, i32 15
  %74 = load i64, ptr %73, align 8, !tbaa !20
  store i64 %74, ptr %13, align 8, !tbaa !21
  %75 = load ptr, ptr %8, align 8, !tbaa !5
  %76 = getelementptr inbounds %struct.inflate_state, ptr %75, i32 0, i32 16
  %77 = load i32, ptr %76, align 8, !tbaa !22
  store i32 %77, ptr %14, align 4, !tbaa !9
  br label %78

78:                                               ; preds = %59
  br label %79

79:                                               ; preds = %78
  %80 = load i32, ptr %11, align 4, !tbaa !9
  store i32 %80, ptr %15, align 4, !tbaa !9
  %81 = load i32, ptr %12, align 4, !tbaa !9
  store i32 %81, ptr %16, align 4, !tbaa !9
  store i32 0, ptr %22, align 4, !tbaa !9
  br label %82

82:                                               ; preds = %2995, %79
  %83 = load ptr, ptr %8, align 8, !tbaa !5
  %84 = getelementptr inbounds %struct.inflate_state, ptr %83, i32 0, i32 1
  %85 = load i32, ptr %84, align 8, !tbaa !17
  switch i32 %85, label %2994 [
    i32 16180, label %86
    i32 16181, label %267
    i32 16182, label %371
    i32 16183, label %454
    i32 16184, label %538
    i32 16185, label %636
    i32 16186, label %753
    i32 16187, label %866
    i32 16188, label %977
    i32 16189, label %1060
    i32 16190, label %1113
    i32 16191, label %1148
    i32 16192, label %1156
    i32 16193, label %1254
    i32 16194, label %1321
    i32 16195, label %1324
    i32 16196, label %1373
    i32 16197, label %1460
    i32 16198, label %1574
    i32 16199, label %1994
    i32 16200, label %1997
    i32 16201, label %2256
    i32 16202, label %2334
    i32 16203, label %2508
    i32 16204, label %2581
    i32 16205, label %2772
    i32 16206, label %2787
    i32 16207, label %2933
    i32 16208, label %2990
    i32 16209, label %2991
    i32 16210, label %2992
    i32 16211, label %2993
  ]

86:                                               ; preds = %82
  %87 = load ptr, ptr %8, align 8, !tbaa !5
  %88 = getelementptr inbounds %struct.inflate_state, ptr %87, i32 0, i32 3
  %89 = load i32, ptr %88, align 8, !tbaa !23
  %90 = icmp eq i32 %89, 0
  br i1 %90, label %91, label %94

91:                                               ; preds = %86
  %92 = load ptr, ptr %8, align 8, !tbaa !5
  %93 = getelementptr inbounds %struct.inflate_state, ptr %92, i32 0, i32 1
  store i32 16192, ptr %93, align 8, !tbaa !17
  br label %2995

94:                                               ; preds = %86
  br label %95

95:                                               ; preds = %94
  br label %96

96:                                               ; preds = %119, %95
  %97 = load i32, ptr %14, align 4, !tbaa !9
  %98 = icmp ult i32 %97, 16
  br i1 %98, label %99, label %120

99:                                               ; preds = %96
  br label %100

100:                                              ; preds = %99
  %101 = load i32, ptr %11, align 4, !tbaa !9
  %102 = icmp eq i32 %101, 0
  br i1 %102, label %103, label %104

103:                                              ; preds = %100
  br label %2996

104:                                              ; preds = %100
  %105 = load i32, ptr %11, align 4, !tbaa !9
  %106 = add i32 %105, -1
  store i32 %106, ptr %11, align 4, !tbaa !9
  %107 = load ptr, ptr %9, align 8, !tbaa !5
  %108 = getelementptr inbounds i8, ptr %107, i32 1
  store ptr %108, ptr %9, align 8, !tbaa !5
  %109 = load i8, ptr %107, align 1, !tbaa !24
  %110 = zext i8 %109 to i64
  %111 = load i32, ptr %14, align 4, !tbaa !9
  %112 = zext i32 %111 to i64
  %113 = shl i64 %110, %112
  %114 = load i64, ptr %13, align 8, !tbaa !21
  %115 = add i64 %114, %113
  store i64 %115, ptr %13, align 8, !tbaa !21
  %116 = load i32, ptr %14, align 4, !tbaa !9
  %117 = add i32 %116, 8
  store i32 %117, ptr %14, align 4, !tbaa !9
  br label %118

118:                                              ; preds = %104
  br label %119

119:                                              ; preds = %118
  br label %96, !llvm.loop !25

120:                                              ; preds = %96
  br label %121

121:                                              ; preds = %120
  br label %122

122:                                              ; preds = %121
  %123 = load ptr, ptr %8, align 8, !tbaa !5
  %124 = getelementptr inbounds %struct.inflate_state, ptr %123, i32 0, i32 3
  %125 = load i32, ptr %124, align 8, !tbaa !23
  %126 = and i32 %125, 2
  %127 = icmp ne i32 %126, 0
  br i1 %127, label %128, label %165

128:                                              ; preds = %122
  %129 = load i64, ptr %13, align 8, !tbaa !21
  %130 = icmp eq i64 %129, 35615
  br i1 %130, label %131, label %165

131:                                              ; preds = %128
  %132 = load ptr, ptr %8, align 8, !tbaa !5
  %133 = getelementptr inbounds %struct.inflate_state, ptr %132, i32 0, i32 10
  %134 = load i32, ptr %133, align 8, !tbaa !27
  %135 = icmp eq i32 %134, 0
  br i1 %135, label %136, label %139

136:                                              ; preds = %131
  %137 = load ptr, ptr %8, align 8, !tbaa !5
  %138 = getelementptr inbounds %struct.inflate_state, ptr %137, i32 0, i32 10
  store i32 15, ptr %138, align 8, !tbaa !27
  br label %139

139:                                              ; preds = %136, %131
  %140 = call i64 @crc32(i64 noundef 0, ptr noundef null, i32 noundef 0)
  %141 = load ptr, ptr %8, align 8, !tbaa !5
  %142 = getelementptr inbounds %struct.inflate_state, ptr %141, i32 0, i32 7
  store i64 %140, ptr %142, align 8, !tbaa !28
  br label %143

143:                                              ; preds = %139
  %144 = load i64, ptr %13, align 8, !tbaa !21
  %145 = trunc i64 %144 to i8
  %146 = getelementptr inbounds [4 x i8], ptr %23, i64 0, i64 0
  store i8 %145, ptr %146, align 1, !tbaa !24
  %147 = load i64, ptr %13, align 8, !tbaa !21
  %148 = lshr i64 %147, 8
  %149 = trunc i64 %148 to i8
  %150 = getelementptr inbounds [4 x i8], ptr %23, i64 0, i64 1
  store i8 %149, ptr %150, align 1, !tbaa !24
  %151 = load ptr, ptr %8, align 8, !tbaa !5
  %152 = getelementptr inbounds %struct.inflate_state, ptr %151, i32 0, i32 7
  %153 = load i64, ptr %152, align 8, !tbaa !28
  %154 = getelementptr inbounds [4 x i8], ptr %23, i64 0, i64 0
  %155 = call i64 @crc32(i64 noundef %153, ptr noundef %154, i32 noundef 2)
  %156 = load ptr, ptr %8, align 8, !tbaa !5
  %157 = getelementptr inbounds %struct.inflate_state, ptr %156, i32 0, i32 7
  store i64 %155, ptr %157, align 8, !tbaa !28
  br label %158

158:                                              ; preds = %143
  br label %159

159:                                              ; preds = %158
  br label %160

160:                                              ; preds = %159
  store i64 0, ptr %13, align 8, !tbaa !21
  store i32 0, ptr %14, align 4, !tbaa !9
  br label %161

161:                                              ; preds = %160
  br label %162

162:                                              ; preds = %161
  %163 = load ptr, ptr %8, align 8, !tbaa !5
  %164 = getelementptr inbounds %struct.inflate_state, ptr %163, i32 0, i32 1
  store i32 16181, ptr %164, align 8, !tbaa !17
  br label %2995

165:                                              ; preds = %128, %122
  %166 = load ptr, ptr %8, align 8, !tbaa !5
  %167 = getelementptr inbounds %struct.inflate_state, ptr %166, i32 0, i32 5
  store i32 0, ptr %167, align 8, !tbaa !29
  %168 = load ptr, ptr %8, align 8, !tbaa !5
  %169 = getelementptr inbounds %struct.inflate_state, ptr %168, i32 0, i32 9
  %170 = load ptr, ptr %169, align 8, !tbaa !30
  %171 = icmp ne ptr %170, null
  br i1 %171, label %172, label %177

172:                                              ; preds = %165
  %173 = load ptr, ptr %8, align 8, !tbaa !5
  %174 = getelementptr inbounds %struct.inflate_state, ptr %173, i32 0, i32 9
  %175 = load ptr, ptr %174, align 8, !tbaa !30
  %176 = getelementptr inbounds %struct.gz_header_s, ptr %175, i32 0, i32 12
  store i32 -1, ptr %176, align 8, !tbaa !31
  br label %177

177:                                              ; preds = %172, %165
  %178 = load ptr, ptr %8, align 8, !tbaa !5
  %179 = getelementptr inbounds %struct.inflate_state, ptr %178, i32 0, i32 3
  %180 = load i32, ptr %179, align 8, !tbaa !23
  %181 = and i32 %180, 1
  %182 = icmp ne i32 %181, 0
  br i1 %182, label %183, label %194

183:                                              ; preds = %177
  %184 = load i64, ptr %13, align 8, !tbaa !21
  %185 = trunc i64 %184 to i32
  %186 = and i32 %185, 255
  %187 = shl i32 %186, 8
  %188 = zext i32 %187 to i64
  %189 = load i64, ptr %13, align 8, !tbaa !21
  %190 = lshr i64 %189, 8
  %191 = add i64 %188, %190
  %192 = urem i64 %191, 31
  %193 = icmp ne i64 %192, 0
  br i1 %193, label %194, label %199

194:                                              ; preds = %183, %177
  %195 = load ptr, ptr %5, align 8, !tbaa !5
  %196 = getelementptr inbounds %struct.z_stream_s, ptr %195, i32 0, i32 6
  store ptr @.str.1, ptr %196, align 8, !tbaa !33
  %197 = load ptr, ptr %8, align 8, !tbaa !5
  %198 = getelementptr inbounds %struct.inflate_state, ptr %197, i32 0, i32 1
  store i32 16209, ptr %198, align 8, !tbaa !17
  br label %2995

199:                                              ; preds = %183
  %200 = load i64, ptr %13, align 8, !tbaa !21
  %201 = trunc i64 %200 to i32
  %202 = and i32 %201, 15
  %203 = icmp ne i32 %202, 8
  br i1 %203, label %204, label %209

204:                                              ; preds = %199
  %205 = load ptr, ptr %5, align 8, !tbaa !5
  %206 = getelementptr inbounds %struct.z_stream_s, ptr %205, i32 0, i32 6
  store ptr @.str.2, ptr %206, align 8, !tbaa !33
  %207 = load ptr, ptr %8, align 8, !tbaa !5
  %208 = getelementptr inbounds %struct.inflate_state, ptr %207, i32 0, i32 1
  store i32 16209, ptr %208, align 8, !tbaa !17
  br label %2995

209:                                              ; preds = %199
  br label %210

210:                                              ; preds = %209
  %211 = load i64, ptr %13, align 8, !tbaa !21
  %212 = lshr i64 %211, 4
  store i64 %212, ptr %13, align 8, !tbaa !21
  %213 = load i32, ptr %14, align 4, !tbaa !9
  %214 = sub i32 %213, 4
  store i32 %214, ptr %14, align 4, !tbaa !9
  br label %215

215:                                              ; preds = %210
  br label %216

216:                                              ; preds = %215
  %217 = load i64, ptr %13, align 8, !tbaa !21
  %218 = trunc i64 %217 to i32
  %219 = and i32 %218, 15
  %220 = add i32 %219, 8
  store i32 %220, ptr %21, align 4, !tbaa !9
  %221 = load ptr, ptr %8, align 8, !tbaa !5
  %222 = getelementptr inbounds %struct.inflate_state, ptr %221, i32 0, i32 10
  %223 = load i32, ptr %222, align 8, !tbaa !27
  %224 = icmp eq i32 %223, 0
  br i1 %224, label %225, label %229

225:                                              ; preds = %216
  %226 = load i32, ptr %21, align 4, !tbaa !9
  %227 = load ptr, ptr %8, align 8, !tbaa !5
  %228 = getelementptr inbounds %struct.inflate_state, ptr %227, i32 0, i32 10
  store i32 %226, ptr %228, align 8, !tbaa !27
  br label %229

229:                                              ; preds = %225, %216
  %230 = load i32, ptr %21, align 4, !tbaa !9
  %231 = icmp ugt i32 %230, 15
  br i1 %231, label %238, label %232

232:                                              ; preds = %229
  %233 = load i32, ptr %21, align 4, !tbaa !9
  %234 = load ptr, ptr %8, align 8, !tbaa !5
  %235 = getelementptr inbounds %struct.inflate_state, ptr %234, i32 0, i32 10
  %236 = load i32, ptr %235, align 8, !tbaa !27
  %237 = icmp ugt i32 %233, %236
  br i1 %237, label %238, label %243

238:                                              ; preds = %232, %229
  %239 = load ptr, ptr %5, align 8, !tbaa !5
  %240 = getelementptr inbounds %struct.z_stream_s, ptr %239, i32 0, i32 6
  store ptr @.str.3, ptr %240, align 8, !tbaa !33
  %241 = load ptr, ptr %8, align 8, !tbaa !5
  %242 = getelementptr inbounds %struct.inflate_state, ptr %241, i32 0, i32 1
  store i32 16209, ptr %242, align 8, !tbaa !17
  br label %2995

243:                                              ; preds = %232
  %244 = load i32, ptr %21, align 4, !tbaa !9
  %245 = shl i32 1, %244
  %246 = load ptr, ptr %8, align 8, !tbaa !5
  %247 = getelementptr inbounds %struct.inflate_state, ptr %246, i32 0, i32 6
  store i32 %245, ptr %247, align 4, !tbaa !34
  %248 = load i32, ptr %7, align 4, !tbaa !9
  %249 = icmp ne i32 %248, 0
  br i1 %249, label %250, label %256

250:                                              ; preds = %243
  %251 = call i64 @adler32(i64 noundef 0, ptr noundef null, i32 noundef 0)
  %252 = load ptr, ptr %8, align 8, !tbaa !5
  %253 = getelementptr inbounds %struct.inflate_state, ptr %252, i32 0, i32 7
  store i64 %251, ptr %253, align 8, !tbaa !28
  %254 = load ptr, ptr %5, align 8, !tbaa !5
  %255 = getelementptr inbounds %struct.z_stream_s, ptr %254, i32 0, i32 12
  store i64 %251, ptr %255, align 8, !tbaa !35
  br label %256

256:                                              ; preds = %250, %243
  %257 = load i64, ptr %13, align 8, !tbaa !21
  %258 = and i64 %257, 512
  %259 = icmp ne i64 %258, 0
  %260 = zext i1 %259 to i64
  %261 = select i1 %259, i32 16189, i32 16191
  %262 = load ptr, ptr %8, align 8, !tbaa !5
  %263 = getelementptr inbounds %struct.inflate_state, ptr %262, i32 0, i32 1
  store i32 %261, ptr %263, align 8, !tbaa !17
  br label %264

264:                                              ; preds = %256
  store i64 0, ptr %13, align 8, !tbaa !21
  store i32 0, ptr %14, align 4, !tbaa !9
  br label %265

265:                                              ; preds = %264
  br label %266

266:                                              ; preds = %265
  br label %2995

267:                                              ; preds = %82
  br label %268

268:                                              ; preds = %267
  br label %269

269:                                              ; preds = %292, %268
  %270 = load i32, ptr %14, align 4, !tbaa !9
  %271 = icmp ult i32 %270, 16
  br i1 %271, label %272, label %293

272:                                              ; preds = %269
  br label %273

273:                                              ; preds = %272
  %274 = load i32, ptr %11, align 4, !tbaa !9
  %275 = icmp eq i32 %274, 0
  br i1 %275, label %276, label %277

276:                                              ; preds = %273
  br label %2996

277:                                              ; preds = %273
  %278 = load i32, ptr %11, align 4, !tbaa !9
  %279 = add i32 %278, -1
  store i32 %279, ptr %11, align 4, !tbaa !9
  %280 = load ptr, ptr %9, align 8, !tbaa !5
  %281 = getelementptr inbounds i8, ptr %280, i32 1
  store ptr %281, ptr %9, align 8, !tbaa !5
  %282 = load i8, ptr %280, align 1, !tbaa !24
  %283 = zext i8 %282 to i64
  %284 = load i32, ptr %14, align 4, !tbaa !9
  %285 = zext i32 %284 to i64
  %286 = shl i64 %283, %285
  %287 = load i64, ptr %13, align 8, !tbaa !21
  %288 = add i64 %287, %286
  store i64 %288, ptr %13, align 8, !tbaa !21
  %289 = load i32, ptr %14, align 4, !tbaa !9
  %290 = add i32 %289, 8
  store i32 %290, ptr %14, align 4, !tbaa !9
  br label %291

291:                                              ; preds = %277
  br label %292

292:                                              ; preds = %291
  br label %269, !llvm.loop !36

293:                                              ; preds = %269
  br label %294

294:                                              ; preds = %293
  br label %295

295:                                              ; preds = %294
  %296 = load i64, ptr %13, align 8, !tbaa !21
  %297 = trunc i64 %296 to i32
  %298 = load ptr, ptr %8, align 8, !tbaa !5
  %299 = getelementptr inbounds %struct.inflate_state, ptr %298, i32 0, i32 5
  store i32 %297, ptr %299, align 8, !tbaa !29
  %300 = load ptr, ptr %8, align 8, !tbaa !5
  %301 = getelementptr inbounds %struct.inflate_state, ptr %300, i32 0, i32 5
  %302 = load i32, ptr %301, align 8, !tbaa !29
  %303 = and i32 %302, 255
  %304 = icmp ne i32 %303, 8
  br i1 %304, label %305, label %310

305:                                              ; preds = %295
  %306 = load ptr, ptr %5, align 8, !tbaa !5
  %307 = getelementptr inbounds %struct.z_stream_s, ptr %306, i32 0, i32 6
  store ptr @.str.2, ptr %307, align 8, !tbaa !33
  %308 = load ptr, ptr %8, align 8, !tbaa !5
  %309 = getelementptr inbounds %struct.inflate_state, ptr %308, i32 0, i32 1
  store i32 16209, ptr %309, align 8, !tbaa !17
  br label %2995

310:                                              ; preds = %295
  %311 = load ptr, ptr %8, align 8, !tbaa !5
  %312 = getelementptr inbounds %struct.inflate_state, ptr %311, i32 0, i32 5
  %313 = load i32, ptr %312, align 8, !tbaa !29
  %314 = and i32 %313, 57344
  %315 = icmp ne i32 %314, 0
  br i1 %315, label %316, label %321

316:                                              ; preds = %310
  %317 = load ptr, ptr %5, align 8, !tbaa !5
  %318 = getelementptr inbounds %struct.z_stream_s, ptr %317, i32 0, i32 6
  store ptr @.str.4, ptr %318, align 8, !tbaa !33
  %319 = load ptr, ptr %8, align 8, !tbaa !5
  %320 = getelementptr inbounds %struct.inflate_state, ptr %319, i32 0, i32 1
  store i32 16209, ptr %320, align 8, !tbaa !17
  br label %2995

321:                                              ; preds = %310
  %322 = load ptr, ptr %8, align 8, !tbaa !5
  %323 = getelementptr inbounds %struct.inflate_state, ptr %322, i32 0, i32 9
  %324 = load ptr, ptr %323, align 8, !tbaa !30
  %325 = icmp ne ptr %324, null
  br i1 %325, label %326, label %335

326:                                              ; preds = %321
  %327 = load i64, ptr %13, align 8, !tbaa !21
  %328 = lshr i64 %327, 8
  %329 = and i64 %328, 1
  %330 = trunc i64 %329 to i32
  %331 = load ptr, ptr %8, align 8, !tbaa !5
  %332 = getelementptr inbounds %struct.inflate_state, ptr %331, i32 0, i32 9
  %333 = load ptr, ptr %332, align 8, !tbaa !30
  %334 = getelementptr inbounds %struct.gz_header_s, ptr %333, i32 0, i32 0
  store i32 %330, ptr %334, align 8, !tbaa !37
  br label %335

335:                                              ; preds = %326, %321
  %336 = load ptr, ptr %8, align 8, !tbaa !5
  %337 = getelementptr inbounds %struct.inflate_state, ptr %336, i32 0, i32 5
  %338 = load i32, ptr %337, align 8, !tbaa !29
  %339 = and i32 %338, 512
  %340 = icmp ne i32 %339, 0
  br i1 %340, label %341, label %365

341:                                              ; preds = %335
  %342 = load ptr, ptr %8, align 8, !tbaa !5
  %343 = getelementptr inbounds %struct.inflate_state, ptr %342, i32 0, i32 3
  %344 = load i32, ptr %343, align 8, !tbaa !23
  %345 = and i32 %344, 4
  %346 = icmp ne i32 %345, 0
  br i1 %346, label %347, label %365

347:                                              ; preds = %341
  br label %348

348:                                              ; preds = %347
  %349 = load i64, ptr %13, align 8, !tbaa !21
  %350 = trunc i64 %349 to i8
  %351 = getelementptr inbounds [4 x i8], ptr %23, i64 0, i64 0
  store i8 %350, ptr %351, align 1, !tbaa !24
  %352 = load i64, ptr %13, align 8, !tbaa !21
  %353 = lshr i64 %352, 8
  %354 = trunc i64 %353 to i8
  %355 = getelementptr inbounds [4 x i8], ptr %23, i64 0, i64 1
  store i8 %354, ptr %355, align 1, !tbaa !24
  %356 = load ptr, ptr %8, align 8, !tbaa !5
  %357 = getelementptr inbounds %struct.inflate_state, ptr %356, i32 0, i32 7
  %358 = load i64, ptr %357, align 8, !tbaa !28
  %359 = getelementptr inbounds [4 x i8], ptr %23, i64 0, i64 0
  %360 = call i64 @crc32(i64 noundef %358, ptr noundef %359, i32 noundef 2)
  %361 = load ptr, ptr %8, align 8, !tbaa !5
  %362 = getelementptr inbounds %struct.inflate_state, ptr %361, i32 0, i32 7
  store i64 %360, ptr %362, align 8, !tbaa !28
  br label %363

363:                                              ; preds = %348
  br label %364

364:                                              ; preds = %363
  br label %365

365:                                              ; preds = %364, %341, %335
  br label %366

366:                                              ; preds = %365
  store i64 0, ptr %13, align 8, !tbaa !21
  store i32 0, ptr %14, align 4, !tbaa !9
  br label %367

367:                                              ; preds = %366
  br label %368

368:                                              ; preds = %367
  %369 = load ptr, ptr %8, align 8, !tbaa !5
  %370 = getelementptr inbounds %struct.inflate_state, ptr %369, i32 0, i32 1
  store i32 16182, ptr %370, align 8, !tbaa !17
  br label %371

371:                                              ; preds = %368, %82
  br label %372

372:                                              ; preds = %371
  br label %373

373:                                              ; preds = %396, %372
  %374 = load i32, ptr %14, align 4, !tbaa !9
  %375 = icmp ult i32 %374, 32
  br i1 %375, label %376, label %397

376:                                              ; preds = %373
  br label %377

377:                                              ; preds = %376
  %378 = load i32, ptr %11, align 4, !tbaa !9
  %379 = icmp eq i32 %378, 0
  br i1 %379, label %380, label %381

380:                                              ; preds = %377
  br label %2996

381:                                              ; preds = %377
  %382 = load i32, ptr %11, align 4, !tbaa !9
  %383 = add i32 %382, -1
  store i32 %383, ptr %11, align 4, !tbaa !9
  %384 = load ptr, ptr %9, align 8, !tbaa !5
  %385 = getelementptr inbounds i8, ptr %384, i32 1
  store ptr %385, ptr %9, align 8, !tbaa !5
  %386 = load i8, ptr %384, align 1, !tbaa !24
  %387 = zext i8 %386 to i64
  %388 = load i32, ptr %14, align 4, !tbaa !9
  %389 = zext i32 %388 to i64
  %390 = shl i64 %387, %389
  %391 = load i64, ptr %13, align 8, !tbaa !21
  %392 = add i64 %391, %390
  store i64 %392, ptr %13, align 8, !tbaa !21
  %393 = load i32, ptr %14, align 4, !tbaa !9
  %394 = add i32 %393, 8
  store i32 %394, ptr %14, align 4, !tbaa !9
  br label %395

395:                                              ; preds = %381
  br label %396

396:                                              ; preds = %395
  br label %373, !llvm.loop !38

397:                                              ; preds = %373
  br label %398

398:                                              ; preds = %397
  br label %399

399:                                              ; preds = %398
  %400 = load ptr, ptr %8, align 8, !tbaa !5
  %401 = getelementptr inbounds %struct.inflate_state, ptr %400, i32 0, i32 9
  %402 = load ptr, ptr %401, align 8, !tbaa !30
  %403 = icmp ne ptr %402, null
  br i1 %403, label %404, label %410

404:                                              ; preds = %399
  %405 = load i64, ptr %13, align 8, !tbaa !21
  %406 = load ptr, ptr %8, align 8, !tbaa !5
  %407 = getelementptr inbounds %struct.inflate_state, ptr %406, i32 0, i32 9
  %408 = load ptr, ptr %407, align 8, !tbaa !30
  %409 = getelementptr inbounds %struct.gz_header_s, ptr %408, i32 0, i32 1
  store i64 %405, ptr %409, align 8, !tbaa !39
  br label %410

410:                                              ; preds = %404, %399
  %411 = load ptr, ptr %8, align 8, !tbaa !5
  %412 = getelementptr inbounds %struct.inflate_state, ptr %411, i32 0, i32 5
  %413 = load i32, ptr %412, align 8, !tbaa !29
  %414 = and i32 %413, 512
  %415 = icmp ne i32 %414, 0
  br i1 %415, label %416, label %448

416:                                              ; preds = %410
  %417 = load ptr, ptr %8, align 8, !tbaa !5
  %418 = getelementptr inbounds %struct.inflate_state, ptr %417, i32 0, i32 3
  %419 = load i32, ptr %418, align 8, !tbaa !23
  %420 = and i32 %419, 4
  %421 = icmp ne i32 %420, 0
  br i1 %421, label %422, label %448

422:                                              ; preds = %416
  br label %423

423:                                              ; preds = %422
  %424 = load i64, ptr %13, align 8, !tbaa !21
  %425 = trunc i64 %424 to i8
  %426 = getelementptr inbounds [4 x i8], ptr %23, i64 0, i64 0
  store i8 %425, ptr %426, align 1, !tbaa !24
  %427 = load i64, ptr %13, align 8, !tbaa !21
  %428 = lshr i64 %427, 8
  %429 = trunc i64 %428 to i8
  %430 = getelementptr inbounds [4 x i8], ptr %23, i64 0, i64 1
  store i8 %429, ptr %430, align 1, !tbaa !24
  %431 = load i64, ptr %13, align 8, !tbaa !21
  %432 = lshr i64 %431, 16
  %433 = trunc i64 %432 to i8
  %434 = getelementptr inbounds [4 x i8], ptr %23, i64 0, i64 2
  store i8 %433, ptr %434, align 1, !tbaa !24
  %435 = load i64, ptr %13, align 8, !tbaa !21
  %436 = lshr i64 %435, 24
  %437 = trunc i64 %436 to i8
  %438 = getelementptr inbounds [4 x i8], ptr %23, i64 0, i64 3
  store i8 %437, ptr %438, align 1, !tbaa !24
  %439 = load ptr, ptr %8, align 8, !tbaa !5
  %440 = getelementptr inbounds %struct.inflate_state, ptr %439, i32 0, i32 7
  %441 = load i64, ptr %440, align 8, !tbaa !28
  %442 = getelementptr inbounds [4 x i8], ptr %23, i64 0, i64 0
  %443 = call i64 @crc32(i64 noundef %441, ptr noundef %442, i32 noundef 4)
  %444 = load ptr, ptr %8, align 8, !tbaa !5
  %445 = getelementptr inbounds %struct.inflate_state, ptr %444, i32 0, i32 7
  store i64 %443, ptr %445, align 8, !tbaa !28
  br label %446

446:                                              ; preds = %423
  br label %447

447:                                              ; preds = %446
  br label %448

448:                                              ; preds = %447, %416, %410
  br label %449

449:                                              ; preds = %448
  store i64 0, ptr %13, align 8, !tbaa !21
  store i32 0, ptr %14, align 4, !tbaa !9
  br label %450

450:                                              ; preds = %449
  br label %451

451:                                              ; preds = %450
  %452 = load ptr, ptr %8, align 8, !tbaa !5
  %453 = getelementptr inbounds %struct.inflate_state, ptr %452, i32 0, i32 1
  store i32 16183, ptr %453, align 8, !tbaa !17
  br label %454

454:                                              ; preds = %451, %82
  br label %455

455:                                              ; preds = %454
  br label %456

456:                                              ; preds = %479, %455
  %457 = load i32, ptr %14, align 4, !tbaa !9
  %458 = icmp ult i32 %457, 16
  br i1 %458, label %459, label %480

459:                                              ; preds = %456
  br label %460

460:                                              ; preds = %459
  %461 = load i32, ptr %11, align 4, !tbaa !9
  %462 = icmp eq i32 %461, 0
  br i1 %462, label %463, label %464

463:                                              ; preds = %460
  br label %2996

464:                                              ; preds = %460
  %465 = load i32, ptr %11, align 4, !tbaa !9
  %466 = add i32 %465, -1
  store i32 %466, ptr %11, align 4, !tbaa !9
  %467 = load ptr, ptr %9, align 8, !tbaa !5
  %468 = getelementptr inbounds i8, ptr %467, i32 1
  store ptr %468, ptr %9, align 8, !tbaa !5
  %469 = load i8, ptr %467, align 1, !tbaa !24
  %470 = zext i8 %469 to i64
  %471 = load i32, ptr %14, align 4, !tbaa !9
  %472 = zext i32 %471 to i64
  %473 = shl i64 %470, %472
  %474 = load i64, ptr %13, align 8, !tbaa !21
  %475 = add i64 %474, %473
  store i64 %475, ptr %13, align 8, !tbaa !21
  %476 = load i32, ptr %14, align 4, !tbaa !9
  %477 = add i32 %476, 8
  store i32 %477, ptr %14, align 4, !tbaa !9
  br label %478

478:                                              ; preds = %464
  br label %479

479:                                              ; preds = %478
  br label %456, !llvm.loop !40

480:                                              ; preds = %456
  br label %481

481:                                              ; preds = %480
  br label %482

482:                                              ; preds = %481
  %483 = load ptr, ptr %8, align 8, !tbaa !5
  %484 = getelementptr inbounds %struct.inflate_state, ptr %483, i32 0, i32 9
  %485 = load ptr, ptr %484, align 8, !tbaa !30
  %486 = icmp ne ptr %485, null
  br i1 %486, label %487, label %502

487:                                              ; preds = %482
  %488 = load i64, ptr %13, align 8, !tbaa !21
  %489 = and i64 %488, 255
  %490 = trunc i64 %489 to i32
  %491 = load ptr, ptr %8, align 8, !tbaa !5
  %492 = getelementptr inbounds %struct.inflate_state, ptr %491, i32 0, i32 9
  %493 = load ptr, ptr %492, align 8, !tbaa !30
  %494 = getelementptr inbounds %struct.gz_header_s, ptr %493, i32 0, i32 2
  store i32 %490, ptr %494, align 8, !tbaa !41
  %495 = load i64, ptr %13, align 8, !tbaa !21
  %496 = lshr i64 %495, 8
  %497 = trunc i64 %496 to i32
  %498 = load ptr, ptr %8, align 8, !tbaa !5
  %499 = getelementptr inbounds %struct.inflate_state, ptr %498, i32 0, i32 9
  %500 = load ptr, ptr %499, align 8, !tbaa !30
  %501 = getelementptr inbounds %struct.gz_header_s, ptr %500, i32 0, i32 3
  store i32 %497, ptr %501, align 4, !tbaa !42
  br label %502

502:                                              ; preds = %487, %482
  %503 = load ptr, ptr %8, align 8, !tbaa !5
  %504 = getelementptr inbounds %struct.inflate_state, ptr %503, i32 0, i32 5
  %505 = load i32, ptr %504, align 8, !tbaa !29
  %506 = and i32 %505, 512
  %507 = icmp ne i32 %506, 0
  br i1 %507, label %508, label %532

508:                                              ; preds = %502
  %509 = load ptr, ptr %8, align 8, !tbaa !5
  %510 = getelementptr inbounds %struct.inflate_state, ptr %509, i32 0, i32 3
  %511 = load i32, ptr %510, align 8, !tbaa !23
  %512 = and i32 %511, 4
  %513 = icmp ne i32 %512, 0
  br i1 %513, label %514, label %532

514:                                              ; preds = %508
  br label %515

515:                                              ; preds = %514
  %516 = load i64, ptr %13, align 8, !tbaa !21
  %517 = trunc i64 %516 to i8
  %518 = getelementptr inbounds [4 x i8], ptr %23, i64 0, i64 0
  store i8 %517, ptr %518, align 1, !tbaa !24
  %519 = load i64, ptr %13, align 8, !tbaa !21
  %520 = lshr i64 %519, 8
  %521 = trunc i64 %520 to i8
  %522 = getelementptr inbounds [4 x i8], ptr %23, i64 0, i64 1
  store i8 %521, ptr %522, align 1, !tbaa !24
  %523 = load ptr, ptr %8, align 8, !tbaa !5
  %524 = getelementptr inbounds %struct.inflate_state, ptr %523, i32 0, i32 7
  %525 = load i64, ptr %524, align 8, !tbaa !28
  %526 = getelementptr inbounds [4 x i8], ptr %23, i64 0, i64 0
  %527 = call i64 @crc32(i64 noundef %525, ptr noundef %526, i32 noundef 2)
  %528 = load ptr, ptr %8, align 8, !tbaa !5
  %529 = getelementptr inbounds %struct.inflate_state, ptr %528, i32 0, i32 7
  store i64 %527, ptr %529, align 8, !tbaa !28
  br label %530

530:                                              ; preds = %515
  br label %531

531:                                              ; preds = %530
  br label %532

532:                                              ; preds = %531, %508, %502
  br label %533

533:                                              ; preds = %532
  store i64 0, ptr %13, align 8, !tbaa !21
  store i32 0, ptr %14, align 4, !tbaa !9
  br label %534

534:                                              ; preds = %533
  br label %535

535:                                              ; preds = %534
  %536 = load ptr, ptr %8, align 8, !tbaa !5
  %537 = getelementptr inbounds %struct.inflate_state, ptr %536, i32 0, i32 1
  store i32 16184, ptr %537, align 8, !tbaa !17
  br label %538

538:                                              ; preds = %535, %82
  %539 = load ptr, ptr %8, align 8, !tbaa !5
  %540 = getelementptr inbounds %struct.inflate_state, ptr %539, i32 0, i32 5
  %541 = load i32, ptr %540, align 8, !tbaa !29
  %542 = and i32 %541, 1024
  %543 = icmp ne i32 %542, 0
  br i1 %543, label %544, label %622

544:                                              ; preds = %538
  br label %545

545:                                              ; preds = %544
  br label %546

546:                                              ; preds = %569, %545
  %547 = load i32, ptr %14, align 4, !tbaa !9
  %548 = icmp ult i32 %547, 16
  br i1 %548, label %549, label %570

549:                                              ; preds = %546
  br label %550

550:                                              ; preds = %549
  %551 = load i32, ptr %11, align 4, !tbaa !9
  %552 = icmp eq i32 %551, 0
  br i1 %552, label %553, label %554

553:                                              ; preds = %550
  br label %2996

554:                                              ; preds = %550
  %555 = load i32, ptr %11, align 4, !tbaa !9
  %556 = add i32 %555, -1
  store i32 %556, ptr %11, align 4, !tbaa !9
  %557 = load ptr, ptr %9, align 8, !tbaa !5
  %558 = getelementptr inbounds i8, ptr %557, i32 1
  store ptr %558, ptr %9, align 8, !tbaa !5
  %559 = load i8, ptr %557, align 1, !tbaa !24
  %560 = zext i8 %559 to i64
  %561 = load i32, ptr %14, align 4, !tbaa !9
  %562 = zext i32 %561 to i64
  %563 = shl i64 %560, %562
  %564 = load i64, ptr %13, align 8, !tbaa !21
  %565 = add i64 %564, %563
  store i64 %565, ptr %13, align 8, !tbaa !21
  %566 = load i32, ptr %14, align 4, !tbaa !9
  %567 = add i32 %566, 8
  store i32 %567, ptr %14, align 4, !tbaa !9
  br label %568

568:                                              ; preds = %554
  br label %569

569:                                              ; preds = %568
  br label %546, !llvm.loop !43

570:                                              ; preds = %546
  br label %571

571:                                              ; preds = %570
  br label %572

572:                                              ; preds = %571
  %573 = load i64, ptr %13, align 8, !tbaa !21
  %574 = trunc i64 %573 to i32
  %575 = load ptr, ptr %8, align 8, !tbaa !5
  %576 = getelementptr inbounds %struct.inflate_state, ptr %575, i32 0, i32 17
  store i32 %574, ptr %576, align 4, !tbaa !44
  %577 = load ptr, ptr %8, align 8, !tbaa !5
  %578 = getelementptr inbounds %struct.inflate_state, ptr %577, i32 0, i32 9
  %579 = load ptr, ptr %578, align 8, !tbaa !30
  %580 = icmp ne ptr %579, null
  br i1 %580, label %581, label %588

581:                                              ; preds = %572
  %582 = load i64, ptr %13, align 8, !tbaa !21
  %583 = trunc i64 %582 to i32
  %584 = load ptr, ptr %8, align 8, !tbaa !5
  %585 = getelementptr inbounds %struct.inflate_state, ptr %584, i32 0, i32 9
  %586 = load ptr, ptr %585, align 8, !tbaa !30
  %587 = getelementptr inbounds %struct.gz_header_s, ptr %586, i32 0, i32 5
  store i32 %583, ptr %587, align 8, !tbaa !45
  br label %588

588:                                              ; preds = %581, %572
  %589 = load ptr, ptr %8, align 8, !tbaa !5
  %590 = getelementptr inbounds %struct.inflate_state, ptr %589, i32 0, i32 5
  %591 = load i32, ptr %590, align 8, !tbaa !29
  %592 = and i32 %591, 512
  %593 = icmp ne i32 %592, 0
  br i1 %593, label %594, label %618

594:                                              ; preds = %588
  %595 = load ptr, ptr %8, align 8, !tbaa !5
  %596 = getelementptr inbounds %struct.inflate_state, ptr %595, i32 0, i32 3
  %597 = load i32, ptr %596, align 8, !tbaa !23
  %598 = and i32 %597, 4
  %599 = icmp ne i32 %598, 0
  br i1 %599, label %600, label %618

600:                                              ; preds = %594
  br label %601

601:                                              ; preds = %600
  %602 = load i64, ptr %13, align 8, !tbaa !21
  %603 = trunc i64 %602 to i8
  %604 = getelementptr inbounds [4 x i8], ptr %23, i64 0, i64 0
  store i8 %603, ptr %604, align 1, !tbaa !24
  %605 = load i64, ptr %13, align 8, !tbaa !21
  %606 = lshr i64 %605, 8
  %607 = trunc i64 %606 to i8
  %608 = getelementptr inbounds [4 x i8], ptr %23, i64 0, i64 1
  store i8 %607, ptr %608, align 1, !tbaa !24
  %609 = load ptr, ptr %8, align 8, !tbaa !5
  %610 = getelementptr inbounds %struct.inflate_state, ptr %609, i32 0, i32 7
  %611 = load i64, ptr %610, align 8, !tbaa !28
  %612 = getelementptr inbounds [4 x i8], ptr %23, i64 0, i64 0
  %613 = call i64 @crc32(i64 noundef %611, ptr noundef %612, i32 noundef 2)
  %614 = load ptr, ptr %8, align 8, !tbaa !5
  %615 = getelementptr inbounds %struct.inflate_state, ptr %614, i32 0, i32 7
  store i64 %613, ptr %615, align 8, !tbaa !28
  br label %616

616:                                              ; preds = %601
  br label %617

617:                                              ; preds = %616
  br label %618

618:                                              ; preds = %617, %594, %588
  br label %619

619:                                              ; preds = %618
  store i64 0, ptr %13, align 8, !tbaa !21
  store i32 0, ptr %14, align 4, !tbaa !9
  br label %620

620:                                              ; preds = %619
  br label %621

621:                                              ; preds = %620
  br label %633

622:                                              ; preds = %538
  %623 = load ptr, ptr %8, align 8, !tbaa !5
  %624 = getelementptr inbounds %struct.inflate_state, ptr %623, i32 0, i32 9
  %625 = load ptr, ptr %624, align 8, !tbaa !30
  %626 = icmp ne ptr %625, null
  br i1 %626, label %627, label %632

627:                                              ; preds = %622
  %628 = load ptr, ptr %8, align 8, !tbaa !5
  %629 = getelementptr inbounds %struct.inflate_state, ptr %628, i32 0, i32 9
  %630 = load ptr, ptr %629, align 8, !tbaa !30
  %631 = getelementptr inbounds %struct.gz_header_s, ptr %630, i32 0, i32 4
  store ptr null, ptr %631, align 8, !tbaa !46
  br label %632

632:                                              ; preds = %627, %622
  br label %633

633:                                              ; preds = %632, %621
  %634 = load ptr, ptr %8, align 8, !tbaa !5
  %635 = getelementptr inbounds %struct.inflate_state, ptr %634, i32 0, i32 1
  store i32 16185, ptr %635, align 8, !tbaa !17
  br label %636

636:                                              ; preds = %633, %82
  %637 = load ptr, ptr %8, align 8, !tbaa !5
  %638 = getelementptr inbounds %struct.inflate_state, ptr %637, i32 0, i32 5
  %639 = load i32, ptr %638, align 8, !tbaa !29
  %640 = and i32 %639, 1024
  %641 = icmp ne i32 %640, 0
  br i1 %641, label %642, label %748

642:                                              ; preds = %636
  %643 = load ptr, ptr %8, align 8, !tbaa !5
  %644 = getelementptr inbounds %struct.inflate_state, ptr %643, i32 0, i32 17
  %645 = load i32, ptr %644, align 4, !tbaa !44
  store i32 %645, ptr %17, align 4, !tbaa !9
  %646 = load i32, ptr %17, align 4, !tbaa !9
  %647 = load i32, ptr %11, align 4, !tbaa !9
  %648 = icmp ugt i32 %646, %647
  br i1 %648, label %649, label %651

649:                                              ; preds = %642
  %650 = load i32, ptr %11, align 4, !tbaa !9
  store i32 %650, ptr %17, align 4, !tbaa !9
  br label %651

651:                                              ; preds = %649, %642
  %652 = load i32, ptr %17, align 4, !tbaa !9
  %653 = icmp ne i32 %652, 0
  br i1 %653, label %654, label %741

654:                                              ; preds = %651
  %655 = load ptr, ptr %8, align 8, !tbaa !5
  %656 = getelementptr inbounds %struct.inflate_state, ptr %655, i32 0, i32 9
  %657 = load ptr, ptr %656, align 8, !tbaa !30
  %658 = icmp ne ptr %657, null
  br i1 %658, label %659, label %707

659:                                              ; preds = %654
  %660 = load ptr, ptr %8, align 8, !tbaa !5
  %661 = getelementptr inbounds %struct.inflate_state, ptr %660, i32 0, i32 9
  %662 = load ptr, ptr %661, align 8, !tbaa !30
  %663 = getelementptr inbounds %struct.gz_header_s, ptr %662, i32 0, i32 4
  %664 = load ptr, ptr %663, align 8, !tbaa !46
  %665 = icmp ne ptr %664, null
  br i1 %665, label %666, label %707

666:                                              ; preds = %659
  %667 = load ptr, ptr %8, align 8, !tbaa !5
  %668 = getelementptr inbounds %struct.inflate_state, ptr %667, i32 0, i32 9
  %669 = load ptr, ptr %668, align 8, !tbaa !30
  %670 = getelementptr inbounds %struct.gz_header_s, ptr %669, i32 0, i32 5
  %671 = load i32, ptr %670, align 8, !tbaa !45
  %672 = load ptr, ptr %8, align 8, !tbaa !5
  %673 = getelementptr inbounds %struct.inflate_state, ptr %672, i32 0, i32 17
  %674 = load i32, ptr %673, align 4, !tbaa !44
  %675 = sub i32 %671, %674
  store i32 %675, ptr %21, align 4, !tbaa !9
  %676 = load ptr, ptr %8, align 8, !tbaa !5
  %677 = getelementptr inbounds %struct.inflate_state, ptr %676, i32 0, i32 9
  %678 = load ptr, ptr %677, align 8, !tbaa !30
  %679 = getelementptr inbounds %struct.gz_header_s, ptr %678, i32 0, i32 4
  %680 = load ptr, ptr %679, align 8, !tbaa !46
  %681 = load i32, ptr %21, align 4, !tbaa !9
  %682 = zext i32 %681 to i64
  %683 = getelementptr inbounds i8, ptr %680, i64 %682
  %684 = load ptr, ptr %9, align 8, !tbaa !5
  %685 = load i32, ptr %21, align 4, !tbaa !9
  %686 = load i32, ptr %17, align 4, !tbaa !9
  %687 = add i32 %685, %686
  %688 = load ptr, ptr %8, align 8, !tbaa !5
  %689 = getelementptr inbounds %struct.inflate_state, ptr %688, i32 0, i32 9
  %690 = load ptr, ptr %689, align 8, !tbaa !30
  %691 = getelementptr inbounds %struct.gz_header_s, ptr %690, i32 0, i32 6
  %692 = load i32, ptr %691, align 4, !tbaa !47
  %693 = icmp ugt i32 %687, %692
  br i1 %693, label %694, label %702

694:                                              ; preds = %666
  %695 = load ptr, ptr %8, align 8, !tbaa !5
  %696 = getelementptr inbounds %struct.inflate_state, ptr %695, i32 0, i32 9
  %697 = load ptr, ptr %696, align 8, !tbaa !30
  %698 = getelementptr inbounds %struct.gz_header_s, ptr %697, i32 0, i32 6
  %699 = load i32, ptr %698, align 4, !tbaa !47
  %700 = load i32, ptr %21, align 4, !tbaa !9
  %701 = sub i32 %699, %700
  br label %704

702:                                              ; preds = %666
  %703 = load i32, ptr %17, align 4, !tbaa !9
  br label %704

704:                                              ; preds = %702, %694
  %705 = phi i32 [ %701, %694 ], [ %703, %702 ]
  %706 = zext i32 %705 to i64
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %683, ptr align 1 %684, i64 %706, i1 false)
  br label %707

707:                                              ; preds = %704, %659, %654
  %708 = load ptr, ptr %8, align 8, !tbaa !5
  %709 = getelementptr inbounds %struct.inflate_state, ptr %708, i32 0, i32 5
  %710 = load i32, ptr %709, align 8, !tbaa !29
  %711 = and i32 %710, 512
  %712 = icmp ne i32 %711, 0
  br i1 %712, label %713, label %728

713:                                              ; preds = %707
  %714 = load ptr, ptr %8, align 8, !tbaa !5
  %715 = getelementptr inbounds %struct.inflate_state, ptr %714, i32 0, i32 3
  %716 = load i32, ptr %715, align 8, !tbaa !23
  %717 = and i32 %716, 4
  %718 = icmp ne i32 %717, 0
  br i1 %718, label %719, label %728

719:                                              ; preds = %713
  %720 = load ptr, ptr %8, align 8, !tbaa !5
  %721 = getelementptr inbounds %struct.inflate_state, ptr %720, i32 0, i32 7
  %722 = load i64, ptr %721, align 8, !tbaa !28
  %723 = load ptr, ptr %9, align 8, !tbaa !5
  %724 = load i32, ptr %17, align 4, !tbaa !9
  %725 = call i64 @crc32(i64 noundef %722, ptr noundef %723, i32 noundef %724)
  %726 = load ptr, ptr %8, align 8, !tbaa !5
  %727 = getelementptr inbounds %struct.inflate_state, ptr %726, i32 0, i32 7
  store i64 %725, ptr %727, align 8, !tbaa !28
  br label %728

728:                                              ; preds = %719, %713, %707
  %729 = load i32, ptr %17, align 4, !tbaa !9
  %730 = load i32, ptr %11, align 4, !tbaa !9
  %731 = sub i32 %730, %729
  store i32 %731, ptr %11, align 4, !tbaa !9
  %732 = load i32, ptr %17, align 4, !tbaa !9
  %733 = load ptr, ptr %9, align 8, !tbaa !5
  %734 = zext i32 %732 to i64
  %735 = getelementptr inbounds i8, ptr %733, i64 %734
  store ptr %735, ptr %9, align 8, !tbaa !5
  %736 = load i32, ptr %17, align 4, !tbaa !9
  %737 = load ptr, ptr %8, align 8, !tbaa !5
  %738 = getelementptr inbounds %struct.inflate_state, ptr %737, i32 0, i32 17
  %739 = load i32, ptr %738, align 4, !tbaa !44
  %740 = sub i32 %739, %736
  store i32 %740, ptr %738, align 4, !tbaa !44
  br label %741

741:                                              ; preds = %728, %651
  %742 = load ptr, ptr %8, align 8, !tbaa !5
  %743 = getelementptr inbounds %struct.inflate_state, ptr %742, i32 0, i32 17
  %744 = load i32, ptr %743, align 4, !tbaa !44
  %745 = icmp ne i32 %744, 0
  br i1 %745, label %746, label %747

746:                                              ; preds = %741
  br label %2996

747:                                              ; preds = %741
  br label %748

748:                                              ; preds = %747, %636
  %749 = load ptr, ptr %8, align 8, !tbaa !5
  %750 = getelementptr inbounds %struct.inflate_state, ptr %749, i32 0, i32 17
  store i32 0, ptr %750, align 4, !tbaa !44
  %751 = load ptr, ptr %8, align 8, !tbaa !5
  %752 = getelementptr inbounds %struct.inflate_state, ptr %751, i32 0, i32 1
  store i32 16186, ptr %752, align 8, !tbaa !17
  br label %753

753:                                              ; preds = %748, %82
  %754 = load ptr, ptr %8, align 8, !tbaa !5
  %755 = getelementptr inbounds %struct.inflate_state, ptr %754, i32 0, i32 5
  %756 = load i32, ptr %755, align 8, !tbaa !29
  %757 = and i32 %756, 2048
  %758 = icmp ne i32 %757, 0
  br i1 %758, label %759, label %850

759:                                              ; preds = %753
  %760 = load i32, ptr %11, align 4, !tbaa !9
  %761 = icmp eq i32 %760, 0
  br i1 %761, label %762, label %763

762:                                              ; preds = %759
  br label %2996

763:                                              ; preds = %759
  store i32 0, ptr %17, align 4, !tbaa !9
  br label %764

764:                                              ; preds = %815, %763
  %765 = load ptr, ptr %9, align 8, !tbaa !5
  %766 = load i32, ptr %17, align 4, !tbaa !9
  %767 = add i32 %766, 1
  store i32 %767, ptr %17, align 4, !tbaa !9
  %768 = zext i32 %766 to i64
  %769 = getelementptr inbounds i8, ptr %765, i64 %768
  %770 = load i8, ptr %769, align 1, !tbaa !24
  %771 = zext i8 %770 to i32
  store i32 %771, ptr %21, align 4, !tbaa !9
  %772 = load ptr, ptr %8, align 8, !tbaa !5
  %773 = getelementptr inbounds %struct.inflate_state, ptr %772, i32 0, i32 9
  %774 = load ptr, ptr %773, align 8, !tbaa !30
  %775 = icmp ne ptr %774, null
  br i1 %775, label %776, label %807

776:                                              ; preds = %764
  %777 = load ptr, ptr %8, align 8, !tbaa !5
  %778 = getelementptr inbounds %struct.inflate_state, ptr %777, i32 0, i32 9
  %779 = load ptr, ptr %778, align 8, !tbaa !30
  %780 = getelementptr inbounds %struct.gz_header_s, ptr %779, i32 0, i32 7
  %781 = load ptr, ptr %780, align 8, !tbaa !48
  %782 = icmp ne ptr %781, null
  br i1 %782, label %783, label %807

783:                                              ; preds = %776
  %784 = load ptr, ptr %8, align 8, !tbaa !5
  %785 = getelementptr inbounds %struct.inflate_state, ptr %784, i32 0, i32 17
  %786 = load i32, ptr %785, align 4, !tbaa !44
  %787 = load ptr, ptr %8, align 8, !tbaa !5
  %788 = getelementptr inbounds %struct.inflate_state, ptr %787, i32 0, i32 9
  %789 = load ptr, ptr %788, align 8, !tbaa !30
  %790 = getelementptr inbounds %struct.gz_header_s, ptr %789, i32 0, i32 8
  %791 = load i32, ptr %790, align 8, !tbaa !49
  %792 = icmp ult i32 %786, %791
  br i1 %792, label %793, label %807

793:                                              ; preds = %783
  %794 = load i32, ptr %21, align 4, !tbaa !9
  %795 = trunc i32 %794 to i8
  %796 = load ptr, ptr %8, align 8, !tbaa !5
  %797 = getelementptr inbounds %struct.inflate_state, ptr %796, i32 0, i32 9
  %798 = load ptr, ptr %797, align 8, !tbaa !30
  %799 = getelementptr inbounds %struct.gz_header_s, ptr %798, i32 0, i32 7
  %800 = load ptr, ptr %799, align 8, !tbaa !48
  %801 = load ptr, ptr %8, align 8, !tbaa !5
  %802 = getelementptr inbounds %struct.inflate_state, ptr %801, i32 0, i32 17
  %803 = load i32, ptr %802, align 4, !tbaa !44
  %804 = add i32 %803, 1
  store i32 %804, ptr %802, align 4, !tbaa !44
  %805 = zext i32 %803 to i64
  %806 = getelementptr inbounds i8, ptr %800, i64 %805
  store i8 %795, ptr %806, align 1, !tbaa !24
  br label %807

807:                                              ; preds = %793, %783, %776, %764
  br label %808

808:                                              ; preds = %807
  %809 = load i32, ptr %21, align 4, !tbaa !9
  %810 = icmp ne i32 %809, 0
  br i1 %810, label %811, label %815

811:                                              ; preds = %808
  %812 = load i32, ptr %17, align 4, !tbaa !9
  %813 = load i32, ptr %11, align 4, !tbaa !9
  %814 = icmp ult i32 %812, %813
  br label %815

815:                                              ; preds = %811, %808
  %816 = phi i1 [ false, %808 ], [ %814, %811 ]
  br i1 %816, label %764, label %817, !llvm.loop !50

817:                                              ; preds = %815
  %818 = load ptr, ptr %8, align 8, !tbaa !5
  %819 = getelementptr inbounds %struct.inflate_state, ptr %818, i32 0, i32 5
  %820 = load i32, ptr %819, align 8, !tbaa !29
  %821 = and i32 %820, 512
  %822 = icmp ne i32 %821, 0
  br i1 %822, label %823, label %838

823:                                              ; preds = %817
  %824 = load ptr, ptr %8, align 8, !tbaa !5
  %825 = getelementptr inbounds %struct.inflate_state, ptr %824, i32 0, i32 3
  %826 = load i32, ptr %825, align 8, !tbaa !23
  %827 = and i32 %826, 4
  %828 = icmp ne i32 %827, 0
  br i1 %828, label %829, label %838

829:                                              ; preds = %823
  %830 = load ptr, ptr %8, align 8, !tbaa !5
  %831 = getelementptr inbounds %struct.inflate_state, ptr %830, i32 0, i32 7
  %832 = load i64, ptr %831, align 8, !tbaa !28
  %833 = load ptr, ptr %9, align 8, !tbaa !5
  %834 = load i32, ptr %17, align 4, !tbaa !9
  %835 = call i64 @crc32(i64 noundef %832, ptr noundef %833, i32 noundef %834)
  %836 = load ptr, ptr %8, align 8, !tbaa !5
  %837 = getelementptr inbounds %struct.inflate_state, ptr %836, i32 0, i32 7
  store i64 %835, ptr %837, align 8, !tbaa !28
  br label %838

838:                                              ; preds = %829, %823, %817
  %839 = load i32, ptr %17, align 4, !tbaa !9
  %840 = load i32, ptr %11, align 4, !tbaa !9
  %841 = sub i32 %840, %839
  store i32 %841, ptr %11, align 4, !tbaa !9
  %842 = load i32, ptr %17, align 4, !tbaa !9
  %843 = load ptr, ptr %9, align 8, !tbaa !5
  %844 = zext i32 %842 to i64
  %845 = getelementptr inbounds i8, ptr %843, i64 %844
  store ptr %845, ptr %9, align 8, !tbaa !5
  %846 = load i32, ptr %21, align 4, !tbaa !9
  %847 = icmp ne i32 %846, 0
  br i1 %847, label %848, label %849

848:                                              ; preds = %838
  br label %2996

849:                                              ; preds = %838
  br label %861

850:                                              ; preds = %753
  %851 = load ptr, ptr %8, align 8, !tbaa !5
  %852 = getelementptr inbounds %struct.inflate_state, ptr %851, i32 0, i32 9
  %853 = load ptr, ptr %852, align 8, !tbaa !30
  %854 = icmp ne ptr %853, null
  br i1 %854, label %855, label %860

855:                                              ; preds = %850
  %856 = load ptr, ptr %8, align 8, !tbaa !5
  %857 = getelementptr inbounds %struct.inflate_state, ptr %856, i32 0, i32 9
  %858 = load ptr, ptr %857, align 8, !tbaa !30
  %859 = getelementptr inbounds %struct.gz_header_s, ptr %858, i32 0, i32 7
  store ptr null, ptr %859, align 8, !tbaa !48
  br label %860

860:                                              ; preds = %855, %850
  br label %861

861:                                              ; preds = %860, %849
  %862 = load ptr, ptr %8, align 8, !tbaa !5
  %863 = getelementptr inbounds %struct.inflate_state, ptr %862, i32 0, i32 17
  store i32 0, ptr %863, align 4, !tbaa !44
  %864 = load ptr, ptr %8, align 8, !tbaa !5
  %865 = getelementptr inbounds %struct.inflate_state, ptr %864, i32 0, i32 1
  store i32 16187, ptr %865, align 8, !tbaa !17
  br label %866

866:                                              ; preds = %861, %82
  %867 = load ptr, ptr %8, align 8, !tbaa !5
  %868 = getelementptr inbounds %struct.inflate_state, ptr %867, i32 0, i32 5
  %869 = load i32, ptr %868, align 8, !tbaa !29
  %870 = and i32 %869, 4096
  %871 = icmp ne i32 %870, 0
  br i1 %871, label %872, label %963

872:                                              ; preds = %866
  %873 = load i32, ptr %11, align 4, !tbaa !9
  %874 = icmp eq i32 %873, 0
  br i1 %874, label %875, label %876

875:                                              ; preds = %872
  br label %2996

876:                                              ; preds = %872
  store i32 0, ptr %17, align 4, !tbaa !9
  br label %877

877:                                              ; preds = %928, %876
  %878 = load ptr, ptr %9, align 8, !tbaa !5
  %879 = load i32, ptr %17, align 4, !tbaa !9
  %880 = add i32 %879, 1
  store i32 %880, ptr %17, align 4, !tbaa !9
  %881 = zext i32 %879 to i64
  %882 = getelementptr inbounds i8, ptr %878, i64 %881
  %883 = load i8, ptr %882, align 1, !tbaa !24
  %884 = zext i8 %883 to i32
  store i32 %884, ptr %21, align 4, !tbaa !9
  %885 = load ptr, ptr %8, align 8, !tbaa !5
  %886 = getelementptr inbounds %struct.inflate_state, ptr %885, i32 0, i32 9
  %887 = load ptr, ptr %886, align 8, !tbaa !30
  %888 = icmp ne ptr %887, null
  br i1 %888, label %889, label %920

889:                                              ; preds = %877
  %890 = load ptr, ptr %8, align 8, !tbaa !5
  %891 = getelementptr inbounds %struct.inflate_state, ptr %890, i32 0, i32 9
  %892 = load ptr, ptr %891, align 8, !tbaa !30
  %893 = getelementptr inbounds %struct.gz_header_s, ptr %892, i32 0, i32 9
  %894 = load ptr, ptr %893, align 8, !tbaa !51
  %895 = icmp ne ptr %894, null
  br i1 %895, label %896, label %920

896:                                              ; preds = %889
  %897 = load ptr, ptr %8, align 8, !tbaa !5
  %898 = getelementptr inbounds %struct.inflate_state, ptr %897, i32 0, i32 17
  %899 = load i32, ptr %898, align 4, !tbaa !44
  %900 = load ptr, ptr %8, align 8, !tbaa !5
  %901 = getelementptr inbounds %struct.inflate_state, ptr %900, i32 0, i32 9
  %902 = load ptr, ptr %901, align 8, !tbaa !30
  %903 = getelementptr inbounds %struct.gz_header_s, ptr %902, i32 0, i32 10
  %904 = load i32, ptr %903, align 8, !tbaa !52
  %905 = icmp ult i32 %899, %904
  br i1 %905, label %906, label %920

906:                                              ; preds = %896
  %907 = load i32, ptr %21, align 4, !tbaa !9
  %908 = trunc i32 %907 to i8
  %909 = load ptr, ptr %8, align 8, !tbaa !5
  %910 = getelementptr inbounds %struct.inflate_state, ptr %909, i32 0, i32 9
  %911 = load ptr, ptr %910, align 8, !tbaa !30
  %912 = getelementptr inbounds %struct.gz_header_s, ptr %911, i32 0, i32 9
  %913 = load ptr, ptr %912, align 8, !tbaa !51
  %914 = load ptr, ptr %8, align 8, !tbaa !5
  %915 = getelementptr inbounds %struct.inflate_state, ptr %914, i32 0, i32 17
  %916 = load i32, ptr %915, align 4, !tbaa !44
  %917 = add i32 %916, 1
  store i32 %917, ptr %915, align 4, !tbaa !44
  %918 = zext i32 %916 to i64
  %919 = getelementptr inbounds i8, ptr %913, i64 %918
  store i8 %908, ptr %919, align 1, !tbaa !24
  br label %920

920:                                              ; preds = %906, %896, %889, %877
  br label %921

921:                                              ; preds = %920
  %922 = load i32, ptr %21, align 4, !tbaa !9
  %923 = icmp ne i32 %922, 0
  br i1 %923, label %924, label %928

924:                                              ; preds = %921
  %925 = load i32, ptr %17, align 4, !tbaa !9
  %926 = load i32, ptr %11, align 4, !tbaa !9
  %927 = icmp ult i32 %925, %926
  br label %928

928:                                              ; preds = %924, %921
  %929 = phi i1 [ false, %921 ], [ %927, %924 ]
  br i1 %929, label %877, label %930, !llvm.loop !53

930:                                              ; preds = %928
  %931 = load ptr, ptr %8, align 8, !tbaa !5
  %932 = getelementptr inbounds %struct.inflate_state, ptr %931, i32 0, i32 5
  %933 = load i32, ptr %932, align 8, !tbaa !29
  %934 = and i32 %933, 512
  %935 = icmp ne i32 %934, 0
  br i1 %935, label %936, label %951

936:                                              ; preds = %930
  %937 = load ptr, ptr %8, align 8, !tbaa !5
  %938 = getelementptr inbounds %struct.inflate_state, ptr %937, i32 0, i32 3
  %939 = load i32, ptr %938, align 8, !tbaa !23
  %940 = and i32 %939, 4
  %941 = icmp ne i32 %940, 0
  br i1 %941, label %942, label %951

942:                                              ; preds = %936
  %943 = load ptr, ptr %8, align 8, !tbaa !5
  %944 = getelementptr inbounds %struct.inflate_state, ptr %943, i32 0, i32 7
  %945 = load i64, ptr %944, align 8, !tbaa !28
  %946 = load ptr, ptr %9, align 8, !tbaa !5
  %947 = load i32, ptr %17, align 4, !tbaa !9
  %948 = call i64 @crc32(i64 noundef %945, ptr noundef %946, i32 noundef %947)
  %949 = load ptr, ptr %8, align 8, !tbaa !5
  %950 = getelementptr inbounds %struct.inflate_state, ptr %949, i32 0, i32 7
  store i64 %948, ptr %950, align 8, !tbaa !28
  br label %951

951:                                              ; preds = %942, %936, %930
  %952 = load i32, ptr %17, align 4, !tbaa !9
  %953 = load i32, ptr %11, align 4, !tbaa !9
  %954 = sub i32 %953, %952
  store i32 %954, ptr %11, align 4, !tbaa !9
  %955 = load i32, ptr %17, align 4, !tbaa !9
  %956 = load ptr, ptr %9, align 8, !tbaa !5
  %957 = zext i32 %955 to i64
  %958 = getelementptr inbounds i8, ptr %956, i64 %957
  store ptr %958, ptr %9, align 8, !tbaa !5
  %959 = load i32, ptr %21, align 4, !tbaa !9
  %960 = icmp ne i32 %959, 0
  br i1 %960, label %961, label %962

961:                                              ; preds = %951
  br label %2996

962:                                              ; preds = %951
  br label %974

963:                                              ; preds = %866
  %964 = load ptr, ptr %8, align 8, !tbaa !5
  %965 = getelementptr inbounds %struct.inflate_state, ptr %964, i32 0, i32 9
  %966 = load ptr, ptr %965, align 8, !tbaa !30
  %967 = icmp ne ptr %966, null
  br i1 %967, label %968, label %973

968:                                              ; preds = %963
  %969 = load ptr, ptr %8, align 8, !tbaa !5
  %970 = getelementptr inbounds %struct.inflate_state, ptr %969, i32 0, i32 9
  %971 = load ptr, ptr %970, align 8, !tbaa !30
  %972 = getelementptr inbounds %struct.gz_header_s, ptr %971, i32 0, i32 9
  store ptr null, ptr %972, align 8, !tbaa !51
  br label %973

973:                                              ; preds = %968, %963
  br label %974

974:                                              ; preds = %973, %962
  %975 = load ptr, ptr %8, align 8, !tbaa !5
  %976 = getelementptr inbounds %struct.inflate_state, ptr %975, i32 0, i32 1
  store i32 16188, ptr %976, align 8, !tbaa !17
  br label %977

977:                                              ; preds = %974, %82
  %978 = load ptr, ptr %8, align 8, !tbaa !5
  %979 = getelementptr inbounds %struct.inflate_state, ptr %978, i32 0, i32 5
  %980 = load i32, ptr %979, align 8, !tbaa !29
  %981 = and i32 %980, 512
  %982 = icmp ne i32 %981, 0
  br i1 %982, label %983, label %1033

983:                                              ; preds = %977
  br label %984

984:                                              ; preds = %983
  br label %985

985:                                              ; preds = %1008, %984
  %986 = load i32, ptr %14, align 4, !tbaa !9
  %987 = icmp ult i32 %986, 16
  br i1 %987, label %988, label %1009

988:                                              ; preds = %985
  br label %989

989:                                              ; preds = %988
  %990 = load i32, ptr %11, align 4, !tbaa !9
  %991 = icmp eq i32 %990, 0
  br i1 %991, label %992, label %993

992:                                              ; preds = %989
  br label %2996

993:                                              ; preds = %989
  %994 = load i32, ptr %11, align 4, !tbaa !9
  %995 = add i32 %994, -1
  store i32 %995, ptr %11, align 4, !tbaa !9
  %996 = load ptr, ptr %9, align 8, !tbaa !5
  %997 = getelementptr inbounds i8, ptr %996, i32 1
  store ptr %997, ptr %9, align 8, !tbaa !5
  %998 = load i8, ptr %996, align 1, !tbaa !24
  %999 = zext i8 %998 to i64
  %1000 = load i32, ptr %14, align 4, !tbaa !9
  %1001 = zext i32 %1000 to i64
  %1002 = shl i64 %999, %1001
  %1003 = load i64, ptr %13, align 8, !tbaa !21
  %1004 = add i64 %1003, %1002
  store i64 %1004, ptr %13, align 8, !tbaa !21
  %1005 = load i32, ptr %14, align 4, !tbaa !9
  %1006 = add i32 %1005, 8
  store i32 %1006, ptr %14, align 4, !tbaa !9
  br label %1007

1007:                                             ; preds = %993
  br label %1008

1008:                                             ; preds = %1007
  br label %985, !llvm.loop !54

1009:                                             ; preds = %985
  br label %1010

1010:                                             ; preds = %1009
  br label %1011

1011:                                             ; preds = %1010
  %1012 = load ptr, ptr %8, align 8, !tbaa !5
  %1013 = getelementptr inbounds %struct.inflate_state, ptr %1012, i32 0, i32 3
  %1014 = load i32, ptr %1013, align 8, !tbaa !23
  %1015 = and i32 %1014, 4
  %1016 = icmp ne i32 %1015, 0
  br i1 %1016, label %1017, label %1029

1017:                                             ; preds = %1011
  %1018 = load i64, ptr %13, align 8, !tbaa !21
  %1019 = load ptr, ptr %8, align 8, !tbaa !5
  %1020 = getelementptr inbounds %struct.inflate_state, ptr %1019, i32 0, i32 7
  %1021 = load i64, ptr %1020, align 8, !tbaa !28
  %1022 = and i64 %1021, 65535
  %1023 = icmp ne i64 %1018, %1022
  br i1 %1023, label %1024, label %1029

1024:                                             ; preds = %1017
  %1025 = load ptr, ptr %5, align 8, !tbaa !5
  %1026 = getelementptr inbounds %struct.z_stream_s, ptr %1025, i32 0, i32 6
  store ptr @.str.5, ptr %1026, align 8, !tbaa !33
  %1027 = load ptr, ptr %8, align 8, !tbaa !5
  %1028 = getelementptr inbounds %struct.inflate_state, ptr %1027, i32 0, i32 1
  store i32 16209, ptr %1028, align 8, !tbaa !17
  br label %2995

1029:                                             ; preds = %1017, %1011
  br label %1030

1030:                                             ; preds = %1029
  store i64 0, ptr %13, align 8, !tbaa !21
  store i32 0, ptr %14, align 4, !tbaa !9
  br label %1031

1031:                                             ; preds = %1030
  br label %1032

1032:                                             ; preds = %1031
  br label %1033

1033:                                             ; preds = %1032, %977
  %1034 = load ptr, ptr %8, align 8, !tbaa !5
  %1035 = getelementptr inbounds %struct.inflate_state, ptr %1034, i32 0, i32 9
  %1036 = load ptr, ptr %1035, align 8, !tbaa !30
  %1037 = icmp ne ptr %1036, null
  br i1 %1037, label %1038, label %1052

1038:                                             ; preds = %1033
  %1039 = load ptr, ptr %8, align 8, !tbaa !5
  %1040 = getelementptr inbounds %struct.inflate_state, ptr %1039, i32 0, i32 5
  %1041 = load i32, ptr %1040, align 8, !tbaa !29
  %1042 = ashr i32 %1041, 9
  %1043 = and i32 %1042, 1
  %1044 = load ptr, ptr %8, align 8, !tbaa !5
  %1045 = getelementptr inbounds %struct.inflate_state, ptr %1044, i32 0, i32 9
  %1046 = load ptr, ptr %1045, align 8, !tbaa !30
  %1047 = getelementptr inbounds %struct.gz_header_s, ptr %1046, i32 0, i32 11
  store i32 %1043, ptr %1047, align 4, !tbaa !55
  %1048 = load ptr, ptr %8, align 8, !tbaa !5
  %1049 = getelementptr inbounds %struct.inflate_state, ptr %1048, i32 0, i32 9
  %1050 = load ptr, ptr %1049, align 8, !tbaa !30
  %1051 = getelementptr inbounds %struct.gz_header_s, ptr %1050, i32 0, i32 12
  store i32 1, ptr %1051, align 8, !tbaa !31
  br label %1052

1052:                                             ; preds = %1038, %1033
  %1053 = call i64 @crc32(i64 noundef 0, ptr noundef null, i32 noundef 0)
  %1054 = load ptr, ptr %8, align 8, !tbaa !5
  %1055 = getelementptr inbounds %struct.inflate_state, ptr %1054, i32 0, i32 7
  store i64 %1053, ptr %1055, align 8, !tbaa !28
  %1056 = load ptr, ptr %5, align 8, !tbaa !5
  %1057 = getelementptr inbounds %struct.z_stream_s, ptr %1056, i32 0, i32 12
  store i64 %1053, ptr %1057, align 8, !tbaa !35
  %1058 = load ptr, ptr %8, align 8, !tbaa !5
  %1059 = getelementptr inbounds %struct.inflate_state, ptr %1058, i32 0, i32 1
  store i32 16191, ptr %1059, align 8, !tbaa !17
  br label %2995

1060:                                             ; preds = %82
  br label %1061

1061:                                             ; preds = %1060
  br label %1062

1062:                                             ; preds = %1085, %1061
  %1063 = load i32, ptr %14, align 4, !tbaa !9
  %1064 = icmp ult i32 %1063, 32
  br i1 %1064, label %1065, label %1086

1065:                                             ; preds = %1062
  br label %1066

1066:                                             ; preds = %1065
  %1067 = load i32, ptr %11, align 4, !tbaa !9
  %1068 = icmp eq i32 %1067, 0
  br i1 %1068, label %1069, label %1070

1069:                                             ; preds = %1066
  br label %2996

1070:                                             ; preds = %1066
  %1071 = load i32, ptr %11, align 4, !tbaa !9
  %1072 = add i32 %1071, -1
  store i32 %1072, ptr %11, align 4, !tbaa !9
  %1073 = load ptr, ptr %9, align 8, !tbaa !5
  %1074 = getelementptr inbounds i8, ptr %1073, i32 1
  store ptr %1074, ptr %9, align 8, !tbaa !5
  %1075 = load i8, ptr %1073, align 1, !tbaa !24
  %1076 = zext i8 %1075 to i64
  %1077 = load i32, ptr %14, align 4, !tbaa !9
  %1078 = zext i32 %1077 to i64
  %1079 = shl i64 %1076, %1078
  %1080 = load i64, ptr %13, align 8, !tbaa !21
  %1081 = add i64 %1080, %1079
  store i64 %1081, ptr %13, align 8, !tbaa !21
  %1082 = load i32, ptr %14, align 4, !tbaa !9
  %1083 = add i32 %1082, 8
  store i32 %1083, ptr %14, align 4, !tbaa !9
  br label %1084

1084:                                             ; preds = %1070
  br label %1085

1085:                                             ; preds = %1084
  br label %1062, !llvm.loop !56

1086:                                             ; preds = %1062
  br label %1087

1087:                                             ; preds = %1086
  br label %1088

1088:                                             ; preds = %1087
  %1089 = load i64, ptr %13, align 8, !tbaa !21
  %1090 = lshr i64 %1089, 24
  %1091 = and i64 %1090, 255
  %1092 = load i64, ptr %13, align 8, !tbaa !21
  %1093 = lshr i64 %1092, 8
  %1094 = and i64 %1093, 65280
  %1095 = add i64 %1091, %1094
  %1096 = load i64, ptr %13, align 8, !tbaa !21
  %1097 = and i64 %1096, 65280
  %1098 = shl i64 %1097, 8
  %1099 = add i64 %1095, %1098
  %1100 = load i64, ptr %13, align 8, !tbaa !21
  %1101 = and i64 %1100, 255
  %1102 = shl i64 %1101, 24
  %1103 = add i64 %1099, %1102
  %1104 = load ptr, ptr %8, align 8, !tbaa !5
  %1105 = getelementptr inbounds %struct.inflate_state, ptr %1104, i32 0, i32 7
  store i64 %1103, ptr %1105, align 8, !tbaa !28
  %1106 = load ptr, ptr %5, align 8, !tbaa !5
  %1107 = getelementptr inbounds %struct.z_stream_s, ptr %1106, i32 0, i32 12
  store i64 %1103, ptr %1107, align 8, !tbaa !35
  br label %1108

1108:                                             ; preds = %1088
  store i64 0, ptr %13, align 8, !tbaa !21
  store i32 0, ptr %14, align 4, !tbaa !9
  br label %1109

1109:                                             ; preds = %1108
  br label %1110

1110:                                             ; preds = %1109
  %1111 = load ptr, ptr %8, align 8, !tbaa !5
  %1112 = getelementptr inbounds %struct.inflate_state, ptr %1111, i32 0, i32 1
  store i32 16190, ptr %1112, align 8, !tbaa !17
  br label %1113

1113:                                             ; preds = %1110, %82
  %1114 = load ptr, ptr %8, align 8, !tbaa !5
  %1115 = getelementptr inbounds %struct.inflate_state, ptr %1114, i32 0, i32 4
  %1116 = load i32, ptr %1115, align 4, !tbaa !57
  %1117 = icmp eq i32 %1116, 0
  br i1 %1117, label %1118, label %1140

1118:                                             ; preds = %1113
  br label %1119

1119:                                             ; preds = %1118
  %1120 = load ptr, ptr %10, align 8, !tbaa !5
  %1121 = load ptr, ptr %5, align 8, !tbaa !5
  %1122 = getelementptr inbounds %struct.z_stream_s, ptr %1121, i32 0, i32 3
  store ptr %1120, ptr %1122, align 8, !tbaa !11
  %1123 = load i32, ptr %12, align 4, !tbaa !9
  %1124 = load ptr, ptr %5, align 8, !tbaa !5
  %1125 = getelementptr inbounds %struct.z_stream_s, ptr %1124, i32 0, i32 4
  store i32 %1123, ptr %1125, align 8, !tbaa !19
  %1126 = load ptr, ptr %9, align 8, !tbaa !5
  %1127 = load ptr, ptr %5, align 8, !tbaa !5
  %1128 = getelementptr inbounds %struct.z_stream_s, ptr %1127, i32 0, i32 0
  store ptr %1126, ptr %1128, align 8, !tbaa !14
  %1129 = load i32, ptr %11, align 4, !tbaa !9
  %1130 = load ptr, ptr %5, align 8, !tbaa !5
  %1131 = getelementptr inbounds %struct.z_stream_s, ptr %1130, i32 0, i32 1
  store i32 %1129, ptr %1131, align 8, !tbaa !15
  %1132 = load i64, ptr %13, align 8, !tbaa !21
  %1133 = load ptr, ptr %8, align 8, !tbaa !5
  %1134 = getelementptr inbounds %struct.inflate_state, ptr %1133, i32 0, i32 15
  store i64 %1132, ptr %1134, align 8, !tbaa !20
  %1135 = load i32, ptr %14, align 4, !tbaa !9
  %1136 = load ptr, ptr %8, align 8, !tbaa !5
  %1137 = getelementptr inbounds %struct.inflate_state, ptr %1136, i32 0, i32 16
  store i32 %1135, ptr %1137, align 8, !tbaa !22
  br label %1138

1138:                                             ; preds = %1119
  br label %1139

1139:                                             ; preds = %1138
  store i32 2, ptr %4, align 4
  store i32 1, ptr %24, align 4
  br label %3183

1140:                                             ; preds = %1113
  %1141 = call i64 @adler32(i64 noundef 0, ptr noundef null, i32 noundef 0)
  %1142 = load ptr, ptr %8, align 8, !tbaa !5
  %1143 = getelementptr inbounds %struct.inflate_state, ptr %1142, i32 0, i32 7
  store i64 %1141, ptr %1143, align 8, !tbaa !28
  %1144 = load ptr, ptr %5, align 8, !tbaa !5
  %1145 = getelementptr inbounds %struct.z_stream_s, ptr %1144, i32 0, i32 12
  store i64 %1141, ptr %1145, align 8, !tbaa !35
  %1146 = load ptr, ptr %8, align 8, !tbaa !5
  %1147 = getelementptr inbounds %struct.inflate_state, ptr %1146, i32 0, i32 1
  store i32 16191, ptr %1147, align 8, !tbaa !17
  br label %1148

1148:                                             ; preds = %1140, %82
  %1149 = load i32, ptr %6, align 4, !tbaa !9
  %1150 = icmp eq i32 %1149, 5
  br i1 %1150, label %1154, label %1151

1151:                                             ; preds = %1148
  %1152 = load i32, ptr %6, align 4, !tbaa !9
  %1153 = icmp eq i32 %1152, 6
  br i1 %1153, label %1154, label %1155

1154:                                             ; preds = %1151, %1148
  br label %2996

1155:                                             ; preds = %1151
  br label %1156

1156:                                             ; preds = %1155, %82
  %1157 = load ptr, ptr %8, align 8, !tbaa !5
  %1158 = getelementptr inbounds %struct.inflate_state, ptr %1157, i32 0, i32 2
  %1159 = load i32, ptr %1158, align 4, !tbaa !58
  %1160 = icmp ne i32 %1159, 0
  br i1 %1160, label %1161, label %1176

1161:                                             ; preds = %1156
  br label %1162

1162:                                             ; preds = %1161
  %1163 = load i32, ptr %14, align 4, !tbaa !9
  %1164 = and i32 %1163, 7
  %1165 = load i64, ptr %13, align 8, !tbaa !21
  %1166 = zext i32 %1164 to i64
  %1167 = lshr i64 %1165, %1166
  store i64 %1167, ptr %13, align 8, !tbaa !21
  %1168 = load i32, ptr %14, align 4, !tbaa !9
  %1169 = and i32 %1168, 7
  %1170 = load i32, ptr %14, align 4, !tbaa !9
  %1171 = sub i32 %1170, %1169
  store i32 %1171, ptr %14, align 4, !tbaa !9
  br label %1172

1172:                                             ; preds = %1162
  br label %1173

1173:                                             ; preds = %1172
  %1174 = load ptr, ptr %8, align 8, !tbaa !5
  %1175 = getelementptr inbounds %struct.inflate_state, ptr %1174, i32 0, i32 1
  store i32 16206, ptr %1175, align 8, !tbaa !17
  br label %2995

1176:                                             ; preds = %1156
  br label %1177

1177:                                             ; preds = %1176
  br label %1178

1178:                                             ; preds = %1201, %1177
  %1179 = load i32, ptr %14, align 4, !tbaa !9
  %1180 = icmp ult i32 %1179, 3
  br i1 %1180, label %1181, label %1202

1181:                                             ; preds = %1178
  br label %1182

1182:                                             ; preds = %1181
  %1183 = load i32, ptr %11, align 4, !tbaa !9
  %1184 = icmp eq i32 %1183, 0
  br i1 %1184, label %1185, label %1186

1185:                                             ; preds = %1182
  br label %2996

1186:                                             ; preds = %1182
  %1187 = load i32, ptr %11, align 4, !tbaa !9
  %1188 = add i32 %1187, -1
  store i32 %1188, ptr %11, align 4, !tbaa !9
  %1189 = load ptr, ptr %9, align 8, !tbaa !5
  %1190 = getelementptr inbounds i8, ptr %1189, i32 1
  store ptr %1190, ptr %9, align 8, !tbaa !5
  %1191 = load i8, ptr %1189, align 1, !tbaa !24
  %1192 = zext i8 %1191 to i64
  %1193 = load i32, ptr %14, align 4, !tbaa !9
  %1194 = zext i32 %1193 to i64
  %1195 = shl i64 %1192, %1194
  %1196 = load i64, ptr %13, align 8, !tbaa !21
  %1197 = add i64 %1196, %1195
  store i64 %1197, ptr %13, align 8, !tbaa !21
  %1198 = load i32, ptr %14, align 4, !tbaa !9
  %1199 = add i32 %1198, 8
  store i32 %1199, ptr %14, align 4, !tbaa !9
  br label %1200

1200:                                             ; preds = %1186
  br label %1201

1201:                                             ; preds = %1200
  br label %1178, !llvm.loop !59

1202:                                             ; preds = %1178
  br label %1203

1203:                                             ; preds = %1202
  br label %1204

1204:                                             ; preds = %1203
  %1205 = load i64, ptr %13, align 8, !tbaa !21
  %1206 = trunc i64 %1205 to i32
  %1207 = and i32 %1206, 1
  %1208 = load ptr, ptr %8, align 8, !tbaa !5
  %1209 = getelementptr inbounds %struct.inflate_state, ptr %1208, i32 0, i32 2
  store i32 %1207, ptr %1209, align 4, !tbaa !58
  br label %1210

1210:                                             ; preds = %1204
  %1211 = load i64, ptr %13, align 8, !tbaa !21
  %1212 = lshr i64 %1211, 1
  store i64 %1212, ptr %13, align 8, !tbaa !21
  %1213 = load i32, ptr %14, align 4, !tbaa !9
  %1214 = sub i32 %1213, 1
  store i32 %1214, ptr %14, align 4, !tbaa !9
  br label %1215

1215:                                             ; preds = %1210
  br label %1216

1216:                                             ; preds = %1215
  %1217 = load i64, ptr %13, align 8, !tbaa !21
  %1218 = trunc i64 %1217 to i32
  %1219 = and i32 %1218, 3
  switch i32 %1219, label %1246 [
    i32 0, label %1220
    i32 1, label %1223
    i32 2, label %1238
    i32 3, label %1241
  ]

1220:                                             ; preds = %1216
  %1221 = load ptr, ptr %8, align 8, !tbaa !5
  %1222 = getelementptr inbounds %struct.inflate_state, ptr %1221, i32 0, i32 1
  store i32 16193, ptr %1222, align 8, !tbaa !17
  br label %1246

1223:                                             ; preds = %1216
  %1224 = load ptr, ptr %8, align 8, !tbaa !5
  call void @fixedtables(ptr noundef %1224)
  %1225 = load ptr, ptr %8, align 8, !tbaa !5
  %1226 = getelementptr inbounds %struct.inflate_state, ptr %1225, i32 0, i32 1
  store i32 16199, ptr %1226, align 8, !tbaa !17
  %1227 = load i32, ptr %6, align 4, !tbaa !9
  %1228 = icmp eq i32 %1227, 6
  br i1 %1228, label %1229, label %1237

1229:                                             ; preds = %1223
  br label %1230

1230:                                             ; preds = %1229
  %1231 = load i64, ptr %13, align 8, !tbaa !21
  %1232 = lshr i64 %1231, 2
  store i64 %1232, ptr %13, align 8, !tbaa !21
  %1233 = load i32, ptr %14, align 4, !tbaa !9
  %1234 = sub i32 %1233, 2
  store i32 %1234, ptr %14, align 4, !tbaa !9
  br label %1235

1235:                                             ; preds = %1230
  br label %1236

1236:                                             ; preds = %1235
  br label %2996

1237:                                             ; preds = %1223
  br label %1246

1238:                                             ; preds = %1216
  %1239 = load ptr, ptr %8, align 8, !tbaa !5
  %1240 = getelementptr inbounds %struct.inflate_state, ptr %1239, i32 0, i32 1
  store i32 16196, ptr %1240, align 8, !tbaa !17
  br label %1246

1241:                                             ; preds = %1216
  %1242 = load ptr, ptr %5, align 8, !tbaa !5
  %1243 = getelementptr inbounds %struct.z_stream_s, ptr %1242, i32 0, i32 6
  store ptr @.str.6, ptr %1243, align 8, !tbaa !33
  %1244 = load ptr, ptr %8, align 8, !tbaa !5
  %1245 = getelementptr inbounds %struct.inflate_state, ptr %1244, i32 0, i32 1
  store i32 16209, ptr %1245, align 8, !tbaa !17
  br label %1246

1246:                                             ; preds = %1241, %1238, %1237, %1220, %1216
  br label %1247

1247:                                             ; preds = %1246
  %1248 = load i64, ptr %13, align 8, !tbaa !21
  %1249 = lshr i64 %1248, 2
  store i64 %1249, ptr %13, align 8, !tbaa !21
  %1250 = load i32, ptr %14, align 4, !tbaa !9
  %1251 = sub i32 %1250, 2
  store i32 %1251, ptr %14, align 4, !tbaa !9
  br label %1252

1252:                                             ; preds = %1247
  br label %1253

1253:                                             ; preds = %1252
  br label %2995

1254:                                             ; preds = %82
  br label %1255

1255:                                             ; preds = %1254
  %1256 = load i32, ptr %14, align 4, !tbaa !9
  %1257 = and i32 %1256, 7
  %1258 = load i64, ptr %13, align 8, !tbaa !21
  %1259 = zext i32 %1257 to i64
  %1260 = lshr i64 %1258, %1259
  store i64 %1260, ptr %13, align 8, !tbaa !21
  %1261 = load i32, ptr %14, align 4, !tbaa !9
  %1262 = and i32 %1261, 7
  %1263 = load i32, ptr %14, align 4, !tbaa !9
  %1264 = sub i32 %1263, %1262
  store i32 %1264, ptr %14, align 4, !tbaa !9
  br label %1265

1265:                                             ; preds = %1255
  br label %1266

1266:                                             ; preds = %1265
  br label %1267

1267:                                             ; preds = %1266
  br label %1268

1268:                                             ; preds = %1291, %1267
  %1269 = load i32, ptr %14, align 4, !tbaa !9
  %1270 = icmp ult i32 %1269, 32
  br i1 %1270, label %1271, label %1292

1271:                                             ; preds = %1268
  br label %1272

1272:                                             ; preds = %1271
  %1273 = load i32, ptr %11, align 4, !tbaa !9
  %1274 = icmp eq i32 %1273, 0
  br i1 %1274, label %1275, label %1276

1275:                                             ; preds = %1272
  br label %2996

1276:                                             ; preds = %1272
  %1277 = load i32, ptr %11, align 4, !tbaa !9
  %1278 = add i32 %1277, -1
  store i32 %1278, ptr %11, align 4, !tbaa !9
  %1279 = load ptr, ptr %9, align 8, !tbaa !5
  %1280 = getelementptr inbounds i8, ptr %1279, i32 1
  store ptr %1280, ptr %9, align 8, !tbaa !5
  %1281 = load i8, ptr %1279, align 1, !tbaa !24
  %1282 = zext i8 %1281 to i64
  %1283 = load i32, ptr %14, align 4, !tbaa !9
  %1284 = zext i32 %1283 to i64
  %1285 = shl i64 %1282, %1284
  %1286 = load i64, ptr %13, align 8, !tbaa !21
  %1287 = add i64 %1286, %1285
  store i64 %1287, ptr %13, align 8, !tbaa !21
  %1288 = load i32, ptr %14, align 4, !tbaa !9
  %1289 = add i32 %1288, 8
  store i32 %1289, ptr %14, align 4, !tbaa !9
  br label %1290

1290:                                             ; preds = %1276
  br label %1291

1291:                                             ; preds = %1290
  br label %1268, !llvm.loop !60

1292:                                             ; preds = %1268
  br label %1293

1293:                                             ; preds = %1292
  br label %1294

1294:                                             ; preds = %1293
  %1295 = load i64, ptr %13, align 8, !tbaa !21
  %1296 = and i64 %1295, 65535
  %1297 = load i64, ptr %13, align 8, !tbaa !21
  %1298 = lshr i64 %1297, 16
  %1299 = xor i64 %1298, 65535
  %1300 = icmp ne i64 %1296, %1299
  br i1 %1300, label %1301, label %1306

1301:                                             ; preds = %1294
  %1302 = load ptr, ptr %5, align 8, !tbaa !5
  %1303 = getelementptr inbounds %struct.z_stream_s, ptr %1302, i32 0, i32 6
  store ptr @.str.7, ptr %1303, align 8, !tbaa !33
  %1304 = load ptr, ptr %8, align 8, !tbaa !5
  %1305 = getelementptr inbounds %struct.inflate_state, ptr %1304, i32 0, i32 1
  store i32 16209, ptr %1305, align 8, !tbaa !17
  br label %2995

1306:                                             ; preds = %1294
  %1307 = load i64, ptr %13, align 8, !tbaa !21
  %1308 = trunc i64 %1307 to i32
  %1309 = and i32 %1308, 65535
  %1310 = load ptr, ptr %8, align 8, !tbaa !5
  %1311 = getelementptr inbounds %struct.inflate_state, ptr %1310, i32 0, i32 17
  store i32 %1309, ptr %1311, align 4, !tbaa !44
  br label %1312

1312:                                             ; preds = %1306
  store i64 0, ptr %13, align 8, !tbaa !21
  store i32 0, ptr %14, align 4, !tbaa !9
  br label %1313

1313:                                             ; preds = %1312
  br label %1314

1314:                                             ; preds = %1313
  %1315 = load ptr, ptr %8, align 8, !tbaa !5
  %1316 = getelementptr inbounds %struct.inflate_state, ptr %1315, i32 0, i32 1
  store i32 16194, ptr %1316, align 8, !tbaa !17
  %1317 = load i32, ptr %6, align 4, !tbaa !9
  %1318 = icmp eq i32 %1317, 6
  br i1 %1318, label %1319, label %1320

1319:                                             ; preds = %1314
  br label %2996

1320:                                             ; preds = %1314
  br label %1321

1321:                                             ; preds = %1320, %82
  %1322 = load ptr, ptr %8, align 8, !tbaa !5
  %1323 = getelementptr inbounds %struct.inflate_state, ptr %1322, i32 0, i32 1
  store i32 16195, ptr %1323, align 8, !tbaa !17
  br label %1324

1324:                                             ; preds = %1321, %82
  %1325 = load ptr, ptr %8, align 8, !tbaa !5
  %1326 = getelementptr inbounds %struct.inflate_state, ptr %1325, i32 0, i32 17
  %1327 = load i32, ptr %1326, align 4, !tbaa !44
  store i32 %1327, ptr %17, align 4, !tbaa !9
  %1328 = load i32, ptr %17, align 4, !tbaa !9
  %1329 = icmp ne i32 %1328, 0
  br i1 %1329, label %1330, label %1370

1330:                                             ; preds = %1324
  %1331 = load i32, ptr %17, align 4, !tbaa !9
  %1332 = load i32, ptr %11, align 4, !tbaa !9
  %1333 = icmp ugt i32 %1331, %1332
  br i1 %1333, label %1334, label %1336

1334:                                             ; preds = %1330
  %1335 = load i32, ptr %11, align 4, !tbaa !9
  store i32 %1335, ptr %17, align 4, !tbaa !9
  br label %1336

1336:                                             ; preds = %1334, %1330
  %1337 = load i32, ptr %17, align 4, !tbaa !9
  %1338 = load i32, ptr %12, align 4, !tbaa !9
  %1339 = icmp ugt i32 %1337, %1338
  br i1 %1339, label %1340, label %1342

1340:                                             ; preds = %1336
  %1341 = load i32, ptr %12, align 4, !tbaa !9
  store i32 %1341, ptr %17, align 4, !tbaa !9
  br label %1342

1342:                                             ; preds = %1340, %1336
  %1343 = load i32, ptr %17, align 4, !tbaa !9
  %1344 = icmp eq i32 %1343, 0
  br i1 %1344, label %1345, label %1346

1345:                                             ; preds = %1342
  br label %2996

1346:                                             ; preds = %1342
  %1347 = load ptr, ptr %10, align 8, !tbaa !5
  %1348 = load ptr, ptr %9, align 8, !tbaa !5
  %1349 = load i32, ptr %17, align 4, !tbaa !9
  %1350 = zext i32 %1349 to i64
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %1347, ptr align 1 %1348, i64 %1350, i1 false)
  %1351 = load i32, ptr %17, align 4, !tbaa !9
  %1352 = load i32, ptr %11, align 4, !tbaa !9
  %1353 = sub i32 %1352, %1351
  store i32 %1353, ptr %11, align 4, !tbaa !9
  %1354 = load i32, ptr %17, align 4, !tbaa !9
  %1355 = load ptr, ptr %9, align 8, !tbaa !5
  %1356 = zext i32 %1354 to i64
  %1357 = getelementptr inbounds i8, ptr %1355, i64 %1356
  store ptr %1357, ptr %9, align 8, !tbaa !5
  %1358 = load i32, ptr %17, align 4, !tbaa !9
  %1359 = load i32, ptr %12, align 4, !tbaa !9
  %1360 = sub i32 %1359, %1358
  store i32 %1360, ptr %12, align 4, !tbaa !9
  %1361 = load i32, ptr %17, align 4, !tbaa !9
  %1362 = load ptr, ptr %10, align 8, !tbaa !5
  %1363 = zext i32 %1361 to i64
  %1364 = getelementptr inbounds i8, ptr %1362, i64 %1363
  store ptr %1364, ptr %10, align 8, !tbaa !5
  %1365 = load i32, ptr %17, align 4, !tbaa !9
  %1366 = load ptr, ptr %8, align 8, !tbaa !5
  %1367 = getelementptr inbounds %struct.inflate_state, ptr %1366, i32 0, i32 17
  %1368 = load i32, ptr %1367, align 4, !tbaa !44
  %1369 = sub i32 %1368, %1365
  store i32 %1369, ptr %1367, align 4, !tbaa !44
  br label %2995

1370:                                             ; preds = %1324
  %1371 = load ptr, ptr %8, align 8, !tbaa !5
  %1372 = getelementptr inbounds %struct.inflate_state, ptr %1371, i32 0, i32 1
  store i32 16191, ptr %1372, align 8, !tbaa !17
  br label %2995

1373:                                             ; preds = %82
  br label %1374

1374:                                             ; preds = %1373
  br label %1375

1375:                                             ; preds = %1398, %1374
  %1376 = load i32, ptr %14, align 4, !tbaa !9
  %1377 = icmp ult i32 %1376, 14
  br i1 %1377, label %1378, label %1399

1378:                                             ; preds = %1375
  br label %1379

1379:                                             ; preds = %1378
  %1380 = load i32, ptr %11, align 4, !tbaa !9
  %1381 = icmp eq i32 %1380, 0
  br i1 %1381, label %1382, label %1383

1382:                                             ; preds = %1379
  br label %2996

1383:                                             ; preds = %1379
  %1384 = load i32, ptr %11, align 4, !tbaa !9
  %1385 = add i32 %1384, -1
  store i32 %1385, ptr %11, align 4, !tbaa !9
  %1386 = load ptr, ptr %9, align 8, !tbaa !5
  %1387 = getelementptr inbounds i8, ptr %1386, i32 1
  store ptr %1387, ptr %9, align 8, !tbaa !5
  %1388 = load i8, ptr %1386, align 1, !tbaa !24
  %1389 = zext i8 %1388 to i64
  %1390 = load i32, ptr %14, align 4, !tbaa !9
  %1391 = zext i32 %1390 to i64
  %1392 = shl i64 %1389, %1391
  %1393 = load i64, ptr %13, align 8, !tbaa !21
  %1394 = add i64 %1393, %1392
  store i64 %1394, ptr %13, align 8, !tbaa !21
  %1395 = load i32, ptr %14, align 4, !tbaa !9
  %1396 = add i32 %1395, 8
  store i32 %1396, ptr %14, align 4, !tbaa !9
  br label %1397

1397:                                             ; preds = %1383
  br label %1398

1398:                                             ; preds = %1397
  br label %1375, !llvm.loop !61

1399:                                             ; preds = %1375
  br label %1400

1400:                                             ; preds = %1399
  br label %1401

1401:                                             ; preds = %1400
  %1402 = load i64, ptr %13, align 8, !tbaa !21
  %1403 = trunc i64 %1402 to i32
  %1404 = and i32 %1403, 31
  %1405 = add i32 %1404, 257
  %1406 = load ptr, ptr %8, align 8, !tbaa !5
  %1407 = getelementptr inbounds %struct.inflate_state, ptr %1406, i32 0, i32 25
  store i32 %1405, ptr %1407, align 4, !tbaa !62
  br label %1408

1408:                                             ; preds = %1401
  %1409 = load i64, ptr %13, align 8, !tbaa !21
  %1410 = lshr i64 %1409, 5
  store i64 %1410, ptr %13, align 8, !tbaa !21
  %1411 = load i32, ptr %14, align 4, !tbaa !9
  %1412 = sub i32 %1411, 5
  store i32 %1412, ptr %14, align 4, !tbaa !9
  br label %1413

1413:                                             ; preds = %1408
  br label %1414

1414:                                             ; preds = %1413
  %1415 = load i64, ptr %13, align 8, !tbaa !21
  %1416 = trunc i64 %1415 to i32
  %1417 = and i32 %1416, 31
  %1418 = add i32 %1417, 1
  %1419 = load ptr, ptr %8, align 8, !tbaa !5
  %1420 = getelementptr inbounds %struct.inflate_state, ptr %1419, i32 0, i32 26
  store i32 %1418, ptr %1420, align 8, !tbaa !63
  br label %1421

1421:                                             ; preds = %1414
  %1422 = load i64, ptr %13, align 8, !tbaa !21
  %1423 = lshr i64 %1422, 5
  store i64 %1423, ptr %13, align 8, !tbaa !21
  %1424 = load i32, ptr %14, align 4, !tbaa !9
  %1425 = sub i32 %1424, 5
  store i32 %1425, ptr %14, align 4, !tbaa !9
  br label %1426

1426:                                             ; preds = %1421
  br label %1427

1427:                                             ; preds = %1426
  %1428 = load i64, ptr %13, align 8, !tbaa !21
  %1429 = trunc i64 %1428 to i32
  %1430 = and i32 %1429, 15
  %1431 = add i32 %1430, 4
  %1432 = load ptr, ptr %8, align 8, !tbaa !5
  %1433 = getelementptr inbounds %struct.inflate_state, ptr %1432, i32 0, i32 24
  store i32 %1431, ptr %1433, align 8, !tbaa !64
  br label %1434

1434:                                             ; preds = %1427
  %1435 = load i64, ptr %13, align 8, !tbaa !21
  %1436 = lshr i64 %1435, 4
  store i64 %1436, ptr %13, align 8, !tbaa !21
  %1437 = load i32, ptr %14, align 4, !tbaa !9
  %1438 = sub i32 %1437, 4
  store i32 %1438, ptr %14, align 4, !tbaa !9
  br label %1439

1439:                                             ; preds = %1434
  br label %1440

1440:                                             ; preds = %1439
  %1441 = load ptr, ptr %8, align 8, !tbaa !5
  %1442 = getelementptr inbounds %struct.inflate_state, ptr %1441, i32 0, i32 25
  %1443 = load i32, ptr %1442, align 4, !tbaa !62
  %1444 = icmp ugt i32 %1443, 286
  br i1 %1444, label %1450, label %1445

1445:                                             ; preds = %1440
  %1446 = load ptr, ptr %8, align 8, !tbaa !5
  %1447 = getelementptr inbounds %struct.inflate_state, ptr %1446, i32 0, i32 26
  %1448 = load i32, ptr %1447, align 8, !tbaa !63
  %1449 = icmp ugt i32 %1448, 30
  br i1 %1449, label %1450, label %1455

1450:                                             ; preds = %1445, %1440
  %1451 = load ptr, ptr %5, align 8, !tbaa !5
  %1452 = getelementptr inbounds %struct.z_stream_s, ptr %1451, i32 0, i32 6
  store ptr @.str.8, ptr %1452, align 8, !tbaa !33
  %1453 = load ptr, ptr %8, align 8, !tbaa !5
  %1454 = getelementptr inbounds %struct.inflate_state, ptr %1453, i32 0, i32 1
  store i32 16209, ptr %1454, align 8, !tbaa !17
  br label %2995

1455:                                             ; preds = %1445
  %1456 = load ptr, ptr %8, align 8, !tbaa !5
  %1457 = getelementptr inbounds %struct.inflate_state, ptr %1456, i32 0, i32 27
  store i32 0, ptr %1457, align 4, !tbaa !65
  %1458 = load ptr, ptr %8, align 8, !tbaa !5
  %1459 = getelementptr inbounds %struct.inflate_state, ptr %1458, i32 0, i32 1
  store i32 16197, ptr %1459, align 8, !tbaa !17
  br label %1460

1460:                                             ; preds = %1455, %82
  br label %1461

1461:                                             ; preds = %1519, %1460
  %1462 = load ptr, ptr %8, align 8, !tbaa !5
  %1463 = getelementptr inbounds %struct.inflate_state, ptr %1462, i32 0, i32 27
  %1464 = load i32, ptr %1463, align 4, !tbaa !65
  %1465 = load ptr, ptr %8, align 8, !tbaa !5
  %1466 = getelementptr inbounds %struct.inflate_state, ptr %1465, i32 0, i32 24
  %1467 = load i32, ptr %1466, align 8, !tbaa !64
  %1468 = icmp ult i32 %1464, %1467
  br i1 %1468, label %1469, label %1520

1469:                                             ; preds = %1461
  br label %1470

1470:                                             ; preds = %1469
  br label %1471

1471:                                             ; preds = %1494, %1470
  %1472 = load i32, ptr %14, align 4, !tbaa !9
  %1473 = icmp ult i32 %1472, 3
  br i1 %1473, label %1474, label %1495

1474:                                             ; preds = %1471
  br label %1475

1475:                                             ; preds = %1474
  %1476 = load i32, ptr %11, align 4, !tbaa !9
  %1477 = icmp eq i32 %1476, 0
  br i1 %1477, label %1478, label %1479

1478:                                             ; preds = %1475
  br label %2996

1479:                                             ; preds = %1475
  %1480 = load i32, ptr %11, align 4, !tbaa !9
  %1481 = add i32 %1480, -1
  store i32 %1481, ptr %11, align 4, !tbaa !9
  %1482 = load ptr, ptr %9, align 8, !tbaa !5
  %1483 = getelementptr inbounds i8, ptr %1482, i32 1
  store ptr %1483, ptr %9, align 8, !tbaa !5
  %1484 = load i8, ptr %1482, align 1, !tbaa !24
  %1485 = zext i8 %1484 to i64
  %1486 = load i32, ptr %14, align 4, !tbaa !9
  %1487 = zext i32 %1486 to i64
  %1488 = shl i64 %1485, %1487
  %1489 = load i64, ptr %13, align 8, !tbaa !21
  %1490 = add i64 %1489, %1488
  store i64 %1490, ptr %13, align 8, !tbaa !21
  %1491 = load i32, ptr %14, align 4, !tbaa !9
  %1492 = add i32 %1491, 8
  store i32 %1492, ptr %14, align 4, !tbaa !9
  br label %1493

1493:                                             ; preds = %1479
  br label %1494

1494:                                             ; preds = %1493
  br label %1471, !llvm.loop !66

1495:                                             ; preds = %1471
  br label %1496

1496:                                             ; preds = %1495
  br label %1497

1497:                                             ; preds = %1496
  %1498 = load i64, ptr %13, align 8, !tbaa !21
  %1499 = trunc i64 %1498 to i32
  %1500 = and i32 %1499, 7
  %1501 = trunc i32 %1500 to i16
  %1502 = load ptr, ptr %8, align 8, !tbaa !5
  %1503 = getelementptr inbounds %struct.inflate_state, ptr %1502, i32 0, i32 29
  %1504 = load ptr, ptr %8, align 8, !tbaa !5
  %1505 = getelementptr inbounds %struct.inflate_state, ptr %1504, i32 0, i32 27
  %1506 = load i32, ptr %1505, align 4, !tbaa !65
  %1507 = add i32 %1506, 1
  store i32 %1507, ptr %1505, align 4, !tbaa !65
  %1508 = zext i32 %1506 to i64
  %1509 = getelementptr inbounds [19 x i16], ptr @inflate.order, i64 0, i64 %1508
  %1510 = load i16, ptr %1509, align 2, !tbaa !67
  %1511 = zext i16 %1510 to i64
  %1512 = getelementptr inbounds [320 x i16], ptr %1503, i64 0, i64 %1511
  store i16 %1501, ptr %1512, align 2, !tbaa !67
  br label %1513

1513:                                             ; preds = %1497
  %1514 = load i64, ptr %13, align 8, !tbaa !21
  %1515 = lshr i64 %1514, 3
  store i64 %1515, ptr %13, align 8, !tbaa !21
  %1516 = load i32, ptr %14, align 4, !tbaa !9
  %1517 = sub i32 %1516, 3
  store i32 %1517, ptr %14, align 4, !tbaa !9
  br label %1518

1518:                                             ; preds = %1513
  br label %1519

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

1520:                                             ; preds = %1461
  br label %1521

1521:                                             ; preds = %1526, %1520
  %1522 = load ptr, ptr %8, align 8, !tbaa !5
  %1523 = getelementptr inbounds %struct.inflate_state, ptr %1522, i32 0, i32 27
  %1524 = load i32, ptr %1523, align 4, !tbaa !65
  %1525 = icmp ult i32 %1524, 19
  br i1 %1525, label %1526, label %1538

1526:                                             ; preds = %1521
  %1527 = load ptr, ptr %8, align 8, !tbaa !5
  %1528 = getelementptr inbounds %struct.inflate_state, ptr %1527, i32 0, i32 29
  %1529 = load ptr, ptr %8, align 8, !tbaa !5
  %1530 = getelementptr inbounds %struct.inflate_state, ptr %1529, i32 0, i32 27
  %1531 = load i32, ptr %1530, align 4, !tbaa !65
  %1532 = add i32 %1531, 1
  store i32 %1532, ptr %1530, align 4, !tbaa !65
  %1533 = zext i32 %1531 to i64
  %1534 = getelementptr inbounds [19 x i16], ptr @inflate.order, i64 0, i64 %1533
  %1535 = load i16, ptr %1534, align 2, !tbaa !67
  %1536 = zext i16 %1535 to i64
  %1537 = getelementptr inbounds [320 x i16], ptr %1528, i64 0, i64 %1536
  store i16 0, ptr %1537, align 2, !tbaa !67
  br label %1521, !llvm.loop !70

1538:                                             ; preds = %1521
  %1539 = load ptr, ptr %8, align 8, !tbaa !5
  %1540 = getelementptr inbounds %struct.inflate_state, ptr %1539, i32 0, i32 31
  %1541 = getelementptr inbounds [1444 x %struct.code], ptr %1540, i64 0, i64 0
  %1542 = load ptr, ptr %8, align 8, !tbaa !5
  %1543 = getelementptr inbounds %struct.inflate_state, ptr %1542, i32 0, i32 28
  store ptr %1541, ptr %1543, align 8, !tbaa !71
  %1544 = load ptr, ptr %8, align 8, !tbaa !5
  %1545 = getelementptr inbounds %struct.inflate_state, ptr %1544, i32 0, i32 28
  %1546 = load ptr, ptr %1545, align 8, !tbaa !71
  %1547 = load ptr, ptr %8, align 8, !tbaa !5
  %1548 = getelementptr inbounds %struct.inflate_state, ptr %1547, i32 0, i32 20
  store ptr %1546, ptr %1548, align 8, !tbaa !72
  %1549 = load ptr, ptr %8, align 8, !tbaa !5
  %1550 = getelementptr inbounds %struct.inflate_state, ptr %1549, i32 0, i32 22
  store i32 7, ptr %1550, align 8, !tbaa !73
  %1551 = load ptr, ptr %8, align 8, !tbaa !5
  %1552 = getelementptr inbounds %struct.inflate_state, ptr %1551, i32 0, i32 29
  %1553 = getelementptr inbounds [320 x i16], ptr %1552, i64 0, i64 0
  %1554 = load ptr, ptr %8, align 8, !tbaa !5
  %1555 = getelementptr inbounds %struct.inflate_state, ptr %1554, i32 0, i32 28
  %1556 = load ptr, ptr %8, align 8, !tbaa !5
  %1557 = getelementptr inbounds %struct.inflate_state, ptr %1556, i32 0, i32 22
  %1558 = load ptr, ptr %8, align 8, !tbaa !5
  %1559 = getelementptr inbounds %struct.inflate_state, ptr %1558, i32 0, i32 30
  %1560 = getelementptr inbounds [288 x i16], ptr %1559, i64 0, i64 0
  %1561 = call i32 @inflate_table(i32 noundef 0, ptr noundef %1553, i32 noundef 19, ptr noundef %1555, ptr noundef %1557, ptr noundef %1560)
  store i32 %1561, ptr %22, align 4, !tbaa !9
  %1562 = load i32, ptr %22, align 4, !tbaa !9
  %1563 = icmp ne i32 %1562, 0
  br i1 %1563, label %1564, label %1569

1564:                                             ; preds = %1538
  %1565 = load ptr, ptr %5, align 8, !tbaa !5
  %1566 = getelementptr inbounds %struct.z_stream_s, ptr %1565, i32 0, i32 6
  store ptr @.str.9, ptr %1566, align 8, !tbaa !33
  %1567 = load ptr, ptr %8, align 8, !tbaa !5
  %1568 = getelementptr inbounds %struct.inflate_state, ptr %1567, i32 0, i32 1
  store i32 16209, ptr %1568, align 8, !tbaa !17
  br label %2995

1569:                                             ; preds = %1538
  %1570 = load ptr, ptr %8, align 8, !tbaa !5
  %1571 = getelementptr inbounds %struct.inflate_state, ptr %1570, i32 0, i32 27
  store i32 0, ptr %1571, align 4, !tbaa !65
  %1572 = load ptr, ptr %8, align 8, !tbaa !5
  %1573 = getelementptr inbounds %struct.inflate_state, ptr %1572, i32 0, i32 1
  store i32 16198, ptr %1573, align 8, !tbaa !17
  br label %1574

1574:                                             ; preds = %1569, %82
  br label %1575

1575:                                             ; preds = %1900, %1574
  %1576 = load ptr, ptr %8, align 8, !tbaa !5
  %1577 = getelementptr inbounds %struct.inflate_state, ptr %1576, i32 0, i32 27
  %1578 = load i32, ptr %1577, align 4, !tbaa !65
  %1579 = load ptr, ptr %8, align 8, !tbaa !5
  %1580 = getelementptr inbounds %struct.inflate_state, ptr %1579, i32 0, i32 25
  %1581 = load i32, ptr %1580, align 4, !tbaa !62
  %1582 = load ptr, ptr %8, align 8, !tbaa !5
  %1583 = getelementptr inbounds %struct.inflate_state, ptr %1582, i32 0, i32 26
  %1584 = load i32, ptr %1583, align 8, !tbaa !63
  %1585 = add i32 %1581, %1584
  %1586 = icmp ult i32 %1578, %1585
  br i1 %1586, label %1587, label %1901

1587:                                             ; preds = %1575
  br label %1588

1588:                                             ; preds = %1628, %1587
  %1589 = load ptr, ptr %8, align 8, !tbaa !5
  %1590 = getelementptr inbounds %struct.inflate_state, ptr %1589, i32 0, i32 20
  %1591 = load ptr, ptr %1590, align 8, !tbaa !72
  %1592 = load i64, ptr %13, align 8, !tbaa !21
  %1593 = trunc i64 %1592 to i32
  %1594 = load ptr, ptr %8, align 8, !tbaa !5
  %1595 = getelementptr inbounds %struct.inflate_state, ptr %1594, i32 0, i32 22
  %1596 = load i32, ptr %1595, align 8, !tbaa !73
  %1597 = shl i32 1, %1596
  %1598 = sub i32 %1597, 1
  %1599 = and i32 %1593, %1598
  %1600 = zext i32 %1599 to i64
  %1601 = getelementptr inbounds %struct.code, ptr %1591, i64 %1600
  call void @llvm.memcpy.p0.p0.i64(ptr align 2 %19, ptr align 2 %1601, i64 4, i1 false), !tbaa.struct !74
  %1602 = getelementptr inbounds %struct.code, ptr %19, i32 0, i32 1
  %1603 = load i8, ptr %1602, align 1, !tbaa !75
  %1604 = zext i8 %1603 to i32
  %1605 = load i32, ptr %14, align 4, !tbaa !9
  %1606 = icmp ule i32 %1604, %1605
  br i1 %1606, label %1607, label %1608

1607:                                             ; preds = %1588
  br label %1629

1608:                                             ; preds = %1588
  br label %1609

1609:                                             ; preds = %1608
  %1610 = load i32, ptr %11, align 4, !tbaa !9
  %1611 = icmp eq i32 %1610, 0
  br i1 %1611, label %1612, label %1613

1612:                                             ; preds = %1609
  br label %2996

1613:                                             ; preds = %1609
  %1614 = load i32, ptr %11, align 4, !tbaa !9
  %1615 = add i32 %1614, -1
  store i32 %1615, ptr %11, align 4, !tbaa !9
  %1616 = load ptr, ptr %9, align 8, !tbaa !5
  %1617 = getelementptr inbounds i8, ptr %1616, i32 1
  store ptr %1617, ptr %9, align 8, !tbaa !5
  %1618 = load i8, ptr %1616, align 1, !tbaa !24
  %1619 = zext i8 %1618 to i64
  %1620 = load i32, ptr %14, align 4, !tbaa !9
  %1621 = zext i32 %1620 to i64
  %1622 = shl i64 %1619, %1621
  %1623 = load i64, ptr %13, align 8, !tbaa !21
  %1624 = add i64 %1623, %1622
  store i64 %1624, ptr %13, align 8, !tbaa !21
  %1625 = load i32, ptr %14, align 4, !tbaa !9
  %1626 = add i32 %1625, 8
  store i32 %1626, ptr %14, align 4, !tbaa !9
  br label %1627

1627:                                             ; preds = %1613
  br label %1628

1628:                                             ; preds = %1627
  br label %1588

1629:                                             ; preds = %1607
  %1630 = getelementptr inbounds %struct.code, ptr %19, i32 0, i32 2
  %1631 = load i16, ptr %1630, align 2, !tbaa !77
  %1632 = zext i16 %1631 to i32
  %1633 = icmp slt i32 %1632, 16
  br i1 %1633, label %1634, label %1659

1634:                                             ; preds = %1629
  br label %1635

1635:                                             ; preds = %1634
  %1636 = getelementptr inbounds %struct.code, ptr %19, i32 0, i32 1
  %1637 = load i8, ptr %1636, align 1, !tbaa !75
  %1638 = zext i8 %1637 to i32
  %1639 = load i64, ptr %13, align 8, !tbaa !21
  %1640 = zext i32 %1638 to i64
  %1641 = lshr i64 %1639, %1640
  store i64 %1641, ptr %13, align 8, !tbaa !21
  %1642 = getelementptr inbounds %struct.code, ptr %19, i32 0, i32 1
  %1643 = load i8, ptr %1642, align 1, !tbaa !75
  %1644 = zext i8 %1643 to i32
  %1645 = load i32, ptr %14, align 4, !tbaa !9
  %1646 = sub i32 %1645, %1644
  store i32 %1646, ptr %14, align 4, !tbaa !9
  br label %1647

1647:                                             ; preds = %1635
  br label %1648

1648:                                             ; preds = %1647
  %1649 = getelementptr inbounds %struct.code, ptr %19, i32 0, i32 2
  %1650 = load i16, ptr %1649, align 2, !tbaa !77
  %1651 = load ptr, ptr %8, align 8, !tbaa !5
  %1652 = getelementptr inbounds %struct.inflate_state, ptr %1651, i32 0, i32 29
  %1653 = load ptr, ptr %8, align 8, !tbaa !5
  %1654 = getelementptr inbounds %struct.inflate_state, ptr %1653, i32 0, i32 27
  %1655 = load i32, ptr %1654, align 4, !tbaa !65
  %1656 = add i32 %1655, 1
  store i32 %1656, ptr %1654, align 4, !tbaa !65
  %1657 = zext i32 %1655 to i64
  %1658 = getelementptr inbounds [320 x i16], ptr %1652, i64 0, i64 %1657
  store i16 %1650, ptr %1658, align 2, !tbaa !67
  br label %1900

1659:                                             ; preds = %1629
  %1660 = getelementptr inbounds %struct.code, ptr %19, i32 0, i32 2
  %1661 = load i16, ptr %1660, align 2, !tbaa !77
  %1662 = zext i16 %1661 to i32
  %1663 = icmp eq i32 %1662, 16
  br i1 %1663, label %1664, label %1742

1664:                                             ; preds = %1659
  br label %1665

1665:                                             ; preds = %1664
  br label %1666

1666:                                             ; preds = %1693, %1665
  %1667 = load i32, ptr %14, align 4, !tbaa !9
  %1668 = getelementptr inbounds %struct.code, ptr %19, i32 0, i32 1
  %1669 = load i8, ptr %1668, align 1, !tbaa !75
  %1670 = zext i8 %1669 to i32
  %1671 = add nsw i32 %1670, 2
  %1672 = icmp ult i32 %1667, %1671
  br i1 %1672, label %1673, label %1694

1673:                                             ; preds = %1666
  br label %1674

1674:                                             ; preds = %1673
  %1675 = load i32, ptr %11, align 4, !tbaa !9
  %1676 = icmp eq i32 %1675, 0
  br i1 %1676, label %1677, label %1678

1677:                                             ; preds = %1674
  br label %2996

1678:                                             ; preds = %1674
  %1679 = load i32, ptr %11, align 4, !tbaa !9
  %1680 = add i32 %1679, -1
  store i32 %1680, ptr %11, align 4, !tbaa !9
  %1681 = load ptr, ptr %9, align 8, !tbaa !5
  %1682 = getelementptr inbounds i8, ptr %1681, i32 1
  store ptr %1682, ptr %9, align 8, !tbaa !5
  %1683 = load i8, ptr %1681, align 1, !tbaa !24
  %1684 = zext i8 %1683 to i64
  %1685 = load i32, ptr %14, align 4, !tbaa !9
  %1686 = zext i32 %1685 to i64
  %1687 = shl i64 %1684, %1686
  %1688 = load i64, ptr %13, align 8, !tbaa !21
  %1689 = add i64 %1688, %1687
  store i64 %1689, ptr %13, align 8, !tbaa !21
  %1690 = load i32, ptr %14, align 4, !tbaa !9
  %1691 = add i32 %1690, 8
  store i32 %1691, ptr %14, align 4, !tbaa !9
  br label %1692

1692:                                             ; preds = %1678
  br label %1693

1693:                                             ; preds = %1692
  br label %1666, !llvm.loop !78

1694:                                             ; preds = %1666
  br label %1695

1695:                                             ; preds = %1694
  br label %1696

1696:                                             ; preds = %1695
  br label %1697

1697:                                             ; preds = %1696
  %1698 = getelementptr inbounds %struct.code, ptr %19, i32 0, i32 1
  %1699 = load i8, ptr %1698, align 1, !tbaa !75
  %1700 = zext i8 %1699 to i32
  %1701 = load i64, ptr %13, align 8, !tbaa !21
  %1702 = zext i32 %1700 to i64
  %1703 = lshr i64 %1701, %1702
  store i64 %1703, ptr %13, align 8, !tbaa !21
  %1704 = getelementptr inbounds %struct.code, ptr %19, i32 0, i32 1
  %1705 = load i8, ptr %1704, align 1, !tbaa !75
  %1706 = zext i8 %1705 to i32
  %1707 = load i32, ptr %14, align 4, !tbaa !9
  %1708 = sub i32 %1707, %1706
  store i32 %1708, ptr %14, align 4, !tbaa !9
  br label %1709

1709:                                             ; preds = %1697
  br label %1710

1710:                                             ; preds = %1709
  %1711 = load ptr, ptr %8, align 8, !tbaa !5
  %1712 = getelementptr inbounds %struct.inflate_state, ptr %1711, i32 0, i32 27
  %1713 = load i32, ptr %1712, align 4, !tbaa !65
  %1714 = icmp eq i32 %1713, 0
  br i1 %1714, label %1715, label %1720

1715:                                             ; preds = %1710
  %1716 = load ptr, ptr %5, align 8, !tbaa !5
  %1717 = getelementptr inbounds %struct.z_stream_s, ptr %1716, i32 0, i32 6
  store ptr @.str.10, ptr %1717, align 8, !tbaa !33
  %1718 = load ptr, ptr %8, align 8, !tbaa !5
  %1719 = getelementptr inbounds %struct.inflate_state, ptr %1718, i32 0, i32 1
  store i32 16209, ptr %1719, align 8, !tbaa !17
  br label %1901

1720:                                             ; preds = %1710
  %1721 = load ptr, ptr %8, align 8, !tbaa !5
  %1722 = getelementptr inbounds %struct.inflate_state, ptr %1721, i32 0, i32 29
  %1723 = load ptr, ptr %8, align 8, !tbaa !5
  %1724 = getelementptr inbounds %struct.inflate_state, ptr %1723, i32 0, i32 27
  %1725 = load i32, ptr %1724, align 4, !tbaa !65
  %1726 = sub i32 %1725, 1
  %1727 = zext i32 %1726 to i64
  %1728 = getelementptr inbounds [320 x i16], ptr %1722, i64 0, i64 %1727
  %1729 = load i16, ptr %1728, align 2, !tbaa !67
  %1730 = zext i16 %1729 to i32
  store i32 %1730, ptr %21, align 4, !tbaa !9
  %1731 = load i64, ptr %13, align 8, !tbaa !21
  %1732 = trunc i64 %1731 to i32
  %1733 = and i32 %1732, 3
  %1734 = add i32 3, %1733
  store i32 %1734, ptr %17, align 4, !tbaa !9
  br label %1735

1735:                                             ; preds = %1720
  %1736 = load i64, ptr %13, align 8, !tbaa !21
  %1737 = lshr i64 %1736, 2
  store i64 %1737, ptr %13, align 8, !tbaa !21
  %1738 = load i32, ptr %14, align 4, !tbaa !9
  %1739 = sub i32 %1738, 2
  store i32 %1739, ptr %14, align 4, !tbaa !9
  br label %1740

1740:                                             ; preds = %1735
  br label %1741

1741:                                             ; preds = %1740
  br label %1864

1742:                                             ; preds = %1659
  %1743 = getelementptr inbounds %struct.code, ptr %19, i32 0, i32 2
  %1744 = load i16, ptr %1743, align 2, !tbaa !77
  %1745 = zext i16 %1744 to i32
  %1746 = icmp eq i32 %1745, 17
  br i1 %1746, label %1747, label %1805

1747:                                             ; preds = %1742
  br label %1748

1748:                                             ; preds = %1747
  br label %1749

1749:                                             ; preds = %1776, %1748
  %1750 = load i32, ptr %14, align 4, !tbaa !9
  %1751 = getelementptr inbounds %struct.code, ptr %19, i32 0, i32 1
  %1752 = load i8, ptr %1751, align 1, !tbaa !75
  %1753 = zext i8 %1752 to i32
  %1754 = add nsw i32 %1753, 3
  %1755 = icmp ult i32 %1750, %1754
  br i1 %1755, label %1756, label %1777

1756:                                             ; preds = %1749
  br label %1757

1757:                                             ; preds = %1756
  %1758 = load i32, ptr %11, align 4, !tbaa !9
  %1759 = icmp eq i32 %1758, 0
  br i1 %1759, label %1760, label %1761

1760:                                             ; preds = %1757
  br label %2996

1761:                                             ; preds = %1757
  %1762 = load i32, ptr %11, align 4, !tbaa !9
  %1763 = add i32 %1762, -1
  store i32 %1763, ptr %11, align 4, !tbaa !9
  %1764 = load ptr, ptr %9, align 8, !tbaa !5
  %1765 = getelementptr inbounds i8, ptr %1764, i32 1
  store ptr %1765, ptr %9, align 8, !tbaa !5
  %1766 = load i8, ptr %1764, align 1, !tbaa !24
  %1767 = zext i8 %1766 to i64
  %1768 = load i32, ptr %14, align 4, !tbaa !9
  %1769 = zext i32 %1768 to i64
  %1770 = shl i64 %1767, %1769
  %1771 = load i64, ptr %13, align 8, !tbaa !21
  %1772 = add i64 %1771, %1770
  store i64 %1772, ptr %13, align 8, !tbaa !21
  %1773 = load i32, ptr %14, align 4, !tbaa !9
  %1774 = add i32 %1773, 8
  store i32 %1774, ptr %14, align 4, !tbaa !9
  br label %1775

1775:                                             ; preds = %1761
  br label %1776

1776:                                             ; preds = %1775
  br label %1749, !llvm.loop !79

1777:                                             ; preds = %1749
  br label %1778

1778:                                             ; preds = %1777
  br label %1779

1779:                                             ; preds = %1778
  br label %1780

1780:                                             ; preds = %1779
  %1781 = getelementptr inbounds %struct.code, ptr %19, i32 0, i32 1
  %1782 = load i8, ptr %1781, align 1, !tbaa !75
  %1783 = zext i8 %1782 to i32
  %1784 = load i64, ptr %13, align 8, !tbaa !21
  %1785 = zext i32 %1783 to i64
  %1786 = lshr i64 %1784, %1785
  store i64 %1786, ptr %13, align 8, !tbaa !21
  %1787 = getelementptr inbounds %struct.code, ptr %19, i32 0, i32 1
  %1788 = load i8, ptr %1787, align 1, !tbaa !75
  %1789 = zext i8 %1788 to i32
  %1790 = load i32, ptr %14, align 4, !tbaa !9
  %1791 = sub i32 %1790, %1789
  store i32 %1791, ptr %14, align 4, !tbaa !9
  br label %1792

1792:                                             ; preds = %1780
  br label %1793

1793:                                             ; preds = %1792
  store i32 0, ptr %21, align 4, !tbaa !9
  %1794 = load i64, ptr %13, align 8, !tbaa !21
  %1795 = trunc i64 %1794 to i32
  %1796 = and i32 %1795, 7
  %1797 = add i32 3, %1796
  store i32 %1797, ptr %17, align 4, !tbaa !9
  br label %1798

1798:                                             ; preds = %1793
  %1799 = load i64, ptr %13, align 8, !tbaa !21
  %1800 = lshr i64 %1799, 3
  store i64 %1800, ptr %13, align 8, !tbaa !21
  %1801 = load i32, ptr %14, align 4, !tbaa !9
  %1802 = sub i32 %1801, 3
  store i32 %1802, ptr %14, align 4, !tbaa !9
  br label %1803

1803:                                             ; preds = %1798
  br label %1804

1804:                                             ; preds = %1803
  br label %1863

1805:                                             ; preds = %1742
  br label %1806

1806:                                             ; preds = %1805
  br label %1807

1807:                                             ; preds = %1834, %1806
  %1808 = load i32, ptr %14, align 4, !tbaa !9
  %1809 = getelementptr inbounds %struct.code, ptr %19, i32 0, i32 1
  %1810 = load i8, ptr %1809, align 1, !tbaa !75
  %1811 = zext i8 %1810 to i32
  %1812 = add nsw i32 %1811, 7
  %1813 = icmp ult i32 %1808, %1812
  br i1 %1813, label %1814, label %1835

1814:                                             ; preds = %1807
  br label %1815

1815:                                             ; preds = %1814
  %1816 = load i32, ptr %11, align 4, !tbaa !9
  %1817 = icmp eq i32 %1816, 0
  br i1 %1817, label %1818, label %1819

1818:                                             ; preds = %1815
  br label %2996

1819:                                             ; preds = %1815
  %1820 = load i32, ptr %11, align 4, !tbaa !9
  %1821 = add i32 %1820, -1
  store i32 %1821, ptr %11, align 4, !tbaa !9
  %1822 = load ptr, ptr %9, align 8, !tbaa !5
  %1823 = getelementptr inbounds i8, ptr %1822, i32 1
  store ptr %1823, ptr %9, align 8, !tbaa !5
  %1824 = load i8, ptr %1822, align 1, !tbaa !24
  %1825 = zext i8 %1824 to i64
  %1826 = load i32, ptr %14, align 4, !tbaa !9
  %1827 = zext i32 %1826 to i64
  %1828 = shl i64 %1825, %1827
  %1829 = load i64, ptr %13, align 8, !tbaa !21
  %1830 = add i64 %1829, %1828
  store i64 %1830, ptr %13, align 8, !tbaa !21
  %1831 = load i32, ptr %14, align 4, !tbaa !9
  %1832 = add i32 %1831, 8
  store i32 %1832, ptr %14, align 4, !tbaa !9
  br label %1833

1833:                                             ; preds = %1819
  br label %1834

1834:                                             ; preds = %1833
  br label %1807, !llvm.loop !80

1835:                                             ; preds = %1807
  br label %1836

1836:                                             ; preds = %1835
  br label %1837

1837:                                             ; preds = %1836
  br label %1838

1838:                                             ; preds = %1837
  %1839 = getelementptr inbounds %struct.code, ptr %19, i32 0, i32 1
  %1840 = load i8, ptr %1839, align 1, !tbaa !75
  %1841 = zext i8 %1840 to i32
  %1842 = load i64, ptr %13, align 8, !tbaa !21
  %1843 = zext i32 %1841 to i64
  %1844 = lshr i64 %1842, %1843
  store i64 %1844, ptr %13, align 8, !tbaa !21
  %1845 = getelementptr inbounds %struct.code, ptr %19, i32 0, i32 1
  %1846 = load i8, ptr %1845, align 1, !tbaa !75
  %1847 = zext i8 %1846 to i32
  %1848 = load i32, ptr %14, align 4, !tbaa !9
  %1849 = sub i32 %1848, %1847
  store i32 %1849, ptr %14, align 4, !tbaa !9
  br label %1850

1850:                                             ; preds = %1838
  br label %1851

1851:                                             ; preds = %1850
  store i32 0, ptr %21, align 4, !tbaa !9
  %1852 = load i64, ptr %13, align 8, !tbaa !21
  %1853 = trunc i64 %1852 to i32
  %1854 = and i32 %1853, 127
  %1855 = add i32 11, %1854
  store i32 %1855, ptr %17, align 4, !tbaa !9
  br label %1856

1856:                                             ; preds = %1851
  %1857 = load i64, ptr %13, align 8, !tbaa !21
  %1858 = lshr i64 %1857, 7
  store i64 %1858, ptr %13, align 8, !tbaa !21
  %1859 = load i32, ptr %14, align 4, !tbaa !9
  %1860 = sub i32 %1859, 7
  store i32 %1860, ptr %14, align 4, !tbaa !9
  br label %1861

1861:                                             ; preds = %1856
  br label %1862

1862:                                             ; preds = %1861
  br label %1863

1863:                                             ; preds = %1862, %1804
  br label %1864

1864:                                             ; preds = %1863, %1741
  %1865 = load ptr, ptr %8, align 8, !tbaa !5
  %1866 = getelementptr inbounds %struct.inflate_state, ptr %1865, i32 0, i32 27
  %1867 = load i32, ptr %1866, align 4, !tbaa !65
  %1868 = load i32, ptr %17, align 4, !tbaa !9
  %1869 = add i32 %1867, %1868
  %1870 = load ptr, ptr %8, align 8, !tbaa !5
  %1871 = getelementptr inbounds %struct.inflate_state, ptr %1870, i32 0, i32 25
  %1872 = load i32, ptr %1871, align 4, !tbaa !62
  %1873 = load ptr, ptr %8, align 8, !tbaa !5
  %1874 = getelementptr inbounds %struct.inflate_state, ptr %1873, i32 0, i32 26
  %1875 = load i32, ptr %1874, align 8, !tbaa !63
  %1876 = add i32 %1872, %1875
  %1877 = icmp ugt i32 %1869, %1876
  br i1 %1877, label %1878, label %1883

1878:                                             ; preds = %1864
  %1879 = load ptr, ptr %5, align 8, !tbaa !5
  %1880 = getelementptr inbounds %struct.z_stream_s, ptr %1879, i32 0, i32 6
  store ptr @.str.10, ptr %1880, align 8, !tbaa !33
  %1881 = load ptr, ptr %8, align 8, !tbaa !5
  %1882 = getelementptr inbounds %struct.inflate_state, ptr %1881, i32 0, i32 1
  store i32 16209, ptr %1882, align 8, !tbaa !17
  br label %1901

1883:                                             ; preds = %1864
  br label %1884

1884:                                             ; preds = %1888, %1883
  %1885 = load i32, ptr %17, align 4, !tbaa !9
  %1886 = add i32 %1885, -1
  store i32 %1886, ptr %17, align 4, !tbaa !9
  %1887 = icmp ne i32 %1885, 0
  br i1 %1887, label %1888, label %1899

1888:                                             ; preds = %1884
  %1889 = load i32, ptr %21, align 4, !tbaa !9
  %1890 = trunc i32 %1889 to i16
  %1891 = load ptr, ptr %8, align 8, !tbaa !5
  %1892 = getelementptr inbounds %struct.inflate_state, ptr %1891, i32 0, i32 29
  %1893 = load ptr, ptr %8, align 8, !tbaa !5
  %1894 = getelementptr inbounds %struct.inflate_state, ptr %1893, i32 0, i32 27
  %1895 = load i32, ptr %1894, align 4, !tbaa !65
  %1896 = add i32 %1895, 1
  store i32 %1896, ptr %1894, align 4, !tbaa !65
  %1897 = zext i32 %1895 to i64
  %1898 = getelementptr inbounds [320 x i16], ptr %1892, i64 0, i64 %1897
  store i16 %1890, ptr %1898, align 2, !tbaa !67
  br label %1884, !llvm.loop !81

1899:                                             ; preds = %1884
  br label %1900

1900:                                             ; preds = %1899, %1648
  br label %1575, !llvm.loop !82

1901:                                             ; preds = %1878, %1715, %1575
  %1902 = load ptr, ptr %8, align 8, !tbaa !5
  %1903 = getelementptr inbounds %struct.inflate_state, ptr %1902, i32 0, i32 1
  %1904 = load i32, ptr %1903, align 8, !tbaa !17
  %1905 = icmp eq i32 %1904, 16209
  br i1 %1905, label %1906, label %1907

1906:                                             ; preds = %1901
  br label %2995

1907:                                             ; preds = %1901
  %1908 = load ptr, ptr %8, align 8, !tbaa !5
  %1909 = getelementptr inbounds %struct.inflate_state, ptr %1908, i32 0, i32 29
  %1910 = getelementptr inbounds [320 x i16], ptr %1909, i64 0, i64 256
  %1911 = load i16, ptr %1910, align 8, !tbaa !67
  %1912 = zext i16 %1911 to i32
  %1913 = icmp eq i32 %1912, 0
  br i1 %1913, label %1914, label %1919

1914:                                             ; preds = %1907
  %1915 = load ptr, ptr %5, align 8, !tbaa !5
  %1916 = getelementptr inbounds %struct.z_stream_s, ptr %1915, i32 0, i32 6
  store ptr @.str.11, ptr %1916, align 8, !tbaa !33
  %1917 = load ptr, ptr %8, align 8, !tbaa !5
  %1918 = getelementptr inbounds %struct.inflate_state, ptr %1917, i32 0, i32 1
  store i32 16209, ptr %1918, align 8, !tbaa !17
  br label %2995

1919:                                             ; preds = %1907
  %1920 = load ptr, ptr %8, align 8, !tbaa !5
  %1921 = getelementptr inbounds %struct.inflate_state, ptr %1920, i32 0, i32 31
  %1922 = getelementptr inbounds [1444 x %struct.code], ptr %1921, i64 0, i64 0
  %1923 = load ptr, ptr %8, align 8, !tbaa !5
  %1924 = getelementptr inbounds %struct.inflate_state, ptr %1923, i32 0, i32 28
  store ptr %1922, ptr %1924, align 8, !tbaa !71
  %1925 = load ptr, ptr %8, align 8, !tbaa !5
  %1926 = getelementptr inbounds %struct.inflate_state, ptr %1925, i32 0, i32 28
  %1927 = load ptr, ptr %1926, align 8, !tbaa !71
  %1928 = load ptr, ptr %8, align 8, !tbaa !5
  %1929 = getelementptr inbounds %struct.inflate_state, ptr %1928, i32 0, i32 20
  store ptr %1927, ptr %1929, align 8, !tbaa !72
  %1930 = load ptr, ptr %8, align 8, !tbaa !5
  %1931 = getelementptr inbounds %struct.inflate_state, ptr %1930, i32 0, i32 22
  store i32 9, ptr %1931, align 8, !tbaa !73
  %1932 = load ptr, ptr %8, align 8, !tbaa !5
  %1933 = getelementptr inbounds %struct.inflate_state, ptr %1932, i32 0, i32 29
  %1934 = getelementptr inbounds [320 x i16], ptr %1933, i64 0, i64 0
  %1935 = load ptr, ptr %8, align 8, !tbaa !5
  %1936 = getelementptr inbounds %struct.inflate_state, ptr %1935, i32 0, i32 25
  %1937 = load i32, ptr %1936, align 4, !tbaa !62
  %1938 = load ptr, ptr %8, align 8, !tbaa !5
  %1939 = getelementptr inbounds %struct.inflate_state, ptr %1938, i32 0, i32 28
  %1940 = load ptr, ptr %8, align 8, !tbaa !5
  %1941 = getelementptr inbounds %struct.inflate_state, ptr %1940, i32 0, i32 22
  %1942 = load ptr, ptr %8, align 8, !tbaa !5
  %1943 = getelementptr inbounds %struct.inflate_state, ptr %1942, i32 0, i32 30
  %1944 = getelementptr inbounds [288 x i16], ptr %1943, i64 0, i64 0
  %1945 = call i32 @inflate_table(i32 noundef 1, ptr noundef %1934, i32 noundef %1937, ptr noundef %1939, ptr noundef %1941, ptr noundef %1944)
  store i32 %1945, ptr %22, align 4, !tbaa !9
  %1946 = load i32, ptr %22, align 4, !tbaa !9
  %1947 = icmp ne i32 %1946, 0
  br i1 %1947, label %1948, label %1953

1948:                                             ; preds = %1919
  %1949 = load ptr, ptr %5, align 8, !tbaa !5
  %1950 = getelementptr inbounds %struct.z_stream_s, ptr %1949, i32 0, i32 6
  store ptr @.str.12, ptr %1950, align 8, !tbaa !33
  %1951 = load ptr, ptr %8, align 8, !tbaa !5
  %1952 = getelementptr inbounds %struct.inflate_state, ptr %1951, i32 0, i32 1
  store i32 16209, ptr %1952, align 8, !tbaa !17
  br label %2995

1953:                                             ; preds = %1919
  %1954 = load ptr, ptr %8, align 8, !tbaa !5
  %1955 = getelementptr inbounds %struct.inflate_state, ptr %1954, i32 0, i32 28
  %1956 = load ptr, ptr %1955, align 8, !tbaa !71
  %1957 = load ptr, ptr %8, align 8, !tbaa !5
  %1958 = getelementptr inbounds %struct.inflate_state, ptr %1957, i32 0, i32 21
  store ptr %1956, ptr %1958, align 8, !tbaa !83
  %1959 = load ptr, ptr %8, align 8, !tbaa !5
  %1960 = getelementptr inbounds %struct.inflate_state, ptr %1959, i32 0, i32 23
  store i32 6, ptr %1960, align 4, !tbaa !84
  %1961 = load ptr, ptr %8, align 8, !tbaa !5
  %1962 = getelementptr inbounds %struct.inflate_state, ptr %1961, i32 0, i32 29
  %1963 = getelementptr inbounds [320 x i16], ptr %1962, i64 0, i64 0
  %1964 = load ptr, ptr %8, align 8, !tbaa !5
  %1965 = getelementptr inbounds %struct.inflate_state, ptr %1964, i32 0, i32 25
  %1966 = load i32, ptr %1965, align 4, !tbaa !62
  %1967 = zext i32 %1966 to i64
  %1968 = getelementptr inbounds i16, ptr %1963, i64 %1967
  %1969 = load ptr, ptr %8, align 8, !tbaa !5
  %1970 = getelementptr inbounds %struct.inflate_state, ptr %1969, i32 0, i32 26
  %1971 = load i32, ptr %1970, align 8, !tbaa !63
  %1972 = load ptr, ptr %8, align 8, !tbaa !5
  %1973 = getelementptr inbounds %struct.inflate_state, ptr %1972, i32 0, i32 28
  %1974 = load ptr, ptr %8, align 8, !tbaa !5
  %1975 = getelementptr inbounds %struct.inflate_state, ptr %1974, i32 0, i32 23
  %1976 = load ptr, ptr %8, align 8, !tbaa !5
  %1977 = getelementptr inbounds %struct.inflate_state, ptr %1976, i32 0, i32 30
  %1978 = getelementptr inbounds [288 x i16], ptr %1977, i64 0, i64 0
  %1979 = call i32 @inflate_table(i32 noundef 2, ptr noundef %1968, i32 noundef %1971, ptr noundef %1973, ptr noundef %1975, ptr noundef %1978)
  store i32 %1979, ptr %22, align 4, !tbaa !9
  %1980 = load i32, ptr %22, align 4, !tbaa !9
  %1981 = icmp ne i32 %1980, 0
  br i1 %1981, label %1982, label %1987

1982:                                             ; preds = %1953
  %1983 = load ptr, ptr %5, align 8, !tbaa !5
  %1984 = getelementptr inbounds %struct.z_stream_s, ptr %1983, i32 0, i32 6
  store ptr @.str.13, ptr %1984, align 8, !tbaa !33
  %1985 = load ptr, ptr %8, align 8, !tbaa !5
  %1986 = getelementptr inbounds %struct.inflate_state, ptr %1985, i32 0, i32 1
  store i32 16209, ptr %1986, align 8, !tbaa !17
  br label %2995

1987:                                             ; preds = %1953
  %1988 = load ptr, ptr %8, align 8, !tbaa !5
  %1989 = getelementptr inbounds %struct.inflate_state, ptr %1988, i32 0, i32 1
  store i32 16199, ptr %1989, align 8, !tbaa !17
  %1990 = load i32, ptr %6, align 4, !tbaa !9
  %1991 = icmp eq i32 %1990, 6
  br i1 %1991, label %1992, label %1993

1992:                                             ; preds = %1987
  br label %2996

1993:                                             ; preds = %1987
  br label %1994

1994:                                             ; preds = %1993, %82
  %1995 = load ptr, ptr %8, align 8, !tbaa !5
  %1996 = getelementptr inbounds %struct.inflate_state, ptr %1995, i32 0, i32 1
  store i32 16200, ptr %1996, align 8, !tbaa !17
  br label %1997

1997:                                             ; preds = %1994, %82
  %1998 = load i32, ptr %11, align 4, !tbaa !9
  %1999 = icmp uge i32 %1998, 6
  br i1 %1999, label %2000, label %2056

2000:                                             ; preds = %1997
  %2001 = load i32, ptr %12, align 4, !tbaa !9
  %2002 = icmp uge i32 %2001, 258
  br i1 %2002, label %2003, label %2056

2003:                                             ; preds = %2000
  br label %2004

2004:                                             ; preds = %2003
  %2005 = load ptr, ptr %10, align 8, !tbaa !5
  %2006 = load ptr, ptr %5, align 8, !tbaa !5
  %2007 = getelementptr inbounds %struct.z_stream_s, ptr %2006, i32 0, i32 3
  store ptr %2005, ptr %2007, align 8, !tbaa !11
  %2008 = load i32, ptr %12, align 4, !tbaa !9
  %2009 = load ptr, ptr %5, align 8, !tbaa !5
  %2010 = getelementptr inbounds %struct.z_stream_s, ptr %2009, i32 0, i32 4
  store i32 %2008, ptr %2010, align 8, !tbaa !19
  %2011 = load ptr, ptr %9, align 8, !tbaa !5
  %2012 = load ptr, ptr %5, align 8, !tbaa !5
  %2013 = getelementptr inbounds %struct.z_stream_s, ptr %2012, i32 0, i32 0
  store ptr %2011, ptr %2013, align 8, !tbaa !14
  %2014 = load i32, ptr %11, align 4, !tbaa !9
  %2015 = load ptr, ptr %5, align 8, !tbaa !5
  %2016 = getelementptr inbounds %struct.z_stream_s, ptr %2015, i32 0, i32 1
  store i32 %2014, ptr %2016, align 8, !tbaa !15
  %2017 = load i64, ptr %13, align 8, !tbaa !21
  %2018 = load ptr, ptr %8, align 8, !tbaa !5
  %2019 = getelementptr inbounds %struct.inflate_state, ptr %2018, i32 0, i32 15
  store i64 %2017, ptr %2019, align 8, !tbaa !20
  %2020 = load i32, ptr %14, align 4, !tbaa !9
  %2021 = load ptr, ptr %8, align 8, !tbaa !5
  %2022 = getelementptr inbounds %struct.inflate_state, ptr %2021, i32 0, i32 16
  store i32 %2020, ptr %2022, align 8, !tbaa !22
  br label %2023

2023:                                             ; preds = %2004
  br label %2024

2024:                                             ; preds = %2023
  %2025 = load ptr, ptr %5, align 8, !tbaa !5
  %2026 = load i32, ptr %16, align 4, !tbaa !9
  call void @inflate_fast(ptr noundef %2025, i32 noundef %2026)
  br label %2027

2027:                                             ; preds = %2024
  %2028 = load ptr, ptr %5, align 8, !tbaa !5
  %2029 = getelementptr inbounds %struct.z_stream_s, ptr %2028, i32 0, i32 3
  %2030 = load ptr, ptr %2029, align 8, !tbaa !11
  store ptr %2030, ptr %10, align 8, !tbaa !5
  %2031 = load ptr, ptr %5, align 8, !tbaa !5
  %2032 = getelementptr inbounds %struct.z_stream_s, ptr %2031, i32 0, i32 4
  %2033 = load i32, ptr %2032, align 8, !tbaa !19
  store i32 %2033, ptr %12, align 4, !tbaa !9
  %2034 = load ptr, ptr %5, align 8, !tbaa !5
  %2035 = getelementptr inbounds %struct.z_stream_s, ptr %2034, i32 0, i32 0
  %2036 = load ptr, ptr %2035, align 8, !tbaa !14
  store ptr %2036, ptr %9, align 8, !tbaa !5
  %2037 = load ptr, ptr %5, align 8, !tbaa !5
  %2038 = getelementptr inbounds %struct.z_stream_s, ptr %2037, i32 0, i32 1
  %2039 = load i32, ptr %2038, align 8, !tbaa !15
  store i32 %2039, ptr %11, align 4, !tbaa !9
  %2040 = load ptr, ptr %8, align 8, !tbaa !5
  %2041 = getelementptr inbounds %struct.inflate_state, ptr %2040, i32 0, i32 15
  %2042 = load i64, ptr %2041, align 8, !tbaa !20
  store i64 %2042, ptr %13, align 8, !tbaa !21
  %2043 = load ptr, ptr %8, align 8, !tbaa !5
  %2044 = getelementptr inbounds %struct.inflate_state, ptr %2043, i32 0, i32 16
  %2045 = load i32, ptr %2044, align 8, !tbaa !22
  store i32 %2045, ptr %14, align 4, !tbaa !9
  br label %2046

2046:                                             ; preds = %2027
  br label %2047

2047:                                             ; preds = %2046
  %2048 = load ptr, ptr %8, align 8, !tbaa !5
  %2049 = getelementptr inbounds %struct.inflate_state, ptr %2048, i32 0, i32 1
  %2050 = load i32, ptr %2049, align 8, !tbaa !17
  %2051 = icmp eq i32 %2050, 16191
  br i1 %2051, label %2052, label %2055

2052:                                             ; preds = %2047
  %2053 = load ptr, ptr %8, align 8, !tbaa !5
  %2054 = getelementptr inbounds %struct.inflate_state, ptr %2053, i32 0, i32 33
  store i32 -1, ptr %2054, align 4, !tbaa !85
  br label %2055

2055:                                             ; preds = %2052, %2047
  br label %2995

2056:                                             ; preds = %2000, %1997
  %2057 = load ptr, ptr %8, align 8, !tbaa !5
  %2058 = getelementptr inbounds %struct.inflate_state, ptr %2057, i32 0, i32 33
  store i32 0, ptr %2058, align 4, !tbaa !85
  br label %2059

2059:                                             ; preds = %2099, %2056
  %2060 = load ptr, ptr %8, align 8, !tbaa !5
  %2061 = getelementptr inbounds %struct.inflate_state, ptr %2060, i32 0, i32 20
  %2062 = load ptr, ptr %2061, align 8, !tbaa !72
  %2063 = load i64, ptr %13, align 8, !tbaa !21
  %2064 = trunc i64 %2063 to i32
  %2065 = load ptr, ptr %8, align 8, !tbaa !5
  %2066 = getelementptr inbounds %struct.inflate_state, ptr %2065, i32 0, i32 22
  %2067 = load i32, ptr %2066, align 8, !tbaa !73
  %2068 = shl i32 1, %2067
  %2069 = sub i32 %2068, 1
  %2070 = and i32 %2064, %2069
  %2071 = zext i32 %2070 to i64
  %2072 = getelementptr inbounds %struct.code, ptr %2062, i64 %2071
  call void @llvm.memcpy.p0.p0.i64(ptr align 2 %19, ptr align 2 %2072, i64 4, i1 false), !tbaa.struct !74
  %2073 = getelementptr inbounds %struct.code, ptr %19, i32 0, i32 1
  %2074 = load i8, ptr %2073, align 1, !tbaa !75
  %2075 = zext i8 %2074 to i32
  %2076 = load i32, ptr %14, align 4, !tbaa !9
  %2077 = icmp ule i32 %2075, %2076
  br i1 %2077, label %2078, label %2079

2078:                                             ; preds = %2059
  br label %2100

2079:                                             ; preds = %2059
  br label %2080

2080:                                             ; preds = %2079
  %2081 = load i32, ptr %11, align 4, !tbaa !9
  %2082 = icmp eq i32 %2081, 0
  br i1 %2082, label %2083, label %2084

2083:                                             ; preds = %2080
  br label %2996

2084:                                             ; preds = %2080
  %2085 = load i32, ptr %11, align 4, !tbaa !9
  %2086 = add i32 %2085, -1
  store i32 %2086, ptr %11, align 4, !tbaa !9
  %2087 = load ptr, ptr %9, align 8, !tbaa !5
  %2088 = getelementptr inbounds i8, ptr %2087, i32 1
  store ptr %2088, ptr %9, align 8, !tbaa !5
  %2089 = load i8, ptr %2087, align 1, !tbaa !24
  %2090 = zext i8 %2089 to i64
  %2091 = load i32, ptr %14, align 4, !tbaa !9
  %2092 = zext i32 %2091 to i64
  %2093 = shl i64 %2090, %2092
  %2094 = load i64, ptr %13, align 8, !tbaa !21
  %2095 = add i64 %2094, %2093
  store i64 %2095, ptr %13, align 8, !tbaa !21
  %2096 = load i32, ptr %14, align 4, !tbaa !9
  %2097 = add i32 %2096, 8
  store i32 %2097, ptr %14, align 4, !tbaa !9
  br label %2098

2098:                                             ; preds = %2084
  br label %2099

2099:                                             ; preds = %2098
  br label %2059

2100:                                             ; preds = %2078
  %2101 = getelementptr inbounds %struct.code, ptr %19, i32 0, i32 0
  %2102 = load i8, ptr %2101, align 2, !tbaa !86
  %2103 = zext i8 %2102 to i32
  %2104 = icmp ne i32 %2103, 0
  br i1 %2104, label %2105, label %2191

2105:                                             ; preds = %2100
  %2106 = getelementptr inbounds %struct.code, ptr %19, i32 0, i32 0
  %2107 = load i8, ptr %2106, align 2, !tbaa !86
  %2108 = zext i8 %2107 to i32
  %2109 = and i32 %2108, 240
  %2110 = icmp eq i32 %2109, 0
  br i1 %2110, label %2111, label %2191

2111:                                             ; preds = %2105
  call void @llvm.memcpy.p0.p0.i64(ptr align 2 %20, ptr align 2 %19, i64 4, i1 false), !tbaa.struct !74
  br label %2112

2112:                                             ; preds = %2168, %2111
  %2113 = load ptr, ptr %8, align 8, !tbaa !5
  %2114 = getelementptr inbounds %struct.inflate_state, ptr %2113, i32 0, i32 20
  %2115 = load ptr, ptr %2114, align 8, !tbaa !72
  %2116 = getelementptr inbounds %struct.code, ptr %20, i32 0, i32 2
  %2117 = load i16, ptr %2116, align 2, !tbaa !77
  %2118 = zext i16 %2117 to i32
  %2119 = load i64, ptr %13, align 8, !tbaa !21
  %2120 = trunc i64 %2119 to i32
  %2121 = getelementptr inbounds %struct.code, ptr %20, i32 0, i32 1
  %2122 = load i8, ptr %2121, align 1, !tbaa !75
  %2123 = zext i8 %2122 to i32
  %2124 = getelementptr inbounds %struct.code, ptr %20, i32 0, i32 0
  %2125 = load i8, ptr %2124, align 2, !tbaa !86
  %2126 = zext i8 %2125 to i32
  %2127 = add nsw i32 %2123, %2126
  %2128 = shl i32 1, %2127
  %2129 = sub i32 %2128, 1
  %2130 = and i32 %2120, %2129
  %2131 = getelementptr inbounds %struct.code, ptr %20, i32 0, i32 1
  %2132 = load i8, ptr %2131, align 1, !tbaa !75
  %2133 = zext i8 %2132 to i32
  %2134 = lshr i32 %2130, %2133
  %2135 = add i32 %2118, %2134
  %2136 = zext i32 %2135 to i64
  %2137 = getelementptr inbounds %struct.code, ptr %2115, i64 %2136
  call void @llvm.memcpy.p0.p0.i64(ptr align 2 %19, ptr align 2 %2137, i64 4, i1 false), !tbaa.struct !74
  %2138 = getelementptr inbounds %struct.code, ptr %20, i32 0, i32 1
  %2139 = load i8, ptr %2138, align 1, !tbaa !75
  %2140 = zext i8 %2139 to i32
  %2141 = getelementptr inbounds %struct.code, ptr %19, i32 0, i32 1
  %2142 = load i8, ptr %2141, align 1, !tbaa !75
  %2143 = zext i8 %2142 to i32
  %2144 = add nsw i32 %2140, %2143
  %2145 = load i32, ptr %14, align 4, !tbaa !9
  %2146 = icmp ule i32 %2144, %2145
  br i1 %2146, label %2147, label %2148

2147:                                             ; preds = %2112
  br label %2169

2148:                                             ; preds = %2112
  br label %2149

2149:                                             ; preds = %2148
  %2150 = load i32, ptr %11, align 4, !tbaa !9
  %2151 = icmp eq i32 %2150, 0
  br i1 %2151, label %2152, label %2153

2152:                                             ; preds = %2149
  br label %2996

2153:                                             ; preds = %2149
  %2154 = load i32, ptr %11, align 4, !tbaa !9
  %2155 = add i32 %2154, -1
  store i32 %2155, ptr %11, align 4, !tbaa !9
  %2156 = load ptr, ptr %9, align 8, !tbaa !5
  %2157 = getelementptr inbounds i8, ptr %2156, i32 1
  store ptr %2157, ptr %9, align 8, !tbaa !5
  %2158 = load i8, ptr %2156, align 1, !tbaa !24
  %2159 = zext i8 %2158 to i64
  %2160 = load i32, ptr %14, align 4, !tbaa !9
  %2161 = zext i32 %2160 to i64
  %2162 = shl i64 %2159, %2161
  %2163 = load i64, ptr %13, align 8, !tbaa !21
  %2164 = add i64 %2163, %2162
  store i64 %2164, ptr %13, align 8, !tbaa !21
  %2165 = load i32, ptr %14, align 4, !tbaa !9
  %2166 = add i32 %2165, 8
  store i32 %2166, ptr %14, align 4, !tbaa !9
  br label %2167

2167:                                             ; preds = %2153
  br label %2168

2168:                                             ; preds = %2167
  br label %2112

2169:                                             ; preds = %2147
  br label %2170

2170:                                             ; preds = %2169
  %2171 = getelementptr inbounds %struct.code, ptr %20, i32 0, i32 1
  %2172 = load i8, ptr %2171, align 1, !tbaa !75
  %2173 = zext i8 %2172 to i32
  %2174 = load i64, ptr %13, align 8, !tbaa !21
  %2175 = zext i32 %2173 to i64
  %2176 = lshr i64 %2174, %2175
  store i64 %2176, ptr %13, align 8, !tbaa !21
  %2177 = getelementptr inbounds %struct.code, ptr %20, i32 0, i32 1
  %2178 = load i8, ptr %2177, align 1, !tbaa !75
  %2179 = zext i8 %2178 to i32
  %2180 = load i32, ptr %14, align 4, !tbaa !9
  %2181 = sub i32 %2180, %2179
  store i32 %2181, ptr %14, align 4, !tbaa !9
  br label %2182

2182:                                             ; preds = %2170
  br label %2183

2183:                                             ; preds = %2182
  %2184 = getelementptr inbounds %struct.code, ptr %20, i32 0, i32 1
  %2185 = load i8, ptr %2184, align 1, !tbaa !75
  %2186 = zext i8 %2185 to i32
  %2187 = load ptr, ptr %8, align 8, !tbaa !5
  %2188 = getelementptr inbounds %struct.inflate_state, ptr %2187, i32 0, i32 33
  %2189 = load i32, ptr %2188, align 4, !tbaa !85
  %2190 = add nsw i32 %2189, %2186
  store i32 %2190, ptr %2188, align 4, !tbaa !85
  br label %2191

2191:                                             ; preds = %2183, %2105, %2100
  br label %2192

2192:                                             ; preds = %2191
  %2193 = getelementptr inbounds %struct.code, ptr %19, i32 0, i32 1
  %2194 = load i8, ptr %2193, align 1, !tbaa !75
  %2195 = zext i8 %2194 to i32
  %2196 = load i64, ptr %13, align 8, !tbaa !21
  %2197 = zext i32 %2195 to i64
  %2198 = lshr i64 %2196, %2197
  store i64 %2198, ptr %13, align 8, !tbaa !21
  %2199 = getelementptr inbounds %struct.code, ptr %19, i32 0, i32 1
  %2200 = load i8, ptr %2199, align 1, !tbaa !75
  %2201 = zext i8 %2200 to i32
  %2202 = load i32, ptr %14, align 4, !tbaa !9
  %2203 = sub i32 %2202, %2201
  store i32 %2203, ptr %14, align 4, !tbaa !9
  br label %2204

2204:                                             ; preds = %2192
  br label %2205

2205:                                             ; preds = %2204
  %2206 = getelementptr inbounds %struct.code, ptr %19, i32 0, i32 1
  %2207 = load i8, ptr %2206, align 1, !tbaa !75
  %2208 = zext i8 %2207 to i32
  %2209 = load ptr, ptr %8, align 8, !tbaa !5
  %2210 = getelementptr inbounds %struct.inflate_state, ptr %2209, i32 0, i32 33
  %2211 = load i32, ptr %2210, align 4, !tbaa !85
  %2212 = add nsw i32 %2211, %2208
  store i32 %2212, ptr %2210, align 4, !tbaa !85
  %2213 = getelementptr inbounds %struct.code, ptr %19, i32 0, i32 2
  %2214 = load i16, ptr %2213, align 2, !tbaa !77
  %2215 = zext i16 %2214 to i32
  %2216 = load ptr, ptr %8, align 8, !tbaa !5
  %2217 = getelementptr inbounds %struct.inflate_state, ptr %2216, i32 0, i32 17
  store i32 %2215, ptr %2217, align 4, !tbaa !44
  %2218 = getelementptr inbounds %struct.code, ptr %19, i32 0, i32 0
  %2219 = load i8, ptr %2218, align 2, !tbaa !86
  %2220 = zext i8 %2219 to i32
  %2221 = icmp eq i32 %2220, 0
  br i1 %2221, label %2222, label %2225

2222:                                             ; preds = %2205
  %2223 = load ptr, ptr %8, align 8, !tbaa !5
  %2224 = getelementptr inbounds %struct.inflate_state, ptr %2223, i32 0, i32 1
  store i32 16205, ptr %2224, align 8, !tbaa !17
  br label %2995

2225:                                             ; preds = %2205
  %2226 = getelementptr inbounds %struct.code, ptr %19, i32 0, i32 0
  %2227 = load i8, ptr %2226, align 2, !tbaa !86
  %2228 = zext i8 %2227 to i32
  %2229 = and i32 %2228, 32
  %2230 = icmp ne i32 %2229, 0
  br i1 %2230, label %2231, label %2236

2231:                                             ; preds = %2225
  %2232 = load ptr, ptr %8, align 8, !tbaa !5
  %2233 = getelementptr inbounds %struct.inflate_state, ptr %2232, i32 0, i32 33
  store i32 -1, ptr %2233, align 4, !tbaa !85
  %2234 = load ptr, ptr %8, align 8, !tbaa !5
  %2235 = getelementptr inbounds %struct.inflate_state, ptr %2234, i32 0, i32 1
  store i32 16191, ptr %2235, align 8, !tbaa !17
  br label %2995

2236:                                             ; preds = %2225
  %2237 = getelementptr inbounds %struct.code, ptr %19, i32 0, i32 0
  %2238 = load i8, ptr %2237, align 2, !tbaa !86
  %2239 = zext i8 %2238 to i32
  %2240 = and i32 %2239, 64
  %2241 = icmp ne i32 %2240, 0
  br i1 %2241, label %2242, label %2247

2242:                                             ; preds = %2236
  %2243 = load ptr, ptr %5, align 8, !tbaa !5
  %2244 = getelementptr inbounds %struct.z_stream_s, ptr %2243, i32 0, i32 6
  store ptr @.str.14, ptr %2244, align 8, !tbaa !33
  %2245 = load ptr, ptr %8, align 8, !tbaa !5
  %2246 = getelementptr inbounds %struct.inflate_state, ptr %2245, i32 0, i32 1
  store i32 16209, ptr %2246, align 8, !tbaa !17
  br label %2995

2247:                                             ; preds = %2236
  %2248 = getelementptr inbounds %struct.code, ptr %19, i32 0, i32 0
  %2249 = load i8, ptr %2248, align 2, !tbaa !86
  %2250 = zext i8 %2249 to i32
  %2251 = and i32 %2250, 15
  %2252 = load ptr, ptr %8, align 8, !tbaa !5
  %2253 = getelementptr inbounds %struct.inflate_state, ptr %2252, i32 0, i32 19
  store i32 %2251, ptr %2253, align 4, !tbaa !87
  %2254 = load ptr, ptr %8, align 8, !tbaa !5
  %2255 = getelementptr inbounds %struct.inflate_state, ptr %2254, i32 0, i32 1
  store i32 16201, ptr %2255, align 8, !tbaa !17
  br label %2256

2256:                                             ; preds = %2247, %82
  %2257 = load ptr, ptr %8, align 8, !tbaa !5
  %2258 = getelementptr inbounds %struct.inflate_state, ptr %2257, i32 0, i32 19
  %2259 = load i32, ptr %2258, align 4, !tbaa !87
  %2260 = icmp ne i32 %2259, 0
  br i1 %2260, label %2261, label %2326

2261:                                             ; preds = %2256
  br label %2262

2262:                                             ; preds = %2261
  br label %2263

2263:                                             ; preds = %2289, %2262
  %2264 = load i32, ptr %14, align 4, !tbaa !9
  %2265 = load ptr, ptr %8, align 8, !tbaa !5
  %2266 = getelementptr inbounds %struct.inflate_state, ptr %2265, i32 0, i32 19
  %2267 = load i32, ptr %2266, align 4, !tbaa !87
  %2268 = icmp ult i32 %2264, %2267
  br i1 %2268, label %2269, label %2290

2269:                                             ; preds = %2263
  br label %2270

2270:                                             ; preds = %2269
  %2271 = load i32, ptr %11, align 4, !tbaa !9
  %2272 = icmp eq i32 %2271, 0
  br i1 %2272, label %2273, label %2274

2273:                                             ; preds = %2270
  br label %2996

2274:                                             ; preds = %2270
  %2275 = load i32, ptr %11, align 4, !tbaa !9
  %2276 = add i32 %2275, -1
  store i32 %2276, ptr %11, align 4, !tbaa !9
  %2277 = load ptr, ptr %9, align 8, !tbaa !5
  %2278 = getelementptr inbounds i8, ptr %2277, i32 1
  store ptr %2278, ptr %9, align 8, !tbaa !5
  %2279 = load i8, ptr %2277, align 1, !tbaa !24
  %2280 = zext i8 %2279 to i64
  %2281 = load i32, ptr %14, align 4, !tbaa !9
  %2282 = zext i32 %2281 to i64
  %2283 = shl i64 %2280, %2282
  %2284 = load i64, ptr %13, align 8, !tbaa !21
  %2285 = add i64 %2284, %2283
  store i64 %2285, ptr %13, align 8, !tbaa !21
  %2286 = load i32, ptr %14, align 4, !tbaa !9
  %2287 = add i32 %2286, 8
  store i32 %2287, ptr %14, align 4, !tbaa !9
  br label %2288

2288:                                             ; preds = %2274
  br label %2289

2289:                                             ; preds = %2288
  br label %2263, !llvm.loop !88

2290:                                             ; preds = %2263
  br label %2291

2291:                                             ; preds = %2290
  br label %2292

2292:                                             ; preds = %2291
  %2293 = load i64, ptr %13, align 8, !tbaa !21
  %2294 = trunc i64 %2293 to i32
  %2295 = load ptr, ptr %8, align 8, !tbaa !5
  %2296 = getelementptr inbounds %struct.inflate_state, ptr %2295, i32 0, i32 19
  %2297 = load i32, ptr %2296, align 4, !tbaa !87
  %2298 = shl i32 1, %2297
  %2299 = sub i32 %2298, 1
  %2300 = and i32 %2294, %2299
  %2301 = load ptr, ptr %8, align 8, !tbaa !5
  %2302 = getelementptr inbounds %struct.inflate_state, ptr %2301, i32 0, i32 17
  %2303 = load i32, ptr %2302, align 4, !tbaa !44
  %2304 = add i32 %2303, %2300
  store i32 %2304, ptr %2302, align 4, !tbaa !44
  br label %2305

2305:                                             ; preds = %2292
  %2306 = load ptr, ptr %8, align 8, !tbaa !5
  %2307 = getelementptr inbounds %struct.inflate_state, ptr %2306, i32 0, i32 19
  %2308 = load i32, ptr %2307, align 4, !tbaa !87
  %2309 = load i64, ptr %13, align 8, !tbaa !21
  %2310 = zext i32 %2308 to i64
  %2311 = lshr i64 %2309, %2310
  store i64 %2311, ptr %13, align 8, !tbaa !21
  %2312 = load ptr, ptr %8, align 8, !tbaa !5
  %2313 = getelementptr inbounds %struct.inflate_state, ptr %2312, i32 0, i32 19
  %2314 = load i32, ptr %2313, align 4, !tbaa !87
  %2315 = load i32, ptr %14, align 4, !tbaa !9
  %2316 = sub i32 %2315, %2314
  store i32 %2316, ptr %14, align 4, !tbaa !9
  br label %2317

2317:                                             ; preds = %2305
  br label %2318

2318:                                             ; preds = %2317
  %2319 = load ptr, ptr %8, align 8, !tbaa !5
  %2320 = getelementptr inbounds %struct.inflate_state, ptr %2319, i32 0, i32 19
  %2321 = load i32, ptr %2320, align 4, !tbaa !87
  %2322 = load ptr, ptr %8, align 8, !tbaa !5
  %2323 = getelementptr inbounds %struct.inflate_state, ptr %2322, i32 0, i32 33
  %2324 = load i32, ptr %2323, align 4, !tbaa !85
  %2325 = add i32 %2324, %2321
  store i32 %2325, ptr %2323, align 4, !tbaa !85
  br label %2326

2326:                                             ; preds = %2318, %2256
  %2327 = load ptr, ptr %8, align 8, !tbaa !5
  %2328 = getelementptr inbounds %struct.inflate_state, ptr %2327, i32 0, i32 17
  %2329 = load i32, ptr %2328, align 4, !tbaa !44
  %2330 = load ptr, ptr %8, align 8, !tbaa !5
  %2331 = getelementptr inbounds %struct.inflate_state, ptr %2330, i32 0, i32 34
  store i32 %2329, ptr %2331, align 8, !tbaa !89
  %2332 = load ptr, ptr %8, align 8, !tbaa !5
  %2333 = getelementptr inbounds %struct.inflate_state, ptr %2332, i32 0, i32 1
  store i32 16202, ptr %2333, align 8, !tbaa !17
  br label %2334

2334:                                             ; preds = %2326, %82
  br label %2335

2335:                                             ; preds = %2375, %2334
  %2336 = load ptr, ptr %8, align 8, !tbaa !5
  %2337 = getelementptr inbounds %struct.inflate_state, ptr %2336, i32 0, i32 21
  %2338 = load ptr, ptr %2337, align 8, !tbaa !83
  %2339 = load i64, ptr %13, align 8, !tbaa !21
  %2340 = trunc i64 %2339 to i32
  %2341 = load ptr, ptr %8, align 8, !tbaa !5
  %2342 = getelementptr inbounds %struct.inflate_state, ptr %2341, i32 0, i32 23
  %2343 = load i32, ptr %2342, align 4, !tbaa !84
  %2344 = shl i32 1, %2343
  %2345 = sub i32 %2344, 1
  %2346 = and i32 %2340, %2345
  %2347 = zext i32 %2346 to i64
  %2348 = getelementptr inbounds %struct.code, ptr %2338, i64 %2347
  call void @llvm.memcpy.p0.p0.i64(ptr align 2 %19, ptr align 2 %2348, i64 4, i1 false), !tbaa.struct !74
  %2349 = getelementptr inbounds %struct.code, ptr %19, i32 0, i32 1
  %2350 = load i8, ptr %2349, align 1, !tbaa !75
  %2351 = zext i8 %2350 to i32
  %2352 = load i32, ptr %14, align 4, !tbaa !9
  %2353 = icmp ule i32 %2351, %2352
  br i1 %2353, label %2354, label %2355

2354:                                             ; preds = %2335
  br label %2376

2355:                                             ; preds = %2335
  br label %2356

2356:                                             ; preds = %2355
  %2357 = load i32, ptr %11, align 4, !tbaa !9
  %2358 = icmp eq i32 %2357, 0
  br i1 %2358, label %2359, label %2360

2359:                                             ; preds = %2356
  br label %2996

2360:                                             ; preds = %2356
  %2361 = load i32, ptr %11, align 4, !tbaa !9
  %2362 = add i32 %2361, -1
  store i32 %2362, ptr %11, align 4, !tbaa !9
  %2363 = load ptr, ptr %9, align 8, !tbaa !5
  %2364 = getelementptr inbounds i8, ptr %2363, i32 1
  store ptr %2364, ptr %9, align 8, !tbaa !5
  %2365 = load i8, ptr %2363, align 1, !tbaa !24
  %2366 = zext i8 %2365 to i64
  %2367 = load i32, ptr %14, align 4, !tbaa !9
  %2368 = zext i32 %2367 to i64
  %2369 = shl i64 %2366, %2368
  %2370 = load i64, ptr %13, align 8, !tbaa !21
  %2371 = add i64 %2370, %2369
  store i64 %2371, ptr %13, align 8, !tbaa !21
  %2372 = load i32, ptr %14, align 4, !tbaa !9
  %2373 = add i32 %2372, 8
  store i32 %2373, ptr %14, align 4, !tbaa !9
  br label %2374

2374:                                             ; preds = %2360
  br label %2375

2375:                                             ; preds = %2374
  br label %2335

2376:                                             ; preds = %2354
  %2377 = getelementptr inbounds %struct.code, ptr %19, i32 0, i32 0
  %2378 = load i8, ptr %2377, align 2, !tbaa !86
  %2379 = zext i8 %2378 to i32
  %2380 = and i32 %2379, 240
  %2381 = icmp eq i32 %2380, 0
  br i1 %2381, label %2382, label %2462

2382:                                             ; preds = %2376
  call void @llvm.memcpy.p0.p0.i64(ptr align 2 %20, ptr align 2 %19, i64 4, i1 false), !tbaa.struct !74
  br label %2383

2383:                                             ; preds = %2439, %2382
  %2384 = load ptr, ptr %8, align 8, !tbaa !5
  %2385 = getelementptr inbounds %struct.inflate_state, ptr %2384, i32 0, i32 21
  %2386 = load ptr, ptr %2385, align 8, !tbaa !83
  %2387 = getelementptr inbounds %struct.code, ptr %20, i32 0, i32 2
  %2388 = load i16, ptr %2387, align 2, !tbaa !77
  %2389 = zext i16 %2388 to i32
  %2390 = load i64, ptr %13, align 8, !tbaa !21
  %2391 = trunc i64 %2390 to i32
  %2392 = getelementptr inbounds %struct.code, ptr %20, i32 0, i32 1
  %2393 = load i8, ptr %2392, align 1, !tbaa !75
  %2394 = zext i8 %2393 to i32
  %2395 = getelementptr inbounds %struct.code, ptr %20, i32 0, i32 0
  %2396 = load i8, ptr %2395, align 2, !tbaa !86
  %2397 = zext i8 %2396 to i32
  %2398 = add nsw i32 %2394, %2397
  %2399 = shl i32 1, %2398
  %2400 = sub i32 %2399, 1
  %2401 = and i32 %2391, %2400
  %2402 = getelementptr inbounds %struct.code, ptr %20, i32 0, i32 1
  %2403 = load i8, ptr %2402, align 1, !tbaa !75
  %2404 = zext i8 %2403 to i32
  %2405 = lshr i32 %2401, %2404
  %2406 = add i32 %2389, %2405
  %2407 = zext i32 %2406 to i64
  %2408 = getelementptr inbounds %struct.code, ptr %2386, i64 %2407
  call void @llvm.memcpy.p0.p0.i64(ptr align 2 %19, ptr align 2 %2408, i64 4, i1 false), !tbaa.struct !74
  %2409 = getelementptr inbounds %struct.code, ptr %20, i32 0, i32 1
  %2410 = load i8, ptr %2409, align 1, !tbaa !75
  %2411 = zext i8 %2410 to i32
  %2412 = getelementptr inbounds %struct.code, ptr %19, i32 0, i32 1
  %2413 = load i8, ptr %2412, align 1, !tbaa !75
  %2414 = zext i8 %2413 to i32
  %2415 = add nsw i32 %2411, %2414
  %2416 = load i32, ptr %14, align 4, !tbaa !9
  %2417 = icmp ule i32 %2415, %2416
  br i1 %2417, label %2418, label %2419

2418:                                             ; preds = %2383
  br label %2440

2419:                                             ; preds = %2383
  br label %2420

2420:                                             ; preds = %2419
  %2421 = load i32, ptr %11, align 4, !tbaa !9
  %2422 = icmp eq i32 %2421, 0
  br i1 %2422, label %2423, label %2424

2423:                                             ; preds = %2420
  br label %2996

2424:                                             ; preds = %2420
  %2425 = load i32, ptr %11, align 4, !tbaa !9
  %2426 = add i32 %2425, -1
  store i32 %2426, ptr %11, align 4, !tbaa !9
  %2427 = load ptr, ptr %9, align 8, !tbaa !5
  %2428 = getelementptr inbounds i8, ptr %2427, i32 1
  store ptr %2428, ptr %9, align 8, !tbaa !5
  %2429 = load i8, ptr %2427, align 1, !tbaa !24
  %2430 = zext i8 %2429 to i64
  %2431 = load i32, ptr %14, align 4, !tbaa !9
  %2432 = zext i32 %2431 to i64
  %2433 = shl i64 %2430, %2432
  %2434 = load i64, ptr %13, align 8, !tbaa !21
  %2435 = add i64 %2434, %2433
  store i64 %2435, ptr %13, align 8, !tbaa !21
  %2436 = load i32, ptr %14, align 4, !tbaa !9
  %2437 = add i32 %2436, 8
  store i32 %2437, ptr %14, align 4, !tbaa !9
  br label %2438

2438:                                             ; preds = %2424
  br label %2439

2439:                                             ; preds = %2438
  br label %2383

2440:                                             ; preds = %2418
  br label %2441

2441:                                             ; preds = %2440
  %2442 = getelementptr inbounds %struct.code, ptr %20, i32 0, i32 1
  %2443 = load i8, ptr %2442, align 1, !tbaa !75
  %2444 = zext i8 %2443 to i32
  %2445 = load i64, ptr %13, align 8, !tbaa !21
  %2446 = zext i32 %2444 to i64
  %2447 = lshr i64 %2445, %2446
  store i64 %2447, ptr %13, align 8, !tbaa !21
  %2448 = getelementptr inbounds %struct.code, ptr %20, i32 0, i32 1
  %2449 = load i8, ptr %2448, align 1, !tbaa !75
  %2450 = zext i8 %2449 to i32
  %2451 = load i32, ptr %14, align 4, !tbaa !9
  %2452 = sub i32 %2451, %2450
  store i32 %2452, ptr %14, align 4, !tbaa !9
  br label %2453

2453:                                             ; preds = %2441
  br label %2454

2454:                                             ; preds = %2453
  %2455 = getelementptr inbounds %struct.code, ptr %20, i32 0, i32 1
  %2456 = load i8, ptr %2455, align 1, !tbaa !75
  %2457 = zext i8 %2456 to i32
  %2458 = load ptr, ptr %8, align 8, !tbaa !5
  %2459 = getelementptr inbounds %struct.inflate_state, ptr %2458, i32 0, i32 33
  %2460 = load i32, ptr %2459, align 4, !tbaa !85
  %2461 = add nsw i32 %2460, %2457
  store i32 %2461, ptr %2459, align 4, !tbaa !85
  br label %2462

2462:                                             ; preds = %2454, %2376
  br label %2463

2463:                                             ; preds = %2462
  %2464 = getelementptr inbounds %struct.code, ptr %19, i32 0, i32 1
  %2465 = load i8, ptr %2464, align 1, !tbaa !75
  %2466 = zext i8 %2465 to i32
  %2467 = load i64, ptr %13, align 8, !tbaa !21
  %2468 = zext i32 %2466 to i64
  %2469 = lshr i64 %2467, %2468
  store i64 %2469, ptr %13, align 8, !tbaa !21
  %2470 = getelementptr inbounds %struct.code, ptr %19, i32 0, i32 1
  %2471 = load i8, ptr %2470, align 1, !tbaa !75
  %2472 = zext i8 %2471 to i32
  %2473 = load i32, ptr %14, align 4, !tbaa !9
  %2474 = sub i32 %2473, %2472
  store i32 %2474, ptr %14, align 4, !tbaa !9
  br label %2475

2475:                                             ; preds = %2463
  br label %2476

2476:                                             ; preds = %2475
  %2477 = getelementptr inbounds %struct.code, ptr %19, i32 0, i32 1
  %2478 = load i8, ptr %2477, align 1, !tbaa !75
  %2479 = zext i8 %2478 to i32
  %2480 = load ptr, ptr %8, align 8, !tbaa !5
  %2481 = getelementptr inbounds %struct.inflate_state, ptr %2480, i32 0, i32 33
  %2482 = load i32, ptr %2481, align 4, !tbaa !85
  %2483 = add nsw i32 %2482, %2479
  store i32 %2483, ptr %2481, align 4, !tbaa !85
  %2484 = getelementptr inbounds %struct.code, ptr %19, i32 0, i32 0
  %2485 = load i8, ptr %2484, align 2, !tbaa !86
  %2486 = zext i8 %2485 to i32
  %2487 = and i32 %2486, 64
  %2488 = icmp ne i32 %2487, 0
  br i1 %2488, label %2489, label %2494

2489:                                             ; preds = %2476
  %2490 = load ptr, ptr %5, align 8, !tbaa !5
  %2491 = getelementptr inbounds %struct.z_stream_s, ptr %2490, i32 0, i32 6
  store ptr @.str.15, ptr %2491, align 8, !tbaa !33
  %2492 = load ptr, ptr %8, align 8, !tbaa !5
  %2493 = getelementptr inbounds %struct.inflate_state, ptr %2492, i32 0, i32 1
  store i32 16209, ptr %2493, align 8, !tbaa !17
  br label %2995

2494:                                             ; preds = %2476
  %2495 = getelementptr inbounds %struct.code, ptr %19, i32 0, i32 2
  %2496 = load i16, ptr %2495, align 2, !tbaa !77
  %2497 = zext i16 %2496 to i32
  %2498 = load ptr, ptr %8, align 8, !tbaa !5
  %2499 = getelementptr inbounds %struct.inflate_state, ptr %2498, i32 0, i32 18
  store i32 %2497, ptr %2499, align 8, !tbaa !90
  %2500 = getelementptr inbounds %struct.code, ptr %19, i32 0, i32 0
  %2501 = load i8, ptr %2500, align 2, !tbaa !86
  %2502 = zext i8 %2501 to i32
  %2503 = and i32 %2502, 15
  %2504 = load ptr, ptr %8, align 8, !tbaa !5
  %2505 = getelementptr inbounds %struct.inflate_state, ptr %2504, i32 0, i32 19
  store i32 %2503, ptr %2505, align 4, !tbaa !87
  %2506 = load ptr, ptr %8, align 8, !tbaa !5
  %2507 = getelementptr inbounds %struct.inflate_state, ptr %2506, i32 0, i32 1
  store i32 16203, ptr %2507, align 8, !tbaa !17
  br label %2508

2508:                                             ; preds = %2494, %82
  %2509 = load ptr, ptr %8, align 8, !tbaa !5
  %2510 = getelementptr inbounds %struct.inflate_state, ptr %2509, i32 0, i32 19
  %2511 = load i32, ptr %2510, align 4, !tbaa !87
  %2512 = icmp ne i32 %2511, 0
  br i1 %2512, label %2513, label %2578

2513:                                             ; preds = %2508
  br label %2514

2514:                                             ; preds = %2513
  br label %2515

2515:                                             ; preds = %2541, %2514
  %2516 = load i32, ptr %14, align 4, !tbaa !9
  %2517 = load ptr, ptr %8, align 8, !tbaa !5
  %2518 = getelementptr inbounds %struct.inflate_state, ptr %2517, i32 0, i32 19
  %2519 = load i32, ptr %2518, align 4, !tbaa !87
  %2520 = icmp ult i32 %2516, %2519
  br i1 %2520, label %2521, label %2542

2521:                                             ; preds = %2515
  br label %2522

2522:                                             ; preds = %2521
  %2523 = load i32, ptr %11, align 4, !tbaa !9
  %2524 = icmp eq i32 %2523, 0
  br i1 %2524, label %2525, label %2526

2525:                                             ; preds = %2522
  br label %2996

2526:                                             ; preds = %2522
  %2527 = load i32, ptr %11, align 4, !tbaa !9
  %2528 = add i32 %2527, -1
  store i32 %2528, ptr %11, align 4, !tbaa !9
  %2529 = load ptr, ptr %9, align 8, !tbaa !5
  %2530 = getelementptr inbounds i8, ptr %2529, i32 1
  store ptr %2530, ptr %9, align 8, !tbaa !5
  %2531 = load i8, ptr %2529, align 1, !tbaa !24
  %2532 = zext i8 %2531 to i64
  %2533 = load i32, ptr %14, align 4, !tbaa !9
  %2534 = zext i32 %2533 to i64
  %2535 = shl i64 %2532, %2534
  %2536 = load i64, ptr %13, align 8, !tbaa !21
  %2537 = add i64 %2536, %2535
  store i64 %2537, ptr %13, align 8, !tbaa !21
  %2538 = load i32, ptr %14, align 4, !tbaa !9
  %2539 = add i32 %2538, 8
  store i32 %2539, ptr %14, align 4, !tbaa !9
  br label %2540

2540:                                             ; preds = %2526
  br label %2541

2541:                                             ; preds = %2540
  br label %2515, !llvm.loop !91

2542:                                             ; preds = %2515
  br label %2543

2543:                                             ; preds = %2542
  br label %2544

2544:                                             ; preds = %2543
  %2545 = load i64, ptr %13, align 8, !tbaa !21
  %2546 = trunc i64 %2545 to i32
  %2547 = load ptr, ptr %8, align 8, !tbaa !5
  %2548 = getelementptr inbounds %struct.inflate_state, ptr %2547, i32 0, i32 19
  %2549 = load i32, ptr %2548, align 4, !tbaa !87
  %2550 = shl i32 1, %2549
  %2551 = sub i32 %2550, 1
  %2552 = and i32 %2546, %2551
  %2553 = load ptr, ptr %8, align 8, !tbaa !5
  %2554 = getelementptr inbounds %struct.inflate_state, ptr %2553, i32 0, i32 18
  %2555 = load i32, ptr %2554, align 8, !tbaa !90
  %2556 = add i32 %2555, %2552
  store i32 %2556, ptr %2554, align 8, !tbaa !90
  br label %2557

2557:                                             ; preds = %2544
  %2558 = load ptr, ptr %8, align 8, !tbaa !5
  %2559 = getelementptr inbounds %struct.inflate_state, ptr %2558, i32 0, i32 19
  %2560 = load i32, ptr %2559, align 4, !tbaa !87
  %2561 = load i64, ptr %13, align 8, !tbaa !21
  %2562 = zext i32 %2560 to i64
  %2563 = lshr i64 %2561, %2562
  store i64 %2563, ptr %13, align 8, !tbaa !21
  %2564 = load ptr, ptr %8, align 8, !tbaa !5
  %2565 = getelementptr inbounds %struct.inflate_state, ptr %2564, i32 0, i32 19
  %2566 = load i32, ptr %2565, align 4, !tbaa !87
  %2567 = load i32, ptr %14, align 4, !tbaa !9
  %2568 = sub i32 %2567, %2566
  store i32 %2568, ptr %14, align 4, !tbaa !9
  br label %2569

2569:                                             ; preds = %2557
  br label %2570

2570:                                             ; preds = %2569
  %2571 = load ptr, ptr %8, align 8, !tbaa !5
  %2572 = getelementptr inbounds %struct.inflate_state, ptr %2571, i32 0, i32 19
  %2573 = load i32, ptr %2572, align 4, !tbaa !87
  %2574 = load ptr, ptr %8, align 8, !tbaa !5
  %2575 = getelementptr inbounds %struct.inflate_state, ptr %2574, i32 0, i32 33
  %2576 = load i32, ptr %2575, align 4, !tbaa !85
  %2577 = add i32 %2576, %2573
  store i32 %2577, ptr %2575, align 4, !tbaa !85
  br label %2578

2578:                                             ; preds = %2570, %2508
  %2579 = load ptr, ptr %8, align 8, !tbaa !5
  %2580 = getelementptr inbounds %struct.inflate_state, ptr %2579, i32 0, i32 1
  store i32 16204, ptr %2580, align 8, !tbaa !17
  br label %2581

2581:                                             ; preds = %2578, %82
  %2582 = load i32, ptr %12, align 4, !tbaa !9
  %2583 = icmp eq i32 %2582, 0
  br i1 %2583, label %2584, label %2585

2584:                                             ; preds = %2581
  br label %2996

2585:                                             ; preds = %2581
  %2586 = load i32, ptr %16, align 4, !tbaa !9
  %2587 = load i32, ptr %12, align 4, !tbaa !9
  %2588 = sub i32 %2586, %2587
  store i32 %2588, ptr %17, align 4, !tbaa !9
  %2589 = load ptr, ptr %8, align 8, !tbaa !5
  %2590 = getelementptr inbounds %struct.inflate_state, ptr %2589, i32 0, i32 18
  %2591 = load i32, ptr %2590, align 8, !tbaa !90
  %2592 = load i32, ptr %17, align 4, !tbaa !9
  %2593 = icmp ugt i32 %2591, %2592
  br i1 %2593, label %2594, label %2660

2594:                                             ; preds = %2585
  %2595 = load ptr, ptr %8, align 8, !tbaa !5
  %2596 = getelementptr inbounds %struct.inflate_state, ptr %2595, i32 0, i32 18
  %2597 = load i32, ptr %2596, align 8, !tbaa !90
  %2598 = load i32, ptr %17, align 4, !tbaa !9
  %2599 = sub i32 %2597, %2598
  store i32 %2599, ptr %17, align 4, !tbaa !9
  %2600 = load i32, ptr %17, align 4, !tbaa !9
  %2601 = load ptr, ptr %8, align 8, !tbaa !5
  %2602 = getelementptr inbounds %struct.inflate_state, ptr %2601, i32 0, i32 12
  %2603 = load i32, ptr %2602, align 8, !tbaa !92
  %2604 = icmp ugt i32 %2600, %2603
  br i1 %2604, label %2605, label %2616

2605:                                             ; preds = %2594
  %2606 = load ptr, ptr %8, align 8, !tbaa !5
  %2607 = getelementptr inbounds %struct.inflate_state, ptr %2606, i32 0, i32 32
  %2608 = load i32, ptr %2607, align 8, !tbaa !93
  %2609 = icmp ne i32 %2608, 0
  br i1 %2609, label %2610, label %2615

2610:                                             ; preds = %2605
  %2611 = load ptr, ptr %5, align 8, !tbaa !5
  %2612 = getelementptr inbounds %struct.z_stream_s, ptr %2611, i32 0, i32 6
  store ptr @.str.16, ptr %2612, align 8, !tbaa !33
  %2613 = load ptr, ptr %8, align 8, !tbaa !5
  %2614 = getelementptr inbounds %struct.inflate_state, ptr %2613, i32 0, i32 1
  store i32 16209, ptr %2614, align 8, !tbaa !17
  br label %2995

2615:                                             ; preds = %2605
  br label %2616

2616:                                             ; preds = %2615, %2594
  %2617 = load i32, ptr %17, align 4, !tbaa !9
  %2618 = load ptr, ptr %8, align 8, !tbaa !5
  %2619 = getelementptr inbounds %struct.inflate_state, ptr %2618, i32 0, i32 13
  %2620 = load i32, ptr %2619, align 4, !tbaa !94
  %2621 = icmp ugt i32 %2617, %2620
  br i1 %2621, label %2622, label %2638

2622:                                             ; preds = %2616
  %2623 = load ptr, ptr %8, align 8, !tbaa !5
  %2624 = getelementptr inbounds %struct.inflate_state, ptr %2623, i32 0, i32 13
  %2625 = load i32, ptr %2624, align 4, !tbaa !94
  %2626 = load i32, ptr %17, align 4, !tbaa !9
  %2627 = sub i32 %2626, %2625
  store i32 %2627, ptr %17, align 4, !tbaa !9
  %2628 = load ptr, ptr %8, align 8, !tbaa !5
  %2629 = getelementptr inbounds %struct.inflate_state, ptr %2628, i32 0, i32 14
  %2630 = load ptr, ptr %2629, align 8, !tbaa !95
  %2631 = load ptr, ptr %8, align 8, !tbaa !5
  %2632 = getelementptr inbounds %struct.inflate_state, ptr %2631, i32 0, i32 11
  %2633 = load i32, ptr %2632, align 4, !tbaa !96
  %2634 = load i32, ptr %17, align 4, !tbaa !9
  %2635 = sub i32 %2633, %2634
  %2636 = zext i32 %2635 to i64
  %2637 = getelementptr inbounds i8, ptr %2630, i64 %2636
  store ptr %2637, ptr %18, align 8, !tbaa !5
  br label %2649

2638:                                             ; preds = %2616
  %2639 = load ptr, ptr %8, align 8, !tbaa !5
  %2640 = getelementptr inbounds %struct.inflate_state, ptr %2639, i32 0, i32 14
  %2641 = load ptr, ptr %2640, align 8, !tbaa !95
  %2642 = load ptr, ptr %8, align 8, !tbaa !5
  %2643 = getelementptr inbounds %struct.inflate_state, ptr %2642, i32 0, i32 13
  %2644 = load i32, ptr %2643, align 4, !tbaa !94
  %2645 = load i32, ptr %17, align 4, !tbaa !9
  %2646 = sub i32 %2644, %2645
  %2647 = zext i32 %2646 to i64
  %2648 = getelementptr inbounds i8, ptr %2641, i64 %2647
  store ptr %2648, ptr %18, align 8, !tbaa !5
  br label %2649

2649:                                             ; preds = %2638, %2622
  %2650 = load i32, ptr %17, align 4, !tbaa !9
  %2651 = load ptr, ptr %8, align 8, !tbaa !5
  %2652 = getelementptr inbounds %struct.inflate_state, ptr %2651, i32 0, i32 17
  %2653 = load i32, ptr %2652, align 4, !tbaa !44
  %2654 = icmp ugt i32 %2650, %2653
  br i1 %2654, label %2655, label %2659

2655:                                             ; preds = %2649
  %2656 = load ptr, ptr %8, align 8, !tbaa !5
  %2657 = getelementptr inbounds %struct.inflate_state, ptr %2656, i32 0, i32 17
  %2658 = load i32, ptr %2657, align 4, !tbaa !44
  store i32 %2658, ptr %17, align 4, !tbaa !9
  br label %2659

2659:                                             ; preds = %2655, %2649
  br label %2671

2660:                                             ; preds = %2585
  %2661 = load ptr, ptr %10, align 8, !tbaa !5
  %2662 = load ptr, ptr %8, align 8, !tbaa !5
  %2663 = getelementptr inbounds %struct.inflate_state, ptr %2662, i32 0, i32 18
  %2664 = load i32, ptr %2663, align 8, !tbaa !90
  %2665 = zext i32 %2664 to i64
  %2666 = sub i64 0, %2665
  %2667 = getelementptr inbounds i8, ptr %2661, i64 %2666
  store ptr %2667, ptr %18, align 8, !tbaa !5
  %2668 = load ptr, ptr %8, align 8, !tbaa !5
  %2669 = getelementptr inbounds %struct.inflate_state, ptr %2668, i32 0, i32 17
  %2670 = load i32, ptr %2669, align 4, !tbaa !44
  store i32 %2670, ptr %17, align 4, !tbaa !9
  br label %2671

2671:                                             ; preds = %2660, %2659
  %2672 = load i32, ptr %17, align 4, !tbaa !9
  %2673 = load i32, ptr %12, align 4, !tbaa !9
  %2674 = icmp ugt i32 %2672, %2673
  br i1 %2674, label %2675, label %2677

2675:                                             ; preds = %2671
  %2676 = load i32, ptr %12, align 4, !tbaa !9
  store i32 %2676, ptr %17, align 4, !tbaa !9
  br label %2677

2677:                                             ; preds = %2675, %2671
  %2678 = load i32, ptr %17, align 4, !tbaa !9
  %2679 = load i32, ptr %12, align 4, !tbaa !9
  %2680 = sub i32 %2679, %2678
  store i32 %2680, ptr %12, align 4, !tbaa !9
  %2681 = load i32, ptr %17, align 4, !tbaa !9
  %2682 = load ptr, ptr %8, align 8, !tbaa !5
  %2683 = getelementptr inbounds %struct.inflate_state, ptr %2682, i32 0, i32 17
  %2684 = load i32, ptr %2683, align 4, !tbaa !44
  %2685 = sub i32 %2684, %2681
  store i32 %2685, ptr %2683, align 4, !tbaa !44
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #4
  %2686 = load ptr, ptr %10, align 8, !tbaa !5
  %2687 = load i32, ptr %17, align 4, !tbaa !9
  %2688 = zext i32 %2687 to i64
  %2689 = getelementptr inbounds i8, ptr %2686, i64 %2688
  store ptr %2689, ptr %25, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #4
  %2690 = load ptr, ptr %10, align 8, !tbaa !5
  %2691 = load ptr, ptr %18, align 8, !tbaa !5
  %2692 = ptrtoint ptr %2690 to i64
  %2693 = ptrtoint ptr %2691 to i64
  %2694 = sub i64 %2692, %2693
  %2695 = trunc i64 %2694 to i32
  store i32 %2695, ptr %26, align 4, !tbaa !9
  %2696 = load i32, ptr %26, align 4, !tbaa !9
  %2697 = icmp sge i32 %2696, 4
  br i1 %2697, label %2698, label %2724

2698:                                             ; preds = %2677
  br label %2699

2699:                                             ; preds = %2704, %2698
  %2700 = load ptr, ptr %10, align 8, !tbaa !5
  %2701 = load ptr, ptr %25, align 8, !tbaa !5
  %2702 = getelementptr inbounds i8, ptr %2701, i64 -3
  %2703 = icmp ult ptr %2700, %2702
  br i1 %2703, label %2704, label %2712

2704:                                             ; preds = %2699
  %2705 = load ptr, ptr %18, align 8, !tbaa !5
  %2706 = load i32, ptr %2705, align 4, !tbaa !9
  %2707 = load ptr, ptr %10, align 8, !tbaa !5
  store i32 %2706, ptr %2707, align 4, !tbaa !9
  %2708 = load ptr, ptr %10, align 8, !tbaa !5
  %2709 = getelementptr inbounds i8, ptr %2708, i64 4
  store ptr %2709, ptr %10, align 8, !tbaa !5
  %2710 = load ptr, ptr %18, align 8, !tbaa !5
  %2711 = getelementptr inbounds i8, ptr %2710, i64 4
  store ptr %2711, ptr %18, align 8, !tbaa !5
  br label %2699, !llvm.loop !97

2712:                                             ; preds = %2699
  br label %2713

2713:                                             ; preds = %2717, %2712
  %2714 = load ptr, ptr %10, align 8, !tbaa !5
  %2715 = load ptr, ptr %25, align 8, !tbaa !5
  %2716 = icmp ult ptr %2714, %2715
  br i1 %2716, label %2717, label %2723

2717:                                             ; preds = %2713
  %2718 = load ptr, ptr %18, align 8, !tbaa !5
  %2719 = getelementptr inbounds i8, ptr %2718, i32 1
  store ptr %2719, ptr %18, align 8, !tbaa !5
  %2720 = load i8, ptr %2718, align 1, !tbaa !24
  %2721 = load ptr, ptr %10, align 8, !tbaa !5
  %2722 = getelementptr inbounds i8, ptr %2721, i32 1
  store ptr %2722, ptr %10, align 8, !tbaa !5
  store i8 %2720, ptr %2721, align 1, !tbaa !24
  br label %2713, !llvm.loop !98

2723:                                             ; preds = %2713
  br label %2763

2724:                                             ; preds = %2677
  %2725 = load i32, ptr %26, align 4, !tbaa !9
  %2726 = icmp eq i32 %2725, 1
  br i1 %2726, label %2727, label %2750

2727:                                             ; preds = %2724
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #4
  %2728 = load ptr, ptr %18, align 8, !tbaa !5
  %2729 = load i8, ptr %2728, align 1, !tbaa !24
  %2730 = zext i8 %2729 to i32
  store i32 %2730, ptr %27, align 4, !tbaa !9
  %2731 = load i32, ptr %27, align 4, !tbaa !9
  %2732 = load i32, ptr %27, align 4, !tbaa !9
  %2733 = shl i32 %2732, 8
  %2734 = or i32 %2731, %2733
  store i32 %2734, ptr %27, align 4, !tbaa !9
  %2735 = load i32, ptr %27, align 4, !tbaa !9
  %2736 = load i32, ptr %27, align 4, !tbaa !9
  %2737 = shl i32 %2736, 16
  %2738 = or i32 %2735, %2737
  store i32 %2738, ptr %27, align 4, !tbaa !9
  br label %2739

2739:                                             ; preds = %2743, %2727
  %2740 = load ptr, ptr %10, align 8, !tbaa !5
  %2741 = load ptr, ptr %25, align 8, !tbaa !5
  %2742 = icmp ult ptr %2740, %2741
  br i1 %2742, label %2743, label %2748

2743:                                             ; preds = %2739
  %2744 = load i32, ptr %27, align 4, !tbaa !9
  %2745 = load ptr, ptr %10, align 8, !tbaa !5
  store i32 %2744, ptr %2745, align 4, !tbaa !9
  %2746 = load ptr, ptr %10, align 8, !tbaa !5
  %2747 = getelementptr inbounds i8, ptr %2746, i64 4
  store ptr %2747, ptr %10, align 8, !tbaa !5
  br label %2739, !llvm.loop !99

2748:                                             ; preds = %2739
  %2749 = load ptr, ptr %25, align 8, !tbaa !5
  store ptr %2749, ptr %10, align 8, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #4
  br label %2762

2750:                                             ; preds = %2724
  br label %2751

2751:                                             ; preds = %2755, %2750
  %2752 = load ptr, ptr %10, align 8, !tbaa !5
  %2753 = load ptr, ptr %25, align 8, !tbaa !5
  %2754 = icmp ult ptr %2752, %2753
  br i1 %2754, label %2755, label %2761

2755:                                             ; preds = %2751
  %2756 = load ptr, ptr %18, align 8, !tbaa !5
  %2757 = getelementptr inbounds i8, ptr %2756, i32 1
  store ptr %2757, ptr %18, align 8, !tbaa !5
  %2758 = load i8, ptr %2756, align 1, !tbaa !24
  %2759 = load ptr, ptr %10, align 8, !tbaa !5
  %2760 = getelementptr inbounds i8, ptr %2759, i32 1
  store ptr %2760, ptr %10, align 8, !tbaa !5
  store i8 %2758, ptr %2759, align 1, !tbaa !24
  br label %2751, !llvm.loop !100

2761:                                             ; preds = %2751
  br label %2762

2762:                                             ; preds = %2761, %2748
  br label %2763

2763:                                             ; preds = %2762, %2723
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #4
  %2764 = load ptr, ptr %8, align 8, !tbaa !5
  %2765 = getelementptr inbounds %struct.inflate_state, ptr %2764, i32 0, i32 17
  %2766 = load i32, ptr %2765, align 4, !tbaa !44
  %2767 = icmp eq i32 %2766, 0
  br i1 %2767, label %2768, label %2771

2768:                                             ; preds = %2763
  %2769 = load ptr, ptr %8, align 8, !tbaa !5
  %2770 = getelementptr inbounds %struct.inflate_state, ptr %2769, i32 0, i32 1
  store i32 16200, ptr %2770, align 8, !tbaa !17
  br label %2771

2771:                                             ; preds = %2768, %2763
  br label %2995

2772:                                             ; preds = %82
  %2773 = load i32, ptr %12, align 4, !tbaa !9
  %2774 = icmp eq i32 %2773, 0
  br i1 %2774, label %2775, label %2776

2775:                                             ; preds = %2772
  br label %2996

2776:                                             ; preds = %2772
  %2777 = load ptr, ptr %8, align 8, !tbaa !5
  %2778 = getelementptr inbounds %struct.inflate_state, ptr %2777, i32 0, i32 17
  %2779 = load i32, ptr %2778, align 4, !tbaa !44
  %2780 = trunc i32 %2779 to i8
  %2781 = load ptr, ptr %10, align 8, !tbaa !5
  %2782 = getelementptr inbounds i8, ptr %2781, i32 1
  store ptr %2782, ptr %10, align 8, !tbaa !5
  store i8 %2780, ptr %2781, align 1, !tbaa !24
  %2783 = load i32, ptr %12, align 4, !tbaa !9
  %2784 = add i32 %2783, -1
  store i32 %2784, ptr %12, align 4, !tbaa !9
  %2785 = load ptr, ptr %8, align 8, !tbaa !5
  %2786 = getelementptr inbounds %struct.inflate_state, ptr %2785, i32 0, i32 1
  store i32 16200, ptr %2786, align 8, !tbaa !17
  br label %2995

2787:                                             ; preds = %82
  %2788 = load ptr, ptr %8, align 8, !tbaa !5
  %2789 = getelementptr inbounds %struct.inflate_state, ptr %2788, i32 0, i32 3
  %2790 = load i32, ptr %2789, align 8, !tbaa !23
  %2791 = icmp ne i32 %2790, 0
  br i1 %2791, label %2792, label %2930

2792:                                             ; preds = %2787
  br label %2793

2793:                                             ; preds = %2792
  br label %2794

2794:                                             ; preds = %2817, %2793
  %2795 = load i32, ptr %14, align 4, !tbaa !9
  %2796 = icmp ult i32 %2795, 32
  br i1 %2796, label %2797, label %2818

2797:                                             ; preds = %2794
  br label %2798

2798:                                             ; preds = %2797
  %2799 = load i32, ptr %11, align 4, !tbaa !9
  %2800 = icmp eq i32 %2799, 0
  br i1 %2800, label %2801, label %2802

2801:                                             ; preds = %2798
  br label %2996

2802:                                             ; preds = %2798
  %2803 = load i32, ptr %11, align 4, !tbaa !9
  %2804 = add i32 %2803, -1
  store i32 %2804, ptr %11, align 4, !tbaa !9
  %2805 = load ptr, ptr %9, align 8, !tbaa !5
  %2806 = getelementptr inbounds i8, ptr %2805, i32 1
  store ptr %2806, ptr %9, align 8, !tbaa !5
  %2807 = load i8, ptr %2805, align 1, !tbaa !24
  %2808 = zext i8 %2807 to i64
  %2809 = load i32, ptr %14, align 4, !tbaa !9
  %2810 = zext i32 %2809 to i64
  %2811 = shl i64 %2808, %2810
  %2812 = load i64, ptr %13, align 8, !tbaa !21
  %2813 = add i64 %2812, %2811
  store i64 %2813, ptr %13, align 8, !tbaa !21
  %2814 = load i32, ptr %14, align 4, !tbaa !9
  %2815 = add i32 %2814, 8
  store i32 %2815, ptr %14, align 4, !tbaa !9
  br label %2816

2816:                                             ; preds = %2802
  br label %2817

2817:                                             ; preds = %2816
  br label %2794, !llvm.loop !101

2818:                                             ; preds = %2794
  br label %2819

2819:                                             ; preds = %2818
  br label %2820

2820:                                             ; preds = %2819
  %2821 = load i32, ptr %12, align 4, !tbaa !9
  %2822 = load i32, ptr %16, align 4, !tbaa !9
  %2823 = sub i32 %2822, %2821
  store i32 %2823, ptr %16, align 4, !tbaa !9
  %2824 = load i32, ptr %16, align 4, !tbaa !9
  %2825 = zext i32 %2824 to i64
  %2826 = load ptr, ptr %5, align 8, !tbaa !5
  %2827 = getelementptr inbounds %struct.z_stream_s, ptr %2826, i32 0, i32 5
  %2828 = load i64, ptr %2827, align 8, !tbaa !102
  %2829 = add i64 %2828, %2825
  store i64 %2829, ptr %2827, align 8, !tbaa !102
  %2830 = load i32, ptr %16, align 4, !tbaa !9
  %2831 = zext i32 %2830 to i64
  %2832 = load ptr, ptr %8, align 8, !tbaa !5
  %2833 = getelementptr inbounds %struct.inflate_state, ptr %2832, i32 0, i32 8
  %2834 = load i64, ptr %2833, align 8, !tbaa !103
  %2835 = add i64 %2834, %2831
  store i64 %2835, ptr %2833, align 8, !tbaa !103
  %2836 = load i32, ptr %7, align 4, !tbaa !9
  %2837 = icmp ne i32 %2836, 0
  br i1 %2837, label %2838, label %2881

2838:                                             ; preds = %2820
  %2839 = load ptr, ptr %8, align 8, !tbaa !5
  %2840 = getelementptr inbounds %struct.inflate_state, ptr %2839, i32 0, i32 3
  %2841 = load i32, ptr %2840, align 8, !tbaa !23
  %2842 = and i32 %2841, 4
  %2843 = icmp ne i32 %2842, 0
  br i1 %2843, label %2844, label %2880

2844:                                             ; preds = %2838
  %2845 = load i32, ptr %16, align 4, !tbaa !9
  %2846 = icmp ne i32 %2845, 0
  br i1 %2846, label %2847, label %2880

2847:                                             ; preds = %2844
  %2848 = load ptr, ptr %8, align 8, !tbaa !5
  %2849 = getelementptr inbounds %struct.inflate_state, ptr %2848, i32 0, i32 5
  %2850 = load i32, ptr %2849, align 8, !tbaa !29
  %2851 = icmp ne i32 %2850, 0
  br i1 %2851, label %2852, label %2863

2852:                                             ; preds = %2847
  %2853 = load ptr, ptr %8, align 8, !tbaa !5
  %2854 = getelementptr inbounds %struct.inflate_state, ptr %2853, i32 0, i32 7
  %2855 = load i64, ptr %2854, align 8, !tbaa !28
  %2856 = load ptr, ptr %10, align 8, !tbaa !5
  %2857 = load i32, ptr %16, align 4, !tbaa !9
  %2858 = zext i32 %2857 to i64
  %2859 = sub i64 0, %2858
  %2860 = getelementptr inbounds i8, ptr %2856, i64 %2859
  %2861 = load i32, ptr %16, align 4, !tbaa !9
  %2862 = call i64 @crc32(i64 noundef %2855, ptr noundef %2860, i32 noundef %2861)
  br label %2874

2863:                                             ; preds = %2847
  %2864 = load ptr, ptr %8, align 8, !tbaa !5
  %2865 = getelementptr inbounds %struct.inflate_state, ptr %2864, i32 0, i32 7
  %2866 = load i64, ptr %2865, align 8, !tbaa !28
  %2867 = load ptr, ptr %10, align 8, !tbaa !5
  %2868 = load i32, ptr %16, align 4, !tbaa !9
  %2869 = zext i32 %2868 to i64
  %2870 = sub i64 0, %2869
  %2871 = getelementptr inbounds i8, ptr %2867, i64 %2870
  %2872 = load i32, ptr %16, align 4, !tbaa !9
  %2873 = call i64 @adler32(i64 noundef %2866, ptr noundef %2871, i32 noundef %2872)
  br label %2874

2874:                                             ; preds = %2863, %2852
  %2875 = phi i64 [ %2862, %2852 ], [ %2873, %2863 ]
  %2876 = load ptr, ptr %8, align 8, !tbaa !5
  %2877 = getelementptr inbounds %struct.inflate_state, ptr %2876, i32 0, i32 7
  store i64 %2875, ptr %2877, align 8, !tbaa !28
  %2878 = load ptr, ptr %5, align 8, !tbaa !5
  %2879 = getelementptr inbounds %struct.z_stream_s, ptr %2878, i32 0, i32 12
  store i64 %2875, ptr %2879, align 8, !tbaa !35
  br label %2880

2880:                                             ; preds = %2874, %2844, %2838
  br label %2881

2881:                                             ; preds = %2880, %2820
  %2882 = load i32, ptr %12, align 4, !tbaa !9
  store i32 %2882, ptr %16, align 4, !tbaa !9
  %2883 = load i32, ptr %7, align 4, !tbaa !9
  %2884 = icmp ne i32 %2883, 0
  br i1 %2884, label %2885, label %2926

2885:                                             ; preds = %2881
  %2886 = load ptr, ptr %8, align 8, !tbaa !5
  %2887 = getelementptr inbounds %struct.inflate_state, ptr %2886, i32 0, i32 3
  %2888 = load i32, ptr %2887, align 8, !tbaa !23
  %2889 = and i32 %2888, 4
  %2890 = icmp ne i32 %2889, 0
  br i1 %2890, label %2891, label %2925

2891:                                             ; preds = %2885
  %2892 = load ptr, ptr %8, align 8, !tbaa !5
  %2893 = getelementptr inbounds %struct.inflate_state, ptr %2892, i32 0, i32 5
  %2894 = load i32, ptr %2893, align 8, !tbaa !29
  %2895 = icmp ne i32 %2894, 0
  br i1 %2895, label %2896, label %2898

2896:                                             ; preds = %2891
  %2897 = load i64, ptr %13, align 8, !tbaa !21
  br label %2914

2898:                                             ; preds = %2891
  %2899 = load i64, ptr %13, align 8, !tbaa !21
  %2900 = lshr i64 %2899, 24
  %2901 = and i64 %2900, 255
  %2902 = load i64, ptr %13, align 8, !tbaa !21
  %2903 = lshr i64 %2902, 8
  %2904 = and i64 %2903, 65280
  %2905 = add i64 %2901, %2904
  %2906 = load i64, ptr %13, align 8, !tbaa !21
  %2907 = and i64 %2906, 65280
  %2908 = shl i64 %2907, 8
  %2909 = add i64 %2905, %2908
  %2910 = load i64, ptr %13, align 8, !tbaa !21
  %2911 = and i64 %2910, 255
  %2912 = shl i64 %2911, 24
  %2913 = add i64 %2909, %2912
  br label %2914

2914:                                             ; preds = %2898, %2896
  %2915 = phi i64 [ %2897, %2896 ], [ %2913, %2898 ]
  %2916 = load ptr, ptr %8, align 8, !tbaa !5
  %2917 = getelementptr inbounds %struct.inflate_state, ptr %2916, i32 0, i32 7
  %2918 = load i64, ptr %2917, align 8, !tbaa !28
  %2919 = icmp ne i64 %2915, %2918
  br i1 %2919, label %2920, label %2925

2920:                                             ; preds = %2914
  %2921 = load ptr, ptr %5, align 8, !tbaa !5
  %2922 = getelementptr inbounds %struct.z_stream_s, ptr %2921, i32 0, i32 6
  store ptr @.str.17, ptr %2922, align 8, !tbaa !33
  %2923 = load ptr, ptr %8, align 8, !tbaa !5
  %2924 = getelementptr inbounds %struct.inflate_state, ptr %2923, i32 0, i32 1
  store i32 16209, ptr %2924, align 8, !tbaa !17
  br label %2995

2925:                                             ; preds = %2914, %2885
  br label %2926

2926:                                             ; preds = %2925, %2881
  br label %2927

2927:                                             ; preds = %2926
  store i64 0, ptr %13, align 8, !tbaa !21
  store i32 0, ptr %14, align 4, !tbaa !9
  br label %2928

2928:                                             ; preds = %2927
  br label %2929

2929:                                             ; preds = %2928
  br label %2930

2930:                                             ; preds = %2929, %2787
  %2931 = load ptr, ptr %8, align 8, !tbaa !5
  %2932 = getelementptr inbounds %struct.inflate_state, ptr %2931, i32 0, i32 1
  store i32 16207, ptr %2932, align 8, !tbaa !17
  br label %2933

2933:                                             ; preds = %2930, %82
  %2934 = load ptr, ptr %8, align 8, !tbaa !5
  %2935 = getelementptr inbounds %struct.inflate_state, ptr %2934, i32 0, i32 3
  %2936 = load i32, ptr %2935, align 8, !tbaa !23
  %2937 = icmp ne i32 %2936, 0
  br i1 %2937, label %2938, label %2987

2938:                                             ; preds = %2933
  %2939 = load ptr, ptr %8, align 8, !tbaa !5
  %2940 = getelementptr inbounds %struct.inflate_state, ptr %2939, i32 0, i32 5
  %2941 = load i32, ptr %2940, align 8, !tbaa !29
  %2942 = icmp ne i32 %2941, 0
  br i1 %2942, label %2943, label %2987

2943:                                             ; preds = %2938
  br label %2944

2944:                                             ; preds = %2943
  br label %2945

2945:                                             ; preds = %2968, %2944
  %2946 = load i32, ptr %14, align 4, !tbaa !9
  %2947 = icmp ult i32 %2946, 32
  br i1 %2947, label %2948, label %2969

2948:                                             ; preds = %2945
  br label %2949

2949:                                             ; preds = %2948
  %2950 = load i32, ptr %11, align 4, !tbaa !9
  %2951 = icmp eq i32 %2950, 0
  br i1 %2951, label %2952, label %2953

2952:                                             ; preds = %2949
  br label %2996

2953:                                             ; preds = %2949
  %2954 = load i32, ptr %11, align 4, !tbaa !9
  %2955 = add i32 %2954, -1
  store i32 %2955, ptr %11, align 4, !tbaa !9
  %2956 = load ptr, ptr %9, align 8, !tbaa !5
  %2957 = getelementptr inbounds i8, ptr %2956, i32 1
  store ptr %2957, ptr %9, align 8, !tbaa !5
  %2958 = load i8, ptr %2956, align 1, !tbaa !24
  %2959 = zext i8 %2958 to i64
  %2960 = load i32, ptr %14, align 4, !tbaa !9
  %2961 = zext i32 %2960 to i64
  %2962 = shl i64 %2959, %2961
  %2963 = load i64, ptr %13, align 8, !tbaa !21
  %2964 = add i64 %2963, %2962
  store i64 %2964, ptr %13, align 8, !tbaa !21
  %2965 = load i32, ptr %14, align 4, !tbaa !9
  %2966 = add i32 %2965, 8
  store i32 %2966, ptr %14, align 4, !tbaa !9
  br label %2967

2967:                                             ; preds = %2953
  br label %2968

2968:                                             ; preds = %2967
  br label %2945, !llvm.loop !104

2969:                                             ; preds = %2945
  br label %2970

2970:                                             ; preds = %2969
  br label %2971

2971:                                             ; preds = %2970
  %2972 = load i64, ptr %13, align 8, !tbaa !21
  %2973 = load ptr, ptr %8, align 8, !tbaa !5
  %2974 = getelementptr inbounds %struct.inflate_state, ptr %2973, i32 0, i32 8
  %2975 = load i64, ptr %2974, align 8, !tbaa !103
  %2976 = and i64 %2975, 4294967295
  %2977 = icmp ne i64 %2972, %2976
  br i1 %2977, label %2978, label %2983

2978:                                             ; preds = %2971
  %2979 = load ptr, ptr %5, align 8, !tbaa !5
  %2980 = getelementptr inbounds %struct.z_stream_s, ptr %2979, i32 0, i32 6
  store ptr @.str.18, ptr %2980, align 8, !tbaa !33
  %2981 = load ptr, ptr %8, align 8, !tbaa !5
  %2982 = getelementptr inbounds %struct.inflate_state, ptr %2981, i32 0, i32 1
  store i32 16209, ptr %2982, align 8, !tbaa !17
  br label %2995

2983:                                             ; preds = %2971
  br label %2984

2984:                                             ; preds = %2983
  store i64 0, ptr %13, align 8, !tbaa !21
  store i32 0, ptr %14, align 4, !tbaa !9
  br label %2985

2985:                                             ; preds = %2984
  br label %2986

2986:                                             ; preds = %2985
  br label %2987

2987:                                             ; preds = %2986, %2938, %2933
  %2988 = load ptr, ptr %8, align 8, !tbaa !5
  %2989 = getelementptr inbounds %struct.inflate_state, ptr %2988, i32 0, i32 1
  store i32 16208, ptr %2989, align 8, !tbaa !17
  br label %2990

2990:                                             ; preds = %2987, %82
  store i32 1, ptr %22, align 4, !tbaa !9
  br label %2996

2991:                                             ; preds = %82
  store i32 -3, ptr %22, align 4, !tbaa !9
  br label %2996

2992:                                             ; preds = %82
  store i32 -4, ptr %4, align 4
  store i32 1, ptr %24, align 4
  br label %3183

2993:                                             ; preds = %82
  br label %2994

2994:                                             ; preds = %2993, %82
  store i32 -2, ptr %4, align 4
  store i32 1, ptr %24, align 4
  br label %3183

2995:                                             ; preds = %2978, %2920, %2776, %2771, %2610, %2489, %2242, %2231, %2222, %2055, %1982, %1948, %1914, %1906, %1564, %1450, %1370, %1346, %1301, %1253, %1173, %1052, %1024, %316, %305, %266, %238, %204, %194, %162, %91
  br label %82

2996:                                             ; preds = %2991, %2990, %2952, %2801, %2775, %2584, %2525, %2423, %2359, %2273, %2152, %2083, %1992, %1818, %1760, %1677, %1612, %1478, %1382, %1345, %1319, %1275, %1236, %1185, %1154, %1069, %992, %961, %875, %848, %762, %746, %553, %463, %380, %276, %103
  br label %2997

2997:                                             ; preds = %2996
  %2998 = load ptr, ptr %10, align 8, !tbaa !5
  %2999 = load ptr, ptr %5, align 8, !tbaa !5
  %3000 = getelementptr inbounds %struct.z_stream_s, ptr %2999, i32 0, i32 3
  store ptr %2998, ptr %3000, align 8, !tbaa !11
  %3001 = load i32, ptr %12, align 4, !tbaa !9
  %3002 = load ptr, ptr %5, align 8, !tbaa !5
  %3003 = getelementptr inbounds %struct.z_stream_s, ptr %3002, i32 0, i32 4
  store i32 %3001, ptr %3003, align 8, !tbaa !19
  %3004 = load ptr, ptr %9, align 8, !tbaa !5
  %3005 = load ptr, ptr %5, align 8, !tbaa !5
  %3006 = getelementptr inbounds %struct.z_stream_s, ptr %3005, i32 0, i32 0
  store ptr %3004, ptr %3006, align 8, !tbaa !14
  %3007 = load i32, ptr %11, align 4, !tbaa !9
  %3008 = load ptr, ptr %5, align 8, !tbaa !5
  %3009 = getelementptr inbounds %struct.z_stream_s, ptr %3008, i32 0, i32 1
  store i32 %3007, ptr %3009, align 8, !tbaa !15
  %3010 = load i64, ptr %13, align 8, !tbaa !21
  %3011 = load ptr, ptr %8, align 8, !tbaa !5
  %3012 = getelementptr inbounds %struct.inflate_state, ptr %3011, i32 0, i32 15
  store i64 %3010, ptr %3012, align 8, !tbaa !20
  %3013 = load i32, ptr %14, align 4, !tbaa !9
  %3014 = load ptr, ptr %8, align 8, !tbaa !5
  %3015 = getelementptr inbounds %struct.inflate_state, ptr %3014, i32 0, i32 16
  store i32 %3013, ptr %3015, align 8, !tbaa !22
  br label %3016

3016:                                             ; preds = %2997
  br label %3017

3017:                                             ; preds = %3016
  %3018 = load ptr, ptr %8, align 8, !tbaa !5
  %3019 = getelementptr inbounds %struct.inflate_state, ptr %3018, i32 0, i32 11
  %3020 = load i32, ptr %3019, align 4, !tbaa !96
  %3021 = icmp ne i32 %3020, 0
  br i1 %3021, label %3041, label %3022

3022:                                             ; preds = %3017
  %3023 = load i32, ptr %16, align 4, !tbaa !9
  %3024 = load ptr, ptr %5, align 8, !tbaa !5
  %3025 = getelementptr inbounds %struct.z_stream_s, ptr %3024, i32 0, i32 4
  %3026 = load i32, ptr %3025, align 8, !tbaa !19
  %3027 = icmp ne i32 %3023, %3026
  br i1 %3027, label %3028, label %3057

3028:                                             ; preds = %3022
  %3029 = load ptr, ptr %8, align 8, !tbaa !5
  %3030 = getelementptr inbounds %struct.inflate_state, ptr %3029, i32 0, i32 1
  %3031 = load i32, ptr %3030, align 8, !tbaa !17
  %3032 = icmp ult i32 %3031, 16209
  br i1 %3032, label %3033, label %3057

3033:                                             ; preds = %3028
  %3034 = load ptr, ptr %8, align 8, !tbaa !5
  %3035 = getelementptr inbounds %struct.inflate_state, ptr %3034, i32 0, i32 1
  %3036 = load i32, ptr %3035, align 8, !tbaa !17
  %3037 = icmp ult i32 %3036, 16206
  br i1 %3037, label %3041, label %3038

3038:                                             ; preds = %3033
  %3039 = load i32, ptr %6, align 4, !tbaa !9
  %3040 = icmp ne i32 %3039, 4
  br i1 %3040, label %3041, label %3057

3041:                                             ; preds = %3038, %3033, %3017
  %3042 = load ptr, ptr %5, align 8, !tbaa !5
  %3043 = load ptr, ptr %5, align 8, !tbaa !5
  %3044 = getelementptr inbounds %struct.z_stream_s, ptr %3043, i32 0, i32 3
  %3045 = load ptr, ptr %3044, align 8, !tbaa !11
  %3046 = load i32, ptr %16, align 4, !tbaa !9
  %3047 = load ptr, ptr %5, align 8, !tbaa !5
  %3048 = getelementptr inbounds %struct.z_stream_s, ptr %3047, i32 0, i32 4
  %3049 = load i32, ptr %3048, align 8, !tbaa !19
  %3050 = sub i32 %3046, %3049
  %3051 = call i32 @updatewindow(ptr noundef %3042, ptr noundef %3045, i32 noundef %3050)
  %3052 = icmp ne i32 %3051, 0
  br i1 %3052, label %3053, label %3056

3053:                                             ; preds = %3041
  %3054 = load ptr, ptr %8, align 8, !tbaa !5
  %3055 = getelementptr inbounds %struct.inflate_state, ptr %3054, i32 0, i32 1
  store i32 16210, ptr %3055, align 8, !tbaa !17
  store i32 -4, ptr %4, align 4
  store i32 1, ptr %24, align 4
  br label %3183

3056:                                             ; preds = %3041
  br label %3057

3057:                                             ; preds = %3056, %3038, %3028, %3022
  %3058 = load ptr, ptr %5, align 8, !tbaa !5
  %3059 = getelementptr inbounds %struct.z_stream_s, ptr %3058, i32 0, i32 1
  %3060 = load i32, ptr %3059, align 8, !tbaa !15
  %3061 = load i32, ptr %15, align 4, !tbaa !9
  %3062 = sub i32 %3061, %3060
  store i32 %3062, ptr %15, align 4, !tbaa !9
  %3063 = load ptr, ptr %5, align 8, !tbaa !5
  %3064 = getelementptr inbounds %struct.z_stream_s, ptr %3063, i32 0, i32 4
  %3065 = load i32, ptr %3064, align 8, !tbaa !19
  %3066 = load i32, ptr %16, align 4, !tbaa !9
  %3067 = sub i32 %3066, %3065
  store i32 %3067, ptr %16, align 4, !tbaa !9
  %3068 = load i32, ptr %15, align 4, !tbaa !9
  %3069 = zext i32 %3068 to i64
  %3070 = load ptr, ptr %5, align 8, !tbaa !5
  %3071 = getelementptr inbounds %struct.z_stream_s, ptr %3070, i32 0, i32 2
  %3072 = load i64, ptr %3071, align 8, !tbaa !105
  %3073 = add i64 %3072, %3069
  store i64 %3073, ptr %3071, align 8, !tbaa !105
  %3074 = load i32, ptr %16, align 4, !tbaa !9
  %3075 = zext i32 %3074 to i64
  %3076 = load ptr, ptr %5, align 8, !tbaa !5
  %3077 = getelementptr inbounds %struct.z_stream_s, ptr %3076, i32 0, i32 5
  %3078 = load i64, ptr %3077, align 8, !tbaa !102
  %3079 = add i64 %3078, %3075
  store i64 %3079, ptr %3077, align 8, !tbaa !102
  %3080 = load i32, ptr %16, align 4, !tbaa !9
  %3081 = zext i32 %3080 to i64
  %3082 = load ptr, ptr %8, align 8, !tbaa !5
  %3083 = getelementptr inbounds %struct.inflate_state, ptr %3082, i32 0, i32 8
  %3084 = load i64, ptr %3083, align 8, !tbaa !103
  %3085 = add i64 %3084, %3081
  store i64 %3085, ptr %3083, align 8, !tbaa !103
  %3086 = load i32, ptr %7, align 4, !tbaa !9
  %3087 = icmp ne i32 %3086, 0
  br i1 %3087, label %3088, label %3135

3088:                                             ; preds = %3057
  %3089 = load ptr, ptr %8, align 8, !tbaa !5
  %3090 = getelementptr inbounds %struct.inflate_state, ptr %3089, i32 0, i32 3
  %3091 = load i32, ptr %3090, align 8, !tbaa !23
  %3092 = and i32 %3091, 4
  %3093 = icmp ne i32 %3092, 0
  br i1 %3093, label %3094, label %3134

3094:                                             ; preds = %3088
  %3095 = load i32, ptr %16, align 4, !tbaa !9
  %3096 = icmp ne i32 %3095, 0
  br i1 %3096, label %3097, label %3134

3097:                                             ; preds = %3094
  %3098 = load ptr, ptr %8, align 8, !tbaa !5
  %3099 = getelementptr inbounds %struct.inflate_state, ptr %3098, i32 0, i32 5
  %3100 = load i32, ptr %3099, align 8, !tbaa !29
  %3101 = icmp ne i32 %3100, 0
  br i1 %3101, label %3102, label %3115

3102:                                             ; preds = %3097
  %3103 = load ptr, ptr %8, align 8, !tbaa !5
  %3104 = getelementptr inbounds %struct.inflate_state, ptr %3103, i32 0, i32 7
  %3105 = load i64, ptr %3104, align 8, !tbaa !28
  %3106 = load ptr, ptr %5, align 8, !tbaa !5
  %3107 = getelementptr inbounds %struct.z_stream_s, ptr %3106, i32 0, i32 3
  %3108 = load ptr, ptr %3107, align 8, !tbaa !11
  %3109 = load i32, ptr %16, align 4, !tbaa !9
  %3110 = zext i32 %3109 to i64
  %3111 = sub i64 0, %3110
  %3112 = getelementptr inbounds i8, ptr %3108, i64 %3111
  %3113 = load i32, ptr %16, align 4, !tbaa !9
  %3114 = call i64 @crc32(i64 noundef %3105, ptr noundef %3112, i32 noundef %3113)
  br label %3128

3115:                                             ; preds = %3097
  %3116 = load ptr, ptr %8, align 8, !tbaa !5
  %3117 = getelementptr inbounds %struct.inflate_state, ptr %3116, i32 0, i32 7
  %3118 = load i64, ptr %3117, align 8, !tbaa !28
  %3119 = load ptr, ptr %5, align 8, !tbaa !5
  %3120 = getelementptr inbounds %struct.z_stream_s, ptr %3119, i32 0, i32 3
  %3121 = load ptr, ptr %3120, align 8, !tbaa !11
  %3122 = load i32, ptr %16, align 4, !tbaa !9
  %3123 = zext i32 %3122 to i64
  %3124 = sub i64 0, %3123
  %3125 = getelementptr inbounds i8, ptr %3121, i64 %3124
  %3126 = load i32, ptr %16, align 4, !tbaa !9
  %3127 = call i64 @adler32(i64 noundef %3118, ptr noundef %3125, i32 noundef %3126)
  br label %3128

3128:                                             ; preds = %3115, %3102
  %3129 = phi i64 [ %3114, %3102 ], [ %3127, %3115 ]
  %3130 = load ptr, ptr %8, align 8, !tbaa !5
  %3131 = getelementptr inbounds %struct.inflate_state, ptr %3130, i32 0, i32 7
  store i64 %3129, ptr %3131, align 8, !tbaa !28
  %3132 = load ptr, ptr %5, align 8, !tbaa !5
  %3133 = getelementptr inbounds %struct.z_stream_s, ptr %3132, i32 0, i32 12
  store i64 %3129, ptr %3133, align 8, !tbaa !35
  br label %3134

3134:                                             ; preds = %3128, %3094, %3088
  br label %3135

3135:                                             ; preds = %3134, %3057
  %3136 = load ptr, ptr %8, align 8, !tbaa !5
  %3137 = getelementptr inbounds %struct.inflate_state, ptr %3136, i32 0, i32 16
  %3138 = load i32, ptr %3137, align 8, !tbaa !22
  %3139 = load ptr, ptr %8, align 8, !tbaa !5
  %3140 = getelementptr inbounds %struct.inflate_state, ptr %3139, i32 0, i32 2
  %3141 = load i32, ptr %3140, align 4, !tbaa !58
  %3142 = icmp ne i32 %3141, 0
  %3143 = zext i1 %3142 to i64
  %3144 = select i1 %3142, i32 64, i32 0
  %3145 = add nsw i32 %3138, %3144
  %3146 = load ptr, ptr %8, align 8, !tbaa !5
  %3147 = getelementptr inbounds %struct.inflate_state, ptr %3146, i32 0, i32 1
  %3148 = load i32, ptr %3147, align 8, !tbaa !17
  %3149 = icmp eq i32 %3148, 16191
  %3150 = zext i1 %3149 to i64
  %3151 = select i1 %3149, i32 128, i32 0
  %3152 = add nsw i32 %3145, %3151
  %3153 = load ptr, ptr %8, align 8, !tbaa !5
  %3154 = getelementptr inbounds %struct.inflate_state, ptr %3153, i32 0, i32 1
  %3155 = load i32, ptr %3154, align 8, !tbaa !17
  %3156 = icmp eq i32 %3155, 16199
  br i1 %3156, label %3162, label %3157

3157:                                             ; preds = %3135
  %3158 = load ptr, ptr %8, align 8, !tbaa !5
  %3159 = getelementptr inbounds %struct.inflate_state, ptr %3158, i32 0, i32 1
  %3160 = load i32, ptr %3159, align 8, !tbaa !17
  %3161 = icmp eq i32 %3160, 16194
  br label %3162

3162:                                             ; preds = %3157, %3135
  %3163 = phi i1 [ true, %3135 ], [ %3161, %3157 ]
  %3164 = zext i1 %3163 to i64
  %3165 = select i1 %3163, i32 256, i32 0
  %3166 = add nsw i32 %3152, %3165
  %3167 = load ptr, ptr %5, align 8, !tbaa !5
  %3168 = getelementptr inbounds %struct.z_stream_s, ptr %3167, i32 0, i32 11
  store i32 %3166, ptr %3168, align 8, !tbaa !106
  %3169 = load i32, ptr %15, align 4, !tbaa !9
  %3170 = icmp eq i32 %3169, 0
  br i1 %3170, label %3171, label %3174

3171:                                             ; preds = %3162
  %3172 = load i32, ptr %16, align 4, !tbaa !9
  %3173 = icmp eq i32 %3172, 0
  br i1 %3173, label %3177, label %3174

3174:                                             ; preds = %3171, %3162
  %3175 = load i32, ptr %6, align 4, !tbaa !9
  %3176 = icmp eq i32 %3175, 4
  br i1 %3176, label %3177, label %3181

3177:                                             ; preds = %3174, %3171
  %3178 = load i32, ptr %22, align 4, !tbaa !9
  %3179 = icmp eq i32 %3178, 0
  br i1 %3179, label %3180, label %3181

3180:                                             ; preds = %3177
  store i32 -5, ptr %22, align 4, !tbaa !9
  br label %3181

3181:                                             ; preds = %3180, %3177, %3174
  %3182 = load i32, ptr %22, align 4, !tbaa !9
  store i32 %3182, ptr %4, align 4
  store i32 1, ptr %24, align 4
  br label %3183

3183:                                             ; preds = %3181, %3053, %2994, %2992, %1139, %46
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #4
  %3184 = load i32, ptr %4, align 4
  ret i32 %3184
}

declare i64 @crc32(i64 noundef, ptr noundef, i32 noundef) #2

declare i64 @adler32(i64 noundef, ptr noundef, i32 noundef) #2

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

; Function Attrs: nounwind uwtable
declare hidden void @fixedtables(ptr noundef) #1

declare i32 @inflate_table(i32 noundef, ptr noundef, i32 noundef, ptr noundef, ptr noundef, ptr noundef) #2

declare void @inflate_fast(ptr noundef, i32 noundef) #2

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!12, !6, i64 24}
!12 = !{!"z_stream_s", !6, i64 0, !10, i64 8, !13, i64 16, !6, i64 24, !10, i64 32, !13, i64 40, !6, i64 48, !6, i64 56, !6, i64 64, !6, i64 72, !6, i64 80, !10, i64 88, !13, i64 96, !13, i64 104}
!13 = !{!"long", !7, i64 0}
!14 = !{!12, !6, i64 0}
!15 = !{!12, !10, i64 8}
!16 = !{!12, !6, i64 56}
!17 = !{!18, !10, i64 8}
!18 = !{!"inflate_state", !6, i64 0, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !10, i64 24, !10, i64 28, !13, i64 32, !13, i64 40, !6, i64 48, !10, i64 56, !10, i64 60, !10, i64 64, !10, i64 68, !6, i64 72, !13, i64 80, !10, i64 88, !10, i64 92, !10, i64 96, !10, i64 100, !6, i64 104, !6, i64 112, !10, i64 120, !10, i64 124, !10, i64 128, !10, i64 132, !10, i64 136, !10, i64 140, !6, i64 144, !7, i64 152, !7, i64 792, !7, i64 1368, !10, i64 7144, !10, i64 7148, !10, i64 7152}
!19 = !{!12, !10, i64 32}
!20 = !{!18, !13, i64 80}
!21 = !{!13, !13, i64 0}
!22 = !{!18, !10, i64 88}
!23 = !{!18, !10, i64 16}
!24 = !{!7, !7, i64 0}
!25 = distinct !{!25, !26}
!26 = !{!"llvm.loop.mustprogress"}
!27 = !{!18, !10, i64 56}
!28 = !{!18, !13, i64 32}
!29 = !{!18, !10, i64 24}
!30 = !{!18, !6, i64 48}
!31 = !{!32, !10, i64 72}
!32 = !{!"gz_header_s", !10, i64 0, !13, i64 8, !10, i64 16, !10, i64 20, !6, i64 24, !10, i64 32, !10, i64 36, !6, i64 40, !10, i64 48, !6, i64 56, !10, i64 64, !10, i64 68, !10, i64 72}
!33 = !{!12, !6, i64 48}
!34 = !{!18, !10, i64 28}
!35 = !{!12, !13, i64 96}
!36 = distinct !{!36, !26}
!37 = !{!32, !10, i64 0}
!38 = distinct !{!38, !26}
!39 = !{!32, !13, i64 8}
!40 = distinct !{!40, !26}
!41 = !{!32, !10, i64 16}
!42 = !{!32, !10, i64 20}
!43 = distinct !{!43, !26}
!44 = !{!18, !10, i64 92}
!45 = !{!32, !10, i64 32}
!46 = !{!32, !6, i64 24}
!47 = !{!32, !10, i64 36}
!48 = !{!32, !6, i64 40}
!49 = !{!32, !10, i64 48}
!50 = distinct !{!50, !26}
!51 = !{!32, !6, i64 56}
!52 = !{!32, !10, i64 64}
!53 = distinct !{!53, !26}
!54 = distinct !{!54, !26}
!55 = !{!32, !10, i64 68}
!56 = distinct !{!56, !26}
!57 = !{!18, !10, i64 20}
!58 = !{!18, !10, i64 12}
!59 = distinct !{!59, !26}
!60 = distinct !{!60, !26}
!61 = distinct !{!61, !26}
!62 = !{!18, !10, i64 132}
!63 = !{!18, !10, i64 136}
!64 = !{!18, !10, i64 128}
!65 = !{!18, !10, i64 140}
!66 = distinct !{!66, !26}
!67 = !{!68, !68, i64 0}
!68 = !{!"short", !7, i64 0}
!69 = distinct !{!69, !26}
!70 = distinct !{!70, !26}
!71 = !{!18, !6, i64 144}
!72 = !{!18, !6, i64 104}
!73 = !{!18, !10, i64 120}
!74 = !{i64 0, i64 1, !24, i64 1, i64 1, !24, i64 2, i64 2, !67}
!75 = !{!76, !7, i64 1}
!76 = !{!"", !7, i64 0, !7, i64 1, !68, i64 2}
!77 = !{!76, !68, i64 2}
!78 = distinct !{!78, !26}
!79 = distinct !{!79, !26}
!80 = distinct !{!80, !26}
!81 = distinct !{!81, !26}
!82 = distinct !{!82, !26}
!83 = !{!18, !6, i64 112}
!84 = !{!18, !10, i64 124}
!85 = !{!18, !10, i64 7148}
!86 = !{!76, !7, i64 0}
!87 = !{!18, !10, i64 100}
!88 = distinct !{!88, !26}
!89 = !{!18, !10, i64 7152}
!90 = !{!18, !10, i64 96}
!91 = distinct !{!91, !26}
!92 = !{!18, !10, i64 64}
!93 = !{!18, !10, i64 7144}
!94 = !{!18, !10, i64 68}
!95 = !{!18, !6, i64 72}
!96 = !{!18, !10, i64 60}
!97 = distinct !{!97, !26}
!98 = distinct !{!98, !26}
!99 = distinct !{!99, !26}
!100 = distinct !{!100, !26}
!101 = distinct !{!101, !26}
!102 = !{!12, !13, i64 40}
!103 = !{!18, !13, i64 40}
!104 = distinct !{!104, !26}
!105 = !{!12, !13, i64 16}
!106 = !{!12, !10, i64 88}


; 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.code = type { i8, i8, i16 }

@inflate.order = external hidden local_unnamed_addr constant [19 x i16], align 16
@.str.1 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [23 x i8], align 1

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

; Function Attrs: nounwind uwtable
declare hidden i32 @inflateStateCheck(ptr noundef) local_unnamed_addr #1

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

; Function Attrs: nounwind uwtable
define dso_local i32 @inflate(ptr noundef %0, i32 noundef %1, i32 noundef %2) local_unnamed_addr #1 {
  %4 = alloca [4 x i8], align 1
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %4) #5
  %5 = tail call i32 @inflateStateCheck(ptr noundef %0)
  %.not = icmp eq i32 %5, 0
  br i1 %.not, label %6, label %.loopexit1357

6:                                                ; preds = %3
  %7 = getelementptr inbounds i8, ptr %0, i64 24
  %8 = load ptr, ptr %7, align 8, !tbaa !5
  %9 = icmp eq ptr %8, null
  br i1 %9, label %.loopexit1357, label %10

10:                                               ; preds = %6
  %11 = load ptr, ptr %0, align 8, !tbaa !12
  %12 = icmp eq ptr %11, null
  br i1 %12, label %13, label %16

13:                                               ; preds = %10
  %14 = getelementptr inbounds i8, ptr %0, i64 8
  %15 = load i32, ptr %14, align 8, !tbaa !13
  %.not1208 = icmp eq i32 %15, 0
  br i1 %.not1208, label %16, label %.loopexit1357

16:                                               ; preds = %13, %10
  %17 = getelementptr inbounds i8, ptr %0, i64 56
  %18 = load ptr, ptr %17, align 8, !tbaa !14
  %19 = getelementptr inbounds i8, ptr %18, i64 8
  %20 = load i32, ptr %19, align 8, !tbaa !15
  %21 = icmp eq i32 %20, 16191
  br i1 %21, label %22, label %.split2391

22:                                               ; preds = %16
  store i32 16192, ptr %19, align 8, !tbaa !15
  br label %.split2391

.split2391:                                       ; preds = %16, %22
  %23 = phi i32 [ %20, %16 ], [ 16192, %22 ]
  %24 = getelementptr inbounds i8, ptr %0, i64 32
  %25 = load i32, ptr %24, align 8, !tbaa !17
  %26 = getelementptr inbounds i8, ptr %0, i64 8
  %27 = load i32, ptr %26, align 8, !tbaa !13
  %28 = getelementptr inbounds i8, ptr %18, i64 80
  %29 = load i64, ptr %28, align 8, !tbaa !18
  %30 = getelementptr inbounds i8, ptr %18, i64 88
  %31 = load i32, ptr %30, align 8, !tbaa !19
  %32 = getelementptr inbounds i8, ptr %18, i64 16
  %33 = getelementptr inbounds i8, ptr %0, i64 40
  %34 = getelementptr inbounds i8, ptr %18, i64 40
  %.not1210 = icmp eq i32 %2, 0
  %35 = getelementptr inbounds i8, ptr %18, i64 24
  %36 = getelementptr inbounds i8, ptr %18, i64 32
  %37 = getelementptr inbounds i8, ptr %0, i64 96
  %38 = getelementptr inbounds i8, ptr %0, i64 48
  %39 = getelementptr inbounds i8, ptr %18, i64 92
  %40 = getelementptr inbounds i8, ptr %18, i64 132
  %41 = getelementptr inbounds i8, ptr %18, i64 136
  %42 = getelementptr inbounds i8, ptr %18, i64 128
  %43 = getelementptr inbounds i8, ptr %18, i64 140
  %44 = getelementptr inbounds i8, ptr %18, i64 152
  %45 = getelementptr inbounds i8, ptr %18, i64 1368
  %46 = getelementptr inbounds i8, ptr %18, i64 144
  %47 = getelementptr inbounds i8, ptr %18, i64 104
  %48 = getelementptr inbounds i8, ptr %18, i64 120
  %49 = getelementptr inbounds i8, ptr %18, i64 792
  %50 = getelementptr inbounds i8, ptr %18, i64 664
  %51 = getelementptr inbounds i8, ptr %18, i64 112
  %52 = getelementptr inbounds i8, ptr %18, i64 124
  %53 = icmp eq i32 %1, 6
  %54 = getelementptr inbounds i8, ptr %18, i64 7148
  %55 = getelementptr inbounds i8, ptr %18, i64 100
  %56 = getelementptr inbounds i8, ptr %18, i64 7152
  %57 = getelementptr inbounds i8, ptr %18, i64 96
  %58 = getelementptr inbounds i8, ptr %18, i64 64
  %59 = getelementptr inbounds i8, ptr %18, i64 7144
  %60 = getelementptr inbounds i8, ptr %18, i64 68
  %61 = getelementptr inbounds i8, ptr %18, i64 72
  %62 = getelementptr inbounds i8, ptr %18, i64 60
  %63 = getelementptr inbounds i8, ptr %18, i64 20
  %64 = add i32 %1, -5
  %or.cond3 = icmp ult i32 %64, 2
  %65 = getelementptr inbounds i8, ptr %18, i64 12
  %66 = getelementptr inbounds i8, ptr %18, i64 48
  %67 = getelementptr inbounds i8, ptr %4, i64 1
  %68 = getelementptr inbounds i8, ptr %4, i64 2
  %69 = getelementptr inbounds i8, ptr %4, i64 3
  %70 = getelementptr inbounds i8, ptr %18, i64 56
  %71 = getelementptr inbounds i8, ptr %18, i64 28
  br label %72

72:                                               ; preds = %.thread, %.split2391
  %73 = phi i32 [ %23, %.split2391 ], [ %.pre, %.thread ]
  %.01149 = phi ptr [ %8, %.split2391 ], [ %.61155, %.thread ]
  %.01084 = phi i32 [ %27, %.split2391 ], [ %.631147, %.thread ]
  %.01082 = phi i32 [ %25, %.split2391 ], [ %.11083, %.thread ]
  %.01021 = phi i64 [ %29, %.split2391 ], [ %.591080, %.thread ]
  %.0960 = phi i32 [ %31, %.split2391 ], [ %.591019, %.thread ]
  %.0954 = phi i32 [ %25, %.split2391 ], [ %.4958, %.thread ]
  %.0928 = phi i32 [ 0, %.split2391 ], [ %.8936, %.thread ]
  %.0927 = phi ptr [ %11, %.split2391 ], [ %.63, %.thread ]
  switch i32 %73, label %.loopexit1357 [
    i32 16180, label %83
    i32 16181, label %.preheader1326
    i32 16182, label %193
    i32 16183, label %250
    i32 16184, label %290
    i32 16185, label %336
    i32 16186, label %377
    i32 16187, label %421
    i32 16188, label %465
    i32 16189, label %.preheader1330
    i32 16190, label %538
    i32 16191, label %544
    i32 16192, label %545
    i32 16193, label %576
    i32 16194, label %626
    i32 16195, label %627
    i32 16196, label %.preheader1350
    i32 16197, label %.split
    i32 16198, label %._crit_edge2916
    i32 16199, label %888
    i32 16200, label %889
    i32 16201, label %._crit_edge2919
    i32 16202, label %1007
    i32 16203, label %._crit_edge2924
    i32 16204, label %1107
    i32 16205, label %1211
    i32 16206, label %1218
    i32 16207, label %._crit_edge2912
    i32 16208, label %.loopexit1307.loopexit3916
    i32 16209, label %.loopexit1307
    i32 16210, label %.loopexit1357.loopexit
  ]

._crit_edge2924:                                  ; preds = %72
  %.pre2925 = load i32, ptr %55, align 4, !tbaa !20
  br label %1082

._crit_edge2919:                                  ; preds = %72
  %.pre2920 = load i32, ptr %55, align 4, !tbaa !20
  br label %981

._crit_edge2916:                                  ; preds = %72
  %.promoted2033.pre = load i32, ptr %43, align 4, !tbaa !21
  br label %705

._crit_edge2912:                                  ; preds = %72
  %.pre2913 = load i32, ptr %32, align 8, !tbaa !22
  br label %1288

.preheader1350:                                   ; preds = %72
  %74 = icmp ult i32 %.0960, 14
  br i1 %74, label %.lr.ph1808.preheader, label %._crit_edge1809

.lr.ph1808.preheader:                             ; preds = %.preheader1350
  %75 = zext nneg i32 %.0960 to i64
  %76 = icmp eq i32 %.01084, 0
  br i1 %76, label %.loopexit1307.loopexit2415, label %640

.preheader1330:                                   ; preds = %72
  %77 = icmp ult i32 %.0960, 32
  br i1 %77, label %.lr.ph2168.preheader, label %._crit_edge2169

.lr.ph2168.preheader:                             ; preds = %.preheader1330
  %78 = zext nneg i32 %.0960 to i64
  %79 = icmp eq i32 %.01084, 0
  br i1 %79, label %.loopexit1307.loopexit2404, label %503

.preheader1326:                                   ; preds = %72
  %80 = icmp ult i32 %.0960, 16
  br i1 %80, label %.lr.ph2336.preheader, label %._crit_edge2337

.lr.ph2336.preheader:                             ; preds = %.preheader1326
  %81 = zext nneg i32 %.0960 to i64
  %82 = icmp eq i32 %.01084, 0
  br i1 %82, label %.loopexit1307.loopexit2403, label %154

83:                                               ; preds = %72
  %84 = load i32, ptr %32, align 8, !tbaa !22
  %85 = icmp eq i32 %84, 0
  br i1 %85, label %89, label %.preheader1316

.preheader1316:                                   ; preds = %83
  %86 = icmp ult i32 %.0960, 16
  br i1 %86, label %.lr.ph2385.preheader, label %._crit_edge2386

.lr.ph2385.preheader:                             ; preds = %.preheader1316
  %87 = zext nneg i32 %.0960 to i64
  %88 = icmp eq i32 %.01084, 0
  br i1 %88, label %.loopexit1307.loopexit2398, label %90

89:                                               ; preds = %83
  store i32 16192, ptr %19, align 8, !tbaa !15
  br label %.thread

90:                                               ; preds = %.lr.ph2385.preheader
  %91 = add i32 %.01084, -1
  %92 = getelementptr inbounds i8, ptr %.0927, i64 1
  %93 = load i8, ptr %.0927, align 1, !tbaa !23
  %94 = zext i8 %93 to i64
  %95 = shl nuw nsw i64 %94, %87
  %96 = add i64 %95, %.01021
  %indvars.iv.next2909 = add nuw nsw i64 %87, 8
  %97 = icmp ult i32 %.0960, 8
  br i1 %97, label %.lr.ph2385.1, label %._crit_edge2386.loopexit, !llvm.loop !24

.lr.ph2385.1:                                     ; preds = %90
  %98 = icmp eq i32 %91, 0
  br i1 %98, label %.loopexit1307.loopexit2398, label %99

99:                                               ; preds = %.lr.ph2385.1
  %100 = add i32 %.01084, -2
  %101 = getelementptr inbounds i8, ptr %.0927, i64 2
  %102 = load i8, ptr %92, align 1, !tbaa !23
  %103 = zext i8 %102 to i64
  %104 = shl nuw nsw i64 %103, %indvars.iv.next2909
  %105 = add i64 %104, %96
  %indvars.iv.next2909.1 = or disjoint i64 %87, 16
  br label %._crit_edge2386.loopexit

._crit_edge2386.loopexit:                         ; preds = %99, %90
  %.lcssa4072 = phi i32 [ %91, %90 ], [ %100, %99 ]
  %.lcssa4071 = phi ptr [ %92, %90 ], [ %101, %99 ]
  %.lcssa4070 = phi i64 [ %96, %90 ], [ %105, %99 ]
  %indvars.iv.next2909.lcssa = phi i64 [ %indvars.iv.next2909, %90 ], [ %indvars.iv.next2909.1, %99 ]
  %106 = trunc nuw nsw i64 %indvars.iv.next2909.lcssa to i32
  br label %._crit_edge2386

._crit_edge2386:                                  ; preds = %._crit_edge2386.loopexit, %.preheader1316
  %.11085.lcssa = phi i32 [ %.01084, %.preheader1316 ], [ %.lcssa4072, %._crit_edge2386.loopexit ]
  %.11022.lcssa = phi i64 [ %.01021, %.preheader1316 ], [ %.lcssa4070, %._crit_edge2386.loopexit ]
  %.1961.lcssa = phi i32 [ %.0960, %.preheader1316 ], [ %106, %._crit_edge2386.loopexit ]
  %.1.lcssa = phi ptr [ %.0927, %.preheader1316 ], [ %.lcssa4071, %._crit_edge2386.loopexit ]
  %107 = and i32 %84, 2
  %108 = icmp ne i32 %107, 0
  %109 = icmp eq i64 %.11022.lcssa, 35615
  %or.cond = select i1 %108, i1 %109, i1 false
  br i1 %or.cond, label %110, label %117

110:                                              ; preds = %._crit_edge2386
  %111 = load i32, ptr %70, align 8, !tbaa !26
  %112 = icmp eq i32 %111, 0
  br i1 %112, label %113, label %114

113:                                              ; preds = %110
  store i32 15, ptr %70, align 8, !tbaa !26
  br label %114

114:                                              ; preds = %113, %110
  %115 = call i64 @crc32(i64 noundef 0, ptr noundef null, i32 noundef 0) #5
  store i64 %115, ptr %36, align 8, !tbaa !27
  store i8 31, ptr %4, align 1, !tbaa !23
  store i8 -117, ptr %67, align 1, !tbaa !23
  %116 = call i64 @crc32(i64 noundef %115, ptr noundef nonnull %4, i32 noundef 2) #5
  store i64 %116, ptr %36, align 8, !tbaa !27
  store i32 16181, ptr %19, align 8, !tbaa !15
  br label %.thread

117:                                              ; preds = %._crit_edge2386
  store i32 0, ptr %35, align 8, !tbaa !28
  %118 = load ptr, ptr %66, align 8, !tbaa !29
  %.not1284 = icmp eq ptr %118, null
  br i1 %.not1284, label %121, label %119

119:                                              ; preds = %117
  %120 = getelementptr inbounds i8, ptr %118, i64 72
  store i32 -1, ptr %120, align 8, !tbaa !30
  br label %121

121:                                              ; preds = %119, %117
  %122 = and i32 %84, 1
  %.not1285 = icmp eq i32 %122, 0
  br i1 %.not1285, label %129, label %123

123:                                              ; preds = %121
  %124 = shl i64 %.11022.lcssa, 8
  %125 = and i64 %124, 65280
  %126 = lshr i64 %.11022.lcssa, 8
  %127 = add nuw nsw i64 %125, %126
  %128 = urem i64 %127, 31
  %.not1286 = icmp eq i64 %128, 0
  br i1 %.not1286, label %130, label %129

129:                                              ; preds = %123, %121
  store ptr @.str.1, ptr %38, align 8, !tbaa !32
  store i32 16209, ptr %19, align 8, !tbaa !15
  br label %.thread

130:                                              ; preds = %123
  %131 = and i64 %.11022.lcssa, 15
  %.not1287 = icmp eq i64 %131, 8
  br i1 %.not1287, label %133, label %132

132:                                              ; preds = %130
  store ptr @.str.2, ptr %38, align 8, !tbaa !32
  store i32 16209, ptr %19, align 8, !tbaa !15
  br label %.thread

133:                                              ; preds = %130
  %134 = lshr i64 %.11022.lcssa, 4
  %135 = add i32 %.1961.lcssa, -4
  %136 = trunc i64 %134 to i32
  %137 = and i32 %136, 15
  %138 = add nuw nsw i32 %137, 8
  %139 = load i32, ptr %70, align 8, !tbaa !26
  %140 = icmp eq i32 %139, 0
  br i1 %140, label %141, label %142

141:                                              ; preds = %133
  store i32 %138, ptr %70, align 8, !tbaa !26
  br label %142

142:                                              ; preds = %141, %133
  %143 = phi i32 [ %138, %141 ], [ %139, %133 ]
  %144 = icmp ugt i32 %137, 7
  %145 = icmp ugt i32 %138, %143
  %or.cond3402 = select i1 %144, i1 true, i1 %145
  br i1 %or.cond3402, label %146, label %147

146:                                              ; preds = %142
  store ptr @.str.3, ptr %38, align 8, !tbaa !32
  store i32 16209, ptr %19, align 8, !tbaa !15
  br label %.thread

147:                                              ; preds = %142
  %148 = shl nuw nsw i32 256, %137
  store i32 %148, ptr %71, align 4, !tbaa !33
  br i1 %.not1210, label %151, label %149

149:                                              ; preds = %147
  %150 = call i64 @adler32(i64 noundef 0, ptr noundef null, i32 noundef 0) #5
  store i64 %150, ptr %36, align 8, !tbaa !27
  store i64 %150, ptr %37, align 8, !tbaa !34
  br label %151

151:                                              ; preds = %149, %147
  %152 = and i64 %.11022.lcssa, 8192
  %.not1289 = icmp eq i64 %152, 0
  %153 = select i1 %.not1289, i32 16191, i32 16189
  store i32 %153, ptr %19, align 8, !tbaa !15
  br label %.thread

154:                                              ; preds = %.lr.ph2336.preheader
  %155 = add i32 %.01084, -1
  %156 = getelementptr inbounds i8, ptr %.0927, i64 1
  %157 = load i8, ptr %.0927, align 1, !tbaa !23
  %158 = zext i8 %157 to i64
  %159 = shl nuw nsw i64 %158, %81
  %160 = add i64 %159, %.01021
  %indvars.iv.next2888 = add nuw nsw i64 %81, 8
  %161 = icmp ult i32 %.0960, 8
  br i1 %161, label %.lr.ph2336.1, label %._crit_edge2337.loopexit, !llvm.loop !35

.lr.ph2336.1:                                     ; preds = %154
  %162 = icmp eq i32 %155, 0
  br i1 %162, label %.loopexit1307.loopexit2403, label %163

163:                                              ; preds = %.lr.ph2336.1
  %164 = add i32 %.01084, -2
  %165 = getelementptr inbounds i8, ptr %.0927, i64 2
  %166 = load i8, ptr %156, align 1, !tbaa !23
  %167 = zext i8 %166 to i64
  %168 = shl nuw nsw i64 %167, %indvars.iv.next2888
  %169 = add i64 %168, %160
  %indvars.iv.next2888.1 = or disjoint i64 %81, 16
  br label %._crit_edge2337.loopexit

._crit_edge2337.loopexit:                         ; preds = %163, %154
  %.lcssa4040 = phi i32 [ %155, %154 ], [ %164, %163 ]
  %.lcssa4039 = phi ptr [ %156, %154 ], [ %165, %163 ]
  %.lcssa4038 = phi i64 [ %160, %154 ], [ %169, %163 ]
  %indvars.iv.next2888.lcssa = phi i64 [ %indvars.iv.next2888, %154 ], [ %indvars.iv.next2888.1, %163 ]
  %170 = trunc nuw nsw i64 %indvars.iv.next2888.lcssa to i32
  br label %._crit_edge2337

._crit_edge2337:                                  ; preds = %._crit_edge2337.loopexit, %.preheader1326
  %.21086.lcssa = phi i32 [ %.01084, %.preheader1326 ], [ %.lcssa4040, %._crit_edge2337.loopexit ]
  %.21023.lcssa = phi i64 [ %.01021, %.preheader1326 ], [ %.lcssa4038, %._crit_edge2337.loopexit ]
  %.2962.lcssa = phi i32 [ %.0960, %.preheader1326 ], [ %170, %._crit_edge2337.loopexit ]
  %.2.lcssa = phi ptr [ %.0927, %.preheader1326 ], [ %.lcssa4039, %._crit_edge2337.loopexit ]
  %171 = trunc i64 %.21023.lcssa to i32
  store i32 %171, ptr %35, align 8, !tbaa !28
  %172 = and i32 %171, 255
  %.not1245 = icmp eq i32 %172, 8
  br i1 %.not1245, label %174, label %173

173:                                              ; preds = %._crit_edge2337
  store ptr @.str.2, ptr %38, align 8, !tbaa !32
  store i32 16209, ptr %19, align 8, !tbaa !15
  br label %.thread

174:                                              ; preds = %._crit_edge2337
  %175 = and i32 %171, 57344
  %.not1246 = icmp eq i32 %175, 0
  br i1 %.not1246, label %177, label %176

176:                                              ; preds = %174
  store ptr @.str.4, ptr %38, align 8, !tbaa !32
  store i32 16209, ptr %19, align 8, !tbaa !15
  br label %.thread

177:                                              ; preds = %174
  %178 = load ptr, ptr %66, align 8, !tbaa !29
  %.not1247 = icmp eq ptr %178, null
  br i1 %.not1247, label %182, label %179

179:                                              ; preds = %177
  %180 = lshr i32 %171, 8
  %181 = and i32 %180, 1
  store i32 %181, ptr %178, align 8, !tbaa !36
  br label %182

182:                                              ; preds = %179, %177
  %183 = and i32 %171, 512
  %.not1248 = icmp eq i32 %183, 0
  br i1 %.not1248, label %.thread2932, label %184

184:                                              ; preds = %182
  %185 = load i32, ptr %32, align 8, !tbaa !22
  %186 = and i32 %185, 4
  %.not1249 = icmp eq i32 %186, 0
  br i1 %.not1249, label %.thread2932, label %187

187:                                              ; preds = %184
  %188 = trunc i64 %.21023.lcssa to i8
  store i8 %188, ptr %4, align 1, !tbaa !23
  %189 = lshr i64 %.21023.lcssa, 8
  %190 = trunc i64 %189 to i8
  store i8 %190, ptr %67, align 1, !tbaa !23
  %191 = load i64, ptr %36, align 8, !tbaa !27
  %192 = call i64 @crc32(i64 noundef %191, ptr noundef nonnull %4, i32 noundef 2) #5
  store i64 %192, ptr %36, align 8, !tbaa !27
  br label %.thread2932

.thread2932:                                      ; preds = %187, %184, %182
  store i32 16182, ptr %19, align 8, !tbaa !15
  br label %.lr.ph2347.preheader

193:                                              ; preds = %72
  %194 = icmp ult i32 %.0960, 32
  br i1 %194, label %.lr.ph2347.preheader, label %._crit_edge2348

.lr.ph2347.preheader:                             ; preds = %.thread2932, %193
  %.32940 = phi ptr [ %.2.lcssa, %.thread2932 ], [ %.0927, %193 ]
  %.39632939 = phi i32 [ 0, %.thread2932 ], [ %.0960, %193 ]
  %.310242938 = phi i64 [ 0, %.thread2932 ], [ %.01021, %193 ]
  %.310872937 = phi i32 [ %.21086.lcssa, %.thread2932 ], [ %.01084, %193 ]
  %195 = zext nneg i32 %.39632939 to i64
  %196 = icmp eq i32 %.310872937, 0
  br i1 %196, label %.loopexit1307.loopexit2402, label %197

197:                                              ; preds = %.lr.ph2347.preheader
  %198 = add i32 %.310872937, -1
  %199 = getelementptr inbounds i8, ptr %.32940, i64 1
  %200 = load i8, ptr %.32940, align 1, !tbaa !23
  %201 = zext i8 %200 to i64
  %202 = shl nuw nsw i64 %201, %195
  %203 = add i64 %202, %.310242938
  %indvars.iv.next2891 = add nuw nsw i64 %195, 8
  %204 = icmp ult i32 %.39632939, 24
  br i1 %204, label %.lr.ph2347.1, label %._crit_edge2348, !llvm.loop !37

.lr.ph2347.1:                                     ; preds = %197
  %205 = icmp eq i32 %198, 0
  br i1 %205, label %.loopexit1307.loopexit2402, label %206

206:                                              ; preds = %.lr.ph2347.1
  %207 = add i32 %.310872937, -2
  %208 = getelementptr inbounds i8, ptr %.32940, i64 2
  %209 = load i8, ptr %199, align 1, !tbaa !23
  %210 = zext i8 %209 to i64
  %211 = shl nuw nsw i64 %210, %indvars.iv.next2891
  %212 = add i64 %211, %203
  %indvars.iv.next2891.1 = add nuw nsw i64 %195, 16
  %213 = icmp ult i32 %.39632939, 16
  br i1 %213, label %.lr.ph2347.2, label %._crit_edge2348, !llvm.loop !37

.lr.ph2347.2:                                     ; preds = %206
  %214 = icmp eq i32 %207, 0
  br i1 %214, label %.loopexit1307.loopexit2402, label %215

215:                                              ; preds = %.lr.ph2347.2
  %216 = add i32 %.310872937, -3
  %217 = getelementptr inbounds i8, ptr %.32940, i64 3
  %218 = load i8, ptr %208, align 1, !tbaa !23
  %219 = zext i8 %218 to i64
  %220 = shl nuw nsw i64 %219, %indvars.iv.next2891.1
  %221 = add i64 %220, %212
  %indvars.iv.next2891.2 = add nuw nsw i64 %195, 24
  %222 = icmp ult i32 %.39632939, 8
  br i1 %222, label %.lr.ph2347.3, label %._crit_edge2348, !llvm.loop !37

.lr.ph2347.3:                                     ; preds = %215
  %223 = icmp eq i32 %216, 0
  br i1 %223, label %.loopexit1307.loopexit2402, label %224

224:                                              ; preds = %.lr.ph2347.3
  %225 = add i32 %.310872937, -4
  %226 = getelementptr inbounds i8, ptr %.32940, i64 4
  %227 = load i8, ptr %217, align 1, !tbaa !23
  %228 = zext i8 %227 to i64
  %229 = shl nuw nsw i64 %228, %indvars.iv.next2891.2
  %230 = add i64 %229, %221
  br label %._crit_edge2348

._crit_edge2348:                                  ; preds = %197, %206, %215, %224, %193
  %.41088.lcssa = phi i32 [ %.01084, %193 ], [ %198, %197 ], [ %207, %206 ], [ %216, %215 ], [ %225, %224 ]
  %.41025.lcssa = phi i64 [ %.01021, %193 ], [ %203, %197 ], [ %212, %206 ], [ %221, %215 ], [ %230, %224 ]
  %.4.lcssa = phi ptr [ %.0927, %193 ], [ %199, %197 ], [ %208, %206 ], [ %217, %215 ], [ %226, %224 ]
  %231 = load ptr, ptr %66, align 8, !tbaa !29
  %.not1250 = icmp eq ptr %231, null
  br i1 %.not1250, label %234, label %232

232:                                              ; preds = %._crit_edge2348
  %233 = getelementptr inbounds i8, ptr %231, i64 8
  store i64 %.41025.lcssa, ptr %233, align 8, !tbaa !38
  br label %234

234:                                              ; preds = %232, %._crit_edge2348
  %235 = load i32, ptr %35, align 8, !tbaa !28
  %236 = and i32 %235, 512
  %.not1251 = icmp eq i32 %236, 0
  br i1 %.not1251, label %.thread2941, label %237

237:                                              ; preds = %234
  %238 = load i32, ptr %32, align 8, !tbaa !22
  %239 = and i32 %238, 4
  %.not1252 = icmp eq i32 %239, 0
  br i1 %.not1252, label %.thread2941, label %240

240:                                              ; preds = %237
  %241 = trunc i64 %.41025.lcssa to i8
  store i8 %241, ptr %4, align 1, !tbaa !23
  %242 = lshr i64 %.41025.lcssa, 8
  %243 = trunc i64 %242 to i8
  store i8 %243, ptr %67, align 1, !tbaa !23
  %244 = lshr i64 %.41025.lcssa, 16
  %245 = trunc i64 %244 to i8
  store i8 %245, ptr %68, align 1, !tbaa !23
  %246 = lshr i64 %.41025.lcssa, 24
  %247 = trunc i64 %246 to i8
  store i8 %247, ptr %69, align 1, !tbaa !23
  %248 = load i64, ptr %36, align 8, !tbaa !27
  %249 = call i64 @crc32(i64 noundef %248, ptr noundef nonnull %4, i32 noundef 4) #5
  store i64 %249, ptr %36, align 8, !tbaa !27
  br label %.thread2941

.thread2941:                                      ; preds = %240, %237, %234
  store i32 16183, ptr %19, align 8, !tbaa !15
  br label %.lr.ph2357.preheader

250:                                              ; preds = %72
  %251 = icmp ult i32 %.0960, 16
  br i1 %251, label %.lr.ph2357.preheader, label %._crit_edge2358

.lr.ph2357.preheader:                             ; preds = %.thread2941, %250
  %.52949 = phi ptr [ %.4.lcssa, %.thread2941 ], [ %.0927, %250 ]
  %.59652948 = phi i32 [ 0, %.thread2941 ], [ %.0960, %250 ]
  %.510262947 = phi i64 [ 0, %.thread2941 ], [ %.01021, %250 ]
  %.510892946 = phi i32 [ %.41088.lcssa, %.thread2941 ], [ %.01084, %250 ]
  %252 = zext nneg i32 %.59652948 to i64
  %253 = icmp eq i32 %.510892946, 0
  br i1 %253, label %.loopexit1307.loopexit2401, label %254

254:                                              ; preds = %.lr.ph2357.preheader
  %255 = add i32 %.510892946, -1
  %256 = getelementptr inbounds i8, ptr %.52949, i64 1
  %257 = load i8, ptr %.52949, align 1, !tbaa !23
  %258 = zext i8 %257 to i64
  %259 = shl nuw nsw i64 %258, %252
  %260 = add i64 %259, %.510262947
  %indvars.iv.next2894 = add nuw nsw i64 %252, 8
  %261 = icmp ult i32 %.59652948, 8
  br i1 %261, label %.lr.ph2357.1, label %._crit_edge2358, !llvm.loop !39

.lr.ph2357.1:                                     ; preds = %254
  %262 = icmp eq i32 %255, 0
  br i1 %262, label %.loopexit1307.loopexit2401, label %263

263:                                              ; preds = %.lr.ph2357.1
  %264 = add i32 %.510892946, -2
  %265 = getelementptr inbounds i8, ptr %.52949, i64 2
  %266 = load i8, ptr %256, align 1, !tbaa !23
  %267 = zext i8 %266 to i64
  %268 = shl nuw nsw i64 %267, %indvars.iv.next2894
  %269 = add i64 %268, %260
  br label %._crit_edge2358

._crit_edge2358:                                  ; preds = %254, %263, %250
  %.61090.lcssa = phi i32 [ %.01084, %250 ], [ %255, %254 ], [ %264, %263 ]
  %.61027.lcssa = phi i64 [ %.01021, %250 ], [ %260, %254 ], [ %269, %263 ]
  %.6.lcssa = phi ptr [ %.0927, %250 ], [ %256, %254 ], [ %265, %263 ]
  %270 = load ptr, ptr %66, align 8, !tbaa !29
  %.not1253 = icmp eq ptr %270, null
  br i1 %.not1253, label %278, label %271

271:                                              ; preds = %._crit_edge2358
  %272 = trunc i64 %.61027.lcssa to i32
  %273 = and i32 %272, 255
  %274 = getelementptr inbounds i8, ptr %270, i64 16
  store i32 %273, ptr %274, align 8, !tbaa !40
  %275 = lshr i64 %.61027.lcssa, 8
  %276 = trunc i64 %275 to i32
  %277 = getelementptr inbounds i8, ptr %270, i64 20
  store i32 %276, ptr %277, align 4, !tbaa !41
  br label %278

278:                                              ; preds = %271, %._crit_edge2358
  %279 = load i32, ptr %35, align 8, !tbaa !28
  %280 = and i32 %279, 512
  %.not1254 = icmp eq i32 %280, 0
  br i1 %.not1254, label %.thread2950, label %281

281:                                              ; preds = %278
  %282 = load i32, ptr %32, align 8, !tbaa !22
  %283 = and i32 %282, 4
  %.not1255 = icmp eq i32 %283, 0
  br i1 %.not1255, label %.thread2950, label %284

284:                                              ; preds = %281
  %285 = trunc i64 %.61027.lcssa to i8
  store i8 %285, ptr %4, align 1, !tbaa !23
  %286 = lshr i64 %.61027.lcssa, 8
  %287 = trunc i64 %286 to i8
  store i8 %287, ptr %67, align 1, !tbaa !23
  %288 = load i64, ptr %36, align 8, !tbaa !27
  %289 = call i64 @crc32(i64 noundef %288, ptr noundef nonnull %4, i32 noundef 2) #5
  store i64 %289, ptr %36, align 8, !tbaa !27
  br label %.thread2950

290:                                              ; preds = %72
  %291 = load i32, ptr %35, align 8, !tbaa !28
  %292 = and i32 %291, 1024
  %.not1256 = icmp eq i32 %292, 0
  br i1 %.not1256, label %331, label %.preheader1322

.thread2950:                                      ; preds = %284, %281, %278
  store i32 16184, ptr %19, align 8, !tbaa !15
  %293 = load i32, ptr %35, align 8, !tbaa !28
  %294 = and i32 %293, 1024
  %.not12562955 = icmp eq i32 %294, 0
  br i1 %.not12562955, label %331, label %.lr.ph2366.preheader

.preheader1322:                                   ; preds = %290
  %295 = icmp ult i32 %.0960, 16
  br i1 %295, label %.lr.ph2366.preheader, label %._crit_edge2367

.lr.ph2366.preheader:                             ; preds = %.thread2950, %.preheader1322
  %.7109129572971 = phi i32 [ %.01084, %.preheader1322 ], [ %.61090.lcssa, %.thread2950 ]
  %.7102829592970 = phi i64 [ %.01021, %.preheader1322 ], [ 0, %.thread2950 ]
  %.796729612969 = phi i32 [ %.0960, %.preheader1322 ], [ 0, %.thread2950 ]
  %.729632968 = phi ptr [ %.0927, %.preheader1322 ], [ %.6.lcssa, %.thread2950 ]
  %296 = phi i32 [ %291, %.preheader1322 ], [ %293, %.thread2950 ]
  %297 = zext nneg i32 %.796729612969 to i64
  %298 = icmp eq i32 %.7109129572971, 0
  br i1 %298, label %.loopexit1307.loopexit2400, label %299

299:                                              ; preds = %.lr.ph2366.preheader
  %300 = add i32 %.7109129572971, -1
  %301 = getelementptr inbounds i8, ptr %.729632968, i64 1
  %302 = load i8, ptr %.729632968, align 1, !tbaa !23
  %303 = zext i8 %302 to i64
  %304 = shl nuw nsw i64 %303, %297
  %305 = add i64 %304, %.7102829592970
  %indvars.iv.next2897 = add nuw nsw i64 %297, 8
  %306 = icmp ult i32 %.796729612969, 8
  br i1 %306, label %.lr.ph2366.1, label %._crit_edge2367, !llvm.loop !42

.lr.ph2366.1:                                     ; preds = %299
  %307 = icmp eq i32 %300, 0
  br i1 %307, label %.loopexit1307.loopexit2400, label %308

308:                                              ; preds = %.lr.ph2366.1
  %309 = add i32 %.7109129572971, -2
  %310 = getelementptr inbounds i8, ptr %.729632968, i64 2
  %311 = load i8, ptr %301, align 1, !tbaa !23
  %312 = zext i8 %311 to i64
  %313 = shl nuw nsw i64 %312, %indvars.iv.next2897
  %314 = add i64 %313, %305
  br label %._crit_edge2367

._crit_edge2367:                                  ; preds = %299, %308, %.preheader1322
  %315 = phi i32 [ %291, %.preheader1322 ], [ %296, %308 ], [ %296, %299 ]
  %.81092.lcssa = phi i32 [ %.01084, %.preheader1322 ], [ %300, %299 ], [ %309, %308 ]
  %.81029.lcssa = phi i64 [ %.01021, %.preheader1322 ], [ %305, %299 ], [ %314, %308 ]
  %.8.lcssa = phi ptr [ %.0927, %.preheader1322 ], [ %301, %299 ], [ %310, %308 ]
  %316 = trunc i64 %.81029.lcssa to i32
  store i32 %316, ptr %39, align 4, !tbaa !43
  %317 = load ptr, ptr %66, align 8, !tbaa !29
  %.not1258 = icmp eq ptr %317, null
  br i1 %.not1258, label %320, label %318

318:                                              ; preds = %._crit_edge2367
  %319 = getelementptr inbounds i8, ptr %317, i64 32
  store i32 %316, ptr %319, align 8, !tbaa !44
  br label %320

320:                                              ; preds = %318, %._crit_edge2367
  %321 = and i32 %315, 512
  %.not1259 = icmp eq i32 %321, 0
  br i1 %.not1259, label %335, label %322

322:                                              ; preds = %320
  %323 = load i32, ptr %32, align 8, !tbaa !22
  %324 = and i32 %323, 4
  %.not1260 = icmp eq i32 %324, 0
  br i1 %.not1260, label %335, label %325

325:                                              ; preds = %322
  %326 = trunc i64 %.81029.lcssa to i8
  store i8 %326, ptr %4, align 1, !tbaa !23
  %327 = lshr i64 %.81029.lcssa, 8
  %328 = trunc i64 %327 to i8
  store i8 %328, ptr %67, align 1, !tbaa !23
  %329 = load i64, ptr %36, align 8, !tbaa !27
  %330 = call i64 @crc32(i64 noundef %329, ptr noundef nonnull %4, i32 noundef 2) #5
  store i64 %330, ptr %36, align 8, !tbaa !27
  br label %335

331:                                              ; preds = %.thread2950, %290
  %.72962 = phi ptr [ %.6.lcssa, %.thread2950 ], [ %.0927, %290 ]
  %.79672960 = phi i32 [ 0, %.thread2950 ], [ %.0960, %290 ]
  %.710282958 = phi i64 [ 0, %.thread2950 ], [ %.01021, %290 ]
  %.710912956 = phi i32 [ %.61090.lcssa, %.thread2950 ], [ %.01084, %290 ]
  %332 = load ptr, ptr %66, align 8, !tbaa !29
  %.not1257 = icmp eq ptr %332, null
  br i1 %.not1257, label %335, label %333

333:                                              ; preds = %331
  %334 = getelementptr inbounds i8, ptr %332, i64 24
  store ptr null, ptr %334, align 8, !tbaa !45
  br label %335

335:                                              ; preds = %325, %322, %320, %331, %333
  %.91093 = phi i32 [ %.710912956, %333 ], [ %.710912956, %331 ], [ %.81092.lcssa, %320 ], [ %.81092.lcssa, %322 ], [ %.81092.lcssa, %325 ]
  %.91030 = phi i64 [ %.710282958, %333 ], [ %.710282958, %331 ], [ 0, %320 ], [ 0, %322 ], [ 0, %325 ]
  %.9969 = phi i32 [ %.79672960, %333 ], [ %.79672960, %331 ], [ 0, %320 ], [ 0, %322 ], [ 0, %325 ]
  %.9 = phi ptr [ %.72962, %333 ], [ %.72962, %331 ], [ %.8.lcssa, %320 ], [ %.8.lcssa, %322 ], [ %.8.lcssa, %325 ]
  store i32 16185, ptr %19, align 8, !tbaa !15
  br label %336

336:                                              ; preds = %335, %72
  %.101094 = phi i32 [ %.01084, %72 ], [ %.91093, %335 ]
  %.101031 = phi i64 [ %.01021, %72 ], [ %.91030, %335 ]
  %.10970 = phi i32 [ %.0960, %72 ], [ %.9969, %335 ]
  %.10 = phi ptr [ %.0927, %72 ], [ %.9, %335 ]
  %337 = load i32, ptr %35, align 8, !tbaa !28
  %338 = and i32 %337, 1024
  %.not1261 = icmp eq i32 %338, 0
  br i1 %.not1261, label %376, label %339

339:                                              ; preds = %336
  %340 = load i32, ptr %39, align 4, !tbaa !43
  %spec.select = call i32 @llvm.umin.i32(i32 %340, i32 %.101094)
  %.not1262 = icmp eq i32 %spec.select, 0
  br i1 %.not1262, label %374, label %341

341:                                              ; preds = %339
  %342 = load ptr, ptr %66, align 8, !tbaa !29
  %.not1263 = icmp eq ptr %342, null
  br i1 %.not1263, label %359, label %343

343:                                              ; preds = %341
  %344 = getelementptr inbounds i8, ptr %342, i64 24
  %345 = load ptr, ptr %344, align 8, !tbaa !45
  %.not1264 = icmp eq ptr %345, null
  br i1 %.not1264, label %359, label %346

346:                                              ; preds = %343
  %347 = getelementptr inbounds i8, ptr %342, i64 32
  %348 = load i32, ptr %347, align 8, !tbaa !44
  %349 = sub i32 %348, %340
  %350 = zext i32 %349 to i64
  %351 = getelementptr inbounds i8, ptr %345, i64 %350
  %352 = add i32 %349, %spec.select
  %353 = getelementptr inbounds i8, ptr %342, i64 36
  %354 = load i32, ptr %353, align 4, !tbaa !46
  %355 = icmp ugt i32 %352, %354
  %356 = sub i32 %354, %349
  %357 = select i1 %355, i32 %356, i32 %spec.select
  %358 = zext i32 %357 to i64
  call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %351, ptr align 1 %.10, i64 %358, i1 false)
  %.pre2926 = load i32, ptr %35, align 8, !tbaa !28
  br label %359

359:                                              ; preds = %346, %343, %341
  %360 = phi i32 [ %.pre2926, %346 ], [ %337, %343 ], [ %337, %341 ]
  %361 = and i32 %360, 512
  %.not1265 = icmp eq i32 %361, 0
  br i1 %.not1265, label %368, label %362

362:                                              ; preds = %359
  %363 = load i32, ptr %32, align 8, !tbaa !22
  %364 = and i32 %363, 4
  %.not1266 = icmp eq i32 %364, 0
  br i1 %.not1266, label %368, label %365

365:                                              ; preds = %362
  %366 = load i64, ptr %36, align 8, !tbaa !27
  %367 = call i64 @crc32(i64 noundef %366, ptr noundef %.10, i32 noundef %spec.select) #5
  store i64 %367, ptr %36, align 8, !tbaa !27
  br label %368

368:                                              ; preds = %365, %362, %359
  %369 = sub i32 %.101094, %spec.select
  %370 = zext i32 %spec.select to i64
  %371 = getelementptr inbounds i8, ptr %.10, i64 %370
  %372 = load i32, ptr %39, align 4, !tbaa !43
  %373 = sub i32 %372, %spec.select
  store i32 %373, ptr %39, align 4, !tbaa !43
  br label %374

374:                                              ; preds = %368, %339
  %375 = phi i32 [ %373, %368 ], [ %340, %339 ]
  %.111095 = phi i32 [ %369, %368 ], [ %.101094, %339 ]
  %.11 = phi ptr [ %371, %368 ], [ %.10, %339 ]
  %.not1267 = icmp eq i32 %375, 0
  br i1 %.not1267, label %376, label %.loopexit1307

376:                                              ; preds = %374, %336
  %.121096 = phi i32 [ %.111095, %374 ], [ %.101094, %336 ]
  %.12 = phi ptr [ %.11, %374 ], [ %.10, %336 ]
  store i32 0, ptr %39, align 4, !tbaa !43
  store i32 16186, ptr %19, align 8, !tbaa !15
  br label %377

377:                                              ; preds = %376, %72
  %.131097 = phi i32 [ %.01084, %72 ], [ %.121096, %376 ]
  %.111032 = phi i64 [ %.01021, %72 ], [ %.101031, %376 ]
  %.11971 = phi i32 [ %.0960, %72 ], [ %.10970, %376 ]
  %.13 = phi ptr [ %.0927, %72 ], [ %.12, %376 ]
  %378 = load i32, ptr %35, align 8, !tbaa !28
  %379 = and i32 %378, 2048
  %.not1268 = icmp eq i32 %379, 0
  br i1 %.not1268, label %416, label %380

380:                                              ; preds = %377
  %381 = icmp eq i32 %.131097, 0
  br i1 %381, label %.loopexit1307, label %.preheader1321.preheader

.preheader1321.preheader:                         ; preds = %380
  %382 = zext i32 %.131097 to i64
  br label %.preheader1321

.preheader1321:                                   ; preds = %.preheader1321.preheader, %398
  %indvars.iv2899 = phi i64 [ 0, %.preheader1321.preheader ], [ %indvars.iv.next2900, %398 ]
  %indvars.iv.next2900 = add nuw nsw i64 %indvars.iv2899, 1
  %383 = getelementptr inbounds i8, ptr %.13, i64 %indvars.iv2899
  %384 = load i8, ptr %383, align 1, !tbaa !23
  %385 = load ptr, ptr %66, align 8, !tbaa !29
  %.not1270 = icmp eq ptr %385, null
  br i1 %.not1270, label %398, label %386

386:                                              ; preds = %.preheader1321
  %387 = getelementptr inbounds i8, ptr %385, i64 40
  %388 = load ptr, ptr %387, align 8, !tbaa !47
  %.not1271 = icmp eq ptr %388, null
  br i1 %.not1271, label %398, label %389

389:                                              ; preds = %386
  %390 = load i32, ptr %39, align 4, !tbaa !43
  %391 = getelementptr inbounds i8, ptr %385, i64 48
  %392 = load i32, ptr %391, align 8, !tbaa !48
  %393 = icmp ult i32 %390, %392
  br i1 %393, label %394, label %398

394:                                              ; preds = %389
  %395 = add nuw i32 %390, 1
  store i32 %395, ptr %39, align 4, !tbaa !43
  %396 = zext i32 %390 to i64
  %397 = getelementptr inbounds i8, ptr %388, i64 %396
  store i8 %384, ptr %397, align 1, !tbaa !23
  br label %398

398:                                              ; preds = %.preheader1321, %386, %389, %394
  %399 = icmp ne i8 %384, 0
  %400 = icmp ult i64 %indvars.iv.next2900, %382
  %401 = select i1 %399, i1 %400, i1 false
  br i1 %401, label %.preheader1321, label %402, !llvm.loop !49

402:                                              ; preds = %398
  %403 = trunc nuw i64 %indvars.iv.next2900 to i32
  %404 = load i32, ptr %35, align 8, !tbaa !28
  %405 = and i32 %404, 512
  %.not1272 = icmp eq i32 %405, 0
  br i1 %.not1272, label %412, label %406

406:                                              ; preds = %402
  %407 = load i32, ptr %32, align 8, !tbaa !22
  %408 = and i32 %407, 4
  %.not1273 = icmp eq i32 %408, 0
  br i1 %.not1273, label %412, label %409

409:                                              ; preds = %406
  %410 = load i64, ptr %36, align 8, !tbaa !27
  %411 = call i64 @crc32(i64 noundef %410, ptr noundef nonnull %.13, i32 noundef %403) #5
  store i64 %411, ptr %36, align 8, !tbaa !27
  br label %412

412:                                              ; preds = %409, %406, %402
  %413 = sub i32 %.131097, %403
  %414 = and i64 %indvars.iv.next2900, 4294967295
  %415 = getelementptr inbounds i8, ptr %.13, i64 %414
  br i1 %399, label %.loopexit1307, label %420

416:                                              ; preds = %377
  %417 = load ptr, ptr %66, align 8, !tbaa !29
  %.not1269 = icmp eq ptr %417, null
  br i1 %.not1269, label %420, label %418

418:                                              ; preds = %416
  %419 = getelementptr inbounds i8, ptr %417, i64 40
  store ptr null, ptr %419, align 8, !tbaa !47
  br label %420

420:                                              ; preds = %416, %418, %412
  %.141098 = phi i32 [ %413, %412 ], [ %.131097, %418 ], [ %.131097, %416 ]
  %.14 = phi ptr [ %415, %412 ], [ %.13, %418 ], [ %.13, %416 ]
  store i32 0, ptr %39, align 4, !tbaa !43
  store i32 16187, ptr %19, align 8, !tbaa !15
  br label %421

421:                                              ; preds = %420, %72
  %.151099 = phi i32 [ %.01084, %72 ], [ %.141098, %420 ]
  %.121033 = phi i64 [ %.01021, %72 ], [ %.111032, %420 ]
  %.12972 = phi i32 [ %.0960, %72 ], [ %.11971, %420 ]
  %.15 = phi ptr [ %.0927, %72 ], [ %.14, %420 ]
  %422 = load i32, ptr %35, align 8, !tbaa !28
  %423 = and i32 %422, 4096
  %.not1274 = icmp eq i32 %423, 0
  br i1 %.not1274, label %460, label %424

424:                                              ; preds = %421
  %425 = icmp eq i32 %.151099, 0
  br i1 %425, label %.loopexit1307, label %.preheader1320.preheader

.preheader1320.preheader:                         ; preds = %424
  %426 = zext i32 %.151099 to i64
  br label %.preheader1320

.preheader1320:                                   ; preds = %.preheader1320.preheader, %442
  %indvars.iv2902 = phi i64 [ 0, %.preheader1320.preheader ], [ %indvars.iv.next2903, %442 ]
  %indvars.iv.next2903 = add nuw nsw i64 %indvars.iv2902, 1
  %427 = getelementptr inbounds i8, ptr %.15, i64 %indvars.iv2902
  %428 = load i8, ptr %427, align 1, !tbaa !23
  %429 = load ptr, ptr %66, align 8, !tbaa !29
  %.not1276 = icmp eq ptr %429, null
  br i1 %.not1276, label %442, label %430

430:                                              ; preds = %.preheader1320
  %431 = getelementptr inbounds i8, ptr %429, i64 56
  %432 = load ptr, ptr %431, align 8, !tbaa !50
  %.not1277 = icmp eq ptr %432, null
  br i1 %.not1277, label %442, label %433

433:                                              ; preds = %430
  %434 = load i32, ptr %39, align 4, !tbaa !43
  %435 = getelementptr inbounds i8, ptr %429, i64 64
  %436 = load i32, ptr %435, align 8, !tbaa !51
  %437 = icmp ult i32 %434, %436
  br i1 %437, label %438, label %442

438:                                              ; preds = %433
  %439 = add nuw i32 %434, 1
  store i32 %439, ptr %39, align 4, !tbaa !43
  %440 = zext i32 %434 to i64
  %441 = getelementptr inbounds i8, ptr %432, i64 %440
  store i8 %428, ptr %441, align 1, !tbaa !23
  br label %442

442:                                              ; preds = %.preheader1320, %430, %433, %438
  %443 = icmp ne i8 %428, 0
  %444 = icmp ult i64 %indvars.iv.next2903, %426
  %445 = select i1 %443, i1 %444, i1 false
  br i1 %445, label %.preheader1320, label %446, !llvm.loop !52

446:                                              ; preds = %442
  %447 = trunc nuw i64 %indvars.iv.next2903 to i32
  %448 = load i32, ptr %35, align 8, !tbaa !28
  %449 = and i32 %448, 512
  %.not1278 = icmp eq i32 %449, 0
  br i1 %.not1278, label %456, label %450

450:                                              ; preds = %446
  %451 = load i32, ptr %32, align 8, !tbaa !22
  %452 = and i32 %451, 4
  %.not1279 = icmp eq i32 %452, 0
  br i1 %.not1279, label %456, label %453

453:                                              ; preds = %450
  %454 = load i64, ptr %36, align 8, !tbaa !27
  %455 = call i64 @crc32(i64 noundef %454, ptr noundef nonnull %.15, i32 noundef %447) #5
  store i64 %455, ptr %36, align 8, !tbaa !27
  br label %456

456:                                              ; preds = %453, %450, %446
  %457 = sub i32 %.151099, %447
  %458 = and i64 %indvars.iv.next2903, 4294967295
  %459 = getelementptr inbounds i8, ptr %.15, i64 %458
  br i1 %443, label %.loopexit1307, label %464

460:                                              ; preds = %421
  %461 = load ptr, ptr %66, align 8, !tbaa !29
  %.not1275 = icmp eq ptr %461, null
  br i1 %.not1275, label %464, label %462

462:                                              ; preds = %460
  %463 = getelementptr inbounds i8, ptr %461, i64 56
  store ptr null, ptr %463, align 8, !tbaa !50
  br label %464

464:                                              ; preds = %460, %462, %456
  %.161100 = phi i32 [ %457, %456 ], [ %.151099, %462 ], [ %.151099, %460 ]
  %.16 = phi ptr [ %459, %456 ], [ %.15, %462 ], [ %.15, %460 ]
  store i32 16188, ptr %19, align 8, !tbaa !15
  br label %465

465:                                              ; preds = %464, %72
  %.171101 = phi i32 [ %.01084, %72 ], [ %.161100, %464 ]
  %.131034 = phi i64 [ %.01021, %72 ], [ %.121033, %464 ]
  %.13973 = phi i32 [ %.0960, %72 ], [ %.12972, %464 ]
  %.17 = phi ptr [ %.0927, %72 ], [ %.16, %464 ]
  %466 = load i32, ptr %35, align 8, !tbaa !28
  %467 = and i32 %466, 512
  %.not1280 = icmp eq i32 %467, 0
  br i1 %.not1280, label %494, label %.preheader1318

.preheader1318:                                   ; preds = %465
  %468 = icmp ult i32 %.13973, 16
  br i1 %468, label %.lr.ph2375.preheader, label %._crit_edge2376

.lr.ph2375.preheader:                             ; preds = %.preheader1318
  %469 = zext nneg i32 %.13973 to i64
  %470 = icmp eq i32 %.171101, 0
  br i1 %470, label %.loopexit1307.loopexit2399, label %471

471:                                              ; preds = %.lr.ph2375.preheader
  %472 = add i32 %.171101, -1
  %473 = getelementptr inbounds i8, ptr %.17, i64 1
  %474 = load i8, ptr %.17, align 1, !tbaa !23
  %475 = zext i8 %474 to i64
  %476 = shl nuw nsw i64 %475, %469
  %477 = add i64 %476, %.131034
  %indvars.iv.next2906 = add nuw nsw i64 %469, 8
  %478 = icmp ult i32 %.13973, 8
  br i1 %478, label %.lr.ph2375.1, label %._crit_edge2376.loopexit, !llvm.loop !53

.lr.ph2375.1:                                     ; preds = %471
  %479 = icmp eq i32 %472, 0
  br i1 %479, label %.loopexit1307.loopexit2399, label %480

480:                                              ; preds = %.lr.ph2375.1
  %481 = add i32 %.171101, -2
  %482 = getelementptr inbounds i8, ptr %.17, i64 2
  %483 = load i8, ptr %473, align 1, !tbaa !23
  %484 = zext i8 %483 to i64
  %485 = shl nuw nsw i64 %484, %indvars.iv.next2906
  %486 = add i64 %485, %477
  %indvars.iv.next2906.1 = or disjoint i64 %469, 16
  br label %._crit_edge2376.loopexit

._crit_edge2376.loopexit:                         ; preds = %480, %471
  %.lcssa4066 = phi i32 [ %472, %471 ], [ %481, %480 ]
  %.lcssa4065 = phi ptr [ %473, %471 ], [ %482, %480 ]
  %.lcssa4064 = phi i64 [ %477, %471 ], [ %486, %480 ]
  %indvars.iv.next2906.lcssa = phi i64 [ %indvars.iv.next2906, %471 ], [ %indvars.iv.next2906.1, %480 ]
  %487 = trunc nuw nsw i64 %indvars.iv.next2906.lcssa to i32
  br label %._crit_edge2376

._crit_edge2376:                                  ; preds = %._crit_edge2376.loopexit, %.preheader1318
  %.181102.lcssa = phi i32 [ %.171101, %.preheader1318 ], [ %.lcssa4066, %._crit_edge2376.loopexit ]
  %.141035.lcssa = phi i64 [ %.131034, %.preheader1318 ], [ %.lcssa4064, %._crit_edge2376.loopexit ]
  %.14974.lcssa = phi i32 [ %.13973, %.preheader1318 ], [ %487, %._crit_edge2376.loopexit ]
  %.18.lcssa = phi ptr [ %.17, %.preheader1318 ], [ %.lcssa4065, %._crit_edge2376.loopexit ]
  %488 = load i32, ptr %32, align 8, !tbaa !22
  %489 = and i32 %488, 4
  %.not1281 = icmp eq i32 %489, 0
  br i1 %.not1281, label %494, label %490

490:                                              ; preds = %._crit_edge2376
  %491 = load i64, ptr %36, align 8, !tbaa !27
  %492 = and i64 %491, 65535
  %.not1282 = icmp eq i64 %.141035.lcssa, %492
  br i1 %.not1282, label %494, label %493

493:                                              ; preds = %490
  store ptr @.str.5, ptr %38, align 8, !tbaa !32
  store i32 16209, ptr %19, align 8, !tbaa !15
  br label %.thread

494:                                              ; preds = %490, %._crit_edge2376, %465
  %.191103 = phi i32 [ %.171101, %465 ], [ %.181102.lcssa, %._crit_edge2376 ], [ %.181102.lcssa, %490 ]
  %.151036 = phi i64 [ %.131034, %465 ], [ 0, %._crit_edge2376 ], [ 0, %490 ]
  %.15975 = phi i32 [ %.13973, %465 ], [ 0, %._crit_edge2376 ], [ 0, %490 ]
  %.19 = phi ptr [ %.17, %465 ], [ %.18.lcssa, %._crit_edge2376 ], [ %.18.lcssa, %490 ]
  %495 = load ptr, ptr %66, align 8, !tbaa !29
  %.not1283 = icmp eq ptr %495, null
  br i1 %.not1283, label %501, label %496

496:                                              ; preds = %494
  %497 = lshr i32 %466, 9
  %498 = and i32 %497, 1
  %499 = getelementptr inbounds i8, ptr %495, i64 68
  store i32 %498, ptr %499, align 4, !tbaa !54
  %500 = getelementptr inbounds i8, ptr %495, i64 72
  store i32 1, ptr %500, align 8, !tbaa !30
  br label %501

501:                                              ; preds = %496, %494
  %502 = call i64 @crc32(i64 noundef 0, ptr noundef null, i32 noundef 0) #5
  store i64 %502, ptr %36, align 8, !tbaa !27
  store i64 %502, ptr %37, align 8, !tbaa !34
  store i32 16191, ptr %19, align 8, !tbaa !15
  br label %.thread

503:                                              ; preds = %.lr.ph2168.preheader
  %504 = add i32 %.01084, -1
  %505 = getelementptr inbounds i8, ptr %.0927, i64 1
  %506 = load i8, ptr %.0927, align 1, !tbaa !23
  %507 = zext i8 %506 to i64
  %508 = shl nuw nsw i64 %507, %78
  %509 = add i64 %508, %.01021
  %indvars.iv.next2885 = add nuw nsw i64 %78, 8
  %510 = icmp ult i32 %.0960, 24
  br i1 %510, label %.lr.ph2168.1, label %._crit_edge2169, !llvm.loop !55

.lr.ph2168.1:                                     ; preds = %503
  %511 = icmp eq i32 %504, 0
  br i1 %511, label %.loopexit1307.loopexit2404, label %512

512:                                              ; preds = %.lr.ph2168.1
  %513 = add i32 %.01084, -2
  %514 = getelementptr inbounds i8, ptr %.0927, i64 2
  %515 = load i8, ptr %505, align 1, !tbaa !23
  %516 = zext i8 %515 to i64
  %517 = shl nuw nsw i64 %516, %indvars.iv.next2885
  %518 = add i64 %517, %509
  %indvars.iv.next2885.1 = add nuw nsw i64 %78, 16
  %519 = icmp ult i32 %.0960, 16
  br i1 %519, label %.lr.ph2168.2, label %._crit_edge2169, !llvm.loop !55

.lr.ph2168.2:                                     ; preds = %512
  %520 = icmp eq i32 %513, 0
  br i1 %520, label %.loopexit1307.loopexit2404, label %521

521:                                              ; preds = %.lr.ph2168.2
  %522 = add i32 %.01084, -3
  %523 = getelementptr inbounds i8, ptr %.0927, i64 3
  %524 = load i8, ptr %514, align 1, !tbaa !23
  %525 = zext i8 %524 to i64
  %526 = shl nuw nsw i64 %525, %indvars.iv.next2885.1
  %527 = add i64 %526, %518
  %indvars.iv.next2885.2 = add nuw nsw i64 %78, 24
  %528 = icmp ult i32 %.0960, 8
  br i1 %528, label %.lr.ph2168.3, label %._crit_edge2169, !llvm.loop !55

.lr.ph2168.3:                                     ; preds = %521
  %529 = icmp eq i32 %522, 0
  br i1 %529, label %.loopexit1307.loopexit2404, label %530

530:                                              ; preds = %.lr.ph2168.3
  %531 = add i32 %.01084, -4
  %532 = getelementptr inbounds i8, ptr %.0927, i64 4
  %533 = load i8, ptr %523, align 1, !tbaa !23
  %534 = zext i8 %533 to i64
  %535 = shl nuw nsw i64 %534, %indvars.iv.next2885.2
  %536 = add i64 %535, %527
  br label %._crit_edge2169

._crit_edge2169:                                  ; preds = %503, %512, %521, %530, %.preheader1330
  %.201104.lcssa = phi i32 [ %.01084, %.preheader1330 ], [ %504, %503 ], [ %513, %512 ], [ %522, %521 ], [ %531, %530 ]
  %.161037.lcssa = phi i64 [ %.01021, %.preheader1330 ], [ %509, %503 ], [ %518, %512 ], [ %527, %521 ], [ %536, %530 ]
  %.20.lcssa = phi ptr [ %.0927, %.preheader1330 ], [ %505, %503 ], [ %514, %512 ], [ %523, %521 ], [ %532, %530 ]
  %trunc1242 = trunc i64 %.161037.lcssa to i32
  %rev1243 = call i32 @llvm.bswap.i32(i32 %trunc1242)
  %537 = zext i32 %rev1243 to i64
  store i64 %537, ptr %36, align 8, !tbaa !27
  store i64 %537, ptr %37, align 8, !tbaa !34
  store i32 16190, ptr %19, align 8, !tbaa !15
  br label %538

538:                                              ; preds = %._crit_edge2169, %72
  %.211105 = phi i32 [ %.01084, %72 ], [ %.201104.lcssa, %._crit_edge2169 ]
  %.171038 = phi i64 [ %.01021, %72 ], [ 0, %._crit_edge2169 ]
  %.17977 = phi i32 [ %.0960, %72 ], [ 0, %._crit_edge2169 ]
  %.21 = phi ptr [ %.0927, %72 ], [ %.20.lcssa, %._crit_edge2169 ]
  %539 = load i32, ptr %63, align 4, !tbaa !56
  %540 = icmp eq i32 %539, 0
  br i1 %540, label %541, label %542

541:                                              ; preds = %538
  store ptr %.01149, ptr %7, align 8, !tbaa !5
  store i32 %.01082, ptr %24, align 8, !tbaa !17
  store ptr %.21, ptr %0, align 8, !tbaa !12
  store i32 %.211105, ptr %26, align 8, !tbaa !13
  store i64 %.171038, ptr %28, align 8, !tbaa !18
  store i32 %.17977, ptr %30, align 8, !tbaa !19
  br label %.loopexit1357

542:                                              ; preds = %538
  %543 = call i64 @adler32(i64 noundef 0, ptr noundef null, i32 noundef 0) #5
  store i64 %543, ptr %36, align 8, !tbaa !27
  store i64 %543, ptr %37, align 8, !tbaa !34
  store i32 16191, ptr %19, align 8, !tbaa !15
  br label %544

544:                                              ; preds = %542, %72
  %.221106 = phi i32 [ %.01084, %72 ], [ %.211105, %542 ]
  %.181039 = phi i64 [ %.01021, %72 ], [ %.171038, %542 ]
  %.18978 = phi i32 [ %.0960, %72 ], [ %.17977, %542 ]
  %.22 = phi ptr [ %.0927, %72 ], [ %.21, %542 ]
  br i1 %or.cond3, label %.loopexit1307, label %545

545:                                              ; preds = %544, %72
  %.231107 = phi i32 [ %.01084, %72 ], [ %.221106, %544 ]
  %.191040 = phi i64 [ %.01021, %72 ], [ %.181039, %544 ]
  %.19979 = phi i32 [ %.0960, %72 ], [ %.18978, %544 ]
  %.23 = phi ptr [ %.0927, %72 ], [ %.22, %544 ]
  %546 = load i32, ptr %65, align 4, !tbaa !57
  %.not1244 = icmp eq i32 %546, 0
  br i1 %.not1244, label %.preheader1328, label %549

.preheader1328:                                   ; preds = %545
  %547 = icmp ult i32 %.19979, 3
  br i1 %547, label %.lr.ph2177, label %562

.lr.ph2177:                                       ; preds = %.preheader1328
  %548 = icmp eq i32 %.231107, 0
  br i1 %548, label %.loopexit1307, label %._crit_edge2178

549:                                              ; preds = %545
  %550 = and i32 %.19979, 7
  %551 = zext nneg i32 %550 to i64
  %552 = lshr i64 %.191040, %551
  %553 = and i32 %.19979, -8
  store i32 16206, ptr %19, align 8, !tbaa !15
  br label %.thread

._crit_edge2178:                                  ; preds = %.lr.ph2177
  %554 = or disjoint i32 %.19979, 8
  %555 = add i32 %.231107, -1
  %556 = getelementptr inbounds i8, ptr %.23, i64 1
  %557 = load i8, ptr %.23, align 1, !tbaa !23
  %558 = zext i8 %557 to i64
  %559 = zext nneg i32 %.19979 to i64
  %560 = shl nuw nsw i64 %558, %559
  %561 = add i64 %560, %.191040
  br label %562

562:                                              ; preds = %._crit_edge2178, %.preheader1328
  %.241108.lcssa = phi i32 [ %555, %._crit_edge2178 ], [ %.231107, %.preheader1328 ]
  %.201041.lcssa = phi i64 [ %561, %._crit_edge2178 ], [ %.191040, %.preheader1328 ]
  %.20980.lcssa = phi i32 [ %554, %._crit_edge2178 ], [ %.19979, %.preheader1328 ]
  %.24.lcssa = phi ptr [ %556, %._crit_edge2178 ], [ %.23, %.preheader1328 ]
  %563 = trunc i64 %.201041.lcssa to i32
  %564 = and i32 %563, 1
  store i32 %564, ptr %65, align 4, !tbaa !57
  %565 = lshr i32 %563, 1
  %566 = and i32 %565, 3
  switch i32 %566, label %default.unreachable2931 [
    i32 0, label %.sink.split
    i32 1, label %567
    i32 2, label %571
    i32 3, label %572
  ]

567:                                              ; preds = %562
  call void @fixedtables(ptr noundef nonnull %18)
  store i32 16199, ptr %19, align 8, !tbaa !15
  br i1 %53, label %568, label %573

568:                                              ; preds = %567
  %569 = lshr i64 %.201041.lcssa, 3
  %570 = add i32 %.20980.lcssa, -3
  br label %.loopexit1307

571:                                              ; preds = %562
  br label %.sink.split

572:                                              ; preds = %562
  store ptr @.str.6, ptr %38, align 8, !tbaa !32
  br label %.sink.split

default.unreachable2931:                          ; preds = %562
  unreachable

.sink.split:                                      ; preds = %562, %572, %571
  %.sink = phi i32 [ 16196, %571 ], [ 16209, %572 ], [ 16193, %562 ]
  store i32 %.sink, ptr %19, align 8, !tbaa !15
  br label %573

573:                                              ; preds = %.sink.split, %567
  %574 = lshr i64 %.201041.lcssa, 3
  %575 = add i32 %.20980.lcssa, -3
  br label %.thread

576:                                              ; preds = %72
  %577 = and i32 %.0960, 7
  %578 = zext nneg i32 %577 to i64
  %579 = lshr i64 %.01021, %578
  %580 = and i32 %.0960, -8
  %581 = icmp ult i32 %.0960, 32
  br i1 %581, label %.lr.ph2158.preheader, label %._crit_edge2159

.lr.ph2158.preheader:                             ; preds = %576
  %582 = and i32 %.0960, 24
  %583 = zext nneg i32 %582 to i64
  %584 = icmp eq i32 %.01084, 0
  br i1 %584, label %.loopexit1307.loopexit2405, label %585

585:                                              ; preds = %.lr.ph2158.preheader
  %586 = add i32 %.01084, -1
  %587 = getelementptr inbounds i8, ptr %.0927, i64 1
  %588 = load i8, ptr %.0927, align 1, !tbaa !23
  %589 = zext i8 %588 to i64
  %590 = shl nuw nsw i64 %589, %583
  %591 = add i64 %590, %579
  %indvars.iv.next2883 = add nuw nsw i64 %583, 8
  %.not4322 = icmp eq i32 %582, 24
  br i1 %.not4322, label %._crit_edge2159.loopexit, label %.lr.ph2158.1, !llvm.loop !58

.lr.ph2158.1:                                     ; preds = %585
  %592 = icmp eq i32 %586, 0
  br i1 %592, label %.loopexit1307.loopexit2405, label %593

593:                                              ; preds = %.lr.ph2158.1
  %594 = add i32 %.01084, -2
  %595 = getelementptr inbounds i8, ptr %.0927, i64 2
  %596 = load i8, ptr %587, align 1, !tbaa !23
  %597 = zext i8 %596 to i64
  %598 = shl nuw nsw i64 %597, %indvars.iv.next2883
  %599 = add i64 %598, %591
  %indvars.iv.next2883.1 = add nuw nsw i64 %583, 16
  %600 = icmp ult i32 %582, 16
  br i1 %600, label %.lr.ph2158.2, label %._crit_edge2159.loopexit, !llvm.loop !58

.lr.ph2158.2:                                     ; preds = %593
  %601 = icmp eq i32 %594, 0
  br i1 %601, label %.loopexit1307.loopexit2405, label %602

602:                                              ; preds = %.lr.ph2158.2
  %603 = add i32 %.01084, -3
  %604 = getelementptr inbounds i8, ptr %.0927, i64 3
  %605 = load i8, ptr %595, align 1, !tbaa !23
  %606 = zext i8 %605 to i64
  %607 = shl nuw nsw i64 %606, %indvars.iv.next2883.1
  %608 = add i64 %607, %599
  %indvars.iv.next2883.2 = add nuw nsw i64 %583, 24
  %609 = icmp eq i32 %582, 0
  br i1 %609, label %.lr.ph2158.3, label %._crit_edge2159.loopexit, !llvm.loop !58

.lr.ph2158.3:                                     ; preds = %602
  %610 = icmp eq i32 %603, 0
  br i1 %610, label %.loopexit1307.loopexit2405, label %611

611:                                              ; preds = %.lr.ph2158.3
  %612 = add i32 %.01084, -4
  %613 = getelementptr inbounds i8, ptr %.0927, i64 4
  %614 = load i8, ptr %604, align 1, !tbaa !23
  %615 = zext i8 %614 to i64
  %616 = shl nuw nsw i64 %615, %indvars.iv.next2883.2
  %617 = add i64 %616, %608
  br label %._crit_edge2159.loopexit

._crit_edge2159.loopexit:                         ; preds = %611, %602, %593, %585
  %.lcssa4028 = phi i32 [ %586, %585 ], [ %594, %593 ], [ %603, %602 ], [ %612, %611 ]
  %.lcssa4027 = phi ptr [ %587, %585 ], [ %595, %593 ], [ %604, %602 ], [ %613, %611 ]
  %.lcssa4026 = phi i64 [ %591, %585 ], [ %599, %593 ], [ %608, %602 ], [ %617, %611 ]
  %indvars.iv.next2883.lcssa = phi i64 [ %indvars.iv.next2883, %585 ], [ %indvars.iv.next2883.1, %593 ], [ %indvars.iv.next2883.2, %602 ], [ 32, %611 ]
  %618 = trunc nuw nsw i64 %indvars.iv.next2883.lcssa to i32
  br label %._crit_edge2159

._crit_edge2159:                                  ; preds = %._crit_edge2159.loopexit, %576
  %.251109.lcssa = phi i32 [ %.01084, %576 ], [ %.lcssa4028, %._crit_edge2159.loopexit ]
  %.211042.lcssa = phi i64 [ %579, %576 ], [ %.lcssa4026, %._crit_edge2159.loopexit ]
  %.21981.lcssa = phi i32 [ %580, %576 ], [ %618, %._crit_edge2159.loopexit ]
  %.25.lcssa = phi ptr [ %.0927, %576 ], [ %.lcssa4027, %._crit_edge2159.loopexit ]
  %619 = and i64 %.211042.lcssa, 65535
  %620 = lshr i64 %.211042.lcssa, 16
  %621 = xor i64 %620, %619
  %.not1240 = icmp eq i64 %621, 65535
  br i1 %.not1240, label %623, label %622

622:                                              ; preds = %._crit_edge2159
  store ptr @.str.7, ptr %38, align 8, !tbaa !32
  store i32 16209, ptr %19, align 8, !tbaa !15
  br label %.thread

623:                                              ; preds = %._crit_edge2159
  %624 = trunc i64 %.211042.lcssa to i32
  %625 = and i32 %624, 65535
  store i32 %625, ptr %39, align 4, !tbaa !43
  store i32 16194, ptr %19, align 8, !tbaa !15
  br i1 %53, label %.loopexit1307, label %626

626:                                              ; preds = %623, %72
  %.261110 = phi i32 [ %.01084, %72 ], [ %.251109.lcssa, %623 ]
  %.221043 = phi i64 [ %.01021, %72 ], [ 0, %623 ]
  %.22982 = phi i32 [ %.0960, %72 ], [ 0, %623 ]
  %.26 = phi ptr [ %.0927, %72 ], [ %.25.lcssa, %623 ]
  store i32 16195, ptr %19, align 8, !tbaa !15
  br label %627

627:                                              ; preds = %626, %72
  %.271111 = phi i32 [ %.01084, %72 ], [ %.261110, %626 ]
  %.231044 = phi i64 [ %.01021, %72 ], [ %.221043, %626 ]
  %.23983 = phi i32 [ %.0960, %72 ], [ %.22982, %626 ]
  %.27 = phi ptr [ %.0927, %72 ], [ %.26, %626 ]
  %628 = load i32, ptr %39, align 4, !tbaa !43
  %.not1241 = icmp eq i32 %628, 0
  br i1 %.not1241, label %639, label %629

629:                                              ; preds = %627
  %spec.select1296 = call i32 @llvm.umin.i32(i32 %628, i32 %.271111)
  %.4948 = call i32 @llvm.umin.i32(i32 %spec.select1296, i32 %.01082)
  %630 = icmp eq i32 %.4948, 0
  br i1 %630, label %.loopexit1307, label %631

631:                                              ; preds = %629
  %632 = zext i32 %.4948 to i64
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %.01149, ptr align 1 %.27, i64 %632, i1 false)
  %633 = sub i32 %.271111, %.4948
  %634 = getelementptr inbounds i8, ptr %.27, i64 %632
  %635 = sub i32 %.01082, %.4948
  %636 = getelementptr inbounds i8, ptr %.01149, i64 %632
  %637 = load i32, ptr %39, align 4, !tbaa !43
  %638 = sub i32 %637, %.4948
  store i32 %638, ptr %39, align 4, !tbaa !43
  br label %.thread

639:                                              ; preds = %627
  store i32 16191, ptr %19, align 8, !tbaa !15
  br label %.thread

640:                                              ; preds = %.lr.ph1808.preheader
  %641 = add i32 %.01084, -1
  %642 = getelementptr inbounds i8, ptr %.0927, i64 1
  %643 = load i8, ptr %.0927, align 1, !tbaa !23
  %644 = zext i8 %643 to i64
  %645 = shl nuw nsw i64 %644, %75
  %646 = add i64 %645, %.01021
  %indvars.iv.next2843 = add nuw nsw i64 %75, 8
  %647 = icmp ult i32 %.0960, 6
  br i1 %647, label %.lr.ph1808.1, label %._crit_edge1809.loopexit, !llvm.loop !59

.lr.ph1808.1:                                     ; preds = %640
  %648 = icmp eq i32 %641, 0
  br i1 %648, label %.loopexit1307.loopexit2415, label %649

649:                                              ; preds = %.lr.ph1808.1
  %650 = add i32 %.01084, -2
  %651 = getelementptr inbounds i8, ptr %.0927, i64 2
  %652 = load i8, ptr %642, align 1, !tbaa !23
  %653 = zext i8 %652 to i64
  %654 = shl nuw nsw i64 %653, %indvars.iv.next2843
  %655 = add i64 %654, %646
  %indvars.iv.next2843.1 = or disjoint i64 %75, 16
  br label %._crit_edge1809.loopexit

._crit_edge1809.loopexit:                         ; preds = %649, %640
  %.lcssa3934 = phi i32 [ %641, %640 ], [ %650, %649 ]
  %.lcssa3933 = phi ptr [ %642, %640 ], [ %651, %649 ]
  %.lcssa3932 = phi i64 [ %646, %640 ], [ %655, %649 ]
  %indvars.iv.next2843.lcssa = phi i64 [ %indvars.iv.next2843, %640 ], [ %indvars.iv.next2843.1, %649 ]
  %656 = trunc nuw nsw i64 %indvars.iv.next2843.lcssa to i32
  br label %._crit_edge1809

._crit_edge1809:                                  ; preds = %._crit_edge1809.loopexit, %.preheader1350
  %.281112.lcssa = phi i32 [ %.01084, %.preheader1350 ], [ %.lcssa3934, %._crit_edge1809.loopexit ]
  %.241045.lcssa = phi i64 [ %.01021, %.preheader1350 ], [ %.lcssa3932, %._crit_edge1809.loopexit ]
  %.24984.lcssa = phi i32 [ %.0960, %.preheader1350 ], [ %656, %._crit_edge1809.loopexit ]
  %.28.lcssa = phi ptr [ %.0927, %.preheader1350 ], [ %.lcssa3933, %._crit_edge1809.loopexit ]
  %657 = trunc i64 %.241045.lcssa to i32
  %658 = and i32 %657, 31
  %659 = add nuw nsw i32 %658, 257
  store i32 %659, ptr %40, align 4, !tbaa !60
  %660 = lshr i32 %657, 5
  %661 = and i32 %660, 31
  %662 = add nuw nsw i32 %661, 1
  store i32 %662, ptr %41, align 8, !tbaa !61
  %663 = lshr i32 %657, 10
  %664 = and i32 %663, 15
  %665 = add nuw nsw i32 %664, 4
  store i32 %665, ptr %42, align 8, !tbaa !62
  %666 = lshr i64 %.241045.lcssa, 14
  %667 = add i32 %.24984.lcssa, -14
  %668 = icmp ugt i32 %658, 29
  %669 = icmp ugt i32 %661, 29
  %or.cond1305 = or i1 %668, %669
  br i1 %or.cond1305, label %670, label %.split.thread

670:                                              ; preds = %._crit_edge1809
  store ptr @.str.8, ptr %38, align 8, !tbaa !32
  store i32 16209, ptr %19, align 8, !tbaa !15
  br label %.thread

.split.thread:                                    ; preds = %._crit_edge1809
  store i32 0, ptr %43, align 4, !tbaa !21
  store i32 16197, ptr %19, align 8, !tbaa !15
  br label %.preheader1314.preheader

.split:                                           ; preds = %72
  %.pre2914 = load i32, ptr %42, align 8, !tbaa !62
  %.promoted.pre = load i32, ptr %43, align 4, !tbaa !21
  %671 = icmp ult i32 %.promoted.pre, %.pre2914
  br i1 %671, label %.preheader1314.preheader, label %.preheader1349

.preheader1314.preheader:                         ; preds = %.split.thread, %.split
  %.292981 = phi ptr [ %.28.lcssa, %.split.thread ], [ %.0927, %.split ]
  %.259852980 = phi i32 [ %667, %.split.thread ], [ %.0960, %.split ]
  %.2510462979 = phi i64 [ %666, %.split.thread ], [ %.01021, %.split ]
  %.2911132978 = phi i32 [ %.281112.lcssa, %.split.thread ], [ %.01084, %.split ]
  %672 = phi i32 [ %665, %.split.thread ], [ %.pre2914, %.split ]
  %.promoted2977 = phi i32 [ 0, %.split.thread ], [ %.promoted.pre, %.split ]
  %673 = zext i32 %.promoted2977 to i64
  %wide.trip.count = zext i32 %672 to i64
  br label %.preheader1314

.preheader1349:                                   ; preds = %686, %.split
  %.301114.lcssa = phi i32 [ %.01084, %.split ], [ %.311115.lcssa, %686 ]
  %.261047.lcssa = phi i64 [ %.01021, %.split ], [ %694, %686 ]
  %.26986.lcssa = phi i32 [ %.0960, %.split ], [ %695, %686 ]
  %.30.lcssa = phi ptr [ %.0927, %.split ], [ %.31.lcssa, %686 ]
  %.lcssa = phi i32 [ %.promoted.pre, %.split ], [ %672, %686 ]
  %674 = icmp ult i32 %.lcssa, 19
  br i1 %674, label %.lr.ph1978.preheader, label %701

.lr.ph1978.preheader:                             ; preds = %.preheader1349
  %675 = zext nneg i32 %.lcssa to i64
  br label %.lr.ph1978

.preheader1314:                                   ; preds = %.preheader1314.preheader, %686
  %indvars.iv2845 = phi i64 [ %673, %.preheader1314.preheader ], [ %indvars.iv.next2846, %686 ]
  %.301971 = phi ptr [ %.292981, %.preheader1314.preheader ], [ %.31.lcssa, %686 ]
  %.269861970 = phi i32 [ %.259852980, %.preheader1314.preheader ], [ %695, %686 ]
  %.2610471969 = phi i64 [ %.2510462979, %.preheader1314.preheader ], [ %694, %686 ]
  %.3011141968 = phi i32 [ %.2911132978, %.preheader1314.preheader ], [ %.311115.lcssa, %686 ]
  %676 = icmp ult i32 %.269861970, 3
  br i1 %676, label %.lr.ph1818, label %686

.lr.ph1818:                                       ; preds = %.preheader1314
  %677 = icmp eq i32 %.3011141968, 0
  br i1 %677, label %.loopexit1307, label %._crit_edge1819

._crit_edge1819:                                  ; preds = %.lr.ph1818
  %678 = or disjoint i32 %.269861970, 8
  %679 = add i32 %.3011141968, -1
  %680 = getelementptr inbounds i8, ptr %.301971, i64 1
  %681 = load i8, ptr %.301971, align 1, !tbaa !23
  %682 = zext i8 %681 to i64
  %683 = zext nneg i32 %.269861970 to i64
  %684 = shl nuw nsw i64 %682, %683
  %685 = add i64 %684, %.2610471969
  br label %686

686:                                              ; preds = %._crit_edge1819, %.preheader1314
  %.311115.lcssa = phi i32 [ %679, %._crit_edge1819 ], [ %.3011141968, %.preheader1314 ]
  %.271048.lcssa = phi i64 [ %685, %._crit_edge1819 ], [ %.2610471969, %.preheader1314 ]
  %.27987.lcssa = phi i32 [ %678, %._crit_edge1819 ], [ %.269861970, %.preheader1314 ]
  %.31.lcssa = phi ptr [ %680, %._crit_edge1819 ], [ %.301971, %.preheader1314 ]
  %687 = trunc i64 %.271048.lcssa to i16
  %688 = and i16 %687, 7
  %indvars.iv.next2846 = add nuw nsw i64 %indvars.iv2845, 1
  %689 = trunc nuw i64 %indvars.iv.next2846 to i32
  store i32 %689, ptr %43, align 4, !tbaa !21
  %690 = getelementptr inbounds [19 x i16], ptr @inflate.order, i64 0, i64 %indvars.iv2845
  %691 = load i16, ptr %690, align 2, !tbaa !63
  %692 = zext i16 %691 to i64
  %693 = getelementptr inbounds [320 x i16], ptr %44, i64 0, i64 %692
  store i16 %688, ptr %693, align 2, !tbaa !63
  %694 = lshr i64 %.271048.lcssa, 3
  %695 = add i32 %.27987.lcssa, -3
  %exitcond.not = icmp eq i64 %indvars.iv.next2846, %wide.trip.count
  br i1 %exitcond.not, label %.preheader1349, label %.preheader1314, !llvm.loop !65

.lr.ph1978:                                       ; preds = %.lr.ph1978.preheader, %.lr.ph1978
  %indvars.iv2848 = phi i64 [ %675, %.lr.ph1978.preheader ], [ %indvars.iv.next2849, %.lr.ph1978 ]
  %indvars.iv.next2849 = add nuw nsw i64 %indvars.iv2848, 1
  %696 = getelementptr inbounds [19 x i16], ptr @inflate.order, i64 0, i64 %indvars.iv2848
  %697 = load i16, ptr %696, align 2, !tbaa !63
  %698 = zext i16 %697 to i64
  %699 = getelementptr inbounds [320 x i16], ptr %44, i64 0, i64 %698
  store i16 0, ptr %699, align 2, !tbaa !63
  %700 = and i64 %indvars.iv.next2849, 4294967295
  %exitcond2851.not = icmp eq i64 %700, 19
  br i1 %exitcond2851.not, label %._crit_edge1979, label %.lr.ph1978, !llvm.loop !66

._crit_edge1979:                                  ; preds = %.lr.ph1978
  store i32 19, ptr %43, align 4, !tbaa !21
  br label %701

701:                                              ; preds = %._crit_edge1979, %.preheader1349
  store ptr %45, ptr %46, align 8, !tbaa !67
  store ptr %45, ptr %47, align 8, !tbaa !68
  store i32 7, ptr %48, align 8, !tbaa !69
  %702 = call i32 @inflate_table(i32 noundef 0, ptr noundef nonnull %44, i32 noundef 19, ptr noundef nonnull %46, ptr noundef nonnull %48, ptr noundef nonnull %49) #5
  %.not1218 = icmp eq i32 %702, 0
  br i1 %.not1218, label %704, label %703

703:                                              ; preds = %701
  store ptr @.str.9, ptr %38, align 8, !tbaa !32
  store i32 16209, ptr %19, align 8, !tbaa !15
  br label %.thread

704:                                              ; preds = %701
  store i32 0, ptr %43, align 4, !tbaa !21
  store i32 16198, ptr %19, align 8, !tbaa !15
  br label %705

705:                                              ; preds = %._crit_edge2916, %704
  %.promoted2033 = phi i32 [ %.promoted2033.pre, %._crit_edge2916 ], [ 0, %704 ]
  %.321116 = phi i32 [ %.01084, %._crit_edge2916 ], [ %.301114.lcssa, %704 ]
  %.281049 = phi i64 [ %.01021, %._crit_edge2916 ], [ %.261047.lcssa, %704 ]
  %.28988 = phi i32 [ %.0960, %._crit_edge2916 ], [ %.26986.lcssa, %704 ]
  %.1929 = phi i32 [ %.0928, %._crit_edge2916 ], [ 0, %704 ]
  %.32 = phi ptr [ %.0927, %._crit_edge2916 ], [ %.30.lcssa, %704 ]
  %706 = load i32, ptr %40, align 4, !tbaa !60
  %707 = load i32, ptr %41, align 8, !tbaa !61
  %708 = add i32 %707, %706
  %709 = icmp ult i32 %.promoted2033, %708
  br i1 %709, label %.preheader1312.lr.ph, label %._crit_edge2041

.preheader1312.lr.ph:                             ; preds = %705
  %710 = load ptr, ptr %47, align 8, !tbaa !68
  %711 = load i32, ptr %48, align 8, !tbaa !69
  %notmask = shl nsw i32 -1, %711
  %712 = xor i32 %notmask, -1
  br label %.preheader1312

.preheader1312:                                   ; preds = %.preheader1312.lr.ph, %871
  %.332040 = phi ptr [ %.32, %.preheader1312.lr.ph ], [ %.39, %871 ]
  %.299892039 = phi i32 [ %.28988, %.preheader1312.lr.ph ], [ %.35995, %871 ]
  %.2910502038 = phi i64 [ %.281049, %.preheader1312.lr.ph ], [ %.351056, %871 ]
  %.3311172037 = phi i32 [ %.321116, %.preheader1312.lr.ph ], [ %.391123, %871 ]
  %.lcssa203120342036 = phi i32 [ %.promoted2033, %.preheader1312.lr.ph ], [ %.lcssa20312035, %871 ]
  %713 = trunc i64 %.2910502038 to i32
  %714 = and i32 %712, %713
  %715 = zext nneg i32 %714 to i64
  %.sroa.1878.0..sroa_idx1983 = getelementptr inbounds %struct.code, ptr %710, i64 %715, i32 1
  %.sroa.1878.0.copyload1984 = load i8, ptr %.sroa.1878.0..sroa_idx1983, align 1, !tbaa !23
  %716 = zext i8 %.sroa.1878.0.copyload1984 to i32
  %.not12191985 = icmp ult i32 %.299892039, %716
  br i1 %.not12191985, label %.lr.ph1990.preheader, label %._crit_edge1991

.lr.ph1990.preheader:                             ; preds = %.preheader1312
  %717 = zext nneg i32 %.299892039 to i64
  br label %.lr.ph1990

.lr.ph1990:                                       ; preds = %.lr.ph1990.preheader, %719
  %indvars.iv2852 = phi i64 [ %717, %.lr.ph1990.preheader ], [ %indvars.iv.next2853, %719 ]
  %.341989 = phi ptr [ %.332040, %.lr.ph1990.preheader ], [ %721, %719 ]
  %.3010511987 = phi i64 [ %.2910502038, %.lr.ph1990.preheader ], [ %725, %719 ]
  %.3411181986 = phi i32 [ %.3311172037, %.lr.ph1990.preheader ], [ %720, %719 ]
  %718 = icmp eq i32 %.3411181986, 0
  br i1 %718, label %.loopexit1307.loopexit2982, label %719

719:                                              ; preds = %.lr.ph1990
  %720 = add i32 %.3411181986, -1
  %721 = getelementptr inbounds i8, ptr %.341989, i64 1
  %722 = load i8, ptr %.341989, align 1, !tbaa !23
  %723 = zext i8 %722 to i64
  %724 = shl i64 %723, %indvars.iv2852
  %725 = add i64 %724, %.3010511987
  %indvars.iv.next2853 = add nuw nsw i64 %indvars.iv2852, 8
  %726 = trunc i64 %725 to i32
  %727 = and i32 %712, %726
  %728 = zext nneg i32 %727 to i64
  %.sroa.1878.0..sroa_idx = getelementptr inbounds %struct.code, ptr %710, i64 %728, i32 1
  %.sroa.1878.0.copyload = load i8, ptr %.sroa.1878.0..sroa_idx, align 1, !tbaa !23
  %729 = zext i8 %.sroa.1878.0.copyload to i64
  %.not1219 = icmp ult i64 %indvars.iv.next2853, %729
  br i1 %.not1219, label %.lr.ph1990, label %._crit_edge1991.loopexit

._crit_edge1991.loopexit:                         ; preds = %719
  %730 = zext i8 %.sroa.1878.0.copyload to i32
  %731 = trunc nuw i64 %indvars.iv.next2853 to i32
  br label %._crit_edge1991

._crit_edge1991:                                  ; preds = %._crit_edge1991.loopexit, %.preheader1312
  %732 = phi i64 [ %715, %.preheader1312 ], [ %728, %._crit_edge1991.loopexit ]
  %.lcssa1981 = phi i32 [ %716, %.preheader1312 ], [ %730, %._crit_edge1991.loopexit ]
  %.341118.lcssa = phi i32 [ %.3311172037, %.preheader1312 ], [ %720, %._crit_edge1991.loopexit ]
  %.301051.lcssa = phi i64 [ %.2910502038, %.preheader1312 ], [ %725, %._crit_edge1991.loopexit ]
  %.30990.lcssa = phi i32 [ %.299892039, %.preheader1312 ], [ %731, %._crit_edge1991.loopexit ]
  %.34.lcssa = phi ptr [ %.332040, %.preheader1312 ], [ %721, %._crit_edge1991.loopexit ]
  %.sroa.1878.0.copyload.lcssa = phi i8 [ %.sroa.1878.0.copyload1984, %.preheader1312 ], [ %.sroa.1878.0.copyload, %._crit_edge1991.loopexit ]
  %.sroa.42.0..sroa_idx.le = getelementptr inbounds %struct.code, ptr %710, i64 %732, i32 2
  %.sroa.42.0.copyload.le = load i16, ptr %.sroa.42.0..sroa_idx.le, align 2, !tbaa !63
  %733 = icmp ult i16 %.sroa.42.0.copyload.le, 16
  br i1 %733, label %734, label %741

734:                                              ; preds = %._crit_edge1991
  %735 = zext nneg i8 %.sroa.1878.0.copyload.lcssa to i64
  %736 = lshr i64 %.301051.lcssa, %735
  %737 = sub i32 %.30990.lcssa, %.lcssa1981
  %738 = add i32 %.lcssa203120342036, 1
  store i32 %738, ptr %43, align 4, !tbaa !21
  %739 = zext i32 %.lcssa203120342036 to i64
  %740 = getelementptr inbounds [320 x i16], ptr %44, i64 0, i64 %739
  store i16 %.sroa.42.0.copyload.le, ptr %740, align 2, !tbaa !63
  br label %871

741:                                              ; preds = %._crit_edge1991
  switch i16 %.sroa.42.0.copyload.le, label %.preheader1306 [
    i16 16, label %.preheader1308
    i16 17, label %.preheader1310
  ]

.preheader1310:                                   ; preds = %741
  %742 = add nuw nsw i32 %.lcssa1981, 3
  %743 = icmp ult i32 %.30990.lcssa, %742
  br i1 %743, label %.lr.ph2004.preheader, label %._crit_edge2005

.lr.ph2004.preheader:                             ; preds = %.preheader1310
  %744 = zext nneg i32 %.30990.lcssa to i64
  %745 = zext nneg i32 %742 to i64
  br label %.lr.ph2004

.preheader1308:                                   ; preds = %741
  %746 = add nuw nsw i32 %.lcssa1981, 2
  %747 = icmp ult i32 %.30990.lcssa, %746
  br i1 %747, label %.lr.ph2014.preheader, label %._crit_edge2015

.lr.ph2014.preheader:                             ; preds = %.preheader1308
  %748 = zext nneg i32 %.30990.lcssa to i64
  %749 = zext nneg i32 %746 to i64
  br label %.lr.ph2014

.preheader1306:                                   ; preds = %741
  %750 = add nuw nsw i32 %.lcssa1981, 7
  %751 = icmp ult i32 %.30990.lcssa, %750
  br i1 %751, label %.lr.ph2024.preheader, label %._crit_edge2025

.lr.ph2024.preheader:                             ; preds = %.preheader1306
  %752 = zext nneg i32 %.30990.lcssa to i64
  %753 = zext nneg i32 %750 to i64
  br label %.lr.ph2024

.lr.ph2014:                                       ; preds = %.lr.ph2014.preheader, %755
  %indvars.iv2858 = phi i64 [ %748, %.lr.ph2014.preheader ], [ %indvars.iv.next2859, %755 ]
  %.352013 = phi ptr [ %.34.lcssa, %.lr.ph2014.preheader ], [ %757, %755 ]
  %.3110522011 = phi i64 [ %.301051.lcssa, %.lr.ph2014.preheader ], [ %761, %755 ]
  %.3511192010 = phi i32 [ %.341118.lcssa, %.lr.ph2014.preheader ], [ %756, %755 ]
  %754 = icmp eq i32 %.3511192010, 0
  br i1 %754, label %.loopexit1307.loopexit2395, label %755

755:                                              ; preds = %.lr.ph2014
  %756 = add i32 %.3511192010, -1
  %757 = getelementptr inbounds i8, ptr %.352013, i64 1
  %758 = load i8, ptr %.352013, align 1, !tbaa !23
  %759 = zext i8 %758 to i64
  %760 = shl i64 %759, %indvars.iv2858
  %761 = add i64 %760, %.3110522011
  %indvars.iv.next2859 = add nuw nsw i64 %indvars.iv2858, 8
  %762 = icmp ult i64 %indvars.iv.next2859, %749
  br i1 %762, label %.lr.ph2014, label %._crit_edge2015.loopexit, !llvm.loop !70

._crit_edge2015.loopexit:                         ; preds = %755
  %763 = trunc nuw i64 %indvars.iv.next2859 to i32
  br label %._crit_edge2015

._crit_edge2015:                                  ; preds = %._crit_edge2015.loopexit, %.preheader1308
  %.351119.lcssa = phi i32 [ %.341118.lcssa, %.preheader1308 ], [ %756, %._crit_edge2015.loopexit ]
  %.311052.lcssa = phi i64 [ %.301051.lcssa, %.preheader1308 ], [ %761, %._crit_edge2015.loopexit ]
  %.31991.lcssa = phi i32 [ %.30990.lcssa, %.preheader1308 ], [ %763, %._crit_edge2015.loopexit ]
  %.35.lcssa = phi ptr [ %.34.lcssa, %.preheader1308 ], [ %757, %._crit_edge2015.loopexit ]
  %764 = zext nneg i8 %.sroa.1878.0.copyload.lcssa to i64
  %765 = lshr i64 %.311052.lcssa, %764
  %766 = sub i32 %.31991.lcssa, %.lcssa1981
  %767 = icmp eq i32 %.lcssa203120342036, 0
  br i1 %767, label %768, label %769

768:                                              ; preds = %._crit_edge2015
  store ptr @.str.10, ptr %38, align 8, !tbaa !32
  store i32 16209, ptr %19, align 8, !tbaa !15
  br label %.thread

769:                                              ; preds = %._crit_edge2015
  %770 = add i32 %.lcssa203120342036, -1
  %771 = zext i32 %770 to i64
  %772 = getelementptr inbounds [320 x i16], ptr %44, i64 0, i64 %771
  %773 = load i16, ptr %772, align 2, !tbaa !63
  %774 = trunc i64 %765 to i32
  %775 = and i32 %774, 3
  %776 = add nuw nsw i32 %775, 3
  %777 = lshr i64 %765, 2
  %778 = add i32 %766, -2
  br label %813

.lr.ph2004:                                       ; preds = %.lr.ph2004.preheader, %780
  %indvars.iv2855 = phi i64 [ %744, %.lr.ph2004.preheader ], [ %indvars.iv.next2856, %780 ]
  %.362003 = phi ptr [ %.34.lcssa, %.lr.ph2004.preheader ], [ %782, %780 ]
  %.3210532001 = phi i64 [ %.301051.lcssa, %.lr.ph2004.preheader ], [ %786, %780 ]
  %.3611202000 = phi i32 [ %.341118.lcssa, %.lr.ph2004.preheader ], [ %781, %780 ]
  %779 = icmp eq i32 %.3611202000, 0
  br i1 %779, label %.loopexit1307.loopexit2396, label %780

780:                                              ; preds = %.lr.ph2004
  %781 = add i32 %.3611202000, -1
  %782 = getelementptr inbounds i8, ptr %.362003, i64 1
  %783 = load i8, ptr %.362003, align 1, !tbaa !23
  %784 = zext i8 %783 to i64
  %785 = shl i64 %784, %indvars.iv2855
  %786 = add i64 %785, %.3210532001
  %indvars.iv.next2856 = add nuw nsw i64 %indvars.iv2855, 8
  %787 = icmp ult i64 %indvars.iv.next2856, %745
  br i1 %787, label %.lr.ph2004, label %._crit_edge2005.loopexit, !llvm.loop !71

._crit_edge2005.loopexit:                         ; preds = %780
  %788 = trunc nuw i64 %indvars.iv.next2856 to i32
  br label %._crit_edge2005

._crit_edge2005:                                  ; preds = %._crit_edge2005.loopexit, %.preheader1310
  %.361120.lcssa = phi i32 [ %.341118.lcssa, %.preheader1310 ], [ %781, %._crit_edge2005.loopexit ]
  %.321053.lcssa = phi i64 [ %.301051.lcssa, %.preheader1310 ], [ %786, %._crit_edge2005.loopexit ]
  %.32992.lcssa = phi i32 [ %.30990.lcssa, %.preheader1310 ], [ %788, %._crit_edge2005.loopexit ]
  %.36.lcssa = phi ptr [ %.34.lcssa, %.preheader1310 ], [ %782, %._crit_edge2005.loopexit ]
  %789 = zext nneg i8 %.sroa.1878.0.copyload.lcssa to i64
  %790 = lshr i64 %.321053.lcssa, %789
  %791 = trunc i64 %790 to i32
  %792 = and i32 %791, 7
  %793 = add nuw nsw i32 %792, 3
  %794 = lshr i64 %790, 3
  %reass.sub = sub i32 %.32992.lcssa, %.lcssa1981
  %795 = add i32 %reass.sub, -3
  br label %813

.lr.ph2024:                                       ; preds = %.lr.ph2024.preheader, %797
  %indvars.iv2861 = phi i64 [ %752, %.lr.ph2024.preheader ], [ %indvars.iv.next2862, %797 ]
  %.372023 = phi ptr [ %.34.lcssa, %.lr.ph2024.preheader ], [ %799, %797 ]
  %.3310542021 = phi i64 [ %.301051.lcssa, %.lr.ph2024.preheader ], [ %803, %797 ]
  %.3711212020 = phi i32 [ %.341118.lcssa, %.lr.ph2024.preheader ], [ %798, %797 ]
  %796 = icmp eq i32 %.3711212020, 0
  br i1 %796, label %.loopexit1307.loopexit, label %797

797:                                              ; preds = %.lr.ph2024
  %798 = add i32 %.3711212020, -1
  %799 = getelementptr inbounds i8, ptr %.372023, i64 1
  %800 = load i8, ptr %.372023, align 1, !tbaa !23
  %801 = zext i8 %800 to i64
  %802 = shl i64 %801, %indvars.iv2861
  %803 = add i64 %802, %.3310542021
  %indvars.iv.next2862 = add nuw nsw i64 %indvars.iv2861, 8
  %804 = icmp ult i64 %indvars.iv.next2862, %753
  br i1 %804, label %.lr.ph2024, label %._crit_edge2025.loopexit, !llvm.loop !72

._crit_edge2025.loopexit:                         ; preds = %797
  %805 = trunc nuw i64 %indvars.iv.next2862 to i32
  br label %._crit_edge2025

._crit_edge2025:                                  ; preds = %._crit_edge2025.loopexit, %.preheader1306
  %.371121.lcssa = phi i32 [ %.341118.lcssa, %.preheader1306 ], [ %798, %._crit_edge2025.loopexit ]
  %.331054.lcssa = phi i64 [ %.301051.lcssa, %.preheader1306 ], [ %803, %._crit_edge2025.loopexit ]
  %.33993.lcssa = phi i32 [ %.30990.lcssa, %.preheader1306 ], [ %805, %._crit_edge2025.loopexit ]
  %.37.lcssa = phi ptr [ %.34.lcssa, %.preheader1306 ], [ %799, %._crit_edge2025.loopexit ]
  %806 = zext nneg i8 %.sroa.1878.0.copyload.lcssa to i64
  %807 = lshr i64 %.331054.lcssa, %806
  %808 = trunc i64 %807 to i32
  %809 = and i32 %808, 127
  %810 = add nuw nsw i32 %809, 11
  %811 = lshr i64 %807, 7
  %reass.sub2392 = sub i32 %.33993.lcssa, %.lcssa1981
  %812 = add i32 %reass.sub2392, -7
  br label %813

813:                                              ; preds = %._crit_edge2005, %._crit_edge2025, %769
  %.381122 = phi i32 [ %.351119.lcssa, %769 ], [ %.361120.lcssa, %._crit_edge2005 ], [ %.371121.lcssa, %._crit_edge2025 ]
  %.341055 = phi i64 [ %777, %769 ], [ %794, %._crit_edge2005 ], [ %811, %._crit_edge2025 ]
  %.34994 = phi i32 [ %778, %769 ], [ %795, %._crit_edge2005 ], [ %812, %._crit_edge2025 ]
  %.5949 = phi i32 [ %776, %769 ], [ %793, %._crit_edge2005 ], [ %810, %._crit_edge2025 ]
  %.0938 = phi i16 [ %773, %769 ], [ 0, %._crit_edge2005 ], [ 0, %._crit_edge2025 ]
  %.38 = phi ptr [ %.35.lcssa, %769 ], [ %.36.lcssa, %._crit_edge2005 ], [ %.37.lcssa, %._crit_edge2025 ]
  %814 = add i32 %.5949, %.lcssa203120342036
  %815 = icmp ugt i32 %814, %708
  br i1 %815, label %856, label %.preheader.preheader

.preheader.preheader:                             ; preds = %813
  %min.iters.check3888 = icmp ult i32 %.5949, 16
  %816 = sub nsw i32 0, %.5949
  %817 = icmp ugt i32 %.lcssa203120342036, %816
  %or.cond3904 = select i1 %min.iters.check3888, i1 true, i1 %817
  br i1 %or.cond3904, label %.preheader.preheader3908, label %vector.ph3889

.preheader.preheader3908:                         ; preds = %middle.block3886, %.preheader.preheader
  %.69502032.ph = phi i32 [ %.5949, %.preheader.preheader ], [ %ind.end3892, %middle.block3886 ]
  %.ph = phi i32 [ %.lcssa203120342036, %.preheader.preheader ], [ %ind.end3894, %middle.block3886 ]
  %818 = add nsw i32 %.69502032.ph, -1
  %xtraiter = and i32 %.69502032.ph, 3
  %lcmp.mod.not = icmp eq i32 %xtraiter, 0
  br i1 %lcmp.mod.not, label %.preheader.prol.loopexit, label %.preheader.prol

.preheader.prol:                                  ; preds = %.preheader.preheader3908, %.preheader.prol
  %.69502032.prol = phi i32 [ %820, %.preheader.prol ], [ %.69502032.ph, %.preheader.preheader3908 ]
  %819 = phi i32 [ %821, %.preheader.prol ], [ %.ph, %.preheader.preheader3908 ]
  %prol.iter = phi i32 [ %prol.iter.next, %.preheader.prol ], [ 0, %.preheader.preheader3908 ]
  %820 = add nsw i32 %.69502032.prol, -1
  %821 = add i32 %819, 1
  %822 = zext i32 %819 to i64
  %823 = getelementptr inbounds [320 x i16], ptr %44, i64 0, i64 %822
  store i16 %.0938, ptr %823, align 2, !tbaa !63
  %prol.iter.next = add i32 %prol.iter, 1
  %prol.iter.cmp.not = icmp eq i32 %prol.iter.next, %xtraiter
  br i1 %prol.iter.cmp.not, label %.preheader.prol.loopexit, label %.preheader.prol, !llvm.loop !73

.preheader.prol.loopexit:                         ; preds = %.preheader.prol, %.preheader.preheader3908
  %.lcssa3964.unr = phi i32 [ poison, %.preheader.preheader3908 ], [ %821, %.preheader.prol ]
  %.69502032.unr = phi i32 [ %.69502032.ph, %.preheader.preheader3908 ], [ %820, %.preheader.prol ]
  %.unr = phi i32 [ %.ph, %.preheader.preheader3908 ], [ %821, %.preheader.prol ]
  %824 = icmp ult i32 %818, 3
  br i1 %824, label %.loopexit, label %.preheader

vector.ph3889:                                    ; preds = %.preheader.preheader
  %n.vec3891 = and i32 %.5949, -16
  %ind.end3892 = and i32 %.5949, 15
  %ind.end3894 = add i32 %.lcssa203120342036, %n.vec3891
  %broadcast.splatinsert3899 = insertelement <8 x i16> poison, i16 %.0938, i64 0
  %broadcast.splat3900 = shufflevector <8 x i16> %broadcast.splatinsert3899, <8 x i16> poison, <8 x i32> zeroinitializer
  %825 = zext i32 %.lcssa203120342036 to i64
  %826 = getelementptr inbounds [320 x i16], ptr %44, i64 0, i64 %825
  %827 = getelementptr inbounds i8, ptr %826, i64 16
  store <8 x i16> %broadcast.splat3900, ptr %826, align 2, !tbaa !63
  store <8 x i16> %broadcast.splat3900, ptr %827, align 2, !tbaa !63
  %828 = icmp eq i32 %n.vec3891, 16
  br i1 %828, label %middle.block3886, label %vector.body3896.1, !llvm.loop !75

vector.body3896.1:                                ; preds = %vector.ph3889
  %offset.idx3898.1 = add i32 %.lcssa203120342036, 16
  %829 = zext i32 %offset.idx3898.1 to i64
  %830 = getelementptr inbounds [320 x i16], ptr %44, i64 0, i64 %829
  %831 = getelementptr inbounds i8, ptr %830, i64 16
  store <8 x i16> %broadcast.splat3900, ptr %830, align 2, !tbaa !63
  store <8 x i16> %broadcast.splat3900, ptr %831, align 2, !tbaa !63
  %832 = icmp eq i32 %n.vec3891, 32
  br i1 %832, label %middle.block3886, label %vector.body3896.2, !llvm.loop !75

vector.body3896.2:                                ; preds = %vector.body3896.1
  %offset.idx3898.2 = add i32 %.lcssa203120342036, 32
  %833 = zext i32 %offset.idx3898.2 to i64
  %834 = getelementptr inbounds [320 x i16], ptr %44, i64 0, i64 %833
  %835 = getelementptr inbounds i8, ptr %834, i64 16
  store <8 x i16> %broadcast.splat3900, ptr %834, align 2, !tbaa !63
  store <8 x i16> %broadcast.splat3900, ptr %835, align 2, !tbaa !63
  %836 = icmp eq i32 %n.vec3891, 48
  br i1 %836, label %middle.block3886, label %vector.body3896.3, !llvm.loop !75

vector.body3896.3:                                ; preds = %vector.body3896.2
  %offset.idx3898.3 = add i32 %.lcssa203120342036, 48
  %837 = zext i32 %offset.idx3898.3 to i64
  %838 = getelementptr inbounds [320 x i16], ptr %44, i64 0, i64 %837
  %839 = getelementptr inbounds i8, ptr %838, i64 16
  store <8 x i16> %broadcast.splat3900, ptr %838, align 2, !tbaa !63
  store <8 x i16> %broadcast.splat3900, ptr %839, align 2, !tbaa !63
  %840 = icmp eq i32 %n.vec3891, 64
  br i1 %840, label %middle.block3886, label %vector.body3896.4, !llvm.loop !75

vector.body3896.4:                                ; preds = %vector.body3896.3
  %offset.idx3898.4 = add i32 %.lcssa203120342036, 64
  %841 = zext i32 %offset.idx3898.4 to i64
  %842 = getelementptr inbounds [320 x i16], ptr %44, i64 0, i64 %841
  %843 = getelementptr inbounds i8, ptr %842, i64 16
  store <8 x i16> %broadcast.splat3900, ptr %842, align 2, !tbaa !63
  store <8 x i16> %broadcast.splat3900, ptr %843, align 2, !tbaa !63
  %844 = icmp eq i32 %n.vec3891, 80
  br i1 %844, label %middle.block3886, label %vector.body3896.5, !llvm.loop !75

vector.body3896.5:                                ; preds = %vector.body3896.4
  %offset.idx3898.5 = add i32 %.lcssa203120342036, 80
  %845 = zext i32 %offset.idx3898.5 to i64
  %846 = getelementptr inbounds [320 x i16], ptr %44, i64 0, i64 %845
  %847 = getelementptr inbounds i8, ptr %846, i64 16
  store <8 x i16> %broadcast.splat3900, ptr %846, align 2, !tbaa !63
  store <8 x i16> %broadcast.splat3900, ptr %847, align 2, !tbaa !63
  %848 = icmp eq i32 %n.vec3891, 96
  br i1 %848, label %middle.block3886, label %vector.body3896.6, !llvm.loop !75

vector.body3896.6:                                ; preds = %vector.body3896.5
  %offset.idx3898.6 = add i32 %.lcssa203120342036, 96
  %849 = zext i32 %offset.idx3898.6 to i64
  %850 = getelementptr inbounds [320 x i16], ptr %44, i64 0, i64 %849
  %851 = getelementptr inbounds i8, ptr %850, i64 16
  store <8 x i16> %broadcast.splat3900, ptr %850, align 2, !tbaa !63
  store <8 x i16> %broadcast.splat3900, ptr %851, align 2, !tbaa !63
  %852 = icmp eq i32 %n.vec3891, 112
  br i1 %852, label %middle.block3886, label %vector.body3896.7, !llvm.loop !75

vector.body3896.7:                                ; preds = %vector.body3896.6
  %offset.idx3898.7 = add i32 %.lcssa203120342036, 112
  %853 = zext i32 %offset.idx3898.7 to i64
  %854 = getelementptr inbounds [320 x i16], ptr %44, i64 0, i64 %853
  %855 = getelementptr inbounds i8, ptr %854, i64 16
  store <8 x i16> %broadcast.splat3900, ptr %854, align 2, !tbaa !63
  store <8 x i16> %broadcast.splat3900, ptr %855, align 2, !tbaa !63
  br label %middle.block3886

middle.block3886:                                 ; preds = %vector.body3896.7, %vector.body3896.6, %vector.body3896.5, %vector.body3896.4, %vector.body3896.3, %vector.body3896.2, %vector.body3896.1, %vector.ph3889
  %cmp.n3902 = icmp eq i32 %.5949, %n.vec3891
  br i1 %cmp.n3902, label %.loopexit, label %.preheader.preheader3908

856:                                              ; preds = %813
  store ptr @.str.10, ptr %38, align 8, !tbaa !32
  store i32 16209, ptr %19, align 8, !tbaa !15
  br label %.thread

.preheader:                                       ; preds = %.preheader.prol.loopexit, %.preheader
  %.69502032 = phi i32 [ %867, %.preheader ], [ %.69502032.unr, %.preheader.prol.loopexit ]
  %857 = phi i32 [ %868, %.preheader ], [ %.unr, %.preheader.prol.loopexit ]
  %858 = add i32 %857, 1
  %859 = zext i32 %857 to i64
  %860 = getelementptr inbounds [320 x i16], ptr %44, i64 0, i64 %859
  store i16 %.0938, ptr %860, align 2, !tbaa !63
  %861 = add i32 %857, 2
  %862 = zext i32 %858 to i64
  %863 = getelementptr inbounds [320 x i16], ptr %44, i64 0, i64 %862
  store i16 %.0938, ptr %863, align 2, !tbaa !63
  %864 = add i32 %857, 3
  %865 = zext i32 %861 to i64
  %866 = getelementptr inbounds [320 x i16], ptr %44, i64 0, i64 %865
  store i16 %.0938, ptr %866, align 2, !tbaa !63
  %867 = add nsw i32 %.69502032, -4
  %868 = add i32 %857, 4
  %869 = zext i32 %864 to i64
  %870 = getelementptr inbounds [320 x i16], ptr %44, i64 0, i64 %869
  store i16 %.0938, ptr %870, align 2, !tbaa !63
  %.not1220.3 = icmp eq i32 %867, 0
  br i1 %.not1220.3, label %.loopexit, label %.preheader, !llvm.loop !78

.loopexit:                                        ; preds = %.preheader.prol.loopexit, %.preheader, %middle.block3886
  %.lcssa3458 = phi i32 [ %ind.end3894, %middle.block3886 ], [ %.lcssa3964.unr, %.preheader.prol.loopexit ], [ %868, %.preheader ]
  store i32 %.lcssa3458, ptr %43, align 4, !tbaa !21
  br label %871

871:                                              ; preds = %.loopexit, %734
  %.lcssa20312035 = phi i32 [ %738, %734 ], [ %.lcssa3458, %.loopexit ]
  %.391123 = phi i32 [ %.341118.lcssa, %734 ], [ %.381122, %.loopexit ]
  %.351056 = phi i64 [ %736, %734 ], [ %.341055, %.loopexit ]
  %.35995 = phi i32 [ %737, %734 ], [ %.34994, %.loopexit ]
  %.39 = phi ptr [ %.34.lcssa, %734 ], [ %.38, %.loopexit ]
  %872 = icmp ult i32 %.lcssa20312035, %708
  br i1 %872, label %.preheader1312, label %._crit_edge2041, !llvm.loop !79

._crit_edge2041:                                  ; preds = %871, %705
  %.331117.lcssa = phi i32 [ %.321116, %705 ], [ %.391123, %871 ]
  %.291050.lcssa = phi i64 [ %.281049, %705 ], [ %.351056, %871 ]
  %.29989.lcssa = phi i32 [ %.28988, %705 ], [ %.35995, %871 ]
  %.33.lcssa = phi ptr [ %.32, %705 ], [ %.39, %871 ]
  %873 = load i16, ptr %50, align 8, !tbaa !63
  %874 = icmp eq i16 %873, 0
  br i1 %874, label %875, label %876

875:                                              ; preds = %._crit_edge2041
  store ptr @.str.11, ptr %38, align 8, !tbaa !32
  store i32 16209, ptr %19, align 8, !tbaa !15
  br label %.thread

876:                                              ; preds = %._crit_edge2041
  store ptr %45, ptr %46, align 8, !tbaa !67
  store ptr %45, ptr %47, align 8, !tbaa !68
  store i32 9, ptr %48, align 8, !tbaa !69
  %877 = call i32 @inflate_table(i32 noundef 1, ptr noundef nonnull %44, i32 noundef %706, ptr noundef nonnull %46, ptr noundef nonnull %48, ptr noundef nonnull %49) #5
  %.not1221 = icmp eq i32 %877, 0
  br i1 %.not1221, label %879, label %878

878:                                              ; preds = %876
  store ptr @.str.12, ptr %38, align 8, !tbaa !32
  store i32 16209, ptr %19, align 8, !tbaa !15
  br label %.thread

879:                                              ; preds = %876
  %880 = load ptr, ptr %46, align 8, !tbaa !67
  store ptr %880, ptr %51, align 8, !tbaa !80
  store i32 6, ptr %52, align 4, !tbaa !81
  %881 = load i32, ptr %40, align 4, !tbaa !60
  %882 = zext i32 %881 to i64
  %883 = getelementptr inbounds i16, ptr %44, i64 %882
  %884 = load i32, ptr %41, align 8, !tbaa !61
  %885 = call i32 @inflate_table(i32 noundef 2, ptr noundef nonnull %883, i32 noundef %884, ptr noundef nonnull %46, ptr noundef nonnull %52, ptr noundef nonnull %49) #5
  %.not1222 = icmp eq i32 %885, 0
  br i1 %.not1222, label %887, label %886

886:                                              ; preds = %879
  store ptr @.str.13, ptr %38, align 8, !tbaa !32
  store i32 16209, ptr %19, align 8, !tbaa !15
  br label %.thread

887:                                              ; preds = %879
  store i32 16199, ptr %19, align 8, !tbaa !15
  br i1 %53, label %.loopexit1307, label %888

888:                                              ; preds = %887, %72
  %.411125 = phi i32 [ %.01084, %72 ], [ %.331117.lcssa, %887 ]
  %.371058 = phi i64 [ %.01021, %72 ], [ %.291050.lcssa, %887 ]
  %.37997 = phi i32 [ %.0960, %72 ], [ %.29989.lcssa, %887 ]
  %.2930 = phi i32 [ %.0928, %72 ], [ 0, %887 ]
  %.41 = phi ptr [ %.0927, %72 ], [ %.33.lcssa, %887 ]
  store i32 16200, ptr %19, align 8, !tbaa !15
  br label %889

889:                                              ; preds = %888, %72
  %.421126 = phi i32 [ %.01084, %72 ], [ %.411125, %888 ]
  %.381059 = phi i64 [ %.01021, %72 ], [ %.371058, %888 ]
  %.38998 = phi i32 [ %.0960, %72 ], [ %.37997, %888 ]
  %.3931 = phi i32 [ %.0928, %72 ], [ %.2930, %888 ]
  %.42 = phi ptr [ %.0927, %72 ], [ %.41, %888 ]
  %890 = icmp ugt i32 %.421126, 5
  %891 = icmp ugt i32 %.01082, 257
  %or.cond5 = select i1 %890, i1 %891, i1 false
  br i1 %or.cond5, label %892, label %902

892:                                              ; preds = %889
  store ptr %.01149, ptr %7, align 8, !tbaa !5
  store i32 %.01082, ptr %24, align 8, !tbaa !17
  store ptr %.42, ptr %0, align 8, !tbaa !12
  store i32 %.421126, ptr %26, align 8, !tbaa !13
  store i64 %.381059, ptr %28, align 8, !tbaa !18
  store i32 %.38998, ptr %30, align 8, !tbaa !19
  call void @inflate_fast(ptr noundef nonnull %0, i32 noundef %.0954) #5
  %893 = load ptr, ptr %7, align 8, !tbaa !5
  %894 = load i32, ptr %24, align 8, !tbaa !17
  %895 = load ptr, ptr %0, align 8, !tbaa !12
  %896 = load i32, ptr %26, align 8, !tbaa !13
  %897 = load i64, ptr %28, align 8, !tbaa !18
  %898 = load i32, ptr %30, align 8, !tbaa !19
  %899 = load i32, ptr %19, align 8, !tbaa !15
  %900 = icmp eq i32 %899, 16191
  br i1 %900, label %901, label %.thread

901:                                              ; preds = %892
  store i32 -1, ptr %54, align 4, !tbaa !82
  br label %.thread

902:                                              ; preds = %889
  store i32 0, ptr %54, align 4, !tbaa !82
  %903 = load ptr, ptr %47, align 8, !tbaa !68
  %904 = load i32, ptr %48, align 8, !tbaa !69
  %notmask1223 = shl nsw i32 -1, %904
  %905 = xor i32 %notmask1223, -1
  %906 = trunc i64 %.381059 to i32
  %907 = and i32 %905, %906
  %908 = zext nneg i32 %907 to i64
  %909 = getelementptr inbounds %struct.code, ptr %903, i64 %908
  %.sroa.1878.0..sroa_idx792048 = getelementptr inbounds i8, ptr %909, i64 1
  %.sroa.1878.0.copyload802049 = load i8, ptr %.sroa.1878.0..sroa_idx792048, align 1, !tbaa !23
  %910 = zext i8 %.sroa.1878.0.copyload802049 to i32
  %.not12242050 = icmp ult i32 %.38998, %910
  br i1 %.not12242050, label %.lr.ph2056.preheader, label %._crit_edge2057

.lr.ph2056.preheader:                             ; preds = %902
  %911 = zext nneg i32 %.38998 to i64
  br label %.lr.ph2056

.lr.ph2056:                                       ; preds = %.lr.ph2056.preheader, %913
  %indvars.iv2864 = phi i64 [ %911, %.lr.ph2056.preheader ], [ %indvars.iv.next2865, %913 ]
  %.432054 = phi ptr [ %.42, %.lr.ph2056.preheader ], [ %915, %913 ]
  %.3910602052 = phi i64 [ %.381059, %.lr.ph2056.preheader ], [ %919, %913 ]
  %.4311272051 = phi i32 [ %.421126, %.lr.ph2056.preheader ], [ %914, %913 ]
  %912 = icmp eq i32 %.4311272051, 0
  br i1 %912, label %.loopexit1307.loopexit2990, label %913

913:                                              ; preds = %.lr.ph2056
  %914 = add i32 %.4311272051, -1
  %915 = getelementptr inbounds i8, ptr %.432054, i64 1
  %916 = load i8, ptr %.432054, align 1, !tbaa !23
  %917 = zext i8 %916 to i64
  %918 = shl i64 %917, %indvars.iv2864
  %919 = add i64 %918, %.3910602052
  %indvars.iv.next2865 = add nuw nsw i64 %indvars.iv2864, 8
  %920 = trunc i64 %919 to i32
  %921 = and i32 %905, %920
  %922 = zext nneg i32 %921 to i64
  %923 = getelementptr inbounds %struct.code, ptr %903, i64 %922
  %.sroa.1878.0..sroa_idx79 = getelementptr inbounds i8, ptr %923, i64 1
  %.sroa.1878.0.copyload80 = load i8, ptr %.sroa.1878.0..sroa_idx79, align 1, !tbaa !23
  %924 = zext i8 %.sroa.1878.0.copyload80 to i64
  %.not1224 = icmp ult i64 %indvars.iv.next2865, %924
  br i1 %.not1224, label %.lr.ph2056, label %._crit_edge2057.loopexit

._crit_edge2057.loopexit:                         ; preds = %913
  %925 = zext i8 %.sroa.1878.0.copyload80 to i32
  %926 = trunc nuw i64 %indvars.iv.next2865 to i32
  br label %._crit_edge2057

._crit_edge2057:                                  ; preds = %._crit_edge2057.loopexit, %902
  %.lcssa2047 = phi ptr [ %909, %902 ], [ %923, %._crit_edge2057.loopexit ]
  %.431127.lcssa = phi i32 [ %.421126, %902 ], [ %914, %._crit_edge2057.loopexit ]
  %.391060.lcssa = phi i64 [ %.381059, %902 ], [ %919, %._crit_edge2057.loopexit ]
  %.39999.lcssa = phi i32 [ %.38998, %902 ], [ %926, %._crit_edge2057.loopexit ]
  %.43.lcssa = phi ptr [ %.42, %902 ], [ %915, %._crit_edge2057.loopexit ]
  %.sroa.1878.0.copyload80.lcssa = phi i8 [ %.sroa.1878.0.copyload802049, %902 ], [ %.sroa.1878.0.copyload80, %._crit_edge2057.loopexit ]
  %.lcssa1449 = phi i32 [ %910, %902 ], [ %925, %._crit_edge2057.loopexit ]
  %.sroa.42.0..sroa_idx108.le = getelementptr inbounds i8, ptr %.lcssa2047, i64 2
  %.sroa.42.0.copyload109.le = load i16, ptr %.sroa.42.0..sroa_idx108.le, align 2, !tbaa !63
  %.sroa.065.0.copyload74 = load i8, ptr %.lcssa2047, align 2, !tbaa !23
  %927 = add i8 %.sroa.065.0.copyload74, -1
  %or.cond1297 = icmp ult i8 %927, 15
  br i1 %or.cond1297, label %.preheader1346, label %962

.preheader1346:                                   ; preds = %._crit_edge2057
  %928 = zext nneg i8 %.sroa.065.0.copyload74 to i32
  %929 = zext i16 %.sroa.42.0.copyload109.le to i32
  %930 = add nuw nsw i32 %.lcssa1449, %928
  %notmask1226 = shl nsw i32 -1, %930
  %931 = xor i32 %notmask1226, -1
  %932 = trunc i64 %.391060.lcssa to i32
  %933 = and i32 %932, %931
  %934 = lshr i32 %933, %.lcssa1449
  %935 = add nuw i32 %934, %929
  %936 = zext i32 %935 to i64
  %937 = getelementptr inbounds %struct.code, ptr %903, i64 %936
  %.sroa.1878.0..sroa_idx812067 = getelementptr inbounds i8, ptr %937, i64 1
  %.sroa.1878.0.copyload822068 = load i8, ptr %.sroa.1878.0..sroa_idx812067, align 1, !tbaa !23
  %938 = zext i8 %.sroa.1878.0.copyload822068 to i32
  %939 = add nuw nsw i32 %.lcssa1449, %938
  %.not12272069 = icmp ugt i32 %939, %.39999.lcssa
  br i1 %.not12272069, label %.lr.ph2074.preheader, label %._crit_edge2075

.lr.ph2074.preheader:                             ; preds = %.preheader1346
  %940 = zext nneg i32 %.39999.lcssa to i64
  br label %.lr.ph2074

.lr.ph2074:                                       ; preds = %.lr.ph2074.preheader, %942
  %indvars.iv2868 = phi i64 [ %940, %.lr.ph2074.preheader ], [ %indvars.iv.next2869, %942 ]
  %.442073 = phi ptr [ %.43.lcssa, %.lr.ph2074.preheader ], [ %944, %942 ]
  %.4010612071 = phi i64 [ %.391060.lcssa, %.lr.ph2074.preheader ], [ %948, %942 ]
  %.4411282070 = phi i32 [ %.431127.lcssa, %.lr.ph2074.preheader ], [ %943, %942 ]
  %941 = icmp eq i32 %.4411282070, 0
  br i1 %941, label %.loopexit1307.loopexit2989, label %942

942:                                              ; preds = %.lr.ph2074
  %943 = add i32 %.4411282070, -1
  %944 = getelementptr inbounds i8, ptr %.442073, i64 1
  %945 = load i8, ptr %.442073, align 1, !tbaa !23
  %946 = zext i8 %945 to i64
  %947 = shl i64 %946, %indvars.iv2868
  %948 = add i64 %947, %.4010612071
  %indvars.iv.next2869 = add nuw nsw i64 %indvars.iv2868, 8
  %949 = trunc i64 %948 to i32
  %950 = and i32 %949, %931
  %951 = lshr i32 %950, %.lcssa1449
  %952 = add nuw i32 %951, %929
  %953 = zext i32 %952 to i64
  %954 = getelementptr inbounds %struct.code, ptr %903, i64 %953
  %.sroa.1878.0..sroa_idx81 = getelementptr inbounds i8, ptr %954, i64 1
  %.sroa.1878.0.copyload82 = load i8, ptr %.sroa.1878.0..sroa_idx81, align 1, !tbaa !23
  %955 = zext i8 %.sroa.1878.0.copyload82 to i32
  %956 = add nuw nsw i32 %.lcssa1449, %955
  %957 = zext nneg i32 %956 to i64
  %.not1227 = icmp ult i64 %indvars.iv.next2869, %957
  br i1 %.not1227, label %.lr.ph2074, label %._crit_edge2075.loopexit

._crit_edge2075.loopexit:                         ; preds = %942
  %958 = trunc nuw i64 %indvars.iv.next2869 to i32
  br label %._crit_edge2075

._crit_edge2075:                                  ; preds = %._crit_edge2075.loopexit, %.preheader1346
  %.441128.lcssa = phi i32 [ %.431127.lcssa, %.preheader1346 ], [ %943, %._crit_edge2075.loopexit ]
  %.401061.lcssa = phi i64 [ %.391060.lcssa, %.preheader1346 ], [ %948, %._crit_edge2075.loopexit ]
  %.401000.lcssa = phi i32 [ %.39999.lcssa, %.preheader1346 ], [ %958, %._crit_edge2075.loopexit ]
  %.44.lcssa = phi ptr [ %.43.lcssa, %.preheader1346 ], [ %944, %._crit_edge2075.loopexit ]
  %.lcssa1462 = phi ptr [ %937, %.preheader1346 ], [ %954, %._crit_edge2075.loopexit ]
  %.sroa.1878.0.copyload82.lcssa = phi i8 [ %.sroa.1878.0.copyload822068, %.preheader1346 ], [ %.sroa.1878.0.copyload82, %._crit_edge2075.loopexit ]
  %.sroa.42.0..sroa_idx110 = getelementptr inbounds i8, ptr %.lcssa1462, i64 2
  %.sroa.42.0.copyload111 = load i16, ptr %.sroa.42.0..sroa_idx110, align 2, !tbaa !63
  %.sroa.065.0.copyload75 = load i8, ptr %.lcssa1462, align 2, !tbaa !23
  %959 = zext nneg i8 %.sroa.1878.0.copyload80.lcssa to i64
  %960 = lshr i64 %.401061.lcssa, %959
  %961 = sub i32 %.401000.lcssa, %.lcssa1449
  br label %962

962:                                              ; preds = %._crit_edge2057, %._crit_edge2075
  %963 = phi i32 [ %.lcssa1449, %._crit_edge2075 ], [ 0, %._crit_edge2057 ]
  %.451129 = phi i32 [ %.441128.lcssa, %._crit_edge2075 ], [ %.431127.lcssa, %._crit_edge2057 ]
  %.411062 = phi i64 [ %960, %._crit_edge2075 ], [ %.391060.lcssa, %._crit_edge2057 ]
  %.411001 = phi i32 [ %961, %._crit_edge2075 ], [ %.39999.lcssa, %._crit_edge2057 ]
  %.sroa.42.0 = phi i16 [ %.sroa.42.0.copyload111, %._crit_edge2075 ], [ %.sroa.42.0.copyload109.le, %._crit_edge2057 ]
  %.sroa.1878.0 = phi i8 [ %.sroa.1878.0.copyload82.lcssa, %._crit_edge2075 ], [ %.sroa.1878.0.copyload80.lcssa, %._crit_edge2057 ]
  %.sroa.065.0 = phi i8 [ %.sroa.065.0.copyload75, %._crit_edge2075 ], [ %.sroa.065.0.copyload74, %._crit_edge2057 ]
  %.45 = phi ptr [ %.44.lcssa, %._crit_edge2075 ], [ %.43.lcssa, %._crit_edge2057 ]
  %964 = zext i8 %.sroa.1878.0 to i32
  %965 = zext nneg i8 %.sroa.1878.0 to i64
  %966 = lshr i64 %.411062, %965
  %967 = sub i32 %.411001, %964
  %968 = add nuw nsw i32 %963, %964
  store i32 %968, ptr %54, align 4, !tbaa !82
  %969 = zext i16 %.sroa.42.0 to i32
  store i32 %969, ptr %39, align 4, !tbaa !43
  %970 = zext i8 %.sroa.065.0 to i32
  %971 = icmp eq i8 %.sroa.065.0, 0
  br i1 %971, label %972, label %973

972:                                              ; preds = %962
  store i32 16205, ptr %19, align 8, !tbaa !15
  br label %.thread

973:                                              ; preds = %962
  %974 = and i32 %970, 32
  %.not1228 = icmp eq i32 %974, 0
  br i1 %.not1228, label %976, label %975

975:                                              ; preds = %973
  store i32 -1, ptr %54, align 4, !tbaa !82
  store i32 16191, ptr %19, align 8, !tbaa !15
  br label %.thread

976:                                              ; preds = %973
  %977 = and i32 %970, 64
  %.not1229 = icmp eq i32 %977, 0
  br i1 %.not1229, label %979, label %978

978:                                              ; preds = %976
  store ptr @.str.14, ptr %38, align 8, !tbaa !32
  store i32 16209, ptr %19, align 8, !tbaa !15
  br label %.thread

979:                                              ; preds = %976
  %980 = and i32 %970, 15
  store i32 %980, ptr %55, align 4, !tbaa !20
  store i32 16201, ptr %19, align 8, !tbaa !15
  br label %981

981:                                              ; preds = %._crit_edge2919, %979
  %982 = phi i32 [ %.pre2920, %._crit_edge2919 ], [ %980, %979 ]
  %.461130 = phi i32 [ %.01084, %._crit_edge2919 ], [ %.451129, %979 ]
  %.421063 = phi i64 [ %.01021, %._crit_edge2919 ], [ %966, %979 ]
  %.421002 = phi i32 [ %.0960, %._crit_edge2919 ], [ %967, %979 ]
  %.4932 = phi i32 [ %.0928, %._crit_edge2919 ], [ %.3931, %979 ]
  %.46 = phi ptr [ %.0927, %._crit_edge2919 ], [ %.45, %979 ]
  %.not1230 = icmp eq i32 %982, 0
  br i1 %.not1230, label %._crit_edge2921, label %.preheader1344

._crit_edge2921:                                  ; preds = %981
  %.pre2922 = load i32, ptr %39, align 4, !tbaa !43
  br label %1005

.preheader1344:                                   ; preds = %981
  %983 = icmp ult i32 %.421002, %982
  br i1 %983, label %.lr.ph2086, label %._crit_edge2087

.lr.ph2086:                                       ; preds = %.preheader1344, %985
  %.472085 = phi ptr [ %987, %985 ], [ %.46, %.preheader1344 ]
  %.4310032084 = phi i32 [ %993, %985 ], [ %.421002, %.preheader1344 ]
  %.4310642083 = phi i64 [ %992, %985 ], [ %.421063, %.preheader1344 ]
  %.4711312082 = phi i32 [ %986, %985 ], [ %.461130, %.preheader1344 ]
  %984 = icmp eq i32 %.4711312082, 0
  br i1 %984, label %.loopexit1307.loopexit2988, label %985

985:                                              ; preds = %.lr.ph2086
  %986 = add i32 %.4711312082, -1
  %987 = getelementptr inbounds i8, ptr %.472085, i64 1
  %988 = load i8, ptr %.472085, align 1, !tbaa !23
  %989 = zext i8 %988 to i64
  %990 = zext nneg i32 %.4310032084 to i64
  %991 = shl i64 %989, %990
  %992 = add i64 %991, %.4310642083
  %993 = add i32 %.4310032084, 8
  %994 = icmp ult i32 %993, %982
  br i1 %994, label %.lr.ph2086, label %._crit_edge2087, !llvm.loop !83

._crit_edge2087:                                  ; preds = %985, %.preheader1344
  %.471131.lcssa = phi i32 [ %.461130, %.preheader1344 ], [ %986, %985 ]
  %.431064.lcssa = phi i64 [ %.421063, %.preheader1344 ], [ %992, %985 ]
  %.431003.lcssa = phi i32 [ %.421002, %.preheader1344 ], [ %993, %985 ]
  %.47.lcssa = phi ptr [ %.46, %.preheader1344 ], [ %987, %985 ]
  %995 = trunc i64 %.431064.lcssa to i32
  %notmask1231 = shl nsw i32 -1, %982
  %996 = xor i32 %notmask1231, -1
  %997 = and i32 %995, %996
  %998 = load i32, ptr %39, align 4, !tbaa !43
  %999 = add i32 %998, %997
  store i32 %999, ptr %39, align 4, !tbaa !43
  %1000 = zext nneg i32 %982 to i64
  %1001 = lshr i64 %.431064.lcssa, %1000
  %1002 = sub i32 %.431003.lcssa, %982
  %1003 = load i32, ptr %54, align 4, !tbaa !82
  %1004 = add i32 %1003, %982
  store i32 %1004, ptr %54, align 4, !tbaa !82
  br label %1005

1005:                                             ; preds = %._crit_edge2921, %._crit_edge2087
  %1006 = phi i32 [ %999, %._crit_edge2087 ], [ %.pre2922, %._crit_edge2921 ]
  %.481132 = phi i32 [ %.471131.lcssa, %._crit_edge2087 ], [ %.461130, %._crit_edge2921 ]
  %.441065 = phi i64 [ %1001, %._crit_edge2087 ], [ %.421063, %._crit_edge2921 ]
  %.441004 = phi i32 [ %1002, %._crit_edge2087 ], [ %.421002, %._crit_edge2921 ]
  %.48 = phi ptr [ %.47.lcssa, %._crit_edge2087 ], [ %.46, %._crit_edge2921 ]
  store i32 %1006, ptr %56, align 8, !tbaa !84
  store i32 16202, ptr %19, align 8, !tbaa !15
  br label %1007

1007:                                             ; preds = %1005, %72
  %.491133 = phi i32 [ %.01084, %72 ], [ %.481132, %1005 ]
  %.451066 = phi i64 [ %.01021, %72 ], [ %.441065, %1005 ]
  %.451005 = phi i32 [ %.0960, %72 ], [ %.441004, %1005 ]
  %.5933 = phi i32 [ %.0928, %72 ], [ %.4932, %1005 ]
  %.49 = phi ptr [ %.0927, %72 ], [ %.48, %1005 ]
  %1008 = load ptr, ptr %51, align 8, !tbaa !80
  %1009 = load i32, ptr %52, align 4, !tbaa !81
  %notmask1232 = shl nsw i32 -1, %1009
  %1010 = xor i32 %notmask1232, -1
  %1011 = trunc i64 %.451066 to i32
  %1012 = and i32 %1010, %1011
  %1013 = zext nneg i32 %1012 to i64
  %1014 = getelementptr inbounds %struct.code, ptr %1008, i64 %1013
  %.sroa.1878.0..sroa_idx832093 = getelementptr inbounds i8, ptr %1014, i64 1
  %.sroa.1878.0.copyload842094 = load i8, ptr %.sroa.1878.0..sroa_idx832093, align 1, !tbaa !23
  %1015 = zext i8 %.sroa.1878.0.copyload842094 to i32
  %.not12332095 = icmp ult i32 %.451005, %1015
  br i1 %.not12332095, label %.lr.ph2101.preheader, label %._crit_edge2102

.lr.ph2101.preheader:                             ; preds = %1007
  %1016 = zext nneg i32 %.451005 to i64
  br label %.lr.ph2101

.lr.ph2101:                                       ; preds = %.lr.ph2101.preheader, %1018
  %indvars.iv2873 = phi i64 [ %1016, %.lr.ph2101.preheader ], [ %indvars.iv.next2874, %1018 ]
  %.502099 = phi ptr [ %.49, %.lr.ph2101.preheader ], [ %1020, %1018 ]
  %.4610672097 = phi i64 [ %.451066, %.lr.ph2101.preheader ], [ %1024, %1018 ]
  %.5011342096 = phi i32 [ %.491133, %.lr.ph2101.preheader ], [ %1019, %1018 ]
  %1017 = icmp eq i32 %.5011342096, 0
  br i1 %1017, label %.loopexit1307.loopexit2987, label %1018

1018:                                             ; preds = %.lr.ph2101
  %1019 = add i32 %.5011342096, -1
  %1020 = getelementptr inbounds i8, ptr %.502099, i64 1
  %1021 = load i8, ptr %.502099, align 1, !tbaa !23
  %1022 = zext i8 %1021 to i64
  %1023 = shl i64 %1022, %indvars.iv2873
  %1024 = add i64 %1023, %.4610672097
  %indvars.iv.next2874 = add nuw nsw i64 %indvars.iv2873, 8
  %1025 = trunc i64 %1024 to i32
  %1026 = and i32 %1010, %1025
  %1027 = zext nneg i32 %1026 to i64
  %1028 = getelementptr inbounds %struct.code, ptr %1008, i64 %1027
  %.sroa.1878.0..sroa_idx83 = getelementptr inbounds i8, ptr %1028, i64 1
  %.sroa.1878.0.copyload84 = load i8, ptr %.sroa.1878.0..sroa_idx83, align 1, !tbaa !23
  %1029 = zext i8 %.sroa.1878.0.copyload84 to i64
  %.not1233 = icmp ult i64 %indvars.iv.next2874, %1029
  br i1 %.not1233, label %.lr.ph2101, label %._crit_edge2102.loopexit

._crit_edge2102.loopexit:                         ; preds = %1018
  %1030 = zext i8 %.sroa.1878.0.copyload84 to i32
  %1031 = trunc nuw i64 %indvars.iv.next2874 to i32
  br label %._crit_edge2102

._crit_edge2102:                                  ; preds = %._crit_edge2102.loopexit, %1007
  %.lcssa2092 = phi ptr [ %1014, %1007 ], [ %1028, %._crit_edge2102.loopexit ]
  %.501134.lcssa = phi i32 [ %.491133, %1007 ], [ %1019, %._crit_edge2102.loopexit ]
  %.461067.lcssa = phi i64 [ %.451066, %1007 ], [ %1024, %._crit_edge2102.loopexit ]
  %.461006.lcssa = phi i32 [ %.451005, %1007 ], [ %1031, %._crit_edge2102.loopexit ]
  %.50.lcssa = phi ptr [ %.49, %1007 ], [ %1020, %._crit_edge2102.loopexit ]
  %.sroa.1878.0.copyload84.lcssa = phi i8 [ %.sroa.1878.0.copyload842094, %1007 ], [ %.sroa.1878.0.copyload84, %._crit_edge2102.loopexit ]
  %.lcssa1472 = phi i32 [ %1015, %1007 ], [ %1030, %._crit_edge2102.loopexit ]
  %.sroa.42.0..sroa_idx112.le = getelementptr inbounds i8, ptr %.lcssa2092, i64 2
  %.sroa.42.0.copyload113.le = load i16, ptr %.sroa.42.0..sroa_idx112.le, align 2, !tbaa !63
  %.sroa.065.0.copyload76 = load i8, ptr %.lcssa2092, align 2, !tbaa !23
  %1032 = icmp ult i8 %.sroa.065.0.copyload76, 16
  br i1 %1032, label %.preheader1341, label %._crit_edge2102._crit_edge

._crit_edge2102._crit_edge:                       ; preds = %._crit_edge2102
  %.pre2923 = load i32, ptr %54, align 4, !tbaa !82
  br label %1069

.preheader1341:                                   ; preds = %._crit_edge2102
  %1033 = zext nneg i8 %.sroa.065.0.copyload76 to i32
  %1034 = zext i16 %.sroa.42.0.copyload113.le to i32
  %1035 = add nuw nsw i32 %.lcssa1472, %1033
  %notmask1234 = shl nsw i32 -1, %1035
  %1036 = xor i32 %notmask1234, -1
  %1037 = trunc i64 %.461067.lcssa to i32
  %1038 = and i32 %1037, %1036
  %1039 = lshr i32 %1038, %.lcssa1472
  %1040 = add nuw i32 %1039, %1034
  %1041 = zext i32 %1040 to i64
  %1042 = getelementptr inbounds %struct.code, ptr %1008, i64 %1041
  %.sroa.1878.0..sroa_idx852112 = getelementptr inbounds i8, ptr %1042, i64 1
  %.sroa.1878.0.copyload862113 = load i8, ptr %.sroa.1878.0..sroa_idx852112, align 1, !tbaa !23
  %1043 = zext i8 %.sroa.1878.0.copyload862113 to i32
  %1044 = add nuw nsw i32 %.lcssa1472, %1043
  %.not12352114 = icmp ugt i32 %1044, %.461006.lcssa
  br i1 %.not12352114, label %.lr.ph2119.preheader, label %._crit_edge2120

.lr.ph2119.preheader:                             ; preds = %.preheader1341
  %1045 = zext nneg i32 %.461006.lcssa to i64
  br label %.lr.ph2119

.lr.ph2119:                                       ; preds = %.lr.ph2119.preheader, %1047
  %indvars.iv2877 = phi i64 [ %1045, %.lr.ph2119.preheader ], [ %indvars.iv.next2878, %1047 ]
  %.512118 = phi ptr [ %.50.lcssa, %.lr.ph2119.preheader ], [ %1049, %1047 ]
  %.4710682116 = phi i64 [ %.461067.lcssa, %.lr.ph2119.preheader ], [ %1053, %1047 ]
  %.5111352115 = phi i32 [ %.501134.lcssa, %.lr.ph2119.preheader ], [ %1048, %1047 ]
  %1046 = icmp eq i32 %.5111352115, 0
  br i1 %1046, label %.loopexit1307.loopexit2986, label %1047

1047:                                             ; preds = %.lr.ph2119
  %1048 = add i32 %.5111352115, -1
  %1049 = getelementptr inbounds i8, ptr %.512118, i64 1
  %1050 = load i8, ptr %.512118, align 1, !tbaa !23
  %1051 = zext i8 %1050 to i64
  %1052 = shl i64 %1051, %indvars.iv2877
  %1053 = add i64 %1052, %.4710682116
  %indvars.iv.next2878 = add nuw nsw i64 %indvars.iv2877, 8
  %1054 = trunc i64 %1053 to i32
  %1055 = and i32 %1054, %1036
  %1056 = lshr i32 %1055, %.lcssa1472
  %1057 = add nuw i32 %1056, %1034
  %1058 = zext i32 %1057 to i64
  %1059 = getelementptr inbounds %struct.code, ptr %1008, i64 %1058
  %.sroa.1878.0..sroa_idx85 = getelementptr inbounds i8, ptr %1059, i64 1
  %.sroa.1878.0.copyload86 = load i8, ptr %.sroa.1878.0..sroa_idx85, align 1, !tbaa !23
  %1060 = zext i8 %.sroa.1878.0.copyload86 to i32
  %1061 = add nuw nsw i32 %.lcssa1472, %1060
  %1062 = zext nneg i32 %1061 to i64
  %.not1235 = icmp ult i64 %indvars.iv.next2878, %1062
  br i1 %.not1235, label %.lr.ph2119, label %._crit_edge2120.loopexit

._crit_edge2120.loopexit:                         ; preds = %1047
  %1063 = trunc nuw i64 %indvars.iv.next2878 to i32
  br label %._crit_edge2120

._crit_edge2120:                                  ; preds = %._crit_edge2120.loopexit, %.preheader1341
  %.511135.lcssa = phi i32 [ %.501134.lcssa, %.preheader1341 ], [ %1048, %._crit_edge2120.loopexit ]
  %.471068.lcssa = phi i64 [ %.461067.lcssa, %.preheader1341 ], [ %1053, %._crit_edge2120.loopexit ]
  %.471007.lcssa = phi i32 [ %.461006.lcssa, %.preheader1341 ], [ %1063, %._crit_edge2120.loopexit ]
  %.51.lcssa = phi ptr [ %.50.lcssa, %.preheader1341 ], [ %1049, %._crit_edge2120.loopexit ]
  %.lcssa1485 = phi ptr [ %1042, %.preheader1341 ], [ %1059, %._crit_edge2120.loopexit ]
  %.sroa.1878.0.copyload86.lcssa = phi i8 [ %.sroa.1878.0.copyload862113, %.preheader1341 ], [ %.sroa.1878.0.copyload86, %._crit_edge2120.loopexit ]
  %.sroa.42.0..sroa_idx114 = getelementptr inbounds i8, ptr %.lcssa1485, i64 2
  %.sroa.42.0.copyload115 = load i16, ptr %.sroa.42.0..sroa_idx114, align 2, !tbaa !63
  %.sroa.065.0.copyload77 = load i8, ptr %.lcssa1485, align 2, !tbaa !23
  %1064 = zext nneg i8 %.sroa.1878.0.copyload84.lcssa to i64
  %1065 = lshr i64 %.471068.lcssa, %1064
  %1066 = sub i32 %.471007.lcssa, %.lcssa1472
  %1067 = load i32, ptr %54, align 4, !tbaa !82
  %1068 = add nsw i32 %1067, %.lcssa1472
  br label %1069

1069:                                             ; preds = %._crit_edge2102._crit_edge, %._crit_edge2120
  %1070 = phi i32 [ %1068, %._crit_edge2120 ], [ %.pre2923, %._crit_edge2102._crit_edge ]
  %.521136 = phi i32 [ %.511135.lcssa, %._crit_edge2120 ], [ %.501134.lcssa, %._crit_edge2102._crit_edge ]
  %.481069 = phi i64 [ %1065, %._crit_edge2120 ], [ %.461067.lcssa, %._crit_edge2102._crit_edge ]
  %.481008 = phi i32 [ %1066, %._crit_edge2120 ], [ %.461006.lcssa, %._crit_edge2102._crit_edge ]
  %.sroa.42.1 = phi i16 [ %.sroa.42.0.copyload115, %._crit_edge2120 ], [ %.sroa.42.0.copyload113.le, %._crit_edge2102._crit_edge ]
  %.sroa.1878.1 = phi i8 [ %.sroa.1878.0.copyload86.lcssa, %._crit_edge2120 ], [ %.sroa.1878.0.copyload84.lcssa, %._crit_edge2102._crit_edge ]
  %.sroa.065.1 = phi i8 [ %.sroa.065.0.copyload77, %._crit_edge2120 ], [ %.sroa.065.0.copyload76, %._crit_edge2102._crit_edge ]
  %.52 = phi ptr [ %.51.lcssa, %._crit_edge2120 ], [ %.50.lcssa, %._crit_edge2102._crit_edge ]
  %1071 = zext i8 %.sroa.1878.1 to i32
  %1072 = zext nneg i8 %.sroa.1878.1 to i64
  %1073 = lshr i64 %.481069, %1072
  %1074 = sub i32 %.481008, %1071
  %1075 = add nsw i32 %1070, %1071
  store i32 %1075, ptr %54, align 4, !tbaa !82
  %1076 = zext i8 %.sroa.065.1 to i32
  %1077 = and i32 %1076, 64
  %.not1236 = icmp eq i32 %1077, 0
  br i1 %.not1236, label %1079, label %1078

1078:                                             ; preds = %1069
  store ptr @.str.15, ptr %38, align 8, !tbaa !32
  store i32 16209, ptr %19, align 8, !tbaa !15
  br label %.thread

1079:                                             ; preds = %1069
  %1080 = zext i16 %.sroa.42.1 to i32
  store i32 %1080, ptr %57, align 8, !tbaa !85
  %1081 = and i32 %1076, 15
  store i32 %1081, ptr %55, align 4, !tbaa !20
  store i32 16203, ptr %19, align 8, !tbaa !15
  br label %1082

1082:                                             ; preds = %._crit_edge2924, %1079
  %1083 = phi i32 [ %.pre2925, %._crit_edge2924 ], [ %1081, %1079 ]
  %.531137 = phi i32 [ %.01084, %._crit_edge2924 ], [ %.521136, %1079 ]
  %.491070 = phi i64 [ %.01021, %._crit_edge2924 ], [ %1073, %1079 ]
  %.491009 = phi i32 [ %.0960, %._crit_edge2924 ], [ %1074, %1079 ]
  %.6934 = phi i32 [ %.0928, %._crit_edge2924 ], [ %.5933, %1079 ]
  %.53 = phi ptr [ %.0927, %._crit_edge2924 ], [ %.52, %1079 ]
  %.not1237 = icmp eq i32 %1083, 0
  br i1 %.not1237, label %1106, label %.preheader1339

.preheader1339:                                   ; preds = %1082
  %1084 = icmp ult i32 %.491009, %1083
  br i1 %1084, label %.lr.ph2131, label %._crit_edge2132

.lr.ph2131:                                       ; preds = %.preheader1339, %1086
  %.542130 = phi ptr [ %1088, %1086 ], [ %.53, %.preheader1339 ]
  %.5010102129 = phi i32 [ %1094, %1086 ], [ %.491009, %.preheader1339 ]
  %.5010712128 = phi i64 [ %1093, %1086 ], [ %.491070, %.preheader1339 ]
  %.5411382127 = phi i32 [ %1087, %1086 ], [ %.531137, %.preheader1339 ]
  %1085 = icmp eq i32 %.5411382127, 0
  br i1 %1085, label %.loopexit1307.loopexit2985, label %1086

1086:                                             ; preds = %.lr.ph2131
  %1087 = add i32 %.5411382127, -1
  %1088 = getelementptr inbounds i8, ptr %.542130, i64 1
  %1089 = load i8, ptr %.542130, align 1, !tbaa !23
  %1090 = zext i8 %1089 to i64
  %1091 = zext nneg i32 %.5010102129 to i64
  %1092 = shl i64 %1090, %1091
  %1093 = add i64 %1092, %.5010712128
  %1094 = add i32 %.5010102129, 8
  %1095 = icmp ult i32 %1094, %1083
  br i1 %1095, label %.lr.ph2131, label %._crit_edge2132, !llvm.loop !86

._crit_edge2132:                                  ; preds = %1086, %.preheader1339
  %.541138.lcssa = phi i32 [ %.531137, %.preheader1339 ], [ %1087, %1086 ]
  %.501071.lcssa = phi i64 [ %.491070, %.preheader1339 ], [ %1093, %1086 ]
  %.501010.lcssa = phi i32 [ %.491009, %.preheader1339 ], [ %1094, %1086 ]
  %.54.lcssa = phi ptr [ %.53, %.preheader1339 ], [ %1088, %1086 ]
  %1096 = trunc i64 %.501071.lcssa to i32
  %notmask1238 = shl nsw i32 -1, %1083
  %1097 = xor i32 %notmask1238, -1
  %1098 = and i32 %1096, %1097
  %1099 = load i32, ptr %57, align 8, !tbaa !85
  %1100 = add i32 %1099, %1098
  store i32 %1100, ptr %57, align 8, !tbaa !85
  %1101 = zext nneg i32 %1083 to i64
  %1102 = lshr i64 %.501071.lcssa, %1101
  %1103 = sub i32 %.501010.lcssa, %1083
  %1104 = load i32, ptr %54, align 4, !tbaa !82
  %1105 = add i32 %1104, %1083
  store i32 %1105, ptr %54, align 4, !tbaa !82
  br label %1106

1106:                                             ; preds = %._crit_edge2132, %1082
  %.551139 = phi i32 [ %.541138.lcssa, %._crit_edge2132 ], [ %.531137, %1082 ]
  %.511072 = phi i64 [ %1102, %._crit_edge2132 ], [ %.491070, %1082 ]
  %.511011 = phi i32 [ %1103, %._crit_edge2132 ], [ %.491009, %1082 ]
  %.55 = phi ptr [ %.54.lcssa, %._crit_edge2132 ], [ %.53, %1082 ]
  store i32 16204, ptr %19, align 8, !tbaa !15
  br label %1107

1107:                                             ; preds = %1106, %72
  %.561140 = phi i32 [ %.01084, %72 ], [ %.551139, %1106 ]
  %.521073 = phi i64 [ %.01021, %72 ], [ %.511072, %1106 ]
  %.521012 = phi i32 [ %.0960, %72 ], [ %.511011, %1106 ]
  %.7935 = phi i32 [ %.0928, %72 ], [ %.6934, %1106 ]
  %.56 = phi ptr [ %.0927, %72 ], [ %.55, %1106 ]
  %1108 = icmp eq i32 %.01082, 0
  br i1 %1108, label %.loopexit1307, label %1109

1109:                                             ; preds = %1107
  %1110 = sub i32 %.0954, %.01082
  %1111 = load i32, ptr %57, align 8, !tbaa !85
  %1112 = icmp ugt i32 %1111, %1110
  br i1 %1112, label %1113, label %1133

1113:                                             ; preds = %1109
  %1114 = sub i32 %1111, %1110
  %1115 = load i32, ptr %58, align 8, !tbaa !87
  %1116 = icmp ugt i32 %1114, %1115
  br i1 %1116, label %1117, label %1120

1117:                                             ; preds = %1113
  %1118 = load i32, ptr %59, align 8, !tbaa !88
  %.not1239 = icmp eq i32 %1118, 0
  br i1 %.not1239, label %1120, label %1119

1119:                                             ; preds = %1117
  store ptr @.str.16, ptr %38, align 8, !tbaa !32
  store i32 16209, ptr %19, align 8, !tbaa !15
  br label %.thread

1120:                                             ; preds = %1117, %1113
  %1121 = load i32, ptr %60, align 4, !tbaa !89
  %1122 = icmp ugt i32 %1114, %1121
  br i1 %1122, label %1123, label %1127

1123:                                             ; preds = %1120
  %1124 = sub i32 %1114, %1121
  %1125 = load i32, ptr %62, align 4, !tbaa !90
  %1126 = sub i32 %1125, %1124
  br label %1129

1127:                                             ; preds = %1120
  %1128 = sub i32 %1121, %1114
  br label %1129

1129:                                             ; preds = %1127, %1123
  %.sink3405 = phi i32 [ %1128, %1127 ], [ %1126, %1123 ]
  %.7951 = phi i32 [ %1114, %1127 ], [ %1124, %1123 ]
  %.sink3403 = load ptr, ptr %61, align 8, !tbaa !91
  %1130 = zext i32 %.sink3405 to i64
  %1131 = getelementptr inbounds i8, ptr %.sink3403, i64 %1130
  %1132 = load i32, ptr %39, align 4, !tbaa !43
  %spec.select1298 = call i32 @llvm.umin.i32(i32 %.7951, i32 %1132)
  br label %1138

1133:                                             ; preds = %1109
  %1134 = zext i32 %1111 to i64
  %1135 = sub nsw i64 0, %1134
  %1136 = getelementptr inbounds i8, ptr %.01149, i64 %1135
  %1137 = load i32, ptr %39, align 4, !tbaa !43
  br label %1138

1138:                                             ; preds = %1129, %1133
  %1139 = phi i32 [ %1137, %1133 ], [ %1132, %1129 ]
  %.8952 = phi i32 [ %1137, %1133 ], [ %spec.select1298, %1129 ]
  %.1940 = phi ptr [ %1136, %1133 ], [ %1131, %1129 ]
  %spec.select1299 = call i32 @llvm.umin.i32(i32 %.8952, i32 %.01082)
  %1140 = sub i32 %.01082, %spec.select1299
  %1141 = sub i32 %1139, %spec.select1299
  store i32 %1141, ptr %39, align 4, !tbaa !43
  %1142 = zext i32 %spec.select1299 to i64
  %1143 = getelementptr inbounds i8, ptr %.01149, i64 %1142
  %1144 = ptrtoint ptr %.01149 to i64
  %1145 = ptrtoint ptr %.1940 to i64
  %1146 = sub i64 %1144, %1145
  %1147 = trunc i64 %1146 to i32
  %1148 = icmp sgt i32 %1147, 3
  br i1 %1148, label %.preheader1335, label %1178

.preheader1335:                                   ; preds = %1138
  %1149 = getelementptr inbounds i8, ptr %1143, i64 -3
  %1150 = icmp ult ptr %.01149, %1149
  br i1 %1150, label %.lr.ph2146.preheader, label %.preheader1333

.lr.ph2146.preheader:                             ; preds = %.preheader1335
  %1151 = add i64 %1144, -3
  %1152 = add i64 %1151, %1142
  %1153 = add i64 %1144, 4
  %umax = call i64 @llvm.umax.i64(i64 %1152, i64 %1153)
  %1154 = xor i64 %1144, -1
  %1155 = add i64 %umax, %1154
  %1156 = lshr i64 %1155, 2
  %1157 = add nuw nsw i64 %1156, 1
  %min.iters.check3828 = icmp ult i64 %1155, 28
  %diff.check3825 = icmp ult i64 %1146, 32
  %or.cond3905 = or i1 %min.iters.check3828, %diff.check3825
  br i1 %or.cond3905, label %.lr.ph2146.preheader3910, label %vector.ph3829

.lr.ph2146.preheader3910:                         ; preds = %middle.block3826, %.lr.ph2146.preheader
  %.29412145.ph = phi ptr [ %.1940, %.lr.ph2146.preheader ], [ %ind.end3832, %middle.block3826 ]
  %.111502144.ph = phi ptr [ %.01149, %.lr.ph2146.preheader ], [ %ind.end3834, %middle.block3826 ]
  br label %.lr.ph2146

vector.ph3829:                                    ; preds = %.lr.ph2146.preheader
  %n.vec3831 = and i64 %1157, 9223372036854775800
  %1158 = shl i64 %n.vec3831, 2
  %ind.end3832 = getelementptr i8, ptr %.1940, i64 %1158
  %1159 = shl i64 %n.vec3831, 2
  %ind.end3834 = getelementptr i8, ptr %.01149, i64 %1159
  br label %vector.body3836

vector.body3836:                                  ; preds = %vector.body3836, %vector.ph3829
  %index3837 = phi i64 [ 0, %vector.ph3829 ], [ %index.next3845, %vector.body3836 ]
  %offset.idx = shl i64 %index3837, 2
  %next.gep3838 = getelementptr i8, ptr %.1940, i64 %offset.idx
  %offset.idx3840 = shl i64 %index3837, 2
  %next.gep3841 = getelementptr i8, ptr %.01149, i64 %offset.idx3840
  %1160 = getelementptr i8, ptr %next.gep3838, i64 16
  %wide.load3843 = load <4 x i32>, ptr %next.gep3838, align 4, !tbaa !92
  %wide.load3844 = load <4 x i32>, ptr %1160, align 4, !tbaa !92
  %1161 = getelementptr i8, ptr %next.gep3841, i64 16
  store <4 x i32> %wide.load3843, ptr %next.gep3841, align 4, !tbaa !92
  store <4 x i32> %wide.load3844, ptr %1161, align 4, !tbaa !92
  %index.next3845 = add nuw i64 %index3837, 8
  %1162 = icmp eq i64 %index.next3845, %n.vec3831
  br i1 %1162, label %middle.block3826, label %vector.body3836, !llvm.loop !93

middle.block3826:                                 ; preds = %vector.body3836
  %cmp.n3846 = icmp eq i64 %1157, %n.vec3831
  br i1 %cmp.n3846, label %.preheader1333, label %.lr.ph2146.preheader3910

.preheader1333:                                   ; preds = %.lr.ph2146, %middle.block3826, %.preheader1335
  %.11150.lcssa = phi ptr [ %.01149, %.preheader1335 ], [ %ind.end3834, %middle.block3826 ], [ %1171, %.lr.ph2146 ]
  %.2941.lcssa = phi ptr [ %.1940, %.preheader1335 ], [ %ind.end3832, %middle.block3826 ], [ %1172, %.lr.ph2146 ]
  %1163 = icmp ult ptr %.11150.lcssa, %1143
  br i1 %1163, label %.lr.ph2151.preheader, label %.loopexit1334

.lr.ph2151.preheader:                             ; preds = %.preheader1333
  %.2941.lcssa3817 = ptrtoint ptr %.2941.lcssa to i64
  %.11150.lcssa3816 = ptrtoint ptr %.11150.lcssa to i64
  %1164 = add i64 %1144, %1142
  %1165 = sub i64 %1164, %.11150.lcssa3816
  %min.iters.check = icmp ult i64 %1165, 32
  %1166 = sub i64 %.11150.lcssa3816, %.2941.lcssa3817
  %diff.check = icmp ult i64 %1166, 32
  %or.cond3906 = select i1 %min.iters.check, i1 true, i1 %diff.check
  br i1 %or.cond3906, label %.lr.ph2151.preheader3909, label %vector.ph

.lr.ph2151.preheader3909:                         ; preds = %middle.block, %.lr.ph2151.preheader
  %.39422150.ph = phi ptr [ %.2941.lcssa, %.lr.ph2151.preheader ], [ %ind.end, %middle.block ]
  %.211512149.ph = phi ptr [ %.11150.lcssa, %.lr.ph2151.preheader ], [ %ind.end3818, %middle.block ]
  br label %.lr.ph2151

vector.ph:                                        ; preds = %.lr.ph2151.preheader
  %n.vec = and i64 %1165, -32
  %ind.end = getelementptr i8, ptr %.2941.lcssa, i64 %n.vec
  %ind.end3818 = getelementptr i8, ptr %.11150.lcssa, i64 %n.vec
  br label %vector.body

vector.body:                                      ; preds = %vector.body, %vector.ph
  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %next.gep = getelementptr i8, ptr %.2941.lcssa, i64 %index
  %next.gep3821 = getelementptr i8, ptr %.11150.lcssa, i64 %index
  %1167 = getelementptr i8, ptr %next.gep, i64 16
  %wide.load = load <16 x i8>, ptr %next.gep, align 1, !tbaa !23
  %wide.load3823 = load <16 x i8>, ptr %1167, align 1, !tbaa !23
  %1168 = getelementptr i8, ptr %next.gep3821, i64 16
  store <16 x i8> %wide.load, ptr %next.gep3821, align 1, !tbaa !23
  store <16 x i8> %wide.load3823, ptr %1168, align 1, !tbaa !23
  %index.next = add nuw i64 %index, 32
  %1169 = icmp eq i64 %index.next, %n.vec
  br i1 %1169, label %middle.block, label %vector.body, !llvm.loop !94

middle.block:                                     ; preds = %vector.body
  %cmp.n = icmp eq i64 %1165, %n.vec
  br i1 %cmp.n, label %.loopexit1334, label %.lr.ph2151.preheader3909

.lr.ph2146:                                       ; preds = %.lr.ph2146.preheader3910, %.lr.ph2146
  %.29412145 = phi ptr [ %1172, %.lr.ph2146 ], [ %.29412145.ph, %.lr.ph2146.preheader3910 ]
  %.111502144 = phi ptr [ %1171, %.lr.ph2146 ], [ %.111502144.ph, %.lr.ph2146.preheader3910 ]
  %1170 = load i32, ptr %.29412145, align 4, !tbaa !92
  store i32 %1170, ptr %.111502144, align 4, !tbaa !92
  %1171 = getelementptr inbounds i8, ptr %.111502144, i64 4
  %1172 = getelementptr inbounds i8, ptr %.29412145, i64 4
  %1173 = icmp ult ptr %1171, %1149
  br i1 %1173, label %.lr.ph2146, label %.preheader1333, !llvm.loop !95

.lr.ph2151:                                       ; preds = %.lr.ph2151.preheader3909, %.lr.ph2151
  %.39422150 = phi ptr [ %1174, %.lr.ph2151 ], [ %.39422150.ph, %.lr.ph2151.preheader3909 ]
  %.211512149 = phi ptr [ %1176, %.lr.ph2151 ], [ %.211512149.ph, %.lr.ph2151.preheader3909 ]
  %1174 = getelementptr inbounds i8, ptr %.39422150, i64 1
  %1175 = load i8, ptr %.39422150, align 1, !tbaa !23
  %1176 = getelementptr inbounds i8, ptr %.211512149, i64 1
  store i8 %1175, ptr %.211512149, align 1, !tbaa !23
  %1177 = icmp ult ptr %1176, %1143
  br i1 %1177, label %.lr.ph2151, label %.loopexit1334, !llvm.loop !96

1178:                                             ; preds = %1138
  %1179 = icmp eq i32 %1147, 1
  br i1 %1179, label %1186, label %.preheader1337

.preheader1337:                                   ; preds = %1178
  %.not2393 = icmp eq i32 %spec.select1299, 0
  br i1 %.not2393, label %.loopexit1334, label %.lr.ph2139.preheader

.lr.ph2139.preheader:                             ; preds = %.preheader1337
  %1180 = add i64 %1144, %1142
  %1181 = add i64 %1144, 1
  %umax3865 = call i64 @llvm.umax.i64(i64 %1180, i64 %1181)
  %1182 = sub i64 %umax3865, %1144
  %min.iters.check3868 = icmp ult i64 %1182, 32
  %diff.check3864 = icmp ult i64 %1146, 32
  %or.cond3907 = or i1 %min.iters.check3868, %diff.check3864
  br i1 %or.cond3907, label %.lr.ph2139.preheader3913, label %vector.ph3869

.lr.ph2139.preheader3913:                         ; preds = %middle.block3866, %.lr.ph2139.preheader
  %.49432138.ph = phi ptr [ %.1940, %.lr.ph2139.preheader ], [ %ind.end3872, %middle.block3866 ]
  %.411532137.ph = phi ptr [ %.01149, %.lr.ph2139.preheader ], [ %ind.end3874, %middle.block3866 ]
  br label %.lr.ph2139

vector.ph3869:                                    ; preds = %.lr.ph2139.preheader
  %n.vec3871 = and i64 %1182, -32
  %ind.end3872 = getelementptr i8, ptr %.1940, i64 %n.vec3871
  %ind.end3874 = getelementptr i8, ptr %.01149, i64 %n.vec3871
  br label %vector.body3876

vector.body3876:                                  ; preds = %vector.body3876, %vector.ph3869
  %index3877 = phi i64 [ 0, %vector.ph3869 ], [ %index.next3884, %vector.body3876 ]
  %next.gep3878 = getelementptr i8, ptr %.1940, i64 %index3877
  %next.gep3880 = getelementptr i8, ptr %.01149, i64 %index3877
  %1183 = getelementptr i8, ptr %next.gep3878, i64 16
  %wide.load3882 = load <16 x i8>, ptr %next.gep3878, align 1, !tbaa !23
  %wide.load3883 = load <16 x i8>, ptr %1183, align 1, !tbaa !23
  %1184 = getelementptr i8, ptr %next.gep3880, i64 16
  store <16 x i8> %wide.load3882, ptr %next.gep3880, align 1, !tbaa !23
  store <16 x i8> %wide.load3883, ptr %1184, align 1, !tbaa !23
  %index.next3884 = add nuw i64 %index3877, 32
  %1185 = icmp eq i64 %index.next3884, %n.vec3871
  br i1 %1185, label %middle.block3866, label %vector.body3876, !llvm.loop !97

middle.block3866:                                 ; preds = %vector.body3876
  %cmp.n3885 = icmp eq i64 %1182, %n.vec3871
  br i1 %cmp.n3885, label %.loopexit1334, label %.lr.ph2139.preheader3913

1186:                                             ; preds = %1178
  %1187 = load i8, ptr %.1940, align 1, !tbaa !23
  %1188 = zext i8 %1187 to i32
  %1189 = shl nuw nsw i32 %1188, 8
  %1190 = or disjoint i32 %1189, %1188
  %1191 = shl nuw i32 %1190, 16
  %1192 = or disjoint i32 %1191, %1190
  %.not2394 = icmp eq i32 %spec.select1299, 0
  br i1 %.not2394, label %.loopexit1334, label %.lr.ph2143.preheader

.lr.ph2143.preheader:                             ; preds = %1186
  %1193 = add i64 %1144, %1142
  %1194 = add i64 %1144, 4
  %umax3847 = call i64 @llvm.umax.i64(i64 %1193, i64 %1194)
  %1195 = xor i64 %1144, -1
  %1196 = add i64 %umax3847, %1195
  %1197 = lshr i64 %1196, 2
  %1198 = add nuw nsw i64 %1197, 1
  %min.iters.check3850 = icmp ult i64 %1196, 28
  br i1 %min.iters.check3850, label %.lr.ph2143.preheader3911, label %vector.ph3851

vector.ph3851:                                    ; preds = %.lr.ph2143.preheader
  %n.vec3853 = and i64 %1198, 9223372036854775800
  %1199 = shl i64 %n.vec3853, 2
  %ind.end3854 = getelementptr i8, ptr %.01149, i64 %1199
  %broadcast.splatinsert = insertelement <4 x i32> poison, i32 %1192, i64 0
  %broadcast.splat = shufflevector <4 x i32> %broadcast.splatinsert, <4 x i32> poison, <4 x i32> zeroinitializer
  br label %vector.body3856

vector.body3856:                                  ; preds = %vector.body3856, %vector.ph3851
  %index3857 = phi i64 [ 0, %vector.ph3851 ], [ %index.next3861, %vector.body3856 ]
  %offset.idx3858 = shl i64 %index3857, 2
  %next.gep3859 = getelementptr i8, ptr %.01149, i64 %offset.idx3858
  %1200 = getelementptr i8, ptr %next.gep3859, i64 16
  store <4 x i32> %broadcast.splat, ptr %next.gep3859, align 4, !tbaa !92
  store <4 x i32> %broadcast.splat, ptr %1200, align 4, !tbaa !92
  %index.next3861 = add nuw i64 %index3857, 8
  %1201 = icmp eq i64 %index.next3861, %n.vec3853
  br i1 %1201, label %middle.block3848, label %vector.body3856, !llvm.loop !98

middle.block3848:                                 ; preds = %vector.body3856
  %cmp.n3862 = icmp eq i64 %1198, %n.vec3853
  br i1 %cmp.n3862, label %.loopexit1334, label %.lr.ph2143.preheader3911

.lr.ph2143.preheader3911:                         ; preds = %middle.block3848, %.lr.ph2143.preheader
  %.311522141.ph = phi ptr [ %.01149, %.lr.ph2143.preheader ], [ %ind.end3854, %middle.block3848 ]
  br label %.lr.ph2143

.lr.ph2143:                                       ; preds = %.lr.ph2143.preheader3911, %.lr.ph2143
  %.311522141 = phi ptr [ %1202, %.lr.ph2143 ], [ %.311522141.ph, %.lr.ph2143.preheader3911 ]
  store i32 %1192, ptr %.311522141, align 4, !tbaa !92
  %1202 = getelementptr inbounds i8, ptr %.311522141, i64 4
  %1203 = icmp ult ptr %1202, %1143
  br i1 %1203, label %.lr.ph2143, label %.loopexit1334, !llvm.loop !99

.lr.ph2139:                                       ; preds = %.lr.ph2139.preheader3913, %.lr.ph2139
  %.49432138 = phi ptr [ %1204, %.lr.ph2139 ], [ %.49432138.ph, %.lr.ph2139.preheader3913 ]
  %.411532137 = phi ptr [ %1206, %.lr.ph2139 ], [ %.411532137.ph, %.lr.ph2139.preheader3913 ]
  %1204 = getelementptr inbounds i8, ptr %.49432138, i64 1
  %1205 = load i8, ptr %.49432138, align 1, !tbaa !23
  %1206 = getelementptr inbounds i8, ptr %.411532137, i64 1
  store i8 %1205, ptr %.411532137, align 1, !tbaa !23
  %1207 = icmp ult ptr %1206, %1143
  br i1 %1207, label %.lr.ph2139, label %.loopexit1334, !llvm.loop !100

.loopexit1334:                                    ; preds = %.lr.ph2139, %.lr.ph2143, %.lr.ph2151, %middle.block3866, %middle.block3848, %middle.block, %.preheader1337, %1186, %.preheader1333
  %.51154 = phi ptr [ %.11150.lcssa, %.preheader1333 ], [ %1143, %1186 ], [ %.01149, %.preheader1337 ], [ %ind.end3818, %middle.block ], [ %1143, %middle.block3848 ], [ %ind.end3874, %middle.block3866 ], [ %1176, %.lr.ph2151 ], [ %1143, %.lr.ph2143 ], [ %1206, %.lr.ph2139 ]
  %1208 = load i32, ptr %39, align 4, !tbaa !43
  %1209 = icmp eq i32 %1208, 0
  br i1 %1209, label %1210, label %.thread

1210:                                             ; preds = %.loopexit1334
  store i32 16200, ptr %19, align 8, !tbaa !15
  br label %.thread

1211:                                             ; preds = %72
  %1212 = icmp eq i32 %.01082, 0
  br i1 %1212, label %.loopexit1307, label %1213

1213:                                             ; preds = %1211
  %1214 = load i32, ptr %39, align 4, !tbaa !43
  %1215 = trunc i32 %1214 to i8
  %1216 = getelementptr inbounds i8, ptr %.01149, i64 1
  store i8 %1215, ptr %.01149, align 1, !tbaa !23
  %1217 = add i32 %.01082, -1
  store i32 16200, ptr %19, align 8, !tbaa !15
  br label %.thread

1218:                                             ; preds = %72
  %1219 = load i32, ptr %32, align 8, !tbaa !22
  %.not1209 = icmp eq i32 %1219, 0
  br i1 %.not1209, label %.critedge, label %.preheader1354

.preheader1354:                                   ; preds = %1218
  %1220 = icmp ult i32 %.0960, 32
  br i1 %1220, label %.lr.ph.preheader, label %._crit_edge

.lr.ph.preheader:                                 ; preds = %.preheader1354
  %1221 = zext nneg i32 %.0960 to i64
  %1222 = icmp eq i32 %.01084, 0
  br i1 %1222, label %.loopexit1307.loopexit2417, label %1223

1223:                                             ; preds = %.lr.ph.preheader
  %1224 = add i32 %.01084, -1
  %1225 = getelementptr inbounds i8, ptr %.0927, i64 1
  %1226 = load i8, ptr %.0927, align 1, !tbaa !23
  %1227 = zext i8 %1226 to i64
  %1228 = shl nuw nsw i64 %1227, %1221
  %1229 = add i64 %1228, %.01021
  %indvars.iv.next = add nuw nsw i64 %1221, 8
  %1230 = icmp ult i32 %.0960, 24
  br i1 %1230, label %.lr.ph.1, label %._crit_edge.loopexit, !llvm.loop !101

.lr.ph.1:                                         ; preds = %1223
  %1231 = icmp eq i32 %1224, 0
  br i1 %1231, label %.loopexit1307.loopexit2417, label %1232

1232:                                             ; preds = %.lr.ph.1
  %1233 = add i32 %.01084, -2
  %1234 = getelementptr inbounds i8, ptr %.0927, i64 2
  %1235 = load i8, ptr %1225, align 1, !tbaa !23
  %1236 = zext i8 %1235 to i64
  %1237 = shl nuw nsw i64 %1236, %indvars.iv.next
  %1238 = add i64 %1237, %1229
  %indvars.iv.next.1 = add nuw nsw i64 %1221, 16
  %1239 = icmp ult i32 %.0960, 16
  br i1 %1239, label %.lr.ph.2, label %._crit_edge.loopexit, !llvm.loop !101

.lr.ph.2:                                         ; preds = %1232
  %1240 = icmp eq i32 %1233, 0
  br i1 %1240, label %.loopexit1307.loopexit2417, label %1241

1241:                                             ; preds = %.lr.ph.2
  %1242 = add i32 %.01084, -3
  %1243 = getelementptr inbounds i8, ptr %.0927, i64 3
  %1244 = load i8, ptr %1234, align 1, !tbaa !23
  %1245 = zext i8 %1244 to i64
  %1246 = shl nuw nsw i64 %1245, %indvars.iv.next.1
  %1247 = add i64 %1246, %1238
  %indvars.iv.next.2 = add nuw nsw i64 %1221, 24
  %1248 = icmp ult i32 %.0960, 8
  br i1 %1248, label %.lr.ph.3, label %._crit_edge.loopexit, !llvm.loop !101

.lr.ph.3:                                         ; preds = %1241
  %1249 = icmp eq i32 %1242, 0
  br i1 %1249, label %.loopexit1307.loopexit2417, label %1250

1250:                                             ; preds = %.lr.ph.3
  %1251 = add i32 %.01084, -4
  %1252 = getelementptr inbounds i8, ptr %.0927, i64 4
  %1253 = load i8, ptr %1243, align 1, !tbaa !23
  %1254 = zext i8 %1253 to i64
  %1255 = shl nuw nsw i64 %1254, %indvars.iv.next.2
  %1256 = add i64 %1255, %1247
  %indvars.iv.next.3 = or disjoint i64 %1221, 32
  br label %._crit_edge.loopexit

._crit_edge.loopexit:                             ; preds = %1250, %1241, %1232, %1223
  %.lcssa3922 = phi i32 [ %1224, %1223 ], [ %1233, %1232 ], [ %1242, %1241 ], [ %1251, %1250 ]
  %.lcssa3921 = phi ptr [ %1225, %1223 ], [ %1234, %1232 ], [ %1243, %1241 ], [ %1252, %1250 ]
  %.lcssa3920 = phi i64 [ %1229, %1223 ], [ %1238, %1232 ], [ %1247, %1241 ], [ %1256, %1250 ]
  %indvars.iv.next.lcssa = phi i64 [ %indvars.iv.next, %1223 ], [ %indvars.iv.next.1, %1232 ], [ %indvars.iv.next.2, %1241 ], [ %indvars.iv.next.3, %1250 ]
  %1257 = trunc nuw nsw i64 %indvars.iv.next.lcssa to i32
  br label %._crit_edge

._crit_edge:                                      ; preds = %._crit_edge.loopexit, %.preheader1354
  %.571141.lcssa = phi i32 [ %.01084, %.preheader1354 ], [ %.lcssa3922, %._crit_edge.loopexit ]
  %.531074.lcssa = phi i64 [ %.01021, %.preheader1354 ], [ %.lcssa3920, %._crit_edge.loopexit ]
  %.531013.lcssa = phi i32 [ %.0960, %.preheader1354 ], [ %1257, %._crit_edge.loopexit ]
  %.57.lcssa = phi ptr [ %.0927, %.preheader1354 ], [ %.lcssa3921, %._crit_edge.loopexit ]
  %1258 = sub i32 %.0954, %.01082
  %1259 = zext i32 %1258 to i64
  %1260 = load i64, ptr %33, align 8, !tbaa !102
  %1261 = add i64 %1260, %1259
  store i64 %1261, ptr %33, align 8, !tbaa !102
  %1262 = load i64, ptr %34, align 8, !tbaa !103
  %1263 = add i64 %1262, %1259
  store i64 %1263, ptr %34, align 8, !tbaa !103
  br i1 %.not1210, label %.critedge, label %1264

1264:                                             ; preds = %._crit_edge
  %1265 = and i32 %1219, 4
  %1266 = icmp ne i32 %1265, 0
  %1267 = icmp ne i32 %.0954, %.01082
  %or.cond7 = select i1 %1266, i1 %1267, i1 false
  br i1 %or.cond7, label %1268, label %1279

1268:                                             ; preds = %1264
  %1269 = load i32, ptr %35, align 8, !tbaa !28
  %.not1211 = icmp eq i32 %1269, 0
  %1270 = load i64, ptr %36, align 8, !tbaa !27
  %1271 = sub nsw i64 0, %1259
  %1272 = getelementptr inbounds i8, ptr %.01149, i64 %1271
  br i1 %.not1211, label %1275, label %1273

1273:                                             ; preds = %1268
  %1274 = call i64 @crc32(i64 noundef %1270, ptr noundef %1272, i32 noundef %1258) #5
  br label %1277

1275:                                             ; preds = %1268
  %1276 = call i64 @adler32(i64 noundef %1270, ptr noundef %1272, i32 noundef %1258) #5
  br label %1277

1277:                                             ; preds = %1275, %1273
  %1278 = phi i64 [ %1274, %1273 ], [ %1276, %1275 ]
  store i64 %1278, ptr %36, align 8, !tbaa !27
  store i64 %1278, ptr %37, align 8, !tbaa !34
  %.pre2911 = load i32, ptr %32, align 8, !tbaa !22
  %.pre2930 = and i32 %.pre2911, 4
  br label %1279

1279:                                             ; preds = %1277, %1264
  %.pre-phi = phi i32 [ %.pre2930, %1277 ], [ %1265, %1264 ]
  %1280 = phi i32 [ %.pre2911, %1277 ], [ %1219, %1264 ]
  %.not1212 = icmp eq i32 %.pre-phi, 0
  br i1 %.not1212, label %.critedge, label %1281

1281:                                             ; preds = %1279
  %1282 = load i32, ptr %35, align 8, !tbaa !28
  %.not1213 = icmp eq i32 %1282, 0
  %trunc = trunc i64 %.531074.lcssa to i32
  %rev = call i32 @llvm.bswap.i32(i32 %trunc)
  %1283 = zext i32 %rev to i64
  %1284 = select i1 %.not1213, i64 %1283, i64 %.531074.lcssa
  %1285 = load i64, ptr %36, align 8, !tbaa !27
  %.not1214 = icmp eq i64 %1284, %1285
  br i1 %.not1214, label %.critedge, label %1286

1286:                                             ; preds = %1281
  store ptr @.str.17, ptr %38, align 8, !tbaa !32
  store i32 16209, ptr %19, align 8, !tbaa !15
  br label %.thread

.critedge:                                        ; preds = %1279, %1281, %._crit_edge, %1218
  %1287 = phi i32 [ 0, %1218 ], [ %1219, %._crit_edge ], [ %1280, %1281 ], [ %1280, %1279 ]
  %.581142 = phi i32 [ %.01084, %1218 ], [ %.571141.lcssa, %._crit_edge ], [ %.571141.lcssa, %1281 ], [ %.571141.lcssa, %1279 ]
  %.541075 = phi i64 [ %.01021, %1218 ], [ 0, %._crit_edge ], [ 0, %1281 ], [ 0, %1279 ]
  %.541014 = phi i32 [ %.0960, %1218 ], [ 0, %._crit_edge ], [ 0, %1281 ], [ 0, %1279 ]
  %.1955 = phi i32 [ %.0954, %1218 ], [ %.01082, %._crit_edge ], [ %.01082, %1281 ], [ %.01082, %1279 ]
  %.58 = phi ptr [ %.0927, %1218 ], [ %.57.lcssa, %._crit_edge ], [ %.57.lcssa, %1281 ], [ %.57.lcssa, %1279 ]
  store i32 16207, ptr %19, align 8, !tbaa !15
  br label %1288

1288:                                             ; preds = %._crit_edge2912, %.critedge
  %1289 = phi i32 [ %.pre2913, %._crit_edge2912 ], [ %1287, %.critedge ]
  %.591143 = phi i32 [ %.01084, %._crit_edge2912 ], [ %.581142, %.critedge ]
  %.551076 = phi i64 [ %.01021, %._crit_edge2912 ], [ %.541075, %.critedge ]
  %.551015 = phi i32 [ %.0960, %._crit_edge2912 ], [ %.541014, %.critedge ]
  %.2956 = phi i32 [ %.0954, %._crit_edge2912 ], [ %.1955, %.critedge ]
  %.59 = phi ptr [ %.0927, %._crit_edge2912 ], [ %.58, %.critedge ]
  %.not1215 = icmp eq i32 %1289, 0
  br i1 %.not1215, label %1333, label %1290

1290:                                             ; preds = %1288
  %1291 = load i32, ptr %35, align 8, !tbaa !28
  %.not1216 = icmp eq i32 %1291, 0
  br i1 %.not1216, label %1333, label %.preheader1352

.preheader1352:                                   ; preds = %1290
  %1292 = icmp ult i32 %.551015, 32
  br i1 %1292, label %.lr.ph1798.preheader, label %._crit_edge1799

.lr.ph1798.preheader:                             ; preds = %.preheader1352
  %1293 = zext nneg i32 %.551015 to i64
  %1294 = icmp eq i32 %.591143, 0
  br i1 %1294, label %.loopexit1307.loopexit2416, label %1295

1295:                                             ; preds = %.lr.ph1798.preheader
  %1296 = add i32 %.591143, -1
  %1297 = getelementptr inbounds i8, ptr %.59, i64 1
  %1298 = load i8, ptr %.59, align 1, !tbaa !23
  %1299 = zext i8 %1298 to i64
  %1300 = shl nuw nsw i64 %1299, %1293
  %1301 = add i64 %1300, %.551076
  %indvars.iv.next2840 = add nuw nsw i64 %1293, 8
  %1302 = icmp ult i32 %.551015, 24
  br i1 %1302, label %.lr.ph1798.1, label %._crit_edge1799.loopexit, !llvm.loop !104

.lr.ph1798.1:                                     ; preds = %1295
  %1303 = icmp eq i32 %1296, 0
  br i1 %1303, label %.loopexit1307.loopexit2416, label %1304

1304:                                             ; preds = %.lr.ph1798.1
  %1305 = add i32 %.591143, -2
  %1306 = getelementptr inbounds i8, ptr %.59, i64 2
  %1307 = load i8, ptr %1297, align 1, !tbaa !23
  %1308 = zext i8 %1307 to i64
  %1309 = shl nuw nsw i64 %1308, %indvars.iv.next2840
  %1310 = add i64 %1309, %1301
  %indvars.iv.next2840.1 = add nuw nsw i64 %1293, 16
  %1311 = icmp ult i32 %.551015, 16
  br i1 %1311, label %.lr.ph1798.2, label %._crit_edge1799.loopexit, !llvm.loop !104

.lr.ph1798.2:                                     ; preds = %1304
  %1312 = icmp eq i32 %1305, 0
  br i1 %1312, label %.loopexit1307.loopexit2416, label %1313

1313:                                             ; preds = %.lr.ph1798.2
  %1314 = add i32 %.591143, -3
  %1315 = getelementptr inbounds i8, ptr %.59, i64 3
  %1316 = load i8, ptr %1306, align 1, !tbaa !23
  %1317 = zext i8 %1316 to i64
  %1318 = shl nuw nsw i64 %1317, %indvars.iv.next2840.1
  %1319 = add i64 %1318, %1310
  %indvars.iv.next2840.2 = add nuw nsw i64 %1293, 24
  %1320 = icmp ult i32 %.551015, 8
  br i1 %1320, label %.lr.ph1798.3, label %._crit_edge1799.loopexit, !llvm.loop !104

.lr.ph1798.3:                                     ; preds = %1313
  %1321 = icmp eq i32 %1314, 0
  br i1 %1321, label %.loopexit1307.loopexit2416, label %1322

1322:                                             ; preds = %.lr.ph1798.3
  %1323 = add i32 %.591143, -4
  %1324 = getelementptr inbounds i8, ptr %.59, i64 4
  %1325 = load i8, ptr %1315, align 1, !tbaa !23
  %1326 = zext i8 %1325 to i64
  %1327 = shl nuw nsw i64 %1326, %indvars.iv.next2840.2
  %1328 = add i64 %1327, %1319
  %indvars.iv.next2840.3 = or disjoint i64 %1293, 32
  br label %._crit_edge1799.loopexit

._crit_edge1799.loopexit:                         ; preds = %1322, %1313, %1304, %1295
  %.lcssa3928 = phi i32 [ %1296, %1295 ], [ %1305, %1304 ], [ %1314, %1313 ], [ %1323, %1322 ]
  %.lcssa3927 = phi ptr [ %1297, %1295 ], [ %1306, %1304 ], [ %1315, %1313 ], [ %1324, %1322 ]
  %.lcssa3926 = phi i64 [ %1301, %1295 ], [ %1310, %1304 ], [ %1319, %1313 ], [ %1328, %1322 ]
  %indvars.iv.next2840.lcssa = phi i64 [ %indvars.iv.next2840, %1295 ], [ %indvars.iv.next2840.1, %1304 ], [ %indvars.iv.next2840.2, %1313 ], [ %indvars.iv.next2840.3, %1322 ]
  %1329 = trunc nuw nsw i64 %indvars.iv.next2840.lcssa to i32
  br label %._crit_edge1799

._crit_edge1799:                                  ; preds = %._crit_edge1799.loopexit, %.preheader1352
  %.601144.lcssa = phi i32 [ %.591143, %.preheader1352 ], [ %.lcssa3928, %._crit_edge1799.loopexit ]
  %.561077.lcssa = phi i64 [ %.551076, %.preheader1352 ], [ %.lcssa3926, %._crit_edge1799.loopexit ]
  %.561016.lcssa = phi i32 [ %.551015, %.preheader1352 ], [ %1329, %._crit_edge1799.loopexit ]
  %.60.lcssa = phi ptr [ %.59, %.preheader1352 ], [ %.lcssa3927, %._crit_edge1799.loopexit ]
  %1330 = load i64, ptr %34, align 8, !tbaa !103
  %1331 = and i64 %1330, 4294967295
  %.not1217 = icmp eq i64 %.561077.lcssa, %1331
  br i1 %.not1217, label %1333, label %1332

1332:                                             ; preds = %._crit_edge1799
  store ptr @.str.18, ptr %38, align 8, !tbaa !32
  store i32 16209, ptr %19, align 8, !tbaa !15
  br label %.thread

1333:                                             ; preds = %._crit_edge1799, %1290, %1288
  %.611145 = phi i32 [ %.591143, %1290 ], [ %.591143, %1288 ], [ %.601144.lcssa, %._crit_edge1799 ]
  %.571078 = phi i64 [ %.551076, %1290 ], [ %.551076, %1288 ], [ 0, %._crit_edge1799 ]
  %.571017 = phi i32 [ %.551015, %1290 ], [ %.551015, %1288 ], [ 0, %._crit_edge1799 ]
  %.61 = phi ptr [ %.59, %1290 ], [ %.59, %1288 ], [ %.60.lcssa, %._crit_edge1799 ]
  store i32 16208, ptr %19, align 8, !tbaa !15
  br label %.loopexit1307

.thread:                                          ; preds = %768, %856, %.loopexit1334, %1210, %892, %901, %1332, %1286, %1213, %1119, %1078, %978, %975, %972, %886, %878, %875, %703, %670, %639, %631, %622, %573, %549, %501, %493, %176, %173, %151, %146, %132, %129, %114, %89
  %.61155 = phi ptr [ %.01149, %1332 ], [ %.01149, %1286 ], [ %1216, %1213 ], [ %.01149, %1119 ], [ %.51154, %1210 ], [ %.51154, %.loopexit1334 ], [ %.01149, %1078 ], [ %893, %901 ], [ %893, %892 ], [ %.01149, %972 ], [ %.01149, %975 ], [ %.01149, %978 ], [ %.01149, %875 ], [ %.01149, %878 ], [ %.01149, %886 ], [ %.01149, %703 ], [ %.01149, %670 ], [ %636, %631 ], [ %.01149, %639 ], [ %.01149, %622 ], [ %.01149, %549 ], [ %.01149, %573 ], [ %.01149, %493 ], [ %.01149, %501 ], [ %.01149, %173 ], [ %.01149, %176 ], [ %.01149, %89 ], [ %.01149, %114 ], [ %.01149, %129 ], [ %.01149, %132 ], [ %.01149, %146 ], [ %.01149, %151 ], [ %.01149, %856 ], [ %.01149, %768 ]
  %.631147 = phi i32 [ %.601144.lcssa, %1332 ], [ %.571141.lcssa, %1286 ], [ %.01084, %1213 ], [ %.561140, %1119 ], [ %.561140, %1210 ], [ %.561140, %.loopexit1334 ], [ %.521136, %1078 ], [ %896, %901 ], [ %896, %892 ], [ %.451129, %972 ], [ %.451129, %975 ], [ %.451129, %978 ], [ %.331117.lcssa, %875 ], [ %.331117.lcssa, %878 ], [ %.331117.lcssa, %886 ], [ %.301114.lcssa, %703 ], [ %.281112.lcssa, %670 ], [ %633, %631 ], [ %.271111, %639 ], [ %.251109.lcssa, %622 ], [ %.231107, %549 ], [ %.241108.lcssa, %573 ], [ %.181102.lcssa, %493 ], [ %.191103, %501 ], [ %.21086.lcssa, %173 ], [ %.21086.lcssa, %176 ], [ %.01084, %89 ], [ %.11085.lcssa, %114 ], [ %.11085.lcssa, %129 ], [ %.11085.lcssa, %132 ], [ %.11085.lcssa, %146 ], [ %.11085.lcssa, %151 ], [ %.381122, %856 ], [ %.351119.lcssa, %768 ]
  %.11083 = phi i32 [ %.01082, %1332 ], [ %.01082, %1286 ], [ %1217, %1213 ], [ %.01082, %1119 ], [ %1140, %1210 ], [ %1140, %.loopexit1334 ], [ %.01082, %1078 ], [ %894, %901 ], [ %894, %892 ], [ %.01082, %972 ], [ %.01082, %975 ], [ %.01082, %978 ], [ %.01082, %875 ], [ %.01082, %878 ], [ %.01082, %886 ], [ %.01082, %703 ], [ %.01082, %670 ], [ %635, %631 ], [ %.01082, %639 ], [ %.01082, %622 ], [ %.01082, %549 ], [ %.01082, %573 ], [ %.01082, %493 ], [ %.01082, %501 ], [ %.01082, %173 ], [ %.01082, %176 ], [ %.01082, %89 ], [ %.01082, %114 ], [ %.01082, %129 ], [ %.01082, %132 ], [ %.01082, %146 ], [ %.01082, %151 ], [ %.01082, %856 ], [ %.01082, %768 ]
  %.591080 = phi i64 [ %.561077.lcssa, %1332 ], [ %.531074.lcssa, %1286 ], [ %.01021, %1213 ], [ %.521073, %1119 ], [ %.521073, %1210 ], [ %.521073, %.loopexit1334 ], [ %1073, %1078 ], [ %897, %901 ], [ %897, %892 ], [ %966, %972 ], [ %966, %975 ], [ %966, %978 ], [ %.291050.lcssa, %875 ], [ %.291050.lcssa, %878 ], [ %.291050.lcssa, %886 ], [ %.261047.lcssa, %703 ], [ %666, %670 ], [ %.231044, %631 ], [ %.231044, %639 ], [ %.211042.lcssa, %622 ], [ %552, %549 ], [ %574, %573 ], [ %.141035.lcssa, %493 ], [ %.151036, %501 ], [ %.21023.lcssa, %173 ], [ %.21023.lcssa, %176 ], [ %.01021, %89 ], [ 0, %114 ], [ %.11022.lcssa, %129 ], [ %.11022.lcssa, %132 ], [ %134, %146 ], [ 0, %151 ], [ %.341055, %856 ], [ %765, %768 ]
  %.591019 = phi i32 [ %.561016.lcssa, %1332 ], [ %.531013.lcssa, %1286 ], [ %.0960, %1213 ], [ %.521012, %1119 ], [ %.521012, %1210 ], [ %.521012, %.loopexit1334 ], [ %1074, %1078 ], [ %898, %901 ], [ %898, %892 ], [ %967, %972 ], [ %967, %975 ], [ %967, %978 ], [ %.29989.lcssa, %875 ], [ %.29989.lcssa, %878 ], [ %.29989.lcssa, %886 ], [ %.26986.lcssa, %703 ], [ %667, %670 ], [ %.23983, %631 ], [ %.23983, %639 ], [ %.21981.lcssa, %622 ], [ %553, %549 ], [ %575, %573 ], [ %.14974.lcssa, %493 ], [ %.15975, %501 ], [ %.2962.lcssa, %173 ], [ %.2962.lcssa, %176 ], [ %.0960, %89 ], [ 0, %114 ], [ %.1961.lcssa, %129 ], [ %.1961.lcssa, %132 ], [ %135, %146 ], [ 0, %151 ], [ %.34994, %856 ], [ %766, %768 ]
  %.4958 = phi i32 [ %.2956, %1332 ], [ %.01082, %1286 ], [ %.0954, %1213 ], [ %.0954, %1119 ], [ %.0954, %1210 ], [ %.0954, %.loopexit1334 ], [ %.0954, %1078 ], [ %.0954, %901 ], [ %.0954, %892 ], [ %.0954, %972 ], [ %.0954, %975 ], [ %.0954, %978 ], [ %.0954, %875 ], [ %.0954, %878 ], [ %.0954, %886 ], [ %.0954, %703 ], [ %.0954, %670 ], [ %.0954, %631 ], [ %.0954, %639 ], [ %.0954, %622 ], [ %.0954, %549 ], [ %.0954, %573 ], [ %.0954, %493 ], [ %.0954, %501 ], [ %.0954, %173 ], [ %.0954, %176 ], [ %.0954, %89 ], [ %.0954, %114 ], [ %.0954, %129 ], [ %.0954, %132 ], [ %.0954, %146 ], [ %.0954, %151 ], [ %.0954, %856 ], [ %.0954, %768 ]
  %.8936 = phi i32 [ %.0928, %1332 ], [ %.0928, %1286 ], [ %.0928, %1213 ], [ %.7935, %1119 ], [ %.7935, %1210 ], [ %.7935, %.loopexit1334 ], [ %.5933, %1078 ], [ %.3931, %901 ], [ %.3931, %892 ], [ %.3931, %972 ], [ %.3931, %975 ], [ %.3931, %978 ], [ %.1929, %875 ], [ %877, %878 ], [ %885, %886 ], [ %702, %703 ], [ %.0928, %670 ], [ %.0928, %631 ], [ %.0928, %639 ], [ %.0928, %622 ], [ %.0928, %549 ], [ %.0928, %573 ], [ %.0928, %493 ], [ %.0928, %501 ], [ %.0928, %173 ], [ %.0928, %176 ], [ %.0928, %89 ], [ %.0928, %114 ], [ %.0928, %129 ], [ %.0928, %132 ], [ %.0928, %146 ], [ %.0928, %151 ], [ %.1929, %856 ], [ %.1929, %768 ]
  %.63 = phi ptr [ %.60.lcssa, %1332 ], [ %.57.lcssa, %1286 ], [ %.0927, %1213 ], [ %.56, %1119 ], [ %.56, %1210 ], [ %.56, %.loopexit1334 ], [ %.52, %1078 ], [ %895, %901 ], [ %895, %892 ], [ %.45, %972 ], [ %.45, %975 ], [ %.45, %978 ], [ %.33.lcssa, %875 ], [ %.33.lcssa, %878 ], [ %.33.lcssa, %886 ], [ %.30.lcssa, %703 ], [ %.28.lcssa, %670 ], [ %634, %631 ], [ %.27, %639 ], [ %.25.lcssa, %622 ], [ %.23, %549 ], [ %.24.lcssa, %573 ], [ %.18.lcssa, %493 ], [ %.19, %501 ], [ %.2.lcssa, %173 ], [ %.2.lcssa, %176 ], [ %.0927, %89 ], [ %.1.lcssa, %114 ], [ %.1.lcssa, %129 ], [ %.1.lcssa, %132 ], [ %.1.lcssa, %146 ], [ %.1.lcssa, %151 ], [ %.38, %856 ], [ %.35.lcssa, %768 ]
  %.pre = load i32, ptr %19, align 8, !tbaa !15
  br label %72

.loopexit1307.loopexit:                           ; preds = %.lr.ph2024
  %1334 = trunc nuw i64 %indvars.iv2861 to i32
  br label %.loopexit1307

.loopexit1307.loopexit2395:                       ; preds = %.lr.ph2014
  %1335 = trunc nuw i64 %indvars.iv2858 to i32
  br label %.loopexit1307

.loopexit1307.loopexit2396:                       ; preds = %.lr.ph2004
  %1336 = trunc nuw i64 %indvars.iv2855 to i32
  br label %.loopexit1307

.loopexit1307.loopexit2398:                       ; preds = %.lr.ph2385.1, %.lr.ph2385.preheader
  %indvars.iv2908.lcssa = phi i64 [ %87, %.lr.ph2385.preheader ], [ %indvars.iv.next2909, %.lr.ph2385.1 ]
  %.12384.lcssa = phi ptr [ %.0927, %.lr.ph2385.preheader ], [ %92, %.lr.ph2385.1 ]
  %.110222382.lcssa = phi i64 [ %.01021, %.lr.ph2385.preheader ], [ %96, %.lr.ph2385.1 ]
  %1337 = trunc nuw nsw i64 %indvars.iv2908.lcssa to i32
  br label %.loopexit1307

.loopexit1307.loopexit2399:                       ; preds = %.lr.ph2375.1, %.lr.ph2375.preheader
  %indvars.iv2905.lcssa = phi i64 [ %469, %.lr.ph2375.preheader ], [ %indvars.iv.next2906, %.lr.ph2375.1 ]
  %.182374.lcssa = phi ptr [ %.17, %.lr.ph2375.preheader ], [ %473, %.lr.ph2375.1 ]
  %.1410352372.lcssa = phi i64 [ %.131034, %.lr.ph2375.preheader ], [ %477, %.lr.ph2375.1 ]
  %1338 = trunc nuw nsw i64 %indvars.iv2905.lcssa to i32
  br label %.loopexit1307

.loopexit1307.loopexit2400:                       ; preds = %.lr.ph2366.1, %.lr.ph2366.preheader
  %indvars.iv2896.lcssa = phi i64 [ %297, %.lr.ph2366.preheader ], [ %indvars.iv.next2897, %.lr.ph2366.1 ]
  %.82365.lcssa = phi ptr [ %.729632968, %.lr.ph2366.preheader ], [ %301, %.lr.ph2366.1 ]
  %.810292363.lcssa = phi i64 [ %.7102829592970, %.lr.ph2366.preheader ], [ %305, %.lr.ph2366.1 ]
  %1339 = trunc nuw nsw i64 %indvars.iv2896.lcssa to i32
  br label %.loopexit1307

.loopexit1307.loopexit2401:                       ; preds = %.lr.ph2357.1, %.lr.ph2357.preheader
  %indvars.iv2893.lcssa = phi i64 [ %252, %.lr.ph2357.preheader ], [ %indvars.iv.next2894, %.lr.ph2357.1 ]
  %.62355.lcssa = phi ptr [ %.52949, %.lr.ph2357.preheader ], [ %256, %.lr.ph2357.1 ]
  %.610272353.lcssa = phi i64 [ %.510262947, %.lr.ph2357.preheader ], [ %260, %.lr.ph2357.1 ]
  %1340 = trunc nuw nsw i64 %indvars.iv2893.lcssa to i32
  br label %.loopexit1307

.loopexit1307.loopexit2402:                       ; preds = %.lr.ph2347.3, %.lr.ph2347.2, %.lr.ph2347.1, %.lr.ph2347.preheader
  %indvars.iv2890.lcssa = phi i64 [ %195, %.lr.ph2347.preheader ], [ %indvars.iv.next2891, %.lr.ph2347.1 ], [ %indvars.iv.next2891.1, %.lr.ph2347.2 ], [ %indvars.iv.next2891.2, %.lr.ph2347.3 ]
  %.42345.lcssa = phi ptr [ %.32940, %.lr.ph2347.preheader ], [ %199, %.lr.ph2347.1 ], [ %208, %.lr.ph2347.2 ], [ %217, %.lr.ph2347.3 ]
  %.410252343.lcssa = phi i64 [ %.310242938, %.lr.ph2347.preheader ], [ %203, %.lr.ph2347.1 ], [ %212, %.lr.ph2347.2 ], [ %221, %.lr.ph2347.3 ]
  %1341 = trunc nuw nsw i64 %indvars.iv2890.lcssa to i32
  br label %.loopexit1307

.loopexit1307.loopexit2403:                       ; preds = %.lr.ph2336.1, %.lr.ph2336.preheader
  %indvars.iv2887.lcssa = phi i64 [ %81, %.lr.ph2336.preheader ], [ %indvars.iv.next2888, %.lr.ph2336.1 ]
  %.22335.lcssa = phi ptr [ %.0927, %.lr.ph2336.preheader ], [ %156, %.lr.ph2336.1 ]
  %.210232333.lcssa = phi i64 [ %.01021, %.lr.ph2336.preheader ], [ %160, %.lr.ph2336.1 ]
  %1342 = trunc nuw nsw i64 %indvars.iv2887.lcssa to i32
  br label %.loopexit1307

.loopexit1307.loopexit2404:                       ; preds = %.lr.ph2168.3, %.lr.ph2168.2, %.lr.ph2168.1, %.lr.ph2168.preheader
  %indvars.iv2884.lcssa = phi i64 [ %78, %.lr.ph2168.preheader ], [ %indvars.iv.next2885, %.lr.ph2168.1 ], [ %indvars.iv.next2885.1, %.lr.ph2168.2 ], [ %indvars.iv.next2885.2, %.lr.ph2168.3 ]
  %.202167.lcssa = phi ptr [ %.0927, %.lr.ph2168.preheader ], [ %505, %.lr.ph2168.1 ], [ %514, %.lr.ph2168.2 ], [ %523, %.lr.ph2168.3 ]
  %.1610372165.lcssa = phi i64 [ %.01021, %.lr.ph2168.preheader ], [ %509, %.lr.ph2168.1 ], [ %518, %.lr.ph2168.2 ], [ %527, %.lr.ph2168.3 ]
  %1343 = trunc nuw nsw i64 %indvars.iv2884.lcssa to i32
  br label %.loopexit1307

.loopexit1307.loopexit2405:                       ; preds = %.lr.ph2158.3, %.lr.ph2158.2, %.lr.ph2158.1, %.lr.ph2158.preheader
  %indvars.iv2882.lcssa = phi i64 [ %583, %.lr.ph2158.preheader ], [ %indvars.iv.next2883, %.lr.ph2158.1 ], [ %indvars.iv.next2883.1, %.lr.ph2158.2 ], [ %indvars.iv.next2883.2, %.lr.ph2158.3 ]
  %.252156.lcssa = phi ptr [ %.0927, %.lr.ph2158.preheader ], [ %587, %.lr.ph2158.1 ], [ %595, %.lr.ph2158.2 ], [ %604, %.lr.ph2158.3 ]
  %.2110422154.lcssa = phi i64 [ %579, %.lr.ph2158.preheader ], [ %591, %.lr.ph2158.1 ], [ %599, %.lr.ph2158.2 ], [ %608, %.lr.ph2158.3 ]
  %1344 = trunc nuw nsw i64 %indvars.iv2882.lcssa to i32
  br label %.loopexit1307

.loopexit1307.loopexit2415:                       ; preds = %.lr.ph1808.1, %.lr.ph1808.preheader
  %indvars.iv2842.lcssa = phi i64 [ %75, %.lr.ph1808.preheader ], [ %indvars.iv.next2843, %.lr.ph1808.1 ]
  %.281807.lcssa = phi ptr [ %.0927, %.lr.ph1808.preheader ], [ %642, %.lr.ph1808.1 ]
  %.2410451805.lcssa = phi i64 [ %.01021, %.lr.ph1808.preheader ], [ %646, %.lr.ph1808.1 ]
  %1345 = trunc nuw nsw i64 %indvars.iv2842.lcssa to i32
  br label %.loopexit1307

.loopexit1307.loopexit2416:                       ; preds = %.lr.ph1798.3, %.lr.ph1798.2, %.lr.ph1798.1, %.lr.ph1798.preheader
  %indvars.iv2839.lcssa = phi i64 [ %1293, %.lr.ph1798.preheader ], [ %indvars.iv.next2840, %.lr.ph1798.1 ], [ %indvars.iv.next2840.1, %.lr.ph1798.2 ], [ %indvars.iv.next2840.2, %.lr.ph1798.3 ]
  %.601797.lcssa = phi ptr [ %.59, %.lr.ph1798.preheader ], [ %1297, %.lr.ph1798.1 ], [ %1306, %.lr.ph1798.2 ], [ %1315, %.lr.ph1798.3 ]
  %.5610771795.lcssa = phi i64 [ %.551076, %.lr.ph1798.preheader ], [ %1301, %.lr.ph1798.1 ], [ %1310, %.lr.ph1798.2 ], [ %1319, %.lr.ph1798.3 ]
  %1346 = trunc nuw nsw i64 %indvars.iv2839.lcssa to i32
  br label %.loopexit1307

.loopexit1307.loopexit2417:                       ; preds = %.lr.ph.3, %.lr.ph.2, %.lr.ph.1, %.lr.ph.preheader
  %indvars.iv.lcssa = phi i64 [ %1221, %.lr.ph.preheader ], [ %indvars.iv.next, %.lr.ph.1 ], [ %indvars.iv.next.1, %.lr.ph.2 ], [ %indvars.iv.next.2, %.lr.ph.3 ]
  %.571790.lcssa = phi ptr [ %.0927, %.lr.ph.preheader ], [ %1225, %.lr.ph.1 ], [ %1234, %.lr.ph.2 ], [ %1243, %.lr.ph.3 ]
  %.5310741788.lcssa = phi i64 [ %.01021, %.lr.ph.preheader ], [ %1229, %.lr.ph.1 ], [ %1238, %.lr.ph.2 ], [ %1247, %.lr.ph.3 ]
  %1347 = trunc nuw nsw i64 %indvars.iv.lcssa to i32
  br label %.loopexit1307

.loopexit1307.loopexit2982:                       ; preds = %.lr.ph1990
  %1348 = zext i32 %.3311172037 to i64
  %scevgep.le = getelementptr i8, ptr %.332040, i64 %1348
  %1349 = shl i32 %.3311172037, 3
  %1350 = add i32 %1349, %.299892039
  br label %.loopexit1307

.loopexit1307.loopexit2985:                       ; preds = %.lr.ph2131
  %1351 = zext i32 %.531137 to i64
  %scevgep2881.le = getelementptr i8, ptr %.53, i64 %1351
  %1352 = shl i32 %.531137, 3
  %1353 = add i32 %.491009, %1352
  br label %.loopexit1307

.loopexit1307.loopexit2986:                       ; preds = %.lr.ph2119
  %1354 = zext i32 %.501134.lcssa to i64
  %scevgep2879.le = getelementptr i8, ptr %.50.lcssa, i64 %1354
  %1355 = shl i32 %.501134.lcssa, 3
  %1356 = add i32 %1355, %.461006.lcssa
  br label %.loopexit1307

.loopexit1307.loopexit2987:                       ; preds = %.lr.ph2101
  %1357 = zext i32 %.491133 to i64
  %scevgep2875.le = getelementptr i8, ptr %.49, i64 %1357
  %1358 = shl i32 %.491133, 3
  %1359 = add i32 %1358, %.451005
  br label %.loopexit1307

.loopexit1307.loopexit2988:                       ; preds = %.lr.ph2086
  %1360 = zext i32 %.461130 to i64
  %scevgep2872.le = getelementptr i8, ptr %.46, i64 %1360
  %1361 = shl i32 %.461130, 3
  %1362 = add i32 %.421002, %1361
  br label %.loopexit1307

.loopexit1307.loopexit2989:                       ; preds = %.lr.ph2074
  %1363 = zext i32 %.431127.lcssa to i64
  %scevgep2870.le = getelementptr i8, ptr %.43.lcssa, i64 %1363
  %1364 = shl i32 %.431127.lcssa, 3
  %1365 = add i32 %1364, %.39999.lcssa
  br label %.loopexit1307

.loopexit1307.loopexit2990:                       ; preds = %.lr.ph2056
  %1366 = zext i32 %.421126 to i64
  %scevgep2866.le = getelementptr i8, ptr %.42, i64 %1366
  %1367 = shl i32 %.421126, 3
  %1368 = add i32 %1367, %.38998
  br label %.loopexit1307

.loopexit1307.loopexit3916:                       ; preds = %72
  br label %.loopexit1307

.loopexit1307:                                    ; preds = %374, %380, %412, %424, %456, %544, %623, %629, %887, %1107, %1211, %.lr.ph2177, %.lr.ph1818, %72, %.loopexit1307.loopexit3916, %.loopexit1307.loopexit2990, %.loopexit1307.loopexit2989, %.loopexit1307.loopexit2988, %.loopexit1307.loopexit2987, %.loopexit1307.loopexit2986, %.loopexit1307.loopexit2985, %.loopexit1307.loopexit2982, %.loopexit1307.loopexit2417, %.loopexit1307.loopexit2416, %.loopexit1307.loopexit2415, %.loopexit1307.loopexit2405, %.loopexit1307.loopexit2404, %.loopexit1307.loopexit2403, %.loopexit1307.loopexit2402, %.loopexit1307.loopexit2401, %.loopexit1307.loopexit2400, %.loopexit1307.loopexit2399, %.loopexit1307.loopexit2398, %.loopexit1307.loopexit2396, %.loopexit1307.loopexit2395, %.loopexit1307.loopexit, %1333, %568
  %.010822778 = phi i32 [ %.01082, %568 ], [ %.01082, %1333 ], [ %.01082, %.loopexit1307.loopexit ], [ %.01082, %.loopexit1307.loopexit2395 ], [ %.01082, %.loopexit1307.loopexit2396 ], [ %.01082, %.loopexit1307.loopexit2398 ], [ %.01082, %.loopexit1307.loopexit2399 ], [ %.01082, %.loopexit1307.loopexit2400 ], [ %.01082, %.loopexit1307.loopexit2401 ], [ %.01082, %.loopexit1307.loopexit2402 ], [ %.01082, %.loopexit1307.loopexit2403 ], [ %.01082, %.loopexit1307.loopexit2404 ], [ %.01082, %.loopexit1307.loopexit2405 ], [ %.01082, %.loopexit1307.loopexit2415 ], [ %.01082, %.loopexit1307.loopexit2416 ], [ %.01082, %.loopexit1307.loopexit2417 ], [ %.01082, %.loopexit1307.loopexit2982 ], [ %.01082, %.loopexit1307.loopexit2985 ], [ %.01082, %.loopexit1307.loopexit2986 ], [ %.01082, %.loopexit1307.loopexit2987 ], [ %.01082, %.loopexit1307.loopexit2988 ], [ %.01082, %.loopexit1307.loopexit2989 ], [ %.01082, %.loopexit1307.loopexit2990 ], [ %.01082, %72 ], [ %.01082, %.lr.ph1818 ], [ %.01082, %374 ], [ %.01082, %380 ], [ %.01082, %412 ], [ %.01082, %424 ], [ %.01082, %456 ], [ %.01082, %544 ], [ %.01082, %623 ], [ %.01082, %629 ], [ %.01082, %887 ], [ 0, %1107 ], [ 0, %1211 ], [ %.01082, %.lr.ph2177 ], [ %.01082, %.loopexit1307.loopexit3916 ]
  %.641148 = phi i32 [ %.241108.lcssa, %568 ], [ %.611145, %1333 ], [ 0, %.loopexit1307.loopexit ], [ 0, %.loopexit1307.loopexit2395 ], [ 0, %.loopexit1307.loopexit2396 ], [ 0, %.loopexit1307.loopexit2398 ], [ 0, %.loopexit1307.loopexit2399 ], [ 0, %.loopexit1307.loopexit2400 ], [ 0, %.loopexit1307.loopexit2401 ], [ 0, %.loopexit1307.loopexit2402 ], [ 0, %.loopexit1307.loopexit2403 ], [ 0, %.loopexit1307.loopexit2404 ], [ 0, %.loopexit1307.loopexit2405 ], [ 0, %.loopexit1307.loopexit2415 ], [ 0, %.loopexit1307.loopexit2416 ], [ 0, %.loopexit1307.loopexit2417 ], [ 0, %.loopexit1307.loopexit2982 ], [ 0, %.loopexit1307.loopexit2985 ], [ 0, %.loopexit1307.loopexit2986 ], [ 0, %.loopexit1307.loopexit2987 ], [ 0, %.loopexit1307.loopexit2988 ], [ 0, %.loopexit1307.loopexit2989 ], [ 0, %.loopexit1307.loopexit2990 ], [ %.01084, %72 ], [ 0, %.lr.ph1818 ], [ %.111095, %374 ], [ 0, %380 ], [ %413, %412 ], [ 0, %424 ], [ %457, %456 ], [ %.221106, %544 ], [ %.251109.lcssa, %623 ], [ %.271111, %629 ], [ %.331117.lcssa, %887 ], [ %.561140, %1107 ], [ %.01084, %1211 ], [ 0, %.lr.ph2177 ], [ %.01084, %.loopexit1307.loopexit3916 ]
  %.601081 = phi i64 [ %569, %568 ], [ %.571078, %1333 ], [ %.3310542021, %.loopexit1307.loopexit ], [ %.3110522011, %.loopexit1307.loopexit2395 ], [ %.3210532001, %.loopexit1307.loopexit2396 ], [ %.110222382.lcssa, %.loopexit1307.loopexit2398 ], [ %.1410352372.lcssa, %.loopexit1307.loopexit2399 ], [ %.810292363.lcssa, %.loopexit1307.loopexit2400 ], [ %.610272353.lcssa, %.loopexit1307.loopexit2401 ], [ %.410252343.lcssa, %.loopexit1307.loopexit2402 ], [ %.210232333.lcssa, %.loopexit1307.loopexit2403 ], [ %.1610372165.lcssa, %.loopexit1307.loopexit2404 ], [ %.2110422154.lcssa, %.loopexit1307.loopexit2405 ], [ %.2410451805.lcssa, %.loopexit1307.loopexit2415 ], [ %.5610771795.lcssa, %.loopexit1307.loopexit2416 ], [ %.5310741788.lcssa, %.loopexit1307.loopexit2417 ], [ %.3010511987, %.loopexit1307.loopexit2982 ], [ %.5010712128, %.loopexit1307.loopexit2985 ], [ %.4710682116, %.loopexit1307.loopexit2986 ], [ %.4610672097, %.loopexit1307.loopexit2987 ], [ %.4310642083, %.loopexit1307.loopexit2988 ], [ %.4010612071, %.loopexit1307.loopexit2989 ], [ %.3910602052, %.loopexit1307.loopexit2990 ], [ %.01021, %72 ], [ %.2610471969, %.lr.ph1818 ], [ %.101031, %374 ], [ %.111032, %380 ], [ %.111032, %412 ], [ %.121033, %424 ], [ %.121033, %456 ], [ %.181039, %544 ], [ 0, %623 ], [ %.231044, %629 ], [ %.291050.lcssa, %887 ], [ %.521073, %1107 ], [ %.01021, %1211 ], [ %.191040, %.lr.ph2177 ], [ %.01021, %.loopexit1307.loopexit3916 ]
  %.601020 = phi i32 [ %570, %568 ], [ %.571017, %1333 ], [ %1334, %.loopexit1307.loopexit ], [ %1335, %.loopexit1307.loopexit2395 ], [ %1336, %.loopexit1307.loopexit2396 ], [ %1337, %.loopexit1307.loopexit2398 ], [ %1338, %.loopexit1307.loopexit2399 ], [ %1339, %.loopexit1307.loopexit2400 ], [ %1340, %.loopexit1307.loopexit2401 ], [ %1341, %.loopexit1307.loopexit2402 ], [ %1342, %.loopexit1307.loopexit2403 ], [ %1343, %.loopexit1307.loopexit2404 ], [ %1344, %.loopexit1307.loopexit2405 ], [ %1345, %.loopexit1307.loopexit2415 ], [ %1346, %.loopexit1307.loopexit2416 ], [ %1347, %.loopexit1307.loopexit2417 ], [ %1350, %.loopexit1307.loopexit2982 ], [ %1353, %.loopexit1307.loopexit2985 ], [ %1356, %.loopexit1307.loopexit2986 ], [ %1359, %.loopexit1307.loopexit2987 ], [ %1362, %.loopexit1307.loopexit2988 ], [ %1365, %.loopexit1307.loopexit2989 ], [ %1368, %.loopexit1307.loopexit2990 ], [ %.0960, %72 ], [ %.269861970, %.lr.ph1818 ], [ %.10970, %374 ], [ %.11971, %380 ], [ %.11971, %412 ], [ %.12972, %424 ], [ %.12972, %456 ], [ %.18978, %544 ], [ 0, %623 ], [ %.23983, %629 ], [ %.29989.lcssa, %887 ], [ %.521012, %1107 ], [ %.0960, %1211 ], [ %.19979, %.lr.ph2177 ], [ %.0960, %.loopexit1307.loopexit3916 ]
  %.5959 = phi i32 [ %.0954, %568 ], [ %.2956, %1333 ], [ %.0954, %.loopexit1307.loopexit ], [ %.0954, %.loopexit1307.loopexit2395 ], [ %.0954, %.loopexit1307.loopexit2396 ], [ %.0954, %.loopexit1307.loopexit2398 ], [ %.0954, %.loopexit1307.loopexit2399 ], [ %.0954, %.loopexit1307.loopexit2400 ], [ %.0954, %.loopexit1307.loopexit2401 ], [ %.0954, %.loopexit1307.loopexit2402 ], [ %.0954, %.loopexit1307.loopexit2403 ], [ %.0954, %.loopexit1307.loopexit2404 ], [ %.0954, %.loopexit1307.loopexit2405 ], [ %.0954, %.loopexit1307.loopexit2415 ], [ %.2956, %.loopexit1307.loopexit2416 ], [ %.0954, %.loopexit1307.loopexit2417 ], [ %.0954, %.loopexit1307.loopexit2982 ], [ %.0954, %.loopexit1307.loopexit2985 ], [ %.0954, %.loopexit1307.loopexit2986 ], [ %.0954, %.loopexit1307.loopexit2987 ], [ %.0954, %.loopexit1307.loopexit2988 ], [ %.0954, %.loopexit1307.loopexit2989 ], [ %.0954, %.loopexit1307.loopexit2990 ], [ %.0954, %72 ], [ %.0954, %.lr.ph1818 ], [ %.0954, %.lr.ph2177 ], [ %.0954, %1211 ], [ %.0954, %1107 ], [ %.0954, %887 ], [ %.0954, %629 ], [ %.0954, %623 ], [ %.0954, %544 ], [ %.0954, %456 ], [ %.0954, %424 ], [ %.0954, %412 ], [ %.0954, %380 ], [ %.0954, %374 ], [ %.0954, %.loopexit1307.loopexit3916 ]
  %.9937 = phi i32 [ %.0928, %568 ], [ 1, %1333 ], [ %.1929, %.loopexit1307.loopexit ], [ %.1929, %.loopexit1307.loopexit2395 ], [ %.1929, %.loopexit1307.loopexit2396 ], [ %.0928, %.loopexit1307.loopexit2398 ], [ %.0928, %.loopexit1307.loopexit2399 ], [ %.0928, %.loopexit1307.loopexit2400 ], [ %.0928, %.loopexit1307.loopexit2401 ], [ %.0928, %.loopexit1307.loopexit2402 ], [ %.0928, %.loopexit1307.loopexit2403 ], [ %.0928, %.loopexit1307.loopexit2404 ], [ %.0928, %.loopexit1307.loopexit2405 ], [ %.0928, %.loopexit1307.loopexit2415 ], [ %.0928, %.loopexit1307.loopexit2416 ], [ %.0928, %.loopexit1307.loopexit2417 ], [ %.1929, %.loopexit1307.loopexit2982 ], [ %.6934, %.loopexit1307.loopexit2985 ], [ %.5933, %.loopexit1307.loopexit2986 ], [ %.5933, %.loopexit1307.loopexit2987 ], [ %.4932, %.loopexit1307.loopexit2988 ], [ %.3931, %.loopexit1307.loopexit2989 ], [ %.3931, %.loopexit1307.loopexit2990 ], [ -3, %72 ], [ %.0928, %.lr.ph1818 ], [ %.0928, %374 ], [ %.0928, %380 ], [ %.0928, %412 ], [ %.0928, %424 ], [ %.0928, %456 ], [ %.0928, %544 ], [ %.0928, %623 ], [ %.0928, %629 ], [ 0, %887 ], [ %.7935, %1107 ], [ %.0928, %1211 ], [ %.0928, %.lr.ph2177 ], [ 1, %.loopexit1307.loopexit3916 ]
  %.64 = phi ptr [ %.24.lcssa, %568 ], [ %.61, %1333 ], [ %.372023, %.loopexit1307.loopexit ], [ %.352013, %.loopexit1307.loopexit2395 ], [ %.362003, %.loopexit1307.loopexit2396 ], [ %.12384.lcssa, %.loopexit1307.loopexit2398 ], [ %.182374.lcssa, %.loopexit1307.loopexit2399 ], [ %.82365.lcssa, %.loopexit1307.loopexit2400 ], [ %.62355.lcssa, %.loopexit1307.loopexit2401 ], [ %.42345.lcssa, %.loopexit1307.loopexit2402 ], [ %.22335.lcssa, %.loopexit1307.loopexit2403 ], [ %.202167.lcssa, %.loopexit1307.loopexit2404 ], [ %.252156.lcssa, %.loopexit1307.loopexit2405 ], [ %.281807.lcssa, %.loopexit1307.loopexit2415 ], [ %.601797.lcssa, %.loopexit1307.loopexit2416 ], [ %.571790.lcssa, %.loopexit1307.loopexit2417 ], [ %scevgep.le, %.loopexit1307.loopexit2982 ], [ %scevgep2881.le, %.loopexit1307.loopexit2985 ], [ %scevgep2879.le, %.loopexit1307.loopexit2986 ], [ %scevgep2875.le, %.loopexit1307.loopexit2987 ], [ %scevgep2872.le, %.loopexit1307.loopexit2988 ], [ %scevgep2870.le, %.loopexit1307.loopexit2989 ], [ %scevgep2866.le, %.loopexit1307.loopexit2990 ], [ %.0927, %72 ], [ %.301971, %.lr.ph1818 ], [ %.11, %374 ], [ %.13, %380 ], [ %415, %412 ], [ %.15, %424 ], [ %459, %456 ], [ %.22, %544 ], [ %.25.lcssa, %623 ], [ %.27, %629 ], [ %.33.lcssa, %887 ], [ %.56, %1107 ], [ %.0927, %1211 ], [ %.23, %.lr.ph2177 ], [ %.0927, %.loopexit1307.loopexit3916 ]
  store ptr %.01149, ptr %7, align 8, !tbaa !5
  store i32 %.010822778, ptr %24, align 8, !tbaa !17
  store ptr %.64, ptr %0, align 8, !tbaa !12
  store i32 %.641148, ptr %26, align 8, !tbaa !13
  store i64 %.601081, ptr %28, align 8, !tbaa !18
  store i32 %.601020, ptr %30, align 8, !tbaa !19
  %1369 = load i32, ptr %62, align 4, !tbaa !90
  %.not1290 = icmp eq i32 %1369, 0
  br i1 %.not1290, label %1370, label %1377

1370:                                             ; preds = %.loopexit1307
  %.not1291 = icmp eq i32 %.5959, %.010822778
  br i1 %.not1291, label %1381, label %1371

1371:                                             ; preds = %1370
  %1372 = load i32, ptr %19, align 8, !tbaa !15
  %1373 = icmp ult i32 %1372, 16209
  br i1 %1373, label %1374, label %1381

1374:                                             ; preds = %1371
  %1375 = icmp ult i32 %1372, 16206
  %1376 = icmp ne i32 %1, 4
  %or.cond9 = or i1 %1376, %1375
  br i1 %or.cond9, label %1377, label %1381

1377:                                             ; preds = %1374, %.loopexit1307
  %1378 = sub i32 %.5959, %.010822778
  %1379 = call i32 @updatewindow(ptr noundef nonnull %0, ptr noundef %.01149, i32 noundef %1378)
  %.not1292 = icmp eq i32 %1379, 0
  br i1 %.not1292, label %._crit_edge2927, label %1380

._crit_edge2927:                                  ; preds = %1377
  %.pre2928 = load i32, ptr %26, align 8, !tbaa !13
  %.pre2929 = load i32, ptr %24, align 8, !tbaa !17
  br label %1381

1380:                                             ; preds = %1377
  store i32 16210, ptr %19, align 8, !tbaa !15
  br label %.loopexit1357

1381:                                             ; preds = %._crit_edge2927, %1374, %1371, %1370
  %1382 = phi i32 [ %.pre2929, %._crit_edge2927 ], [ %.010822778, %1374 ], [ %.010822778, %1371 ], [ %.010822778, %1370 ]
  %1383 = phi i32 [ %.pre2928, %._crit_edge2927 ], [ %.641148, %1374 ], [ %.641148, %1371 ], [ %.641148, %1370 ]
  %1384 = sub i32 %27, %1383
  %1385 = sub i32 %.5959, %1382
  %1386 = zext i32 %1384 to i64
  %1387 = getelementptr inbounds i8, ptr %0, i64 16
  %1388 = load i64, ptr %1387, align 8, !tbaa !105
  %1389 = add i64 %1388, %1386
  store i64 %1389, ptr %1387, align 8, !tbaa !105
  %1390 = zext i32 %1385 to i64
  %1391 = load i64, ptr %33, align 8, !tbaa !102
  %1392 = add i64 %1391, %1390
  store i64 %1392, ptr %33, align 8, !tbaa !102
  %1393 = load i64, ptr %34, align 8, !tbaa !103
  %1394 = add i64 %1393, %1390
  store i64 %1394, ptr %34, align 8, !tbaa !103
  br i1 %.not1210, label %1412, label %1395

1395:                                             ; preds = %1381
  %1396 = load i32, ptr %32, align 8, !tbaa !22
  %1397 = and i32 %1396, 4
  %1398 = icmp ne i32 %1397, 0
  %1399 = icmp ne i32 %.5959, %1382
  %or.cond11 = select i1 %1398, i1 %1399, i1 false
  br i1 %or.cond11, label %1400, label %1412

1400:                                             ; preds = %1395
  %1401 = load i32, ptr %35, align 8, !tbaa !28
  %.not1294 = icmp eq i32 %1401, 0
  %1402 = load i64, ptr %36, align 8, !tbaa !27
  %1403 = load ptr, ptr %7, align 8, !tbaa !5
  %1404 = sub nsw i64 0, %1390
  %1405 = getelementptr inbounds i8, ptr %1403, i64 %1404
  br i1 %.not1294, label %1408, label %1406

1406:                                             ; preds = %1400
  %1407 = call i64 @crc32(i64 noundef %1402, ptr noundef %1405, i32 noundef %1385) #5
  br label %1410

1408:                                             ; preds = %1400
  %1409 = call i64 @adler32(i64 noundef %1402, ptr noundef %1405, i32 noundef %1385) #5
  br label %1410

1410:                                             ; preds = %1408, %1406
  %1411 = phi i64 [ %1407, %1406 ], [ %1409, %1408 ]
  store i64 %1411, ptr %36, align 8, !tbaa !27
  store i64 %1411, ptr %37, align 8, !tbaa !34
  br label %1412

1412:                                             ; preds = %1395, %1410, %1381
  %1413 = load i32, ptr %30, align 8, !tbaa !19
  %1414 = load i32, ptr %65, align 4, !tbaa !57
  %.not1295 = icmp eq i32 %1414, 0
  %1415 = select i1 %.not1295, i32 0, i32 64
  %1416 = add nsw i32 %1415, %1413
  %1417 = load i32, ptr %19, align 8, !tbaa !15
  %1418 = icmp eq i32 %1417, 16191
  %1419 = select i1 %1418, i32 128, i32 0
  %1420 = add nsw i32 %1416, %1419
  %1421 = icmp eq i32 %1417, 16199
  %1422 = icmp eq i32 %1417, 16194
  %1423 = or i1 %1421, %1422
  %1424 = select i1 %1423, i32 256, i32 0
  %1425 = add nsw i32 %1420, %1424
  %1426 = getelementptr inbounds i8, ptr %0, i64 88
  store i32 %1425, ptr %1426, align 8, !tbaa !106
  %1427 = icmp eq i32 %27, %1383
  %1428 = icmp eq i32 %.5959, %1382
  %or.cond13 = select i1 %1427, i1 %1428, i1 false
  %1429 = icmp eq i32 %1, 4
  %or.cond15 = or i1 %1429, %or.cond13
  %1430 = icmp eq i32 %.9937, 0
  %or.cond17 = select i1 %or.cond15, i1 %1430, i1 false
  %spec.store.select = select i1 %or.cond17, i32 -5, i32 %.9937
  br label %.loopexit1357

.loopexit1357.loopexit:                           ; preds = %72
  br label %.loopexit1357

.loopexit1357:                                    ; preds = %72, %.loopexit1357.loopexit, %3, %6, %13, %1412, %1380, %541
  %.0 = phi i32 [ -4, %1380 ], [ %spec.store.select, %1412 ], [ 2, %541 ], [ -2, %13 ], [ -2, %6 ], [ -2, %3 ], [ -4, %.loopexit1357.loopexit ], [ -2, %72 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %4) #5
  ret i32 %.0
}

declare i64 @crc32(i64 noundef, ptr noundef, i32 noundef) local_unnamed_addr #2

declare i64 @adler32(i64 noundef, ptr noundef, i32 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 hidden void @fixedtables(ptr noundef) local_unnamed_addr #1

declare i32 @inflate_table(i32 noundef, ptr noundef, i32 noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

declare void @inflate_fast(ptr noundef, i32 noundef) local_unnamed_addr #2

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

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

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

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

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


; Effective O3 passes: CorrelatedValuePropagationPass,DSEPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopInstSimplifyPass,LoopLoadEliminationPass,LoopRotatePass,LoopSimplifyCFGPass,LoopSimplifyPass,LoopUnrollPass,LoopVectorizePass,ReassociatePass,SCCPPass,SROAPass,SimplifyCFGPass,TailCallElimPass