; LLVM IR from Overload-Technologies/Overload :: Dependencies/assimp/contrib/zlib (infback)

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

@inflateBack.order = external hidden constant [19 x i16], align 16
@.str.1 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [30 x i8], align 1

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

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

; Function Attrs: nounwind uwtable
define dso_local i32 @inflateBack(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4) #1 {
  %6 = alloca i32, align 4
  %7 = alloca ptr, align 8
  %8 = alloca ptr, align 8
  %9 = alloca ptr, align 8
  %10 = alloca ptr, align 8
  %11 = alloca ptr, align 8
  %12 = alloca ptr, align 8
  %13 = alloca ptr, align 8
  %14 = alloca ptr, align 8
  %15 = alloca i32, align 4
  %16 = alloca i32, align 4
  %17 = alloca i64, align 8
  %18 = alloca i32, align 4
  %19 = alloca i32, align 4
  %20 = alloca ptr, align 8
  %21 = alloca %struct.code, align 2
  %22 = alloca %struct.code, align 2
  %23 = alloca i32, align 4
  %24 = alloca i32, align 4
  %25 = alloca i32, align 4
  store ptr %0, ptr %7, align 8, !tbaa !5
  store ptr %1, ptr %8, align 8, !tbaa !5
  store ptr %2, ptr %9, align 8, !tbaa !5
  store ptr %3, ptr %10, align 8, !tbaa !5
  store ptr %4, ptr %11, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %13) #4
  call void @llvm.lifetime.start.p0(i64 8, 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 8, ptr %17) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #4
  call void @llvm.lifetime.start.p0(i64 8, 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
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #4
  %26 = load ptr, ptr %7, align 8, !tbaa !5
  %27 = icmp eq ptr %26, null
  br i1 %27, label %33, label %28

28:                                               ; preds = %5
  %29 = load ptr, ptr %7, align 8, !tbaa !5
  %30 = getelementptr inbounds %struct.z_stream_s, ptr %29, i32 0, i32 7
  %31 = load ptr, ptr %30, align 8, !tbaa !9
  %32 = icmp eq ptr %31, null
  br i1 %32, label %33, label %34

33:                                               ; preds = %28, %5
  store i32 -2, ptr %6, align 4
  store i32 1, ptr %25, align 4
  br label %1766

34:                                               ; preds = %28
  %35 = load ptr, ptr %7, align 8, !tbaa !5
  %36 = getelementptr inbounds %struct.z_stream_s, ptr %35, i32 0, i32 7
  %37 = load ptr, ptr %36, align 8, !tbaa !9
  store ptr %37, ptr %12, align 8, !tbaa !5
  %38 = load ptr, ptr %7, align 8, !tbaa !5
  %39 = getelementptr inbounds %struct.z_stream_s, ptr %38, i32 0, i32 6
  store ptr null, ptr %39, align 8, !tbaa !13
  %40 = load ptr, ptr %12, align 8, !tbaa !5
  %41 = getelementptr inbounds %struct.inflate_state, ptr %40, i32 0, i32 1
  store i32 16191, ptr %41, align 8, !tbaa !14
  %42 = load ptr, ptr %12, align 8, !tbaa !5
  %43 = getelementptr inbounds %struct.inflate_state, ptr %42, i32 0, i32 2
  store i32 0, ptr %43, align 4, !tbaa !16
  %44 = load ptr, ptr %12, align 8, !tbaa !5
  %45 = getelementptr inbounds %struct.inflate_state, ptr %44, i32 0, i32 12
  store i32 0, ptr %45, align 8, !tbaa !17
  %46 = load ptr, ptr %7, align 8, !tbaa !5
  %47 = getelementptr inbounds %struct.z_stream_s, ptr %46, i32 0, i32 0
  %48 = load ptr, ptr %47, align 8, !tbaa !18
  store ptr %48, ptr %13, align 8, !tbaa !5
  %49 = load ptr, ptr %13, align 8, !tbaa !5
  %50 = icmp ne ptr %49, null
  br i1 %50, label %51, label %55

51:                                               ; preds = %34
  %52 = load ptr, ptr %7, align 8, !tbaa !5
  %53 = getelementptr inbounds %struct.z_stream_s, ptr %52, i32 0, i32 1
  %54 = load i32, ptr %53, align 8, !tbaa !19
  br label %56

55:                                               ; preds = %34
  br label %56

56:                                               ; preds = %55, %51
  %57 = phi i32 [ %54, %51 ], [ 0, %55 ]
  store i32 %57, ptr %15, align 4, !tbaa !20
  store i64 0, ptr %17, align 8, !tbaa !21
  store i32 0, ptr %18, align 4, !tbaa !20
  %58 = load ptr, ptr %12, align 8, !tbaa !5
  %59 = getelementptr inbounds %struct.inflate_state, ptr %58, i32 0, i32 14
  %60 = load ptr, ptr %59, align 8, !tbaa !22
  store ptr %60, ptr %14, align 8, !tbaa !5
  %61 = load ptr, ptr %12, align 8, !tbaa !5
  %62 = getelementptr inbounds %struct.inflate_state, ptr %61, i32 0, i32 11
  %63 = load i32, ptr %62, align 4, !tbaa !23
  store i32 %63, ptr %16, align 4, !tbaa !20
  br label %64

64:                                               ; preds = %1733, %56
  %65 = load ptr, ptr %12, align 8, !tbaa !5
  %66 = getelementptr inbounds %struct.inflate_state, ptr %65, i32 0, i32 1
  %67 = load i32, ptr %66, align 8, !tbaa !14
  switch i32 %67, label %1732 [
    i32 16191, label %68
    i32 16193, label %165
    i32 16196, label %321
    i32 16200, label %992
    i32 16208, label %1730
    i32 16209, label %1731
  ]

68:                                               ; preds = %64
  %69 = load ptr, ptr %12, align 8, !tbaa !5
  %70 = getelementptr inbounds %struct.inflate_state, ptr %69, i32 0, i32 2
  %71 = load i32, ptr %70, align 4, !tbaa !16
  %72 = icmp ne i32 %71, 0
  br i1 %72, label %73, label %88

73:                                               ; preds = %68
  br label %74

74:                                               ; preds = %73
  %75 = load i32, ptr %18, align 4, !tbaa !20
  %76 = and i32 %75, 7
  %77 = load i64, ptr %17, align 8, !tbaa !21
  %78 = zext i32 %76 to i64
  %79 = lshr i64 %77, %78
  store i64 %79, ptr %17, align 8, !tbaa !21
  %80 = load i32, ptr %18, align 4, !tbaa !20
  %81 = and i32 %80, 7
  %82 = load i32, ptr %18, align 4, !tbaa !20
  %83 = sub i32 %82, %81
  store i32 %83, ptr %18, align 4, !tbaa !20
  br label %84

84:                                               ; preds = %74
  br label %85

85:                                               ; preds = %84
  %86 = load ptr, ptr %12, align 8, !tbaa !5
  %87 = getelementptr inbounds %struct.inflate_state, ptr %86, i32 0, i32 1
  store i32 16208, ptr %87, align 8, !tbaa !14
  br label %1733

88:                                               ; preds = %68
  br label %89

89:                                               ; preds = %88
  br label %90

90:                                               ; preds = %123, %89
  %91 = load i32, ptr %18, align 4, !tbaa !20
  %92 = icmp ult i32 %91, 3
  br i1 %92, label %93, label %124

93:                                               ; preds = %90
  br label %94

94:                                               ; preds = %93
  br label %95

95:                                               ; preds = %94
  %96 = load i32, ptr %15, align 4, !tbaa !20
  %97 = icmp eq i32 %96, 0
  br i1 %97, label %98, label %106

98:                                               ; preds = %95
  %99 = load ptr, ptr %8, align 8, !tbaa !5
  %100 = load ptr, ptr %9, align 8, !tbaa !5
  %101 = call i32 %99(ptr noundef %100, ptr noundef %13)
  store i32 %101, ptr %15, align 4, !tbaa !20
  %102 = load i32, ptr %15, align 4, !tbaa !20
  %103 = icmp eq i32 %102, 0
  br i1 %103, label %104, label %105

104:                                              ; preds = %98
  store ptr null, ptr %13, align 8, !tbaa !5
  store i32 -5, ptr %24, align 4, !tbaa !20
  br label %1734

105:                                              ; preds = %98
  br label %106

106:                                              ; preds = %105, %95
  br label %107

107:                                              ; preds = %106
  br label %108

108:                                              ; preds = %107
  %109 = load i32, ptr %15, align 4, !tbaa !20
  %110 = add i32 %109, -1
  store i32 %110, ptr %15, align 4, !tbaa !20
  %111 = load ptr, ptr %13, align 8, !tbaa !5
  %112 = getelementptr inbounds i8, ptr %111, i32 1
  store ptr %112, ptr %13, align 8, !tbaa !5
  %113 = load i8, ptr %111, align 1, !tbaa !24
  %114 = zext i8 %113 to i64
  %115 = load i32, ptr %18, align 4, !tbaa !20
  %116 = zext i32 %115 to i64
  %117 = shl i64 %114, %116
  %118 = load i64, ptr %17, align 8, !tbaa !21
  %119 = add i64 %118, %117
  store i64 %119, ptr %17, align 8, !tbaa !21
  %120 = load i32, ptr %18, align 4, !tbaa !20
  %121 = add i32 %120, 8
  store i32 %121, ptr %18, align 4, !tbaa !20
  br label %122

122:                                              ; preds = %108
  br label %123

123:                                              ; preds = %122
  br label %90, !llvm.loop !25

124:                                              ; preds = %90
  br label %125

125:                                              ; preds = %124
  br label %126

126:                                              ; preds = %125
  %127 = load i64, ptr %17, align 8, !tbaa !21
  %128 = trunc i64 %127 to i32
  %129 = and i32 %128, 1
  %130 = load ptr, ptr %12, align 8, !tbaa !5
  %131 = getelementptr inbounds %struct.inflate_state, ptr %130, i32 0, i32 2
  store i32 %129, ptr %131, align 4, !tbaa !16
  br label %132

132:                                              ; preds = %126
  %133 = load i64, ptr %17, align 8, !tbaa !21
  %134 = lshr i64 %133, 1
  store i64 %134, ptr %17, align 8, !tbaa !21
  %135 = load i32, ptr %18, align 4, !tbaa !20
  %136 = sub i32 %135, 1
  store i32 %136, ptr %18, align 4, !tbaa !20
  br label %137

137:                                              ; preds = %132
  br label %138

138:                                              ; preds = %137
  %139 = load i64, ptr %17, align 8, !tbaa !21
  %140 = trunc i64 %139 to i32
  %141 = and i32 %140, 3
  switch i32 %141, label %157 [
    i32 0, label %142
    i32 1, label %145
    i32 2, label %149
    i32 3, label %152
  ]

142:                                              ; preds = %138
  %143 = load ptr, ptr %12, align 8, !tbaa !5
  %144 = getelementptr inbounds %struct.inflate_state, ptr %143, i32 0, i32 1
  store i32 16193, ptr %144, align 8, !tbaa !14
  br label %157

145:                                              ; preds = %138
  %146 = load ptr, ptr %12, align 8, !tbaa !5
  call void @fixedtables(ptr noundef %146)
  %147 = load ptr, ptr %12, align 8, !tbaa !5
  %148 = getelementptr inbounds %struct.inflate_state, ptr %147, i32 0, i32 1
  store i32 16200, ptr %148, align 8, !tbaa !14
  br label %157

149:                                              ; preds = %138
  %150 = load ptr, ptr %12, align 8, !tbaa !5
  %151 = getelementptr inbounds %struct.inflate_state, ptr %150, i32 0, i32 1
  store i32 16196, ptr %151, align 8, !tbaa !14
  br label %157

152:                                              ; preds = %138
  %153 = load ptr, ptr %7, align 8, !tbaa !5
  %154 = getelementptr inbounds %struct.z_stream_s, ptr %153, i32 0, i32 6
  store ptr @.str.1, ptr %154, align 8, !tbaa !13
  %155 = load ptr, ptr %12, align 8, !tbaa !5
  %156 = getelementptr inbounds %struct.inflate_state, ptr %155, i32 0, i32 1
  store i32 16209, ptr %156, align 8, !tbaa !14
  br label %157

157:                                              ; preds = %152, %149, %145, %142, %138
  br label %158

158:                                              ; preds = %157
  %159 = load i64, ptr %17, align 8, !tbaa !21
  %160 = lshr i64 %159, 2
  store i64 %160, ptr %17, align 8, !tbaa !21
  %161 = load i32, ptr %18, align 4, !tbaa !20
  %162 = sub i32 %161, 2
  store i32 %162, ptr %18, align 4, !tbaa !20
  br label %163

163:                                              ; preds = %158
  br label %164

164:                                              ; preds = %163
  br label %1733

165:                                              ; preds = %64
  br label %166

166:                                              ; preds = %165
  %167 = load i32, ptr %18, align 4, !tbaa !20
  %168 = and i32 %167, 7
  %169 = load i64, ptr %17, align 8, !tbaa !21
  %170 = zext i32 %168 to i64
  %171 = lshr i64 %169, %170
  store i64 %171, ptr %17, align 8, !tbaa !21
  %172 = load i32, ptr %18, align 4, !tbaa !20
  %173 = and i32 %172, 7
  %174 = load i32, ptr %18, align 4, !tbaa !20
  %175 = sub i32 %174, %173
  store i32 %175, ptr %18, align 4, !tbaa !20
  br label %176

176:                                              ; preds = %166
  br label %177

177:                                              ; preds = %176
  br label %178

178:                                              ; preds = %177
  br label %179

179:                                              ; preds = %212, %178
  %180 = load i32, ptr %18, align 4, !tbaa !20
  %181 = icmp ult i32 %180, 32
  br i1 %181, label %182, label %213

182:                                              ; preds = %179
  br label %183

183:                                              ; preds = %182
  br label %184

184:                                              ; preds = %183
  %185 = load i32, ptr %15, align 4, !tbaa !20
  %186 = icmp eq i32 %185, 0
  br i1 %186, label %187, label %195

187:                                              ; preds = %184
  %188 = load ptr, ptr %8, align 8, !tbaa !5
  %189 = load ptr, ptr %9, align 8, !tbaa !5
  %190 = call i32 %188(ptr noundef %189, ptr noundef %13)
  store i32 %190, ptr %15, align 4, !tbaa !20
  %191 = load i32, ptr %15, align 4, !tbaa !20
  %192 = icmp eq i32 %191, 0
  br i1 %192, label %193, label %194

193:                                              ; preds = %187
  store ptr null, ptr %13, align 8, !tbaa !5
  store i32 -5, ptr %24, align 4, !tbaa !20
  br label %1734

194:                                              ; preds = %187
  br label %195

195:                                              ; preds = %194, %184
  br label %196

196:                                              ; preds = %195
  br label %197

197:                                              ; preds = %196
  %198 = load i32, ptr %15, align 4, !tbaa !20
  %199 = add i32 %198, -1
  store i32 %199, ptr %15, align 4, !tbaa !20
  %200 = load ptr, ptr %13, align 8, !tbaa !5
  %201 = getelementptr inbounds i8, ptr %200, i32 1
  store ptr %201, ptr %13, align 8, !tbaa !5
  %202 = load i8, ptr %200, align 1, !tbaa !24
  %203 = zext i8 %202 to i64
  %204 = load i32, ptr %18, align 4, !tbaa !20
  %205 = zext i32 %204 to i64
  %206 = shl i64 %203, %205
  %207 = load i64, ptr %17, align 8, !tbaa !21
  %208 = add i64 %207, %206
  store i64 %208, ptr %17, align 8, !tbaa !21
  %209 = load i32, ptr %18, align 4, !tbaa !20
  %210 = add i32 %209, 8
  store i32 %210, ptr %18, align 4, !tbaa !20
  br label %211

211:                                              ; preds = %197
  br label %212

212:                                              ; preds = %211
  br label %179, !llvm.loop !27

213:                                              ; preds = %179
  br label %214

214:                                              ; preds = %213
  br label %215

215:                                              ; preds = %214
  %216 = load i64, ptr %17, align 8, !tbaa !21
  %217 = and i64 %216, 65535
  %218 = load i64, ptr %17, align 8, !tbaa !21
  %219 = lshr i64 %218, 16
  %220 = xor i64 %219, 65535
  %221 = icmp ne i64 %217, %220
  br i1 %221, label %222, label %227

222:                                              ; preds = %215
  %223 = load ptr, ptr %7, align 8, !tbaa !5
  %224 = getelementptr inbounds %struct.z_stream_s, ptr %223, i32 0, i32 6
  store ptr @.str.2, ptr %224, align 8, !tbaa !13
  %225 = load ptr, ptr %12, align 8, !tbaa !5
  %226 = getelementptr inbounds %struct.inflate_state, ptr %225, i32 0, i32 1
  store i32 16209, ptr %226, align 8, !tbaa !14
  br label %1733

227:                                              ; preds = %215
  %228 = load i64, ptr %17, align 8, !tbaa !21
  %229 = trunc i64 %228 to i32
  %230 = and i32 %229, 65535
  %231 = load ptr, ptr %12, align 8, !tbaa !5
  %232 = getelementptr inbounds %struct.inflate_state, ptr %231, i32 0, i32 17
  store i32 %230, ptr %232, align 4, !tbaa !28
  br label %233

233:                                              ; preds = %227
  store i64 0, ptr %17, align 8, !tbaa !21
  store i32 0, ptr %18, align 4, !tbaa !20
  br label %234

234:                                              ; preds = %233
  br label %235

235:                                              ; preds = %234
  br label %236

236:                                              ; preds = %294, %235
  %237 = load ptr, ptr %12, align 8, !tbaa !5
  %238 = getelementptr inbounds %struct.inflate_state, ptr %237, i32 0, i32 17
  %239 = load i32, ptr %238, align 4, !tbaa !28
  %240 = icmp ne i32 %239, 0
  br i1 %240, label %241, label %318

241:                                              ; preds = %236
  %242 = load ptr, ptr %12, align 8, !tbaa !5
  %243 = getelementptr inbounds %struct.inflate_state, ptr %242, i32 0, i32 17
  %244 = load i32, ptr %243, align 4, !tbaa !28
  store i32 %244, ptr %19, align 4, !tbaa !20
  br label %245

245:                                              ; preds = %241
  %246 = load i32, ptr %15, align 4, !tbaa !20
  %247 = icmp eq i32 %246, 0
  br i1 %247, label %248, label %256

248:                                              ; preds = %245
  %249 = load ptr, ptr %8, align 8, !tbaa !5
  %250 = load ptr, ptr %9, align 8, !tbaa !5
  %251 = call i32 %249(ptr noundef %250, ptr noundef %13)
  store i32 %251, ptr %15, align 4, !tbaa !20
  %252 = load i32, ptr %15, align 4, !tbaa !20
  %253 = icmp eq i32 %252, 0
  br i1 %253, label %254, label %255

254:                                              ; preds = %248
  store ptr null, ptr %13, align 8, !tbaa !5
  store i32 -5, ptr %24, align 4, !tbaa !20
  br label %1734

255:                                              ; preds = %248
  br label %256

256:                                              ; preds = %255, %245
  br label %257

257:                                              ; preds = %256
  br label %258

258:                                              ; preds = %257
  br label %259

259:                                              ; preds = %258
  %260 = load i32, ptr %16, align 4, !tbaa !20
  %261 = icmp eq i32 %260, 0
  br i1 %261, label %262, label %280

262:                                              ; preds = %259
  %263 = load ptr, ptr %12, align 8, !tbaa !5
  %264 = getelementptr inbounds %struct.inflate_state, ptr %263, i32 0, i32 14
  %265 = load ptr, ptr %264, align 8, !tbaa !22
  store ptr %265, ptr %14, align 8, !tbaa !5
  %266 = load ptr, ptr %12, align 8, !tbaa !5
  %267 = getelementptr inbounds %struct.inflate_state, ptr %266, i32 0, i32 11
  %268 = load i32, ptr %267, align 4, !tbaa !23
  store i32 %268, ptr %16, align 4, !tbaa !20
  %269 = load i32, ptr %16, align 4, !tbaa !20
  %270 = load ptr, ptr %12, align 8, !tbaa !5
  %271 = getelementptr inbounds %struct.inflate_state, ptr %270, i32 0, i32 12
  store i32 %269, ptr %271, align 8, !tbaa !17
  %272 = load ptr, ptr %10, align 8, !tbaa !5
  %273 = load ptr, ptr %11, align 8, !tbaa !5
  %274 = load ptr, ptr %14, align 8, !tbaa !5
  %275 = load i32, ptr %16, align 4, !tbaa !20
  %276 = call i32 %272(ptr noundef %273, ptr noundef %274, i32 noundef %275)
  %277 = icmp ne i32 %276, 0
  br i1 %277, label %278, label %279

278:                                              ; preds = %262
  store i32 -5, ptr %24, align 4, !tbaa !20
  br label %1734

279:                                              ; preds = %262
  br label %280

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

281:                                              ; preds = %280
  br label %282

282:                                              ; preds = %281
  %283 = load i32, ptr %19, align 4, !tbaa !20
  %284 = load i32, ptr %15, align 4, !tbaa !20
  %285 = icmp ugt i32 %283, %284
  br i1 %285, label %286, label %288

286:                                              ; preds = %282
  %287 = load i32, ptr %15, align 4, !tbaa !20
  store i32 %287, ptr %19, align 4, !tbaa !20
  br label %288

288:                                              ; preds = %286, %282
  %289 = load i32, ptr %19, align 4, !tbaa !20
  %290 = load i32, ptr %16, align 4, !tbaa !20
  %291 = icmp ugt i32 %289, %290
  br i1 %291, label %292, label %294

292:                                              ; preds = %288
  %293 = load i32, ptr %16, align 4, !tbaa !20
  store i32 %293, ptr %19, align 4, !tbaa !20
  br label %294

294:                                              ; preds = %292, %288
  %295 = load ptr, ptr %14, align 8, !tbaa !5
  %296 = load ptr, ptr %13, align 8, !tbaa !5
  %297 = load i32, ptr %19, align 4, !tbaa !20
  %298 = zext i32 %297 to i64
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %295, ptr align 1 %296, i64 %298, i1 false)
  %299 = load i32, ptr %19, align 4, !tbaa !20
  %300 = load i32, ptr %15, align 4, !tbaa !20
  %301 = sub i32 %300, %299
  store i32 %301, ptr %15, align 4, !tbaa !20
  %302 = load i32, ptr %19, align 4, !tbaa !20
  %303 = load ptr, ptr %13, align 8, !tbaa !5
  %304 = zext i32 %302 to i64
  %305 = getelementptr inbounds i8, ptr %303, i64 %304
  store ptr %305, ptr %13, align 8, !tbaa !5
  %306 = load i32, ptr %19, align 4, !tbaa !20
  %307 = load i32, ptr %16, align 4, !tbaa !20
  %308 = sub i32 %307, %306
  store i32 %308, ptr %16, align 4, !tbaa !20
  %309 = load i32, ptr %19, align 4, !tbaa !20
  %310 = load ptr, ptr %14, align 8, !tbaa !5
  %311 = zext i32 %309 to i64
  %312 = getelementptr inbounds i8, ptr %310, i64 %311
  store ptr %312, ptr %14, align 8, !tbaa !5
  %313 = load i32, ptr %19, align 4, !tbaa !20
  %314 = load ptr, ptr %12, align 8, !tbaa !5
  %315 = getelementptr inbounds %struct.inflate_state, ptr %314, i32 0, i32 17
  %316 = load i32, ptr %315, align 4, !tbaa !28
  %317 = sub i32 %316, %313
  store i32 %317, ptr %315, align 4, !tbaa !28
  br label %236, !llvm.loop !29

318:                                              ; preds = %236
  %319 = load ptr, ptr %12, align 8, !tbaa !5
  %320 = getelementptr inbounds %struct.inflate_state, ptr %319, i32 0, i32 1
  store i32 16191, ptr %320, align 8, !tbaa !14
  br label %1733

321:                                              ; preds = %64
  br label %322

322:                                              ; preds = %321
  br label %323

323:                                              ; preds = %356, %322
  %324 = load i32, ptr %18, align 4, !tbaa !20
  %325 = icmp ult i32 %324, 14
  br i1 %325, label %326, label %357

326:                                              ; preds = %323
  br label %327

327:                                              ; preds = %326
  br label %328

328:                                              ; preds = %327
  %329 = load i32, ptr %15, align 4, !tbaa !20
  %330 = icmp eq i32 %329, 0
  br i1 %330, label %331, label %339

331:                                              ; preds = %328
  %332 = load ptr, ptr %8, align 8, !tbaa !5
  %333 = load ptr, ptr %9, align 8, !tbaa !5
  %334 = call i32 %332(ptr noundef %333, ptr noundef %13)
  store i32 %334, ptr %15, align 4, !tbaa !20
  %335 = load i32, ptr %15, align 4, !tbaa !20
  %336 = icmp eq i32 %335, 0
  br i1 %336, label %337, label %338

337:                                              ; preds = %331
  store ptr null, ptr %13, align 8, !tbaa !5
  store i32 -5, ptr %24, align 4, !tbaa !20
  br label %1734

338:                                              ; preds = %331
  br label %339

339:                                              ; preds = %338, %328
  br label %340

340:                                              ; preds = %339
  br label %341

341:                                              ; preds = %340
  %342 = load i32, ptr %15, align 4, !tbaa !20
  %343 = add i32 %342, -1
  store i32 %343, ptr %15, align 4, !tbaa !20
  %344 = load ptr, ptr %13, align 8, !tbaa !5
  %345 = getelementptr inbounds i8, ptr %344, i32 1
  store ptr %345, ptr %13, align 8, !tbaa !5
  %346 = load i8, ptr %344, align 1, !tbaa !24
  %347 = zext i8 %346 to i64
  %348 = load i32, ptr %18, align 4, !tbaa !20
  %349 = zext i32 %348 to i64
  %350 = shl i64 %347, %349
  %351 = load i64, ptr %17, align 8, !tbaa !21
  %352 = add i64 %351, %350
  store i64 %352, ptr %17, align 8, !tbaa !21
  %353 = load i32, ptr %18, align 4, !tbaa !20
  %354 = add i32 %353, 8
  store i32 %354, ptr %18, align 4, !tbaa !20
  br label %355

355:                                              ; preds = %341
  br label %356

356:                                              ; preds = %355
  br label %323, !llvm.loop !30

357:                                              ; preds = %323
  br label %358

358:                                              ; preds = %357
  br label %359

359:                                              ; preds = %358
  %360 = load i64, ptr %17, align 8, !tbaa !21
  %361 = trunc i64 %360 to i32
  %362 = and i32 %361, 31
  %363 = add i32 %362, 257
  %364 = load ptr, ptr %12, align 8, !tbaa !5
  %365 = getelementptr inbounds %struct.inflate_state, ptr %364, i32 0, i32 25
  store i32 %363, ptr %365, align 4, !tbaa !31
  br label %366

366:                                              ; preds = %359
  %367 = load i64, ptr %17, align 8, !tbaa !21
  %368 = lshr i64 %367, 5
  store i64 %368, ptr %17, align 8, !tbaa !21
  %369 = load i32, ptr %18, align 4, !tbaa !20
  %370 = sub i32 %369, 5
  store i32 %370, ptr %18, align 4, !tbaa !20
  br label %371

371:                                              ; preds = %366
  br label %372

372:                                              ; preds = %371
  %373 = load i64, ptr %17, align 8, !tbaa !21
  %374 = trunc i64 %373 to i32
  %375 = and i32 %374, 31
  %376 = add i32 %375, 1
  %377 = load ptr, ptr %12, align 8, !tbaa !5
  %378 = getelementptr inbounds %struct.inflate_state, ptr %377, i32 0, i32 26
  store i32 %376, ptr %378, align 8, !tbaa !32
  br label %379

379:                                              ; preds = %372
  %380 = load i64, ptr %17, align 8, !tbaa !21
  %381 = lshr i64 %380, 5
  store i64 %381, ptr %17, align 8, !tbaa !21
  %382 = load i32, ptr %18, align 4, !tbaa !20
  %383 = sub i32 %382, 5
  store i32 %383, ptr %18, align 4, !tbaa !20
  br label %384

384:                                              ; preds = %379
  br label %385

385:                                              ; preds = %384
  %386 = load i64, ptr %17, align 8, !tbaa !21
  %387 = trunc i64 %386 to i32
  %388 = and i32 %387, 15
  %389 = add i32 %388, 4
  %390 = load ptr, ptr %12, align 8, !tbaa !5
  %391 = getelementptr inbounds %struct.inflate_state, ptr %390, i32 0, i32 24
  store i32 %389, ptr %391, align 8, !tbaa !33
  br label %392

392:                                              ; preds = %385
  %393 = load i64, ptr %17, align 8, !tbaa !21
  %394 = lshr i64 %393, 4
  store i64 %394, ptr %17, align 8, !tbaa !21
  %395 = load i32, ptr %18, align 4, !tbaa !20
  %396 = sub i32 %395, 4
  store i32 %396, ptr %18, align 4, !tbaa !20
  br label %397

397:                                              ; preds = %392
  br label %398

398:                                              ; preds = %397
  %399 = load ptr, ptr %12, align 8, !tbaa !5
  %400 = getelementptr inbounds %struct.inflate_state, ptr %399, i32 0, i32 25
  %401 = load i32, ptr %400, align 4, !tbaa !31
  %402 = icmp ugt i32 %401, 286
  br i1 %402, label %408, label %403

403:                                              ; preds = %398
  %404 = load ptr, ptr %12, align 8, !tbaa !5
  %405 = getelementptr inbounds %struct.inflate_state, ptr %404, i32 0, i32 26
  %406 = load i32, ptr %405, align 8, !tbaa !32
  %407 = icmp ugt i32 %406, 30
  br i1 %407, label %408, label %413

408:                                              ; preds = %403, %398
  %409 = load ptr, ptr %7, align 8, !tbaa !5
  %410 = getelementptr inbounds %struct.z_stream_s, ptr %409, i32 0, i32 6
  store ptr @.str.3, ptr %410, align 8, !tbaa !13
  %411 = load ptr, ptr %12, align 8, !tbaa !5
  %412 = getelementptr inbounds %struct.inflate_state, ptr %411, i32 0, i32 1
  store i32 16209, ptr %412, align 8, !tbaa !14
  br label %1733

413:                                              ; preds = %403
  %414 = load ptr, ptr %12, align 8, !tbaa !5
  %415 = getelementptr inbounds %struct.inflate_state, ptr %414, i32 0, i32 27
  store i32 0, ptr %415, align 4, !tbaa !34
  br label %416

416:                                              ; preds = %484, %413
  %417 = load ptr, ptr %12, align 8, !tbaa !5
  %418 = getelementptr inbounds %struct.inflate_state, ptr %417, i32 0, i32 27
  %419 = load i32, ptr %418, align 4, !tbaa !34
  %420 = load ptr, ptr %12, align 8, !tbaa !5
  %421 = getelementptr inbounds %struct.inflate_state, ptr %420, i32 0, i32 24
  %422 = load i32, ptr %421, align 8, !tbaa !33
  %423 = icmp ult i32 %419, %422
  br i1 %423, label %424, label %485

424:                                              ; preds = %416
  br label %425

425:                                              ; preds = %424
  br label %426

426:                                              ; preds = %459, %425
  %427 = load i32, ptr %18, align 4, !tbaa !20
  %428 = icmp ult i32 %427, 3
  br i1 %428, label %429, label %460

429:                                              ; preds = %426
  br label %430

430:                                              ; preds = %429
  br label %431

431:                                              ; preds = %430
  %432 = load i32, ptr %15, align 4, !tbaa !20
  %433 = icmp eq i32 %432, 0
  br i1 %433, label %434, label %442

434:                                              ; preds = %431
  %435 = load ptr, ptr %8, align 8, !tbaa !5
  %436 = load ptr, ptr %9, align 8, !tbaa !5
  %437 = call i32 %435(ptr noundef %436, ptr noundef %13)
  store i32 %437, ptr %15, align 4, !tbaa !20
  %438 = load i32, ptr %15, align 4, !tbaa !20
  %439 = icmp eq i32 %438, 0
  br i1 %439, label %440, label %441

440:                                              ; preds = %434
  store ptr null, ptr %13, align 8, !tbaa !5
  store i32 -5, ptr %24, align 4, !tbaa !20
  br label %1734

441:                                              ; preds = %434
  br label %442

442:                                              ; preds = %441, %431
  br label %443

443:                                              ; preds = %442
  br label %444

444:                                              ; preds = %443
  %445 = load i32, ptr %15, align 4, !tbaa !20
  %446 = add i32 %445, -1
  store i32 %446, ptr %15, align 4, !tbaa !20
  %447 = load ptr, ptr %13, align 8, !tbaa !5
  %448 = getelementptr inbounds i8, ptr %447, i32 1
  store ptr %448, ptr %13, align 8, !tbaa !5
  %449 = load i8, ptr %447, align 1, !tbaa !24
  %450 = zext i8 %449 to i64
  %451 = load i32, ptr %18, align 4, !tbaa !20
  %452 = zext i32 %451 to i64
  %453 = shl i64 %450, %452
  %454 = load i64, ptr %17, align 8, !tbaa !21
  %455 = add i64 %454, %453
  store i64 %455, ptr %17, align 8, !tbaa !21
  %456 = load i32, ptr %18, align 4, !tbaa !20
  %457 = add i32 %456, 8
  store i32 %457, ptr %18, align 4, !tbaa !20
  br label %458

458:                                              ; preds = %444
  br label %459

459:                                              ; preds = %458
  br label %426, !llvm.loop !35

460:                                              ; preds = %426
  br label %461

461:                                              ; preds = %460
  br label %462

462:                                              ; preds = %461
  %463 = load i64, ptr %17, align 8, !tbaa !21
  %464 = trunc i64 %463 to i32
  %465 = and i32 %464, 7
  %466 = trunc i32 %465 to i16
  %467 = load ptr, ptr %12, align 8, !tbaa !5
  %468 = getelementptr inbounds %struct.inflate_state, ptr %467, i32 0, i32 29
  %469 = load ptr, ptr %12, align 8, !tbaa !5
  %470 = getelementptr inbounds %struct.inflate_state, ptr %469, i32 0, i32 27
  %471 = load i32, ptr %470, align 4, !tbaa !34
  %472 = add i32 %471, 1
  store i32 %472, ptr %470, align 4, !tbaa !34
  %473 = zext i32 %471 to i64
  %474 = getelementptr inbounds [19 x i16], ptr @inflateBack.order, i64 0, i64 %473
  %475 = load i16, ptr %474, align 2, !tbaa !36
  %476 = zext i16 %475 to i64
  %477 = getelementptr inbounds [320 x i16], ptr %468, i64 0, i64 %476
  store i16 %466, ptr %477, align 2, !tbaa !36
  br label %478

478:                                              ; preds = %462
  %479 = load i64, ptr %17, align 8, !tbaa !21
  %480 = lshr i64 %479, 3
  store i64 %480, ptr %17, align 8, !tbaa !21
  %481 = load i32, ptr %18, align 4, !tbaa !20
  %482 = sub i32 %481, 3
  store i32 %482, ptr %18, align 4, !tbaa !20
  br label %483

483:                                              ; preds = %478
  br label %484

484:                                              ; preds = %483
  br label %416, !llvm.loop !38

485:                                              ; preds = %416
  br label %486

486:                                              ; preds = %491, %485
  %487 = load ptr, ptr %12, align 8, !tbaa !5
  %488 = getelementptr inbounds %struct.inflate_state, ptr %487, i32 0, i32 27
  %489 = load i32, ptr %488, align 4, !tbaa !34
  %490 = icmp ult i32 %489, 19
  br i1 %490, label %491, label %503

491:                                              ; preds = %486
  %492 = load ptr, ptr %12, align 8, !tbaa !5
  %493 = getelementptr inbounds %struct.inflate_state, ptr %492, i32 0, i32 29
  %494 = load ptr, ptr %12, align 8, !tbaa !5
  %495 = getelementptr inbounds %struct.inflate_state, ptr %494, i32 0, i32 27
  %496 = load i32, ptr %495, align 4, !tbaa !34
  %497 = add i32 %496, 1
  store i32 %497, ptr %495, align 4, !tbaa !34
  %498 = zext i32 %496 to i64
  %499 = getelementptr inbounds [19 x i16], ptr @inflateBack.order, i64 0, i64 %498
  %500 = load i16, ptr %499, align 2, !tbaa !36
  %501 = zext i16 %500 to i64
  %502 = getelementptr inbounds [320 x i16], ptr %493, i64 0, i64 %501
  store i16 0, ptr %502, align 2, !tbaa !36
  br label %486, !llvm.loop !39

503:                                              ; preds = %486
  %504 = load ptr, ptr %12, align 8, !tbaa !5
  %505 = getelementptr inbounds %struct.inflate_state, ptr %504, i32 0, i32 31
  %506 = getelementptr inbounds [1444 x %struct.code], ptr %505, i64 0, i64 0
  %507 = load ptr, ptr %12, align 8, !tbaa !5
  %508 = getelementptr inbounds %struct.inflate_state, ptr %507, i32 0, i32 28
  store ptr %506, ptr %508, align 8, !tbaa !40
  %509 = load ptr, ptr %12, align 8, !tbaa !5
  %510 = getelementptr inbounds %struct.inflate_state, ptr %509, i32 0, i32 28
  %511 = load ptr, ptr %510, align 8, !tbaa !40
  %512 = load ptr, ptr %12, align 8, !tbaa !5
  %513 = getelementptr inbounds %struct.inflate_state, ptr %512, i32 0, i32 20
  store ptr %511, ptr %513, align 8, !tbaa !41
  %514 = load ptr, ptr %12, align 8, !tbaa !5
  %515 = getelementptr inbounds %struct.inflate_state, ptr %514, i32 0, i32 22
  store i32 7, ptr %515, align 8, !tbaa !42
  %516 = load ptr, ptr %12, align 8, !tbaa !5
  %517 = getelementptr inbounds %struct.inflate_state, ptr %516, i32 0, i32 29
  %518 = getelementptr inbounds [320 x i16], ptr %517, i64 0, i64 0
  %519 = load ptr, ptr %12, align 8, !tbaa !5
  %520 = getelementptr inbounds %struct.inflate_state, ptr %519, i32 0, i32 28
  %521 = load ptr, ptr %12, align 8, !tbaa !5
  %522 = getelementptr inbounds %struct.inflate_state, ptr %521, i32 0, i32 22
  %523 = load ptr, ptr %12, align 8, !tbaa !5
  %524 = getelementptr inbounds %struct.inflate_state, ptr %523, i32 0, i32 30
  %525 = getelementptr inbounds [288 x i16], ptr %524, i64 0, i64 0
  %526 = call i32 @inflate_table(i32 noundef 0, ptr noundef %518, i32 noundef 19, ptr noundef %520, ptr noundef %522, ptr noundef %525)
  store i32 %526, ptr %24, align 4, !tbaa !20
  %527 = load i32, ptr %24, align 4, !tbaa !20
  %528 = icmp ne i32 %527, 0
  br i1 %528, label %529, label %534

529:                                              ; preds = %503
  %530 = load ptr, ptr %7, align 8, !tbaa !5
  %531 = getelementptr inbounds %struct.z_stream_s, ptr %530, i32 0, i32 6
  store ptr @.str.4, ptr %531, align 8, !tbaa !13
  %532 = load ptr, ptr %12, align 8, !tbaa !5
  %533 = getelementptr inbounds %struct.inflate_state, ptr %532, i32 0, i32 1
  store i32 16209, ptr %533, align 8, !tbaa !14
  br label %1733

534:                                              ; preds = %503
  %535 = load ptr, ptr %12, align 8, !tbaa !5
  %536 = getelementptr inbounds %struct.inflate_state, ptr %535, i32 0, i32 27
  store i32 0, ptr %536, align 4, !tbaa !34
  br label %537

537:                                              ; preds = %902, %534
  %538 = load ptr, ptr %12, align 8, !tbaa !5
  %539 = getelementptr inbounds %struct.inflate_state, ptr %538, i32 0, i32 27
  %540 = load i32, ptr %539, align 4, !tbaa !34
  %541 = load ptr, ptr %12, align 8, !tbaa !5
  %542 = getelementptr inbounds %struct.inflate_state, ptr %541, i32 0, i32 25
  %543 = load i32, ptr %542, align 4, !tbaa !31
  %544 = load ptr, ptr %12, align 8, !tbaa !5
  %545 = getelementptr inbounds %struct.inflate_state, ptr %544, i32 0, i32 26
  %546 = load i32, ptr %545, align 8, !tbaa !32
  %547 = add i32 %543, %546
  %548 = icmp ult i32 %540, %547
  br i1 %548, label %549, label %903

549:                                              ; preds = %537
  br label %550

550:                                              ; preds = %600, %549
  %551 = load ptr, ptr %12, align 8, !tbaa !5
  %552 = getelementptr inbounds %struct.inflate_state, ptr %551, i32 0, i32 20
  %553 = load ptr, ptr %552, align 8, !tbaa !41
  %554 = load i64, ptr %17, align 8, !tbaa !21
  %555 = trunc i64 %554 to i32
  %556 = load ptr, ptr %12, align 8, !tbaa !5
  %557 = getelementptr inbounds %struct.inflate_state, ptr %556, i32 0, i32 22
  %558 = load i32, ptr %557, align 8, !tbaa !42
  %559 = shl i32 1, %558
  %560 = sub i32 %559, 1
  %561 = and i32 %555, %560
  %562 = zext i32 %561 to i64
  %563 = getelementptr inbounds %struct.code, ptr %553, i64 %562
  call void @llvm.memcpy.p0.p0.i64(ptr align 2 %21, ptr align 2 %563, i64 4, i1 false), !tbaa.struct !43
  %564 = getelementptr inbounds %struct.code, ptr %21, i32 0, i32 1
  %565 = load i8, ptr %564, align 1, !tbaa !44
  %566 = zext i8 %565 to i32
  %567 = load i32, ptr %18, align 4, !tbaa !20
  %568 = icmp ule i32 %566, %567
  br i1 %568, label %569, label %570

569:                                              ; preds = %550
  br label %601

570:                                              ; preds = %550
  br label %571

571:                                              ; preds = %570
  br label %572

572:                                              ; preds = %571
  %573 = load i32, ptr %15, align 4, !tbaa !20
  %574 = icmp eq i32 %573, 0
  br i1 %574, label %575, label %583

575:                                              ; preds = %572
  %576 = load ptr, ptr %8, align 8, !tbaa !5
  %577 = load ptr, ptr %9, align 8, !tbaa !5
  %578 = call i32 %576(ptr noundef %577, ptr noundef %13)
  store i32 %578, ptr %15, align 4, !tbaa !20
  %579 = load i32, ptr %15, align 4, !tbaa !20
  %580 = icmp eq i32 %579, 0
  br i1 %580, label %581, label %582

581:                                              ; preds = %575
  store ptr null, ptr %13, align 8, !tbaa !5
  store i32 -5, ptr %24, align 4, !tbaa !20
  br label %1734

582:                                              ; preds = %575
  br label %583

583:                                              ; preds = %582, %572
  br label %584

584:                                              ; preds = %583
  br label %585

585:                                              ; preds = %584
  %586 = load i32, ptr %15, align 4, !tbaa !20
  %587 = add i32 %586, -1
  store i32 %587, ptr %15, align 4, !tbaa !20
  %588 = load ptr, ptr %13, align 8, !tbaa !5
  %589 = getelementptr inbounds i8, ptr %588, i32 1
  store ptr %589, ptr %13, align 8, !tbaa !5
  %590 = load i8, ptr %588, align 1, !tbaa !24
  %591 = zext i8 %590 to i64
  %592 = load i32, ptr %18, align 4, !tbaa !20
  %593 = zext i32 %592 to i64
  %594 = shl i64 %591, %593
  %595 = load i64, ptr %17, align 8, !tbaa !21
  %596 = add i64 %595, %594
  store i64 %596, ptr %17, align 8, !tbaa !21
  %597 = load i32, ptr %18, align 4, !tbaa !20
  %598 = add i32 %597, 8
  store i32 %598, ptr %18, align 4, !tbaa !20
  br label %599

599:                                              ; preds = %585
  br label %600

600:                                              ; preds = %599
  br label %550

601:                                              ; preds = %569
  %602 = getelementptr inbounds %struct.code, ptr %21, i32 0, i32 2
  %603 = load i16, ptr %602, align 2, !tbaa !46
  %604 = zext i16 %603 to i32
  %605 = icmp slt i32 %604, 16
  br i1 %605, label %606, label %631

606:                                              ; preds = %601
  br label %607

607:                                              ; preds = %606
  %608 = getelementptr inbounds %struct.code, ptr %21, i32 0, i32 1
  %609 = load i8, ptr %608, align 1, !tbaa !44
  %610 = zext i8 %609 to i32
  %611 = load i64, ptr %17, align 8, !tbaa !21
  %612 = zext i32 %610 to i64
  %613 = lshr i64 %611, %612
  store i64 %613, ptr %17, align 8, !tbaa !21
  %614 = getelementptr inbounds %struct.code, ptr %21, i32 0, i32 1
  %615 = load i8, ptr %614, align 1, !tbaa !44
  %616 = zext i8 %615 to i32
  %617 = load i32, ptr %18, align 4, !tbaa !20
  %618 = sub i32 %617, %616
  store i32 %618, ptr %18, align 4, !tbaa !20
  br label %619

619:                                              ; preds = %607
  br label %620

620:                                              ; preds = %619
  %621 = getelementptr inbounds %struct.code, ptr %21, i32 0, i32 2
  %622 = load i16, ptr %621, align 2, !tbaa !46
  %623 = load ptr, ptr %12, align 8, !tbaa !5
  %624 = getelementptr inbounds %struct.inflate_state, ptr %623, i32 0, i32 29
  %625 = load ptr, ptr %12, align 8, !tbaa !5
  %626 = getelementptr inbounds %struct.inflate_state, ptr %625, i32 0, i32 27
  %627 = load i32, ptr %626, align 4, !tbaa !34
  %628 = add i32 %627, 1
  store i32 %628, ptr %626, align 4, !tbaa !34
  %629 = zext i32 %627 to i64
  %630 = getelementptr inbounds [320 x i16], ptr %624, i64 0, i64 %629
  store i16 %622, ptr %630, align 2, !tbaa !36
  br label %902

631:                                              ; preds = %601
  %632 = getelementptr inbounds %struct.code, ptr %21, i32 0, i32 2
  %633 = load i16, ptr %632, align 2, !tbaa !46
  %634 = zext i16 %633 to i32
  %635 = icmp eq i32 %634, 16
  br i1 %635, label %636, label %724

636:                                              ; preds = %631
  br label %637

637:                                              ; preds = %636
  br label %638

638:                                              ; preds = %675, %637
  %639 = load i32, ptr %18, align 4, !tbaa !20
  %640 = getelementptr inbounds %struct.code, ptr %21, i32 0, i32 1
  %641 = load i8, ptr %640, align 1, !tbaa !44
  %642 = zext i8 %641 to i32
  %643 = add nsw i32 %642, 2
  %644 = icmp ult i32 %639, %643
  br i1 %644, label %645, label %676

645:                                              ; preds = %638
  br label %646

646:                                              ; preds = %645
  br label %647

647:                                              ; preds = %646
  %648 = load i32, ptr %15, align 4, !tbaa !20
  %649 = icmp eq i32 %648, 0
  br i1 %649, label %650, label %658

650:                                              ; preds = %647
  %651 = load ptr, ptr %8, align 8, !tbaa !5
  %652 = load ptr, ptr %9, align 8, !tbaa !5
  %653 = call i32 %651(ptr noundef %652, ptr noundef %13)
  store i32 %653, ptr %15, align 4, !tbaa !20
  %654 = load i32, ptr %15, align 4, !tbaa !20
  %655 = icmp eq i32 %654, 0
  br i1 %655, label %656, label %657

656:                                              ; preds = %650
  store ptr null, ptr %13, align 8, !tbaa !5
  store i32 -5, ptr %24, align 4, !tbaa !20
  br label %1734

657:                                              ; preds = %650
  br label %658

658:                                              ; preds = %657, %647
  br label %659

659:                                              ; preds = %658
  br label %660

660:                                              ; preds = %659
  %661 = load i32, ptr %15, align 4, !tbaa !20
  %662 = add i32 %661, -1
  store i32 %662, ptr %15, align 4, !tbaa !20
  %663 = load ptr, ptr %13, align 8, !tbaa !5
  %664 = getelementptr inbounds i8, ptr %663, i32 1
  store ptr %664, ptr %13, align 8, !tbaa !5
  %665 = load i8, ptr %663, align 1, !tbaa !24
  %666 = zext i8 %665 to i64
  %667 = load i32, ptr %18, align 4, !tbaa !20
  %668 = zext i32 %667 to i64
  %669 = shl i64 %666, %668
  %670 = load i64, ptr %17, align 8, !tbaa !21
  %671 = add i64 %670, %669
  store i64 %671, ptr %17, align 8, !tbaa !21
  %672 = load i32, ptr %18, align 4, !tbaa !20
  %673 = add i32 %672, 8
  store i32 %673, ptr %18, align 4, !tbaa !20
  br label %674

674:                                              ; preds = %660
  br label %675

675:                                              ; preds = %674
  br label %638, !llvm.loop !47

676:                                              ; preds = %638
  br label %677

677:                                              ; preds = %676
  br label %678

678:                                              ; preds = %677
  br label %679

679:                                              ; preds = %678
  %680 = getelementptr inbounds %struct.code, ptr %21, i32 0, i32 1
  %681 = load i8, ptr %680, align 1, !tbaa !44
  %682 = zext i8 %681 to i32
  %683 = load i64, ptr %17, align 8, !tbaa !21
  %684 = zext i32 %682 to i64
  %685 = lshr i64 %683, %684
  store i64 %685, ptr %17, align 8, !tbaa !21
  %686 = getelementptr inbounds %struct.code, ptr %21, i32 0, i32 1
  %687 = load i8, ptr %686, align 1, !tbaa !44
  %688 = zext i8 %687 to i32
  %689 = load i32, ptr %18, align 4, !tbaa !20
  %690 = sub i32 %689, %688
  store i32 %690, ptr %18, align 4, !tbaa !20
  br label %691

691:                                              ; preds = %679
  br label %692

692:                                              ; preds = %691
  %693 = load ptr, ptr %12, align 8, !tbaa !5
  %694 = getelementptr inbounds %struct.inflate_state, ptr %693, i32 0, i32 27
  %695 = load i32, ptr %694, align 4, !tbaa !34
  %696 = icmp eq i32 %695, 0
  br i1 %696, label %697, label %702

697:                                              ; preds = %692
  %698 = load ptr, ptr %7, align 8, !tbaa !5
  %699 = getelementptr inbounds %struct.z_stream_s, ptr %698, i32 0, i32 6
  store ptr @.str.5, ptr %699, align 8, !tbaa !13
  %700 = load ptr, ptr %12, align 8, !tbaa !5
  %701 = getelementptr inbounds %struct.inflate_state, ptr %700, i32 0, i32 1
  store i32 16209, ptr %701, align 8, !tbaa !14
  br label %903

702:                                              ; preds = %692
  %703 = load ptr, ptr %12, align 8, !tbaa !5
  %704 = getelementptr inbounds %struct.inflate_state, ptr %703, i32 0, i32 29
  %705 = load ptr, ptr %12, align 8, !tbaa !5
  %706 = getelementptr inbounds %struct.inflate_state, ptr %705, i32 0, i32 27
  %707 = load i32, ptr %706, align 4, !tbaa !34
  %708 = sub i32 %707, 1
  %709 = zext i32 %708 to i64
  %710 = getelementptr inbounds [320 x i16], ptr %704, i64 0, i64 %709
  %711 = load i16, ptr %710, align 2, !tbaa !36
  %712 = zext i16 %711 to i32
  store i32 %712, ptr %23, align 4, !tbaa !20
  %713 = load i64, ptr %17, align 8, !tbaa !21
  %714 = trunc i64 %713 to i32
  %715 = and i32 %714, 3
  %716 = add i32 3, %715
  store i32 %716, ptr %19, align 4, !tbaa !20
  br label %717

717:                                              ; preds = %702
  %718 = load i64, ptr %17, align 8, !tbaa !21
  %719 = lshr i64 %718, 2
  store i64 %719, ptr %17, align 8, !tbaa !21
  %720 = load i32, ptr %18, align 4, !tbaa !20
  %721 = sub i32 %720, 2
  store i32 %721, ptr %18, align 4, !tbaa !20
  br label %722

722:                                              ; preds = %717
  br label %723

723:                                              ; preds = %722
  br label %866

724:                                              ; preds = %631
  %725 = getelementptr inbounds %struct.code, ptr %21, i32 0, i32 2
  %726 = load i16, ptr %725, align 2, !tbaa !46
  %727 = zext i16 %726 to i32
  %728 = icmp eq i32 %727, 17
  br i1 %728, label %729, label %797

729:                                              ; preds = %724
  br label %730

730:                                              ; preds = %729
  br label %731

731:                                              ; preds = %768, %730
  %732 = load i32, ptr %18, align 4, !tbaa !20
  %733 = getelementptr inbounds %struct.code, ptr %21, i32 0, i32 1
  %734 = load i8, ptr %733, align 1, !tbaa !44
  %735 = zext i8 %734 to i32
  %736 = add nsw i32 %735, 3
  %737 = icmp ult i32 %732, %736
  br i1 %737, label %738, label %769

738:                                              ; preds = %731
  br label %739

739:                                              ; preds = %738
  br label %740

740:                                              ; preds = %739
  %741 = load i32, ptr %15, align 4, !tbaa !20
  %742 = icmp eq i32 %741, 0
  br i1 %742, label %743, label %751

743:                                              ; preds = %740
  %744 = load ptr, ptr %8, align 8, !tbaa !5
  %745 = load ptr, ptr %9, align 8, !tbaa !5
  %746 = call i32 %744(ptr noundef %745, ptr noundef %13)
  store i32 %746, ptr %15, align 4, !tbaa !20
  %747 = load i32, ptr %15, align 4, !tbaa !20
  %748 = icmp eq i32 %747, 0
  br i1 %748, label %749, label %750

749:                                              ; preds = %743
  store ptr null, ptr %13, align 8, !tbaa !5
  store i32 -5, ptr %24, align 4, !tbaa !20
  br label %1734

750:                                              ; preds = %743
  br label %751

751:                                              ; preds = %750, %740
  br label %752

752:                                              ; preds = %751
  br label %753

753:                                              ; preds = %752
  %754 = load i32, ptr %15, align 4, !tbaa !20
  %755 = add i32 %754, -1
  store i32 %755, ptr %15, align 4, !tbaa !20
  %756 = load ptr, ptr %13, align 8, !tbaa !5
  %757 = getelementptr inbounds i8, ptr %756, i32 1
  store ptr %757, ptr %13, align 8, !tbaa !5
  %758 = load i8, ptr %756, align 1, !tbaa !24
  %759 = zext i8 %758 to i64
  %760 = load i32, ptr %18, align 4, !tbaa !20
  %761 = zext i32 %760 to i64
  %762 = shl i64 %759, %761
  %763 = load i64, ptr %17, align 8, !tbaa !21
  %764 = add i64 %763, %762
  store i64 %764, ptr %17, align 8, !tbaa !21
  %765 = load i32, ptr %18, align 4, !tbaa !20
  %766 = add i32 %765, 8
  store i32 %766, ptr %18, align 4, !tbaa !20
  br label %767

767:                                              ; preds = %753
  br label %768

768:                                              ; preds = %767
  br label %731, !llvm.loop !48

769:                                              ; preds = %731
  br label %770

770:                                              ; preds = %769
  br label %771

771:                                              ; preds = %770
  br label %772

772:                                              ; preds = %771
  %773 = getelementptr inbounds %struct.code, ptr %21, i32 0, i32 1
  %774 = load i8, ptr %773, align 1, !tbaa !44
  %775 = zext i8 %774 to i32
  %776 = load i64, ptr %17, align 8, !tbaa !21
  %777 = zext i32 %775 to i64
  %778 = lshr i64 %776, %777
  store i64 %778, ptr %17, align 8, !tbaa !21
  %779 = getelementptr inbounds %struct.code, ptr %21, i32 0, i32 1
  %780 = load i8, ptr %779, align 1, !tbaa !44
  %781 = zext i8 %780 to i32
  %782 = load i32, ptr %18, align 4, !tbaa !20
  %783 = sub i32 %782, %781
  store i32 %783, ptr %18, align 4, !tbaa !20
  br label %784

784:                                              ; preds = %772
  br label %785

785:                                              ; preds = %784
  store i32 0, ptr %23, align 4, !tbaa !20
  %786 = load i64, ptr %17, align 8, !tbaa !21
  %787 = trunc i64 %786 to i32
  %788 = and i32 %787, 7
  %789 = add i32 3, %788
  store i32 %789, ptr %19, align 4, !tbaa !20
  br label %790

790:                                              ; preds = %785
  %791 = load i64, ptr %17, align 8, !tbaa !21
  %792 = lshr i64 %791, 3
  store i64 %792, ptr %17, align 8, !tbaa !21
  %793 = load i32, ptr %18, align 4, !tbaa !20
  %794 = sub i32 %793, 3
  store i32 %794, ptr %18, align 4, !tbaa !20
  br label %795

795:                                              ; preds = %790
  br label %796

796:                                              ; preds = %795
  br label %865

797:                                              ; preds = %724
  br label %798

798:                                              ; preds = %797
  br label %799

799:                                              ; preds = %836, %798
  %800 = load i32, ptr %18, align 4, !tbaa !20
  %801 = getelementptr inbounds %struct.code, ptr %21, i32 0, i32 1
  %802 = load i8, ptr %801, align 1, !tbaa !44
  %803 = zext i8 %802 to i32
  %804 = add nsw i32 %803, 7
  %805 = icmp ult i32 %800, %804
  br i1 %805, label %806, label %837

806:                                              ; preds = %799
  br label %807

807:                                              ; preds = %806
  br label %808

808:                                              ; preds = %807
  %809 = load i32, ptr %15, align 4, !tbaa !20
  %810 = icmp eq i32 %809, 0
  br i1 %810, label %811, label %819

811:                                              ; preds = %808
  %812 = load ptr, ptr %8, align 8, !tbaa !5
  %813 = load ptr, ptr %9, align 8, !tbaa !5
  %814 = call i32 %812(ptr noundef %813, ptr noundef %13)
  store i32 %814, ptr %15, align 4, !tbaa !20
  %815 = load i32, ptr %15, align 4, !tbaa !20
  %816 = icmp eq i32 %815, 0
  br i1 %816, label %817, label %818

817:                                              ; preds = %811
  store ptr null, ptr %13, align 8, !tbaa !5
  store i32 -5, ptr %24, align 4, !tbaa !20
  br label %1734

818:                                              ; preds = %811
  br label %819

819:                                              ; preds = %818, %808
  br label %820

820:                                              ; preds = %819
  br label %821

821:                                              ; preds = %820
  %822 = load i32, ptr %15, align 4, !tbaa !20
  %823 = add i32 %822, -1
  store i32 %823, ptr %15, align 4, !tbaa !20
  %824 = load ptr, ptr %13, align 8, !tbaa !5
  %825 = getelementptr inbounds i8, ptr %824, i32 1
  store ptr %825, ptr %13, align 8, !tbaa !5
  %826 = load i8, ptr %824, align 1, !tbaa !24
  %827 = zext i8 %826 to i64
  %828 = load i32, ptr %18, align 4, !tbaa !20
  %829 = zext i32 %828 to i64
  %830 = shl i64 %827, %829
  %831 = load i64, ptr %17, align 8, !tbaa !21
  %832 = add i64 %831, %830
  store i64 %832, ptr %17, align 8, !tbaa !21
  %833 = load i32, ptr %18, align 4, !tbaa !20
  %834 = add i32 %833, 8
  store i32 %834, ptr %18, align 4, !tbaa !20
  br label %835

835:                                              ; preds = %821
  br label %836

836:                                              ; preds = %835
  br label %799, !llvm.loop !49

837:                                              ; preds = %799
  br label %838

838:                                              ; preds = %837
  br label %839

839:                                              ; preds = %838
  br label %840

840:                                              ; preds = %839
  %841 = getelementptr inbounds %struct.code, ptr %21, i32 0, i32 1
  %842 = load i8, ptr %841, align 1, !tbaa !44
  %843 = zext i8 %842 to i32
  %844 = load i64, ptr %17, align 8, !tbaa !21
  %845 = zext i32 %843 to i64
  %846 = lshr i64 %844, %845
  store i64 %846, ptr %17, align 8, !tbaa !21
  %847 = getelementptr inbounds %struct.code, ptr %21, i32 0, i32 1
  %848 = load i8, ptr %847, align 1, !tbaa !44
  %849 = zext i8 %848 to i32
  %850 = load i32, ptr %18, align 4, !tbaa !20
  %851 = sub i32 %850, %849
  store i32 %851, ptr %18, align 4, !tbaa !20
  br label %852

852:                                              ; preds = %840
  br label %853

853:                                              ; preds = %852
  store i32 0, ptr %23, align 4, !tbaa !20
  %854 = load i64, ptr %17, align 8, !tbaa !21
  %855 = trunc i64 %854 to i32
  %856 = and i32 %855, 127
  %857 = add i32 11, %856
  store i32 %857, ptr %19, align 4, !tbaa !20
  br label %858

858:                                              ; preds = %853
  %859 = load i64, ptr %17, align 8, !tbaa !21
  %860 = lshr i64 %859, 7
  store i64 %860, ptr %17, align 8, !tbaa !21
  %861 = load i32, ptr %18, align 4, !tbaa !20
  %862 = sub i32 %861, 7
  store i32 %862, ptr %18, align 4, !tbaa !20
  br label %863

863:                                              ; preds = %858
  br label %864

864:                                              ; preds = %863
  br label %865

865:                                              ; preds = %864, %796
  br label %866

866:                                              ; preds = %865, %723
  %867 = load ptr, ptr %12, align 8, !tbaa !5
  %868 = getelementptr inbounds %struct.inflate_state, ptr %867, i32 0, i32 27
  %869 = load i32, ptr %868, align 4, !tbaa !34
  %870 = load i32, ptr %19, align 4, !tbaa !20
  %871 = add i32 %869, %870
  %872 = load ptr, ptr %12, align 8, !tbaa !5
  %873 = getelementptr inbounds %struct.inflate_state, ptr %872, i32 0, i32 25
  %874 = load i32, ptr %873, align 4, !tbaa !31
  %875 = load ptr, ptr %12, align 8, !tbaa !5
  %876 = getelementptr inbounds %struct.inflate_state, ptr %875, i32 0, i32 26
  %877 = load i32, ptr %876, align 8, !tbaa !32
  %878 = add i32 %874, %877
  %879 = icmp ugt i32 %871, %878
  br i1 %879, label %880, label %885

880:                                              ; preds = %866
  %881 = load ptr, ptr %7, align 8, !tbaa !5
  %882 = getelementptr inbounds %struct.z_stream_s, ptr %881, i32 0, i32 6
  store ptr @.str.5, ptr %882, align 8, !tbaa !13
  %883 = load ptr, ptr %12, align 8, !tbaa !5
  %884 = getelementptr inbounds %struct.inflate_state, ptr %883, i32 0, i32 1
  store i32 16209, ptr %884, align 8, !tbaa !14
  br label %903

885:                                              ; preds = %866
  br label %886

886:                                              ; preds = %890, %885
  %887 = load i32, ptr %19, align 4, !tbaa !20
  %888 = add i32 %887, -1
  store i32 %888, ptr %19, align 4, !tbaa !20
  %889 = icmp ne i32 %887, 0
  br i1 %889, label %890, label %901

890:                                              ; preds = %886
  %891 = load i32, ptr %23, align 4, !tbaa !20
  %892 = trunc i32 %891 to i16
  %893 = load ptr, ptr %12, align 8, !tbaa !5
  %894 = getelementptr inbounds %struct.inflate_state, ptr %893, i32 0, i32 29
  %895 = load ptr, ptr %12, align 8, !tbaa !5
  %896 = getelementptr inbounds %struct.inflate_state, ptr %895, i32 0, i32 27
  %897 = load i32, ptr %896, align 4, !tbaa !34
  %898 = add i32 %897, 1
  store i32 %898, ptr %896, align 4, !tbaa !34
  %899 = zext i32 %897 to i64
  %900 = getelementptr inbounds [320 x i16], ptr %894, i64 0, i64 %899
  store i16 %892, ptr %900, align 2, !tbaa !36
  br label %886, !llvm.loop !50

901:                                              ; preds = %886
  br label %902

902:                                              ; preds = %901, %620
  br label %537, !llvm.loop !51

903:                                              ; preds = %880, %697, %537
  %904 = load ptr, ptr %12, align 8, !tbaa !5
  %905 = getelementptr inbounds %struct.inflate_state, ptr %904, i32 0, i32 1
  %906 = load i32, ptr %905, align 8, !tbaa !14
  %907 = icmp eq i32 %906, 16209
  br i1 %907, label %908, label %909

908:                                              ; preds = %903
  br label %1733

909:                                              ; preds = %903
  %910 = load ptr, ptr %12, align 8, !tbaa !5
  %911 = getelementptr inbounds %struct.inflate_state, ptr %910, i32 0, i32 29
  %912 = getelementptr inbounds [320 x i16], ptr %911, i64 0, i64 256
  %913 = load i16, ptr %912, align 8, !tbaa !36
  %914 = zext i16 %913 to i32
  %915 = icmp eq i32 %914, 0
  br i1 %915, label %916, label %921

916:                                              ; preds = %909
  %917 = load ptr, ptr %7, align 8, !tbaa !5
  %918 = getelementptr inbounds %struct.z_stream_s, ptr %917, i32 0, i32 6
  store ptr @.str.6, ptr %918, align 8, !tbaa !13
  %919 = load ptr, ptr %12, align 8, !tbaa !5
  %920 = getelementptr inbounds %struct.inflate_state, ptr %919, i32 0, i32 1
  store i32 16209, ptr %920, align 8, !tbaa !14
  br label %1733

921:                                              ; preds = %909
  %922 = load ptr, ptr %12, align 8, !tbaa !5
  %923 = getelementptr inbounds %struct.inflate_state, ptr %922, i32 0, i32 31
  %924 = getelementptr inbounds [1444 x %struct.code], ptr %923, i64 0, i64 0
  %925 = load ptr, ptr %12, align 8, !tbaa !5
  %926 = getelementptr inbounds %struct.inflate_state, ptr %925, i32 0, i32 28
  store ptr %924, ptr %926, align 8, !tbaa !40
  %927 = load ptr, ptr %12, align 8, !tbaa !5
  %928 = getelementptr inbounds %struct.inflate_state, ptr %927, i32 0, i32 28
  %929 = load ptr, ptr %928, align 8, !tbaa !40
  %930 = load ptr, ptr %12, align 8, !tbaa !5
  %931 = getelementptr inbounds %struct.inflate_state, ptr %930, i32 0, i32 20
  store ptr %929, ptr %931, align 8, !tbaa !41
  %932 = load ptr, ptr %12, align 8, !tbaa !5
  %933 = getelementptr inbounds %struct.inflate_state, ptr %932, i32 0, i32 22
  store i32 9, ptr %933, align 8, !tbaa !42
  %934 = load ptr, ptr %12, align 8, !tbaa !5
  %935 = getelementptr inbounds %struct.inflate_state, ptr %934, i32 0, i32 29
  %936 = getelementptr inbounds [320 x i16], ptr %935, i64 0, i64 0
  %937 = load ptr, ptr %12, align 8, !tbaa !5
  %938 = getelementptr inbounds %struct.inflate_state, ptr %937, i32 0, i32 25
  %939 = load i32, ptr %938, align 4, !tbaa !31
  %940 = load ptr, ptr %12, align 8, !tbaa !5
  %941 = getelementptr inbounds %struct.inflate_state, ptr %940, i32 0, i32 28
  %942 = load ptr, ptr %12, align 8, !tbaa !5
  %943 = getelementptr inbounds %struct.inflate_state, ptr %942, i32 0, i32 22
  %944 = load ptr, ptr %12, align 8, !tbaa !5
  %945 = getelementptr inbounds %struct.inflate_state, ptr %944, i32 0, i32 30
  %946 = getelementptr inbounds [288 x i16], ptr %945, i64 0, i64 0
  %947 = call i32 @inflate_table(i32 noundef 1, ptr noundef %936, i32 noundef %939, ptr noundef %941, ptr noundef %943, ptr noundef %946)
  store i32 %947, ptr %24, align 4, !tbaa !20
  %948 = load i32, ptr %24, align 4, !tbaa !20
  %949 = icmp ne i32 %948, 0
  br i1 %949, label %950, label %955

950:                                              ; preds = %921
  %951 = load ptr, ptr %7, align 8, !tbaa !5
  %952 = getelementptr inbounds %struct.z_stream_s, ptr %951, i32 0, i32 6
  store ptr @.str.7, ptr %952, align 8, !tbaa !13
  %953 = load ptr, ptr %12, align 8, !tbaa !5
  %954 = getelementptr inbounds %struct.inflate_state, ptr %953, i32 0, i32 1
  store i32 16209, ptr %954, align 8, !tbaa !14
  br label %1733

955:                                              ; preds = %921
  %956 = load ptr, ptr %12, align 8, !tbaa !5
  %957 = getelementptr inbounds %struct.inflate_state, ptr %956, i32 0, i32 28
  %958 = load ptr, ptr %957, align 8, !tbaa !40
  %959 = load ptr, ptr %12, align 8, !tbaa !5
  %960 = getelementptr inbounds %struct.inflate_state, ptr %959, i32 0, i32 21
  store ptr %958, ptr %960, align 8, !tbaa !52
  %961 = load ptr, ptr %12, align 8, !tbaa !5
  %962 = getelementptr inbounds %struct.inflate_state, ptr %961, i32 0, i32 23
  store i32 6, ptr %962, align 4, !tbaa !53
  %963 = load ptr, ptr %12, align 8, !tbaa !5
  %964 = getelementptr inbounds %struct.inflate_state, ptr %963, i32 0, i32 29
  %965 = getelementptr inbounds [320 x i16], ptr %964, i64 0, i64 0
  %966 = load ptr, ptr %12, align 8, !tbaa !5
  %967 = getelementptr inbounds %struct.inflate_state, ptr %966, i32 0, i32 25
  %968 = load i32, ptr %967, align 4, !tbaa !31
  %969 = zext i32 %968 to i64
  %970 = getelementptr inbounds i16, ptr %965, i64 %969
  %971 = load ptr, ptr %12, align 8, !tbaa !5
  %972 = getelementptr inbounds %struct.inflate_state, ptr %971, i32 0, i32 26
  %973 = load i32, ptr %972, align 8, !tbaa !32
  %974 = load ptr, ptr %12, align 8, !tbaa !5
  %975 = getelementptr inbounds %struct.inflate_state, ptr %974, i32 0, i32 28
  %976 = load ptr, ptr %12, align 8, !tbaa !5
  %977 = getelementptr inbounds %struct.inflate_state, ptr %976, i32 0, i32 23
  %978 = load ptr, ptr %12, align 8, !tbaa !5
  %979 = getelementptr inbounds %struct.inflate_state, ptr %978, i32 0, i32 30
  %980 = getelementptr inbounds [288 x i16], ptr %979, i64 0, i64 0
  %981 = call i32 @inflate_table(i32 noundef 2, ptr noundef %970, i32 noundef %973, ptr noundef %975, ptr noundef %977, ptr noundef %980)
  store i32 %981, ptr %24, align 4, !tbaa !20
  %982 = load i32, ptr %24, align 4, !tbaa !20
  %983 = icmp ne i32 %982, 0
  br i1 %983, label %984, label %989

984:                                              ; preds = %955
  %985 = load ptr, ptr %7, align 8, !tbaa !5
  %986 = getelementptr inbounds %struct.z_stream_s, ptr %985, i32 0, i32 6
  store ptr @.str.8, ptr %986, align 8, !tbaa !13
  %987 = load ptr, ptr %12, align 8, !tbaa !5
  %988 = getelementptr inbounds %struct.inflate_state, ptr %987, i32 0, i32 1
  store i32 16209, ptr %988, align 8, !tbaa !14
  br label %1733

989:                                              ; preds = %955
  %990 = load ptr, ptr %12, align 8, !tbaa !5
  %991 = getelementptr inbounds %struct.inflate_state, ptr %990, i32 0, i32 1
  store i32 16200, ptr %991, align 8, !tbaa !14
  br label %992

992:                                              ; preds = %989, %64
  %993 = load i32, ptr %15, align 4, !tbaa !20
  %994 = icmp uge i32 %993, 6
  br i1 %994, label %995, label %1061

995:                                              ; preds = %992
  %996 = load i32, ptr %16, align 4, !tbaa !20
  %997 = icmp uge i32 %996, 258
  br i1 %997, label %998, label %1061

998:                                              ; preds = %995
  br label %999

999:                                              ; preds = %998
  %1000 = load ptr, ptr %14, align 8, !tbaa !5
  %1001 = load ptr, ptr %7, align 8, !tbaa !5
  %1002 = getelementptr inbounds %struct.z_stream_s, ptr %1001, i32 0, i32 3
  store ptr %1000, ptr %1002, align 8, !tbaa !54
  %1003 = load i32, ptr %16, align 4, !tbaa !20
  %1004 = load ptr, ptr %7, align 8, !tbaa !5
  %1005 = getelementptr inbounds %struct.z_stream_s, ptr %1004, i32 0, i32 4
  store i32 %1003, ptr %1005, align 8, !tbaa !55
  %1006 = load ptr, ptr %13, align 8, !tbaa !5
  %1007 = load ptr, ptr %7, align 8, !tbaa !5
  %1008 = getelementptr inbounds %struct.z_stream_s, ptr %1007, i32 0, i32 0
  store ptr %1006, ptr %1008, align 8, !tbaa !18
  %1009 = load i32, ptr %15, align 4, !tbaa !20
  %1010 = load ptr, ptr %7, align 8, !tbaa !5
  %1011 = getelementptr inbounds %struct.z_stream_s, ptr %1010, i32 0, i32 1
  store i32 %1009, ptr %1011, align 8, !tbaa !19
  %1012 = load i64, ptr %17, align 8, !tbaa !21
  %1013 = load ptr, ptr %12, align 8, !tbaa !5
  %1014 = getelementptr inbounds %struct.inflate_state, ptr %1013, i32 0, i32 15
  store i64 %1012, ptr %1014, align 8, !tbaa !56
  %1015 = load i32, ptr %18, align 4, !tbaa !20
  %1016 = load ptr, ptr %12, align 8, !tbaa !5
  %1017 = getelementptr inbounds %struct.inflate_state, ptr %1016, i32 0, i32 16
  store i32 %1015, ptr %1017, align 8, !tbaa !57
  br label %1018

1018:                                             ; preds = %999
  br label %1019

1019:                                             ; preds = %1018
  %1020 = load ptr, ptr %12, align 8, !tbaa !5
  %1021 = getelementptr inbounds %struct.inflate_state, ptr %1020, i32 0, i32 12
  %1022 = load i32, ptr %1021, align 8, !tbaa !17
  %1023 = load ptr, ptr %12, align 8, !tbaa !5
  %1024 = getelementptr inbounds %struct.inflate_state, ptr %1023, i32 0, i32 11
  %1025 = load i32, ptr %1024, align 4, !tbaa !23
  %1026 = icmp ult i32 %1022, %1025
  br i1 %1026, label %1027, label %1035

1027:                                             ; preds = %1019
  %1028 = load ptr, ptr %12, align 8, !tbaa !5
  %1029 = getelementptr inbounds %struct.inflate_state, ptr %1028, i32 0, i32 11
  %1030 = load i32, ptr %1029, align 4, !tbaa !23
  %1031 = load i32, ptr %16, align 4, !tbaa !20
  %1032 = sub i32 %1030, %1031
  %1033 = load ptr, ptr %12, align 8, !tbaa !5
  %1034 = getelementptr inbounds %struct.inflate_state, ptr %1033, i32 0, i32 12
  store i32 %1032, ptr %1034, align 8, !tbaa !17
  br label %1035

1035:                                             ; preds = %1027, %1019
  %1036 = load ptr, ptr %7, align 8, !tbaa !5
  %1037 = load ptr, ptr %12, align 8, !tbaa !5
  %1038 = getelementptr inbounds %struct.inflate_state, ptr %1037, i32 0, i32 11
  %1039 = load i32, ptr %1038, align 4, !tbaa !23
  call void @inflate_fast(ptr noundef %1036, i32 noundef %1039)
  br label %1040

1040:                                             ; preds = %1035
  %1041 = load ptr, ptr %7, align 8, !tbaa !5
  %1042 = getelementptr inbounds %struct.z_stream_s, ptr %1041, i32 0, i32 3
  %1043 = load ptr, ptr %1042, align 8, !tbaa !54
  store ptr %1043, ptr %14, align 8, !tbaa !5
  %1044 = load ptr, ptr %7, align 8, !tbaa !5
  %1045 = getelementptr inbounds %struct.z_stream_s, ptr %1044, i32 0, i32 4
  %1046 = load i32, ptr %1045, align 8, !tbaa !55
  store i32 %1046, ptr %16, align 4, !tbaa !20
  %1047 = load ptr, ptr %7, align 8, !tbaa !5
  %1048 = getelementptr inbounds %struct.z_stream_s, ptr %1047, i32 0, i32 0
  %1049 = load ptr, ptr %1048, align 8, !tbaa !18
  store ptr %1049, ptr %13, align 8, !tbaa !5
  %1050 = load ptr, ptr %7, align 8, !tbaa !5
  %1051 = getelementptr inbounds %struct.z_stream_s, ptr %1050, i32 0, i32 1
  %1052 = load i32, ptr %1051, align 8, !tbaa !19
  store i32 %1052, ptr %15, align 4, !tbaa !20
  %1053 = load ptr, ptr %12, align 8, !tbaa !5
  %1054 = getelementptr inbounds %struct.inflate_state, ptr %1053, i32 0, i32 15
  %1055 = load i64, ptr %1054, align 8, !tbaa !56
  store i64 %1055, ptr %17, align 8, !tbaa !21
  %1056 = load ptr, ptr %12, align 8, !tbaa !5
  %1057 = getelementptr inbounds %struct.inflate_state, ptr %1056, i32 0, i32 16
  %1058 = load i32, ptr %1057, align 8, !tbaa !57
  store i32 %1058, ptr %18, align 4, !tbaa !20
  br label %1059

1059:                                             ; preds = %1040
  br label %1060

1060:                                             ; preds = %1059
  br label %1733

1061:                                             ; preds = %995, %992
  br label %1062

1062:                                             ; preds = %1112, %1061
  %1063 = load ptr, ptr %12, align 8, !tbaa !5
  %1064 = getelementptr inbounds %struct.inflate_state, ptr %1063, i32 0, i32 20
  %1065 = load ptr, ptr %1064, align 8, !tbaa !41
  %1066 = load i64, ptr %17, align 8, !tbaa !21
  %1067 = trunc i64 %1066 to i32
  %1068 = load ptr, ptr %12, align 8, !tbaa !5
  %1069 = getelementptr inbounds %struct.inflate_state, ptr %1068, i32 0, i32 22
  %1070 = load i32, ptr %1069, align 8, !tbaa !42
  %1071 = shl i32 1, %1070
  %1072 = sub i32 %1071, 1
  %1073 = and i32 %1067, %1072
  %1074 = zext i32 %1073 to i64
  %1075 = getelementptr inbounds %struct.code, ptr %1065, i64 %1074
  call void @llvm.memcpy.p0.p0.i64(ptr align 2 %21, ptr align 2 %1075, i64 4, i1 false), !tbaa.struct !43
  %1076 = getelementptr inbounds %struct.code, ptr %21, i32 0, i32 1
  %1077 = load i8, ptr %1076, align 1, !tbaa !44
  %1078 = zext i8 %1077 to i32
  %1079 = load i32, ptr %18, align 4, !tbaa !20
  %1080 = icmp ule i32 %1078, %1079
  br i1 %1080, label %1081, label %1082

1081:                                             ; preds = %1062
  br label %1113

1082:                                             ; preds = %1062
  br label %1083

1083:                                             ; preds = %1082
  br label %1084

1084:                                             ; preds = %1083
  %1085 = load i32, ptr %15, align 4, !tbaa !20
  %1086 = icmp eq i32 %1085, 0
  br i1 %1086, label %1087, label %1095

1087:                                             ; preds = %1084
  %1088 = load ptr, ptr %8, align 8, !tbaa !5
  %1089 = load ptr, ptr %9, align 8, !tbaa !5
  %1090 = call i32 %1088(ptr noundef %1089, ptr noundef %13)
  store i32 %1090, ptr %15, align 4, !tbaa !20
  %1091 = load i32, ptr %15, align 4, !tbaa !20
  %1092 = icmp eq i32 %1091, 0
  br i1 %1092, label %1093, label %1094

1093:                                             ; preds = %1087
  store ptr null, ptr %13, align 8, !tbaa !5
  store i32 -5, ptr %24, align 4, !tbaa !20
  br label %1734

1094:                                             ; preds = %1087
  br label %1095

1095:                                             ; preds = %1094, %1084
  br label %1096

1096:                                             ; preds = %1095
  br label %1097

1097:                                             ; preds = %1096
  %1098 = load i32, ptr %15, align 4, !tbaa !20
  %1099 = add i32 %1098, -1
  store i32 %1099, ptr %15, align 4, !tbaa !20
  %1100 = load ptr, ptr %13, align 8, !tbaa !5
  %1101 = getelementptr inbounds i8, ptr %1100, i32 1
  store ptr %1101, ptr %13, align 8, !tbaa !5
  %1102 = load i8, ptr %1100, align 1, !tbaa !24
  %1103 = zext i8 %1102 to i64
  %1104 = load i32, ptr %18, align 4, !tbaa !20
  %1105 = zext i32 %1104 to i64
  %1106 = shl i64 %1103, %1105
  %1107 = load i64, ptr %17, align 8, !tbaa !21
  %1108 = add i64 %1107, %1106
  store i64 %1108, ptr %17, align 8, !tbaa !21
  %1109 = load i32, ptr %18, align 4, !tbaa !20
  %1110 = add i32 %1109, 8
  store i32 %1110, ptr %18, align 4, !tbaa !20
  br label %1111

1111:                                             ; preds = %1097
  br label %1112

1112:                                             ; preds = %1111
  br label %1062

1113:                                             ; preds = %1081
  %1114 = getelementptr inbounds %struct.code, ptr %21, i32 0, i32 0
  %1115 = load i8, ptr %1114, align 2, !tbaa !58
  %1116 = zext i8 %1115 to i32
  %1117 = icmp ne i32 %1116, 0
  br i1 %1117, label %1118, label %1207

1118:                                             ; preds = %1113
  %1119 = getelementptr inbounds %struct.code, ptr %21, i32 0, i32 0
  %1120 = load i8, ptr %1119, align 2, !tbaa !58
  %1121 = zext i8 %1120 to i32
  %1122 = and i32 %1121, 240
  %1123 = icmp eq i32 %1122, 0
  br i1 %1123, label %1124, label %1207

1124:                                             ; preds = %1118
  call void @llvm.memcpy.p0.p0.i64(ptr align 2 %22, ptr align 2 %21, i64 4, i1 false), !tbaa.struct !43
  br label %1125

1125:                                             ; preds = %1191, %1124
  %1126 = load ptr, ptr %12, align 8, !tbaa !5
  %1127 = getelementptr inbounds %struct.inflate_state, ptr %1126, i32 0, i32 20
  %1128 = load ptr, ptr %1127, align 8, !tbaa !41
  %1129 = getelementptr inbounds %struct.code, ptr %22, i32 0, i32 2
  %1130 = load i16, ptr %1129, align 2, !tbaa !46
  %1131 = zext i16 %1130 to i32
  %1132 = load i64, ptr %17, align 8, !tbaa !21
  %1133 = trunc i64 %1132 to i32
  %1134 = getelementptr inbounds %struct.code, ptr %22, i32 0, i32 1
  %1135 = load i8, ptr %1134, align 1, !tbaa !44
  %1136 = zext i8 %1135 to i32
  %1137 = getelementptr inbounds %struct.code, ptr %22, i32 0, i32 0
  %1138 = load i8, ptr %1137, align 2, !tbaa !58
  %1139 = zext i8 %1138 to i32
  %1140 = add nsw i32 %1136, %1139
  %1141 = shl i32 1, %1140
  %1142 = sub i32 %1141, 1
  %1143 = and i32 %1133, %1142
  %1144 = getelementptr inbounds %struct.code, ptr %22, i32 0, i32 1
  %1145 = load i8, ptr %1144, align 1, !tbaa !44
  %1146 = zext i8 %1145 to i32
  %1147 = lshr i32 %1143, %1146
  %1148 = add i32 %1131, %1147
  %1149 = zext i32 %1148 to i64
  %1150 = getelementptr inbounds %struct.code, ptr %1128, i64 %1149
  call void @llvm.memcpy.p0.p0.i64(ptr align 2 %21, ptr align 2 %1150, i64 4, i1 false), !tbaa.struct !43
  %1151 = getelementptr inbounds %struct.code, ptr %22, i32 0, i32 1
  %1152 = load i8, ptr %1151, align 1, !tbaa !44
  %1153 = zext i8 %1152 to i32
  %1154 = getelementptr inbounds %struct.code, ptr %21, i32 0, i32 1
  %1155 = load i8, ptr %1154, align 1, !tbaa !44
  %1156 = zext i8 %1155 to i32
  %1157 = add nsw i32 %1153, %1156
  %1158 = load i32, ptr %18, align 4, !tbaa !20
  %1159 = icmp ule i32 %1157, %1158
  br i1 %1159, label %1160, label %1161

1160:                                             ; preds = %1125
  br label %1192

1161:                                             ; preds = %1125
  br label %1162

1162:                                             ; preds = %1161
  br label %1163

1163:                                             ; preds = %1162
  %1164 = load i32, ptr %15, align 4, !tbaa !20
  %1165 = icmp eq i32 %1164, 0
  br i1 %1165, label %1166, label %1174

1166:                                             ; preds = %1163
  %1167 = load ptr, ptr %8, align 8, !tbaa !5
  %1168 = load ptr, ptr %9, align 8, !tbaa !5
  %1169 = call i32 %1167(ptr noundef %1168, ptr noundef %13)
  store i32 %1169, ptr %15, align 4, !tbaa !20
  %1170 = load i32, ptr %15, align 4, !tbaa !20
  %1171 = icmp eq i32 %1170, 0
  br i1 %1171, label %1172, label %1173

1172:                                             ; preds = %1166
  store ptr null, ptr %13, align 8, !tbaa !5
  store i32 -5, ptr %24, align 4, !tbaa !20
  br label %1734

1173:                                             ; preds = %1166
  br label %1174

1174:                                             ; preds = %1173, %1163
  br label %1175

1175:                                             ; preds = %1174
  br label %1176

1176:                                             ; preds = %1175
  %1177 = load i32, ptr %15, align 4, !tbaa !20
  %1178 = add i32 %1177, -1
  store i32 %1178, ptr %15, align 4, !tbaa !20
  %1179 = load ptr, ptr %13, align 8, !tbaa !5
  %1180 = getelementptr inbounds i8, ptr %1179, i32 1
  store ptr %1180, ptr %13, align 8, !tbaa !5
  %1181 = load i8, ptr %1179, align 1, !tbaa !24
  %1182 = zext i8 %1181 to i64
  %1183 = load i32, ptr %18, align 4, !tbaa !20
  %1184 = zext i32 %1183 to i64
  %1185 = shl i64 %1182, %1184
  %1186 = load i64, ptr %17, align 8, !tbaa !21
  %1187 = add i64 %1186, %1185
  store i64 %1187, ptr %17, align 8, !tbaa !21
  %1188 = load i32, ptr %18, align 4, !tbaa !20
  %1189 = add i32 %1188, 8
  store i32 %1189, ptr %18, align 4, !tbaa !20
  br label %1190

1190:                                             ; preds = %1176
  br label %1191

1191:                                             ; preds = %1190
  br label %1125

1192:                                             ; preds = %1160
  br label %1193

1193:                                             ; preds = %1192
  %1194 = getelementptr inbounds %struct.code, ptr %22, i32 0, i32 1
  %1195 = load i8, ptr %1194, align 1, !tbaa !44
  %1196 = zext i8 %1195 to i32
  %1197 = load i64, ptr %17, align 8, !tbaa !21
  %1198 = zext i32 %1196 to i64
  %1199 = lshr i64 %1197, %1198
  store i64 %1199, ptr %17, align 8, !tbaa !21
  %1200 = getelementptr inbounds %struct.code, ptr %22, i32 0, i32 1
  %1201 = load i8, ptr %1200, align 1, !tbaa !44
  %1202 = zext i8 %1201 to i32
  %1203 = load i32, ptr %18, align 4, !tbaa !20
  %1204 = sub i32 %1203, %1202
  store i32 %1204, ptr %18, align 4, !tbaa !20
  br label %1205

1205:                                             ; preds = %1193
  br label %1206

1206:                                             ; preds = %1205
  br label %1207

1207:                                             ; preds = %1206, %1118, %1113
  br label %1208

1208:                                             ; preds = %1207
  %1209 = getelementptr inbounds %struct.code, ptr %21, i32 0, i32 1
  %1210 = load i8, ptr %1209, align 1, !tbaa !44
  %1211 = zext i8 %1210 to i32
  %1212 = load i64, ptr %17, align 8, !tbaa !21
  %1213 = zext i32 %1211 to i64
  %1214 = lshr i64 %1212, %1213
  store i64 %1214, ptr %17, align 8, !tbaa !21
  %1215 = getelementptr inbounds %struct.code, ptr %21, i32 0, i32 1
  %1216 = load i8, ptr %1215, align 1, !tbaa !44
  %1217 = zext i8 %1216 to i32
  %1218 = load i32, ptr %18, align 4, !tbaa !20
  %1219 = sub i32 %1218, %1217
  store i32 %1219, ptr %18, align 4, !tbaa !20
  br label %1220

1220:                                             ; preds = %1208
  br label %1221

1221:                                             ; preds = %1220
  %1222 = getelementptr inbounds %struct.code, ptr %21, i32 0, i32 2
  %1223 = load i16, ptr %1222, align 2, !tbaa !46
  %1224 = zext i16 %1223 to i32
  %1225 = load ptr, ptr %12, align 8, !tbaa !5
  %1226 = getelementptr inbounds %struct.inflate_state, ptr %1225, i32 0, i32 17
  store i32 %1224, ptr %1226, align 4, !tbaa !28
  %1227 = getelementptr inbounds %struct.code, ptr %21, i32 0, i32 0
  %1228 = load i8, ptr %1227, align 2, !tbaa !58
  %1229 = zext i8 %1228 to i32
  %1230 = icmp eq i32 %1229, 0
  br i1 %1230, label %1231, label %1266

1231:                                             ; preds = %1221
  br label %1232

1232:                                             ; preds = %1231
  %1233 = load i32, ptr %16, align 4, !tbaa !20
  %1234 = icmp eq i32 %1233, 0
  br i1 %1234, label %1235, label %1253

1235:                                             ; preds = %1232
  %1236 = load ptr, ptr %12, align 8, !tbaa !5
  %1237 = getelementptr inbounds %struct.inflate_state, ptr %1236, i32 0, i32 14
  %1238 = load ptr, ptr %1237, align 8, !tbaa !22
  store ptr %1238, ptr %14, align 8, !tbaa !5
  %1239 = load ptr, ptr %12, align 8, !tbaa !5
  %1240 = getelementptr inbounds %struct.inflate_state, ptr %1239, i32 0, i32 11
  %1241 = load i32, ptr %1240, align 4, !tbaa !23
  store i32 %1241, ptr %16, align 4, !tbaa !20
  %1242 = load i32, ptr %16, align 4, !tbaa !20
  %1243 = load ptr, ptr %12, align 8, !tbaa !5
  %1244 = getelementptr inbounds %struct.inflate_state, ptr %1243, i32 0, i32 12
  store i32 %1242, ptr %1244, align 8, !tbaa !17
  %1245 = load ptr, ptr %10, align 8, !tbaa !5
  %1246 = load ptr, ptr %11, align 8, !tbaa !5
  %1247 = load ptr, ptr %14, align 8, !tbaa !5
  %1248 = load i32, ptr %16, align 4, !tbaa !20
  %1249 = call i32 %1245(ptr noundef %1246, ptr noundef %1247, i32 noundef %1248)
  %1250 = icmp ne i32 %1249, 0
  br i1 %1250, label %1251, label %1252

1251:                                             ; preds = %1235
  store i32 -5, ptr %24, align 4, !tbaa !20
  br label %1734

1252:                                             ; preds = %1235
  br label %1253

1253:                                             ; preds = %1252, %1232
  br label %1254

1254:                                             ; preds = %1253
  br label %1255

1255:                                             ; preds = %1254
  %1256 = load ptr, ptr %12, align 8, !tbaa !5
  %1257 = getelementptr inbounds %struct.inflate_state, ptr %1256, i32 0, i32 17
  %1258 = load i32, ptr %1257, align 4, !tbaa !28
  %1259 = trunc i32 %1258 to i8
  %1260 = load ptr, ptr %14, align 8, !tbaa !5
  %1261 = getelementptr inbounds i8, ptr %1260, i32 1
  store ptr %1261, ptr %14, align 8, !tbaa !5
  store i8 %1259, ptr %1260, align 1, !tbaa !24
  %1262 = load i32, ptr %16, align 4, !tbaa !20
  %1263 = add i32 %1262, -1
  store i32 %1263, ptr %16, align 4, !tbaa !20
  %1264 = load ptr, ptr %12, align 8, !tbaa !5
  %1265 = getelementptr inbounds %struct.inflate_state, ptr %1264, i32 0, i32 1
  store i32 16200, ptr %1265, align 8, !tbaa !14
  br label %1733

1266:                                             ; preds = %1221
  %1267 = getelementptr inbounds %struct.code, ptr %21, i32 0, i32 0
  %1268 = load i8, ptr %1267, align 2, !tbaa !58
  %1269 = zext i8 %1268 to i32
  %1270 = and i32 %1269, 32
  %1271 = icmp ne i32 %1270, 0
  br i1 %1271, label %1272, label %1275

1272:                                             ; preds = %1266
  %1273 = load ptr, ptr %12, align 8, !tbaa !5
  %1274 = getelementptr inbounds %struct.inflate_state, ptr %1273, i32 0, i32 1
  store i32 16191, ptr %1274, align 8, !tbaa !14
  br label %1733

1275:                                             ; preds = %1266
  %1276 = getelementptr inbounds %struct.code, ptr %21, i32 0, i32 0
  %1277 = load i8, ptr %1276, align 2, !tbaa !58
  %1278 = zext i8 %1277 to i32
  %1279 = and i32 %1278, 64
  %1280 = icmp ne i32 %1279, 0
  br i1 %1280, label %1281, label %1286

1281:                                             ; preds = %1275
  %1282 = load ptr, ptr %7, align 8, !tbaa !5
  %1283 = getelementptr inbounds %struct.z_stream_s, ptr %1282, i32 0, i32 6
  store ptr @.str.9, ptr %1283, align 8, !tbaa !13
  %1284 = load ptr, ptr %12, align 8, !tbaa !5
  %1285 = getelementptr inbounds %struct.inflate_state, ptr %1284, i32 0, i32 1
  store i32 16209, ptr %1285, align 8, !tbaa !14
  br label %1733

1286:                                             ; preds = %1275
  %1287 = getelementptr inbounds %struct.code, ptr %21, i32 0, i32 0
  %1288 = load i8, ptr %1287, align 2, !tbaa !58
  %1289 = zext i8 %1288 to i32
  %1290 = and i32 %1289, 15
  %1291 = load ptr, ptr %12, align 8, !tbaa !5
  %1292 = getelementptr inbounds %struct.inflate_state, ptr %1291, i32 0, i32 19
  store i32 %1290, ptr %1292, align 4, !tbaa !59
  %1293 = load ptr, ptr %12, align 8, !tbaa !5
  %1294 = getelementptr inbounds %struct.inflate_state, ptr %1293, i32 0, i32 19
  %1295 = load i32, ptr %1294, align 4, !tbaa !59
  %1296 = icmp ne i32 %1295, 0
  br i1 %1296, label %1297, label %1365

1297:                                             ; preds = %1286
  br label %1298

1298:                                             ; preds = %1297
  br label %1299

1299:                                             ; preds = %1335, %1298
  %1300 = load i32, ptr %18, align 4, !tbaa !20
  %1301 = load ptr, ptr %12, align 8, !tbaa !5
  %1302 = getelementptr inbounds %struct.inflate_state, ptr %1301, i32 0, i32 19
  %1303 = load i32, ptr %1302, align 4, !tbaa !59
  %1304 = icmp ult i32 %1300, %1303
  br i1 %1304, label %1305, label %1336

1305:                                             ; preds = %1299
  br label %1306

1306:                                             ; preds = %1305
  br label %1307

1307:                                             ; preds = %1306
  %1308 = load i32, ptr %15, align 4, !tbaa !20
  %1309 = icmp eq i32 %1308, 0
  br i1 %1309, label %1310, label %1318

1310:                                             ; preds = %1307
  %1311 = load ptr, ptr %8, align 8, !tbaa !5
  %1312 = load ptr, ptr %9, align 8, !tbaa !5
  %1313 = call i32 %1311(ptr noundef %1312, ptr noundef %13)
  store i32 %1313, ptr %15, align 4, !tbaa !20
  %1314 = load i32, ptr %15, align 4, !tbaa !20
  %1315 = icmp eq i32 %1314, 0
  br i1 %1315, label %1316, label %1317

1316:                                             ; preds = %1310
  store ptr null, ptr %13, align 8, !tbaa !5
  store i32 -5, ptr %24, align 4, !tbaa !20
  br label %1734

1317:                                             ; preds = %1310
  br label %1318

1318:                                             ; preds = %1317, %1307
  br label %1319

1319:                                             ; preds = %1318
  br label %1320

1320:                                             ; preds = %1319
  %1321 = load i32, ptr %15, align 4, !tbaa !20
  %1322 = add i32 %1321, -1
  store i32 %1322, ptr %15, align 4, !tbaa !20
  %1323 = load ptr, ptr %13, align 8, !tbaa !5
  %1324 = getelementptr inbounds i8, ptr %1323, i32 1
  store ptr %1324, ptr %13, align 8, !tbaa !5
  %1325 = load i8, ptr %1323, align 1, !tbaa !24
  %1326 = zext i8 %1325 to i64
  %1327 = load i32, ptr %18, align 4, !tbaa !20
  %1328 = zext i32 %1327 to i64
  %1329 = shl i64 %1326, %1328
  %1330 = load i64, ptr %17, align 8, !tbaa !21
  %1331 = add i64 %1330, %1329
  store i64 %1331, ptr %17, align 8, !tbaa !21
  %1332 = load i32, ptr %18, align 4, !tbaa !20
  %1333 = add i32 %1332, 8
  store i32 %1333, ptr %18, align 4, !tbaa !20
  br label %1334

1334:                                             ; preds = %1320
  br label %1335

1335:                                             ; preds = %1334
  br label %1299, !llvm.loop !60

1336:                                             ; preds = %1299
  br label %1337

1337:                                             ; preds = %1336
  br label %1338

1338:                                             ; preds = %1337
  %1339 = load i64, ptr %17, align 8, !tbaa !21
  %1340 = trunc i64 %1339 to i32
  %1341 = load ptr, ptr %12, align 8, !tbaa !5
  %1342 = getelementptr inbounds %struct.inflate_state, ptr %1341, i32 0, i32 19
  %1343 = load i32, ptr %1342, align 4, !tbaa !59
  %1344 = shl i32 1, %1343
  %1345 = sub i32 %1344, 1
  %1346 = and i32 %1340, %1345
  %1347 = load ptr, ptr %12, align 8, !tbaa !5
  %1348 = getelementptr inbounds %struct.inflate_state, ptr %1347, i32 0, i32 17
  %1349 = load i32, ptr %1348, align 4, !tbaa !28
  %1350 = add i32 %1349, %1346
  store i32 %1350, ptr %1348, align 4, !tbaa !28
  br label %1351

1351:                                             ; preds = %1338
  %1352 = load ptr, ptr %12, align 8, !tbaa !5
  %1353 = getelementptr inbounds %struct.inflate_state, ptr %1352, i32 0, i32 19
  %1354 = load i32, ptr %1353, align 4, !tbaa !59
  %1355 = load i64, ptr %17, align 8, !tbaa !21
  %1356 = zext i32 %1354 to i64
  %1357 = lshr i64 %1355, %1356
  store i64 %1357, ptr %17, align 8, !tbaa !21
  %1358 = load ptr, ptr %12, align 8, !tbaa !5
  %1359 = getelementptr inbounds %struct.inflate_state, ptr %1358, i32 0, i32 19
  %1360 = load i32, ptr %1359, align 4, !tbaa !59
  %1361 = load i32, ptr %18, align 4, !tbaa !20
  %1362 = sub i32 %1361, %1360
  store i32 %1362, ptr %18, align 4, !tbaa !20
  br label %1363

1363:                                             ; preds = %1351
  br label %1364

1364:                                             ; preds = %1363
  br label %1365

1365:                                             ; preds = %1364, %1286
  br label %1366

1366:                                             ; preds = %1416, %1365
  %1367 = load ptr, ptr %12, align 8, !tbaa !5
  %1368 = getelementptr inbounds %struct.inflate_state, ptr %1367, i32 0, i32 21
  %1369 = load ptr, ptr %1368, align 8, !tbaa !52
  %1370 = load i64, ptr %17, align 8, !tbaa !21
  %1371 = trunc i64 %1370 to i32
  %1372 = load ptr, ptr %12, align 8, !tbaa !5
  %1373 = getelementptr inbounds %struct.inflate_state, ptr %1372, i32 0, i32 23
  %1374 = load i32, ptr %1373, align 4, !tbaa !53
  %1375 = shl i32 1, %1374
  %1376 = sub i32 %1375, 1
  %1377 = and i32 %1371, %1376
  %1378 = zext i32 %1377 to i64
  %1379 = getelementptr inbounds %struct.code, ptr %1369, i64 %1378
  call void @llvm.memcpy.p0.p0.i64(ptr align 2 %21, ptr align 2 %1379, i64 4, i1 false), !tbaa.struct !43
  %1380 = getelementptr inbounds %struct.code, ptr %21, i32 0, i32 1
  %1381 = load i8, ptr %1380, align 1, !tbaa !44
  %1382 = zext i8 %1381 to i32
  %1383 = load i32, ptr %18, align 4, !tbaa !20
  %1384 = icmp ule i32 %1382, %1383
  br i1 %1384, label %1385, label %1386

1385:                                             ; preds = %1366
  br label %1417

1386:                                             ; preds = %1366
  br label %1387

1387:                                             ; preds = %1386
  br label %1388

1388:                                             ; preds = %1387
  %1389 = load i32, ptr %15, align 4, !tbaa !20
  %1390 = icmp eq i32 %1389, 0
  br i1 %1390, label %1391, label %1399

1391:                                             ; preds = %1388
  %1392 = load ptr, ptr %8, align 8, !tbaa !5
  %1393 = load ptr, ptr %9, align 8, !tbaa !5
  %1394 = call i32 %1392(ptr noundef %1393, ptr noundef %13)
  store i32 %1394, ptr %15, align 4, !tbaa !20
  %1395 = load i32, ptr %15, align 4, !tbaa !20
  %1396 = icmp eq i32 %1395, 0
  br i1 %1396, label %1397, label %1398

1397:                                             ; preds = %1391
  store ptr null, ptr %13, align 8, !tbaa !5
  store i32 -5, ptr %24, align 4, !tbaa !20
  br label %1734

1398:                                             ; preds = %1391
  br label %1399

1399:                                             ; preds = %1398, %1388
  br label %1400

1400:                                             ; preds = %1399
  br label %1401

1401:                                             ; preds = %1400
  %1402 = load i32, ptr %15, align 4, !tbaa !20
  %1403 = add i32 %1402, -1
  store i32 %1403, ptr %15, align 4, !tbaa !20
  %1404 = load ptr, ptr %13, align 8, !tbaa !5
  %1405 = getelementptr inbounds i8, ptr %1404, i32 1
  store ptr %1405, ptr %13, align 8, !tbaa !5
  %1406 = load i8, ptr %1404, align 1, !tbaa !24
  %1407 = zext i8 %1406 to i64
  %1408 = load i32, ptr %18, align 4, !tbaa !20
  %1409 = zext i32 %1408 to i64
  %1410 = shl i64 %1407, %1409
  %1411 = load i64, ptr %17, align 8, !tbaa !21
  %1412 = add i64 %1411, %1410
  store i64 %1412, ptr %17, align 8, !tbaa !21
  %1413 = load i32, ptr %18, align 4, !tbaa !20
  %1414 = add i32 %1413, 8
  store i32 %1414, ptr %18, align 4, !tbaa !20
  br label %1415

1415:                                             ; preds = %1401
  br label %1416

1416:                                             ; preds = %1415
  br label %1366

1417:                                             ; preds = %1385
  %1418 = getelementptr inbounds %struct.code, ptr %21, i32 0, i32 0
  %1419 = load i8, ptr %1418, align 2, !tbaa !58
  %1420 = zext i8 %1419 to i32
  %1421 = and i32 %1420, 240
  %1422 = icmp eq i32 %1421, 0
  br i1 %1422, label %1423, label %1506

1423:                                             ; preds = %1417
  call void @llvm.memcpy.p0.p0.i64(ptr align 2 %22, ptr align 2 %21, i64 4, i1 false), !tbaa.struct !43
  br label %1424

1424:                                             ; preds = %1490, %1423
  %1425 = load ptr, ptr %12, align 8, !tbaa !5
  %1426 = getelementptr inbounds %struct.inflate_state, ptr %1425, i32 0, i32 21
  %1427 = load ptr, ptr %1426, align 8, !tbaa !52
  %1428 = getelementptr inbounds %struct.code, ptr %22, i32 0, i32 2
  %1429 = load i16, ptr %1428, align 2, !tbaa !46
  %1430 = zext i16 %1429 to i32
  %1431 = load i64, ptr %17, align 8, !tbaa !21
  %1432 = trunc i64 %1431 to i32
  %1433 = getelementptr inbounds %struct.code, ptr %22, i32 0, i32 1
  %1434 = load i8, ptr %1433, align 1, !tbaa !44
  %1435 = zext i8 %1434 to i32
  %1436 = getelementptr inbounds %struct.code, ptr %22, i32 0, i32 0
  %1437 = load i8, ptr %1436, align 2, !tbaa !58
  %1438 = zext i8 %1437 to i32
  %1439 = add nsw i32 %1435, %1438
  %1440 = shl i32 1, %1439
  %1441 = sub i32 %1440, 1
  %1442 = and i32 %1432, %1441
  %1443 = getelementptr inbounds %struct.code, ptr %22, i32 0, i32 1
  %1444 = load i8, ptr %1443, align 1, !tbaa !44
  %1445 = zext i8 %1444 to i32
  %1446 = lshr i32 %1442, %1445
  %1447 = add i32 %1430, %1446
  %1448 = zext i32 %1447 to i64
  %1449 = getelementptr inbounds %struct.code, ptr %1427, i64 %1448
  call void @llvm.memcpy.p0.p0.i64(ptr align 2 %21, ptr align 2 %1449, i64 4, i1 false), !tbaa.struct !43
  %1450 = getelementptr inbounds %struct.code, ptr %22, i32 0, i32 1
  %1451 = load i8, ptr %1450, align 1, !tbaa !44
  %1452 = zext i8 %1451 to i32
  %1453 = getelementptr inbounds %struct.code, ptr %21, i32 0, i32 1
  %1454 = load i8, ptr %1453, align 1, !tbaa !44
  %1455 = zext i8 %1454 to i32
  %1456 = add nsw i32 %1452, %1455
  %1457 = load i32, ptr %18, align 4, !tbaa !20
  %1458 = icmp ule i32 %1456, %1457
  br i1 %1458, label %1459, label %1460

1459:                                             ; preds = %1424
  br label %1491

1460:                                             ; preds = %1424
  br label %1461

1461:                                             ; preds = %1460
  br label %1462

1462:                                             ; preds = %1461
  %1463 = load i32, ptr %15, align 4, !tbaa !20
  %1464 = icmp eq i32 %1463, 0
  br i1 %1464, label %1465, label %1473

1465:                                             ; preds = %1462
  %1466 = load ptr, ptr %8, align 8, !tbaa !5
  %1467 = load ptr, ptr %9, align 8, !tbaa !5
  %1468 = call i32 %1466(ptr noundef %1467, ptr noundef %13)
  store i32 %1468, ptr %15, align 4, !tbaa !20
  %1469 = load i32, ptr %15, align 4, !tbaa !20
  %1470 = icmp eq i32 %1469, 0
  br i1 %1470, label %1471, label %1472

1471:                                             ; preds = %1465
  store ptr null, ptr %13, align 8, !tbaa !5
  store i32 -5, ptr %24, align 4, !tbaa !20
  br label %1734

1472:                                             ; preds = %1465
  br label %1473

1473:                                             ; preds = %1472, %1462
  br label %1474

1474:                                             ; preds = %1473
  br label %1475

1475:                                             ; preds = %1474
  %1476 = load i32, ptr %15, align 4, !tbaa !20
  %1477 = add i32 %1476, -1
  store i32 %1477, ptr %15, align 4, !tbaa !20
  %1478 = load ptr, ptr %13, align 8, !tbaa !5
  %1479 = getelementptr inbounds i8, ptr %1478, i32 1
  store ptr %1479, ptr %13, align 8, !tbaa !5
  %1480 = load i8, ptr %1478, align 1, !tbaa !24
  %1481 = zext i8 %1480 to i64
  %1482 = load i32, ptr %18, align 4, !tbaa !20
  %1483 = zext i32 %1482 to i64
  %1484 = shl i64 %1481, %1483
  %1485 = load i64, ptr %17, align 8, !tbaa !21
  %1486 = add i64 %1485, %1484
  store i64 %1486, ptr %17, align 8, !tbaa !21
  %1487 = load i32, ptr %18, align 4, !tbaa !20
  %1488 = add i32 %1487, 8
  store i32 %1488, ptr %18, align 4, !tbaa !20
  br label %1489

1489:                                             ; preds = %1475
  br label %1490

1490:                                             ; preds = %1489
  br label %1424

1491:                                             ; preds = %1459
  br label %1492

1492:                                             ; preds = %1491
  %1493 = getelementptr inbounds %struct.code, ptr %22, i32 0, i32 1
  %1494 = load i8, ptr %1493, align 1, !tbaa !44
  %1495 = zext i8 %1494 to i32
  %1496 = load i64, ptr %17, align 8, !tbaa !21
  %1497 = zext i32 %1495 to i64
  %1498 = lshr i64 %1496, %1497
  store i64 %1498, ptr %17, align 8, !tbaa !21
  %1499 = getelementptr inbounds %struct.code, ptr %22, i32 0, i32 1
  %1500 = load i8, ptr %1499, align 1, !tbaa !44
  %1501 = zext i8 %1500 to i32
  %1502 = load i32, ptr %18, align 4, !tbaa !20
  %1503 = sub i32 %1502, %1501
  store i32 %1503, ptr %18, align 4, !tbaa !20
  br label %1504

1504:                                             ; preds = %1492
  br label %1505

1505:                                             ; preds = %1504
  br label %1506

1506:                                             ; preds = %1505, %1417
  br label %1507

1507:                                             ; preds = %1506
  %1508 = getelementptr inbounds %struct.code, ptr %21, i32 0, i32 1
  %1509 = load i8, ptr %1508, align 1, !tbaa !44
  %1510 = zext i8 %1509 to i32
  %1511 = load i64, ptr %17, align 8, !tbaa !21
  %1512 = zext i32 %1510 to i64
  %1513 = lshr i64 %1511, %1512
  store i64 %1513, ptr %17, align 8, !tbaa !21
  %1514 = getelementptr inbounds %struct.code, ptr %21, i32 0, i32 1
  %1515 = load i8, ptr %1514, align 1, !tbaa !44
  %1516 = zext i8 %1515 to i32
  %1517 = load i32, ptr %18, align 4, !tbaa !20
  %1518 = sub i32 %1517, %1516
  store i32 %1518, ptr %18, align 4, !tbaa !20
  br label %1519

1519:                                             ; preds = %1507
  br label %1520

1520:                                             ; preds = %1519
  %1521 = getelementptr inbounds %struct.code, ptr %21, i32 0, i32 0
  %1522 = load i8, ptr %1521, align 2, !tbaa !58
  %1523 = zext i8 %1522 to i32
  %1524 = and i32 %1523, 64
  %1525 = icmp ne i32 %1524, 0
  br i1 %1525, label %1526, label %1531

1526:                                             ; preds = %1520
  %1527 = load ptr, ptr %7, align 8, !tbaa !5
  %1528 = getelementptr inbounds %struct.z_stream_s, ptr %1527, i32 0, i32 6
  store ptr @.str.10, ptr %1528, align 8, !tbaa !13
  %1529 = load ptr, ptr %12, align 8, !tbaa !5
  %1530 = getelementptr inbounds %struct.inflate_state, ptr %1529, i32 0, i32 1
  store i32 16209, ptr %1530, align 8, !tbaa !14
  br label %1733

1531:                                             ; preds = %1520
  %1532 = getelementptr inbounds %struct.code, ptr %21, i32 0, i32 2
  %1533 = load i16, ptr %1532, align 2, !tbaa !46
  %1534 = zext i16 %1533 to i32
  %1535 = load ptr, ptr %12, align 8, !tbaa !5
  %1536 = getelementptr inbounds %struct.inflate_state, ptr %1535, i32 0, i32 18
  store i32 %1534, ptr %1536, align 8, !tbaa !61
  %1537 = getelementptr inbounds %struct.code, ptr %21, i32 0, i32 0
  %1538 = load i8, ptr %1537, align 2, !tbaa !58
  %1539 = zext i8 %1538 to i32
  %1540 = and i32 %1539, 15
  %1541 = load ptr, ptr %12, align 8, !tbaa !5
  %1542 = getelementptr inbounds %struct.inflate_state, ptr %1541, i32 0, i32 19
  store i32 %1540, ptr %1542, align 4, !tbaa !59
  %1543 = load ptr, ptr %12, align 8, !tbaa !5
  %1544 = getelementptr inbounds %struct.inflate_state, ptr %1543, i32 0, i32 19
  %1545 = load i32, ptr %1544, align 4, !tbaa !59
  %1546 = icmp ne i32 %1545, 0
  br i1 %1546, label %1547, label %1615

1547:                                             ; preds = %1531
  br label %1548

1548:                                             ; preds = %1547
  br label %1549

1549:                                             ; preds = %1585, %1548
  %1550 = load i32, ptr %18, align 4, !tbaa !20
  %1551 = load ptr, ptr %12, align 8, !tbaa !5
  %1552 = getelementptr inbounds %struct.inflate_state, ptr %1551, i32 0, i32 19
  %1553 = load i32, ptr %1552, align 4, !tbaa !59
  %1554 = icmp ult i32 %1550, %1553
  br i1 %1554, label %1555, label %1586

1555:                                             ; preds = %1549
  br label %1556

1556:                                             ; preds = %1555
  br label %1557

1557:                                             ; preds = %1556
  %1558 = load i32, ptr %15, align 4, !tbaa !20
  %1559 = icmp eq i32 %1558, 0
  br i1 %1559, label %1560, label %1568

1560:                                             ; preds = %1557
  %1561 = load ptr, ptr %8, align 8, !tbaa !5
  %1562 = load ptr, ptr %9, align 8, !tbaa !5
  %1563 = call i32 %1561(ptr noundef %1562, ptr noundef %13)
  store i32 %1563, ptr %15, align 4, !tbaa !20
  %1564 = load i32, ptr %15, align 4, !tbaa !20
  %1565 = icmp eq i32 %1564, 0
  br i1 %1565, label %1566, label %1567

1566:                                             ; preds = %1560
  store ptr null, ptr %13, align 8, !tbaa !5
  store i32 -5, ptr %24, align 4, !tbaa !20
  br label %1734

1567:                                             ; preds = %1560
  br label %1568

1568:                                             ; preds = %1567, %1557
  br label %1569

1569:                                             ; preds = %1568
  br label %1570

1570:                                             ; preds = %1569
  %1571 = load i32, ptr %15, align 4, !tbaa !20
  %1572 = add i32 %1571, -1
  store i32 %1572, ptr %15, align 4, !tbaa !20
  %1573 = load ptr, ptr %13, align 8, !tbaa !5
  %1574 = getelementptr inbounds i8, ptr %1573, i32 1
  store ptr %1574, ptr %13, align 8, !tbaa !5
  %1575 = load i8, ptr %1573, align 1, !tbaa !24
  %1576 = zext i8 %1575 to i64
  %1577 = load i32, ptr %18, align 4, !tbaa !20
  %1578 = zext i32 %1577 to i64
  %1579 = shl i64 %1576, %1578
  %1580 = load i64, ptr %17, align 8, !tbaa !21
  %1581 = add i64 %1580, %1579
  store i64 %1581, ptr %17, align 8, !tbaa !21
  %1582 = load i32, ptr %18, align 4, !tbaa !20
  %1583 = add i32 %1582, 8
  store i32 %1583, ptr %18, align 4, !tbaa !20
  br label %1584

1584:                                             ; preds = %1570
  br label %1585

1585:                                             ; preds = %1584
  br label %1549, !llvm.loop !62

1586:                                             ; preds = %1549
  br label %1587

1587:                                             ; preds = %1586
  br label %1588

1588:                                             ; preds = %1587
  %1589 = load i64, ptr %17, align 8, !tbaa !21
  %1590 = trunc i64 %1589 to i32
  %1591 = load ptr, ptr %12, align 8, !tbaa !5
  %1592 = getelementptr inbounds %struct.inflate_state, ptr %1591, i32 0, i32 19
  %1593 = load i32, ptr %1592, align 4, !tbaa !59
  %1594 = shl i32 1, %1593
  %1595 = sub i32 %1594, 1
  %1596 = and i32 %1590, %1595
  %1597 = load ptr, ptr %12, align 8, !tbaa !5
  %1598 = getelementptr inbounds %struct.inflate_state, ptr %1597, i32 0, i32 18
  %1599 = load i32, ptr %1598, align 8, !tbaa !61
  %1600 = add i32 %1599, %1596
  store i32 %1600, ptr %1598, align 8, !tbaa !61
  br label %1601

1601:                                             ; preds = %1588
  %1602 = load ptr, ptr %12, align 8, !tbaa !5
  %1603 = getelementptr inbounds %struct.inflate_state, ptr %1602, i32 0, i32 19
  %1604 = load i32, ptr %1603, align 4, !tbaa !59
  %1605 = load i64, ptr %17, align 8, !tbaa !21
  %1606 = zext i32 %1604 to i64
  %1607 = lshr i64 %1605, %1606
  store i64 %1607, ptr %17, align 8, !tbaa !21
  %1608 = load ptr, ptr %12, align 8, !tbaa !5
  %1609 = getelementptr inbounds %struct.inflate_state, ptr %1608, i32 0, i32 19
  %1610 = load i32, ptr %1609, align 4, !tbaa !59
  %1611 = load i32, ptr %18, align 4, !tbaa !20
  %1612 = sub i32 %1611, %1610
  store i32 %1612, ptr %18, align 4, !tbaa !20
  br label %1613

1613:                                             ; preds = %1601
  br label %1614

1614:                                             ; preds = %1613
  br label %1615

1615:                                             ; preds = %1614, %1531
  %1616 = load ptr, ptr %12, align 8, !tbaa !5
  %1617 = getelementptr inbounds %struct.inflate_state, ptr %1616, i32 0, i32 18
  %1618 = load i32, ptr %1617, align 8, !tbaa !61
  %1619 = load ptr, ptr %12, align 8, !tbaa !5
  %1620 = getelementptr inbounds %struct.inflate_state, ptr %1619, i32 0, i32 11
  %1621 = load i32, ptr %1620, align 4, !tbaa !23
  %1622 = load ptr, ptr %12, align 8, !tbaa !5
  %1623 = getelementptr inbounds %struct.inflate_state, ptr %1622, i32 0, i32 12
  %1624 = load i32, ptr %1623, align 8, !tbaa !17
  %1625 = load ptr, ptr %12, align 8, !tbaa !5
  %1626 = getelementptr inbounds %struct.inflate_state, ptr %1625, i32 0, i32 11
  %1627 = load i32, ptr %1626, align 4, !tbaa !23
  %1628 = icmp ult i32 %1624, %1627
  br i1 %1628, label %1629, label %1631

1629:                                             ; preds = %1615
  %1630 = load i32, ptr %16, align 4, !tbaa !20
  br label %1632

1631:                                             ; preds = %1615
  br label %1632

1632:                                             ; preds = %1631, %1629
  %1633 = phi i32 [ %1630, %1629 ], [ 0, %1631 ]
  %1634 = sub i32 %1621, %1633
  %1635 = icmp ugt i32 %1618, %1634
  br i1 %1635, label %1636, label %1641

1636:                                             ; preds = %1632
  %1637 = load ptr, ptr %7, align 8, !tbaa !5
  %1638 = getelementptr inbounds %struct.z_stream_s, ptr %1637, i32 0, i32 6
  store ptr @.str.11, ptr %1638, align 8, !tbaa !13
  %1639 = load ptr, ptr %12, align 8, !tbaa !5
  %1640 = getelementptr inbounds %struct.inflate_state, ptr %1639, i32 0, i32 1
  store i32 16209, ptr %1640, align 8, !tbaa !14
  br label %1733

1641:                                             ; preds = %1632
  br label %1642

1642:                                             ; preds = %1724, %1641
  br label %1643

1643:                                             ; preds = %1642
  %1644 = load i32, ptr %16, align 4, !tbaa !20
  %1645 = icmp eq i32 %1644, 0
  br i1 %1645, label %1646, label %1664

1646:                                             ; preds = %1643
  %1647 = load ptr, ptr %12, align 8, !tbaa !5
  %1648 = getelementptr inbounds %struct.inflate_state, ptr %1647, i32 0, i32 14
  %1649 = load ptr, ptr %1648, align 8, !tbaa !22
  store ptr %1649, ptr %14, align 8, !tbaa !5
  %1650 = load ptr, ptr %12, align 8, !tbaa !5
  %1651 = getelementptr inbounds %struct.inflate_state, ptr %1650, i32 0, i32 11
  %1652 = load i32, ptr %1651, align 4, !tbaa !23
  store i32 %1652, ptr %16, align 4, !tbaa !20
  %1653 = load i32, ptr %16, align 4, !tbaa !20
  %1654 = load ptr, ptr %12, align 8, !tbaa !5
  %1655 = getelementptr inbounds %struct.inflate_state, ptr %1654, i32 0, i32 12
  store i32 %1653, ptr %1655, align 8, !tbaa !17
  %1656 = load ptr, ptr %10, align 8, !tbaa !5
  %1657 = load ptr, ptr %11, align 8, !tbaa !5
  %1658 = load ptr, ptr %14, align 8, !tbaa !5
  %1659 = load i32, ptr %16, align 4, !tbaa !20
  %1660 = call i32 %1656(ptr noundef %1657, ptr noundef %1658, i32 noundef %1659)
  %1661 = icmp ne i32 %1660, 0
  br i1 %1661, label %1662, label %1663

1662:                                             ; preds = %1646
  store i32 -5, ptr %24, align 4, !tbaa !20
  br label %1734

1663:                                             ; preds = %1646
  br label %1664

1664:                                             ; preds = %1663, %1643
  br label %1665

1665:                                             ; preds = %1664
  br label %1666

1666:                                             ; preds = %1665
  %1667 = load ptr, ptr %12, align 8, !tbaa !5
  %1668 = getelementptr inbounds %struct.inflate_state, ptr %1667, i32 0, i32 11
  %1669 = load i32, ptr %1668, align 4, !tbaa !23
  %1670 = load ptr, ptr %12, align 8, !tbaa !5
  %1671 = getelementptr inbounds %struct.inflate_state, ptr %1670, i32 0, i32 18
  %1672 = load i32, ptr %1671, align 8, !tbaa !61
  %1673 = sub i32 %1669, %1672
  store i32 %1673, ptr %19, align 4, !tbaa !20
  %1674 = load i32, ptr %19, align 4, !tbaa !20
  %1675 = load i32, ptr %16, align 4, !tbaa !20
  %1676 = icmp ult i32 %1674, %1675
  br i1 %1676, label %1677, label %1685

1677:                                             ; preds = %1666
  %1678 = load ptr, ptr %14, align 8, !tbaa !5
  %1679 = load i32, ptr %19, align 4, !tbaa !20
  %1680 = zext i32 %1679 to i64
  %1681 = getelementptr inbounds i8, ptr %1678, i64 %1680
  store ptr %1681, ptr %20, align 8, !tbaa !5
  %1682 = load i32, ptr %16, align 4, !tbaa !20
  %1683 = load i32, ptr %19, align 4, !tbaa !20
  %1684 = sub i32 %1682, %1683
  store i32 %1684, ptr %19, align 4, !tbaa !20
  br label %1694

1685:                                             ; preds = %1666
  %1686 = load ptr, ptr %14, align 8, !tbaa !5
  %1687 = load ptr, ptr %12, align 8, !tbaa !5
  %1688 = getelementptr inbounds %struct.inflate_state, ptr %1687, i32 0, i32 18
  %1689 = load i32, ptr %1688, align 8, !tbaa !61
  %1690 = zext i32 %1689 to i64
  %1691 = sub i64 0, %1690
  %1692 = getelementptr inbounds i8, ptr %1686, i64 %1691
  store ptr %1692, ptr %20, align 8, !tbaa !5
  %1693 = load i32, ptr %16, align 4, !tbaa !20
  store i32 %1693, ptr %19, align 4, !tbaa !20
  br label %1694

1694:                                             ; preds = %1685, %1677
  %1695 = load i32, ptr %19, align 4, !tbaa !20
  %1696 = load ptr, ptr %12, align 8, !tbaa !5
  %1697 = getelementptr inbounds %struct.inflate_state, ptr %1696, i32 0, i32 17
  %1698 = load i32, ptr %1697, align 4, !tbaa !28
  %1699 = icmp ugt i32 %1695, %1698
  br i1 %1699, label %1700, label %1704

1700:                                             ; preds = %1694
  %1701 = load ptr, ptr %12, align 8, !tbaa !5
  %1702 = getelementptr inbounds %struct.inflate_state, ptr %1701, i32 0, i32 17
  %1703 = load i32, ptr %1702, align 4, !tbaa !28
  store i32 %1703, ptr %19, align 4, !tbaa !20
  br label %1704

1704:                                             ; preds = %1700, %1694
  %1705 = load i32, ptr %19, align 4, !tbaa !20
  %1706 = load ptr, ptr %12, align 8, !tbaa !5
  %1707 = getelementptr inbounds %struct.inflate_state, ptr %1706, i32 0, i32 17
  %1708 = load i32, ptr %1707, align 4, !tbaa !28
  %1709 = sub i32 %1708, %1705
  store i32 %1709, ptr %1707, align 4, !tbaa !28
  %1710 = load i32, ptr %19, align 4, !tbaa !20
  %1711 = load i32, ptr %16, align 4, !tbaa !20
  %1712 = sub i32 %1711, %1710
  store i32 %1712, ptr %16, align 4, !tbaa !20
  br label %1713

1713:                                             ; preds = %1719, %1704
  %1714 = load ptr, ptr %20, align 8, !tbaa !5
  %1715 = getelementptr inbounds i8, ptr %1714, i32 1
  store ptr %1715, ptr %20, align 8, !tbaa !5
  %1716 = load i8, ptr %1714, align 1, !tbaa !24
  %1717 = load ptr, ptr %14, align 8, !tbaa !5
  %1718 = getelementptr inbounds i8, ptr %1717, i32 1
  store ptr %1718, ptr %14, align 8, !tbaa !5
  store i8 %1716, ptr %1717, align 1, !tbaa !24
  br label %1719

1719:                                             ; preds = %1713
  %1720 = load i32, ptr %19, align 4, !tbaa !20
  %1721 = add i32 %1720, -1
  store i32 %1721, ptr %19, align 4, !tbaa !20
  %1722 = icmp ne i32 %1721, 0
  br i1 %1722, label %1713, label %1723, !llvm.loop !63

1723:                                             ; preds = %1719
  br label %1724

1724:                                             ; preds = %1723
  %1725 = load ptr, ptr %12, align 8, !tbaa !5
  %1726 = getelementptr inbounds %struct.inflate_state, ptr %1725, i32 0, i32 17
  %1727 = load i32, ptr %1726, align 4, !tbaa !28
  %1728 = icmp ne i32 %1727, 0
  br i1 %1728, label %1642, label %1729, !llvm.loop !64

1729:                                             ; preds = %1724
  br label %1733

1730:                                             ; preds = %64
  store i32 1, ptr %24, align 4, !tbaa !20
  br label %1734

1731:                                             ; preds = %64
  store i32 -3, ptr %24, align 4, !tbaa !20
  br label %1734

1732:                                             ; preds = %64
  store i32 -2, ptr %24, align 4, !tbaa !20
  br label %1734

1733:                                             ; preds = %1729, %1636, %1526, %1281, %1272, %1255, %1060, %984, %950, %916, %908, %529, %408, %318, %222, %164, %85
  br label %64

1734:                                             ; preds = %1732, %1731, %1730, %1662, %1566, %1471, %1397, %1316, %1251, %1172, %1093, %817, %749, %656, %581, %440, %337, %278, %254, %193, %104
  %1735 = load i32, ptr %16, align 4, !tbaa !20
  %1736 = load ptr, ptr %12, align 8, !tbaa !5
  %1737 = getelementptr inbounds %struct.inflate_state, ptr %1736, i32 0, i32 11
  %1738 = load i32, ptr %1737, align 4, !tbaa !23
  %1739 = icmp ult i32 %1735, %1738
  br i1 %1739, label %1740, label %1758

1740:                                             ; preds = %1734
  %1741 = load ptr, ptr %10, align 8, !tbaa !5
  %1742 = load ptr, ptr %11, align 8, !tbaa !5
  %1743 = load ptr, ptr %12, align 8, !tbaa !5
  %1744 = getelementptr inbounds %struct.inflate_state, ptr %1743, i32 0, i32 14
  %1745 = load ptr, ptr %1744, align 8, !tbaa !22
  %1746 = load ptr, ptr %12, align 8, !tbaa !5
  %1747 = getelementptr inbounds %struct.inflate_state, ptr %1746, i32 0, i32 11
  %1748 = load i32, ptr %1747, align 4, !tbaa !23
  %1749 = load i32, ptr %16, align 4, !tbaa !20
  %1750 = sub i32 %1748, %1749
  %1751 = call i32 %1741(ptr noundef %1742, ptr noundef %1745, i32 noundef %1750)
  %1752 = icmp ne i32 %1751, 0
  br i1 %1752, label %1753, label %1757

1753:                                             ; preds = %1740
  %1754 = load i32, ptr %24, align 4, !tbaa !20
  %1755 = icmp eq i32 %1754, 1
  br i1 %1755, label %1756, label %1757

1756:                                             ; preds = %1753
  store i32 -5, ptr %24, align 4, !tbaa !20
  br label %1757

1757:                                             ; preds = %1756, %1753, %1740
  br label %1758

1758:                                             ; preds = %1757, %1734
  %1759 = load ptr, ptr %13, align 8, !tbaa !5
  %1760 = load ptr, ptr %7, align 8, !tbaa !5
  %1761 = getelementptr inbounds %struct.z_stream_s, ptr %1760, i32 0, i32 0
  store ptr %1759, ptr %1761, align 8, !tbaa !18
  %1762 = load i32, ptr %15, align 4, !tbaa !20
  %1763 = load ptr, ptr %7, align 8, !tbaa !5
  %1764 = getelementptr inbounds %struct.z_stream_s, ptr %1763, i32 0, i32 1
  store i32 %1762, ptr %1764, align 8, !tbaa !19
  %1765 = load i32, ptr %24, align 4, !tbaa !20
  store i32 %1765, ptr %6, align 4
  store i32 1, ptr %25, align 4
  br label %1766

1766:                                             ; preds = %1758, %33
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #4
  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 8, ptr %20) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #4
  call void @llvm.lifetime.end.p0(i64 8, 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 8, ptr %14) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #4
  %1767 = load i32, ptr %6, align 4
  ret i32 %1767
}

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

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

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

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

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 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #3 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { nounwind }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !6, i64 56}
!10 = !{!"z_stream_s", !6, i64 0, !11, i64 8, !12, i64 16, !6, i64 24, !11, i64 32, !12, i64 40, !6, i64 48, !6, i64 56, !6, i64 64, !6, i64 72, !6, i64 80, !11, i64 88, !12, i64 96, !12, i64 104}
!11 = !{!"int", !7, i64 0}
!12 = !{!"long", !7, i64 0}
!13 = !{!10, !6, i64 48}
!14 = !{!15, !11, i64 8}
!15 = !{!"inflate_state", !6, i64 0, !11, i64 8, !11, i64 12, !11, i64 16, !11, i64 20, !11, i64 24, !11, i64 28, !12, i64 32, !12, i64 40, !6, i64 48, !11, i64 56, !11, i64 60, !11, i64 64, !11, i64 68, !6, i64 72, !12, i64 80, !11, i64 88, !11, i64 92, !11, i64 96, !11, i64 100, !6, i64 104, !6, i64 112, !11, i64 120, !11, i64 124, !11, i64 128, !11, i64 132, !11, i64 136, !11, i64 140, !6, i64 144, !7, i64 152, !7, i64 792, !7, i64 1368, !11, i64 7144, !11, i64 7148, !11, i64 7152}
!16 = !{!15, !11, i64 12}
!17 = !{!15, !11, i64 64}
!18 = !{!10, !6, i64 0}
!19 = !{!10, !11, i64 8}
!20 = !{!11, !11, i64 0}
!21 = !{!12, !12, i64 0}
!22 = !{!15, !6, i64 72}
!23 = !{!15, !11, i64 60}
!24 = !{!7, !7, i64 0}
!25 = distinct !{!25, !26}
!26 = !{!"llvm.loop.mustprogress"}
!27 = distinct !{!27, !26}
!28 = !{!15, !11, i64 92}
!29 = distinct !{!29, !26}
!30 = distinct !{!30, !26}
!31 = !{!15, !11, i64 132}
!32 = !{!15, !11, i64 136}
!33 = !{!15, !11, i64 128}
!34 = !{!15, !11, i64 140}
!35 = distinct !{!35, !26}
!36 = !{!37, !37, i64 0}
!37 = !{!"short", !7, i64 0}
!38 = distinct !{!38, !26}
!39 = distinct !{!39, !26}
!40 = !{!15, !6, i64 144}
!41 = !{!15, !6, i64 104}
!42 = !{!15, !11, i64 120}
!43 = !{i64 0, i64 1, !24, i64 1, i64 1, !24, i64 2, i64 2, !36}
!44 = !{!45, !7, i64 1}
!45 = !{!"", !7, i64 0, !7, i64 1, !37, i64 2}
!46 = !{!45, !37, i64 2}
!47 = distinct !{!47, !26}
!48 = distinct !{!48, !26}
!49 = distinct !{!49, !26}
!50 = distinct !{!50, !26}
!51 = distinct !{!51, !26}
!52 = !{!15, !6, i64 112}
!53 = !{!15, !11, i64 124}
!54 = !{!10, !6, i64 24}
!55 = !{!10, !11, i64 32}
!56 = !{!15, !12, i64 80}
!57 = !{!15, !11, i64 88}
!58 = !{!45, !7, i64 0}
!59 = !{!15, !11, i64 100}
!60 = distinct !{!60, !26}
!61 = !{!15, !11, i64 96}
!62 = distinct !{!62, !26}
!63 = distinct !{!63, !26}
!64 = distinct !{!64, !26}


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

%struct.code = type { i8, i8, i16 }

@inflateBack.order = external hidden local_unnamed_addr constant [19 x i16], align 16
@.str.1 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [30 x i8], align 1

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

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

; Function Attrs: nounwind uwtable
define dso_local range(i32 -5, 2) i32 @inflateBack(ptr noundef %0, ptr nocapture noundef readonly %1, ptr noundef %2, ptr nocapture noundef readonly %3, ptr noundef %4) local_unnamed_addr #1 {
  %6 = alloca ptr, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %6) #5
  %7 = icmp eq ptr %0, null
  br i1 %7, label %760, label %8

8:                                                ; preds = %5
  %9 = getelementptr inbounds i8, ptr %0, i64 56
  %10 = load ptr, ptr %9, align 8, !tbaa !5
  %11 = icmp eq ptr %10, null
  br i1 %11, label %760, label %12

12:                                               ; preds = %8
  %13 = getelementptr inbounds i8, ptr %0, i64 48
  store ptr null, ptr %13, align 8, !tbaa !12
  %14 = getelementptr inbounds i8, ptr %10, i64 8
  store i32 16191, ptr %14, align 8, !tbaa !13
  %15 = getelementptr inbounds i8, ptr %10, i64 12
  store i32 0, ptr %15, align 4, !tbaa !15
  %16 = getelementptr inbounds i8, ptr %10, i64 64
  store i32 0, ptr %16, align 8, !tbaa !16
  %17 = load ptr, ptr %0, align 8, !tbaa !17
  store ptr %17, ptr %6, align 8, !tbaa !18
  %.not = icmp eq ptr %17, null
  br i1 %.not, label %.split1158, label %18

18:                                               ; preds = %12
  %19 = getelementptr inbounds i8, ptr %0, i64 8
  %20 = load i32, ptr %19, align 8, !tbaa !19
  br label %.split1158

.split1158:                                       ; preds = %12, %18
  %21 = phi i32 [ %20, %18 ], [ 0, %12 ]
  %22 = getelementptr inbounds i8, ptr %10, i64 72
  %23 = load ptr, ptr %22, align 8, !tbaa !20
  %24 = getelementptr inbounds i8, ptr %10, i64 60
  %25 = load i32, ptr %24, align 4, !tbaa !21
  %26 = getelementptr inbounds i8, ptr %10, i64 132
  %27 = getelementptr inbounds i8, ptr %10, i64 136
  %28 = getelementptr inbounds i8, ptr %10, i64 128
  %29 = getelementptr inbounds i8, ptr %10, i64 140
  %30 = getelementptr inbounds i8, ptr %10, i64 152
  %31 = getelementptr inbounds i8, ptr %10, i64 1368
  %32 = getelementptr inbounds i8, ptr %10, i64 144
  %33 = getelementptr inbounds i8, ptr %10, i64 104
  %34 = getelementptr inbounds i8, ptr %10, i64 120
  %35 = getelementptr inbounds i8, ptr %10, i64 792
  %36 = getelementptr inbounds i8, ptr %10, i64 664
  %37 = getelementptr inbounds i8, ptr %10, i64 112
  %38 = getelementptr inbounds i8, ptr %10, i64 124
  %39 = getelementptr inbounds i8, ptr %10, i64 92
  %40 = getelementptr inbounds i8, ptr %10, i64 100
  %41 = getelementptr inbounds i8, ptr %10, i64 96
  %42 = getelementptr inbounds i8, ptr %0, i64 24
  %43 = getelementptr inbounds i8, ptr %0, i64 32
  %44 = getelementptr inbounds i8, ptr %0, i64 8
  %45 = getelementptr inbounds i8, ptr %10, i64 80
  %46 = getelementptr inbounds i8, ptr %10, i64 88
  br label %47

47:                                               ; preds = %.thread, %.split1158
  %48 = phi i32 [ 16191, %.split1158 ], [ %.pre, %.thread ]
  %.0590 = phi ptr [ %23, %.split1158 ], [ %.7597, %.thread ]
  %.0564 = phi i32 [ %21, %.split1158 ], [ %.41, %.thread ]
  %.0556 = phi i32 [ %25, %.split1158 ], [ %.6562, %.thread ]
  %.0530 = phi i64 [ 0, %.split1158 ], [ %.25555, %.thread ]
  %.0523 = phi i32 [ 0, %.split1158 ], [ %.25, %.thread ]
  switch i32 %48, label %.loopexit687 [
    i32 16191, label %51
    i32 16193, label %83
    i32 16196, label %.preheader696
    i32 16200, label %422
    i32 16208, label %.loopexit687.loopexit1438
    i32 16209, label %.loopexit687.loopexit1563
  ]

.preheader696:                                    ; preds = %47
  %49 = icmp ult i32 %.0523, 14
  br i1 %49, label %.lr.ph.preheader, label %._crit_edge

.lr.ph.preheader:                                 ; preds = %.preheader696
  %50 = zext nneg i32 %.0523 to i64
  br label %.lr.ph

51:                                               ; preds = %47
  %52 = load i32, ptr %15, align 4, !tbaa !15
  %.not674 = icmp eq i32 %52, 0
  br i1 %.not674, label %.preheader686, label %56

.preheader686:                                    ; preds = %51
  %53 = icmp ult i32 %.0523, 3
  br i1 %53, label %.lr.ph1058, label %72

.lr.ph1058:                                       ; preds = %.preheader686
  %54 = or disjoint i32 %.0523, 8
  %55 = icmp eq i32 %.0564, 0
  br i1 %55, label %61, label %._crit_edge1059

56:                                               ; preds = %51
  %57 = and i32 %.0523, 7
  %58 = zext nneg i32 %57 to i64
  %59 = lshr i64 %.0530, %58
  %60 = and i32 %.0523, -8
  store i32 16208, ptr %14, align 8, !tbaa !13
  br label %.thread

61:                                               ; preds = %.lr.ph1058
  %62 = call i32 %1(ptr noundef %2, ptr noundef nonnull %6) #5
  %63 = icmp eq i32 %62, 0
  br i1 %63, label %.split1064, label %._crit_edge1059

.split1064:                                       ; preds = %61
  store ptr null, ptr %6, align 8, !tbaa !18
  br label %.loopexit687

._crit_edge1059:                                  ; preds = %61, %.lr.ph1058
  %.2566 = phi i32 [ %62, %61 ], [ %.0564, %.lr.ph1058 ]
  %64 = add i32 %.2566, -1
  %65 = load ptr, ptr %6, align 8, !tbaa !18
  %66 = getelementptr inbounds i8, ptr %65, i64 1
  store ptr %66, ptr %6, align 8, !tbaa !18
  %67 = load i8, ptr %65, align 1, !tbaa !22
  %68 = zext i8 %67 to i64
  %69 = zext nneg i32 %.0523 to i64
  %70 = shl nuw nsw i64 %68, %69
  %71 = add i64 %70, %.0530
  br label %72

72:                                               ; preds = %._crit_edge1059, %.preheader686
  %.1565.lcssa = phi i32 [ %64, %._crit_edge1059 ], [ %.0564, %.preheader686 ]
  %.1531.lcssa = phi i64 [ %71, %._crit_edge1059 ], [ %.0530, %.preheader686 ]
  %.1524.lcssa = phi i32 [ %54, %._crit_edge1059 ], [ %.0523, %.preheader686 ]
  %73 = trunc i64 %.1531.lcssa to i32
  %74 = and i32 %73, 1
  store i32 %74, ptr %15, align 4, !tbaa !15
  %75 = lshr i32 %73, 1
  %76 = and i32 %75, 3
  switch i32 %76, label %default.unreachable1338 [
    i32 0, label %80
    i32 1, label %77
    i32 2, label %78
    i32 3, label %79
  ]

77:                                               ; preds = %72
  call void @fixedtables(ptr noundef nonnull %10)
  br label %80

78:                                               ; preds = %72
  br label %80

79:                                               ; preds = %72
  store ptr @.str.1, ptr %13, align 8, !tbaa !12
  br label %80

default.unreachable1338:                          ; preds = %72
  unreachable

80:                                               ; preds = %72, %77, %78, %79
  %.sink = phi i32 [ 16200, %77 ], [ 16196, %78 ], [ 16209, %79 ], [ 16193, %72 ]
  store i32 %.sink, ptr %14, align 8, !tbaa !13
  %81 = lshr i64 %.1531.lcssa, 3
  %82 = add i32 %.1524.lcssa, -3
  br label %.thread

83:                                               ; preds = %47
  %84 = and i32 %.0523, 7
  %85 = zext nneg i32 %84 to i64
  %86 = lshr i64 %.0530, %85
  %87 = and i32 %.0523, -8
  %88 = icmp ult i32 %.0523, 32
  br i1 %88, label %.lr.ph1039.preheader, label %._crit_edge1040

.lr.ph1039.preheader:                             ; preds = %83
  %89 = and i32 %.0523, 24
  %90 = zext nneg i32 %89 to i64
  br label %.lr.ph1039

.lr.ph1039:                                       ; preds = %.lr.ph1039.preheader, %96
  %indvars.iv1303 = phi i64 [ %90, %.lr.ph1039.preheader ], [ %indvars.iv.next1304, %96 ]
  %.25321036 = phi i64 [ %86, %.lr.ph1039.preheader ], [ %103, %96 ]
  %.35671035 = phi i32 [ %.0564, %.lr.ph1039.preheader ], [ %97, %96 ]
  %91 = icmp eq i32 %.35671035, 0
  br i1 %91, label %92, label %96

92:                                               ; preds = %.lr.ph1039
  %93 = call i32 %1(ptr noundef %2, ptr noundef nonnull %6) #5
  %94 = icmp eq i32 %93, 0
  br i1 %94, label %95, label %96

95:                                               ; preds = %92
  store ptr null, ptr %6, align 8, !tbaa !18
  br label %.loopexit687

96:                                               ; preds = %92, %.lr.ph1039
  %.4568 = phi i32 [ %93, %92 ], [ %.35671035, %.lr.ph1039 ]
  %97 = add i32 %.4568, -1
  %98 = load ptr, ptr %6, align 8, !tbaa !18
  %99 = getelementptr inbounds i8, ptr %98, i64 1
  store ptr %99, ptr %6, align 8, !tbaa !18
  %100 = load i8, ptr %98, align 1, !tbaa !22
  %101 = zext i8 %100 to i64
  %102 = shl nuw nsw i64 %101, %indvars.iv1303
  %103 = add i64 %102, %.25321036
  %indvars.iv.next1304 = add nuw nsw i64 %indvars.iv1303, 8
  %104 = icmp ult i64 %indvars.iv1303, 24
  br i1 %104, label %.lr.ph1039, label %._crit_edge1040.loopexit, !llvm.loop !23

._crit_edge1040.loopexit:                         ; preds = %96
  %105 = trunc nuw i64 %indvars.iv.next1304 to i32
  br label %._crit_edge1040

._crit_edge1040:                                  ; preds = %._crit_edge1040.loopexit, %83
  %.3567.lcssa = phi i32 [ %.0564, %83 ], [ %97, %._crit_edge1040.loopexit ]
  %.2532.lcssa = phi i64 [ %86, %83 ], [ %103, %._crit_edge1040.loopexit ]
  %.2525.lcssa = phi i32 [ %87, %83 ], [ %105, %._crit_edge1040.loopexit ]
  %106 = and i64 %.2532.lcssa, 65535
  %107 = lshr i64 %.2532.lcssa, 16
  %108 = xor i64 %107, %106
  %.not671 = icmp eq i64 %108, 65535
  br i1 %.not671, label %110, label %109

109:                                              ; preds = %._crit_edge1040
  store ptr @.str.2, ptr %13, align 8, !tbaa !12
  store i32 16209, ptr %14, align 8, !tbaa !13
  br label %.thread

110:                                              ; preds = %._crit_edge1040
  %111 = trunc i64 %.2532.lcssa to i32
  %112 = and i32 %111, 65535
  store i32 %112, ptr %39, align 4, !tbaa !25
  %.not6721044 = icmp eq i32 %112, 0
  br i1 %.not6721044, label %._crit_edge1051, label %.lr.ph1050

.lr.ph1050:                                       ; preds = %110, %124
  %.15571048 = phi i32 [ %130, %124 ], [ %.0556, %110 ]
  %.55691047 = phi i32 [ %127, %124 ], [ %.3567.lcssa, %110 ]
  %.15911046 = phi ptr [ %131, %124 ], [ %.0590, %110 ]
  %storemerge1045 = phi i32 [ %133, %124 ], [ %112, %110 ]
  %113 = icmp eq i32 %.55691047, 0
  br i1 %113, label %114, label %118

114:                                              ; preds = %.lr.ph1050
  %115 = call i32 %1(ptr noundef %2, ptr noundef nonnull %6) #5
  %116 = icmp eq i32 %115, 0
  br i1 %116, label %117, label %118

117:                                              ; preds = %114
  store ptr null, ptr %6, align 8, !tbaa !18
  br label %.loopexit687

118:                                              ; preds = %.lr.ph1050, %114
  %.6570 = phi i32 [ %115, %114 ], [ %.55691047, %.lr.ph1050 ]
  %119 = icmp eq i32 %.15571048, 0
  br i1 %119, label %120, label %124

120:                                              ; preds = %118
  %121 = load ptr, ptr %22, align 8, !tbaa !20
  %122 = load i32, ptr %24, align 4, !tbaa !21
  store i32 %122, ptr %16, align 8, !tbaa !16
  %123 = call i32 %3(ptr noundef %4, ptr noundef %121, i32 noundef %122) #5
  %.not673 = icmp eq i32 %123, 0
  br i1 %.not673, label %124, label %.loopexit687

124:                                              ; preds = %120, %118
  %.2592 = phi ptr [ %121, %120 ], [ %.15911046, %118 ]
  %.2558 = phi i32 [ %122, %120 ], [ %.15571048, %118 ]
  %spec.select = call i32 @llvm.umin.i32(i32 %storemerge1045, i32 %.6570)
  %.1522 = call i32 @llvm.umin.i32(i32 %spec.select, i32 %.2558)
  %125 = load ptr, ptr %6, align 8, !tbaa !18
  %126 = zext i32 %.1522 to i64
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %.2592, ptr align 1 %125, i64 %126, i1 false)
  %127 = sub i32 %.6570, %.1522
  %128 = load ptr, ptr %6, align 8, !tbaa !18
  %129 = getelementptr inbounds i8, ptr %128, i64 %126
  store ptr %129, ptr %6, align 8, !tbaa !18
  %130 = sub i32 %.2558, %.1522
  %131 = getelementptr inbounds i8, ptr %.2592, i64 %126
  %132 = load i32, ptr %39, align 4, !tbaa !25
  %133 = sub i32 %132, %.1522
  store i32 %133, ptr %39, align 4, !tbaa !25
  %.not672 = icmp eq i32 %133, 0
  br i1 %.not672, label %._crit_edge1051, label %.lr.ph1050, !llvm.loop !26

._crit_edge1051:                                  ; preds = %124, %110
  %.1591.lcssa = phi ptr [ %.0590, %110 ], [ %131, %124 ]
  %.5569.lcssa = phi i32 [ %.3567.lcssa, %110 ], [ %127, %124 ]
  %.1557.lcssa = phi i32 [ %.0556, %110 ], [ %130, %124 ]
  store i32 16191, ptr %14, align 8, !tbaa !13
  br label %.thread

.lr.ph:                                           ; preds = %.lr.ph.preheader, %139
  %indvars.iv = phi i64 [ %50, %.lr.ph.preheader ], [ %indvars.iv.next, %139 ]
  %.3533846 = phi i64 [ %.0530, %.lr.ph.preheader ], [ %146, %139 ]
  %.7571845 = phi i32 [ %.0564, %.lr.ph.preheader ], [ %140, %139 ]
  %134 = icmp eq i32 %.7571845, 0
  br i1 %134, label %135, label %139

135:                                              ; preds = %.lr.ph
  %136 = call i32 %1(ptr noundef %2, ptr noundef nonnull %6) #5
  %137 = icmp eq i32 %136, 0
  br i1 %137, label %138, label %139

138:                                              ; preds = %135
  store ptr null, ptr %6, align 8, !tbaa !18
  br label %.loopexit687

139:                                              ; preds = %135, %.lr.ph
  %.8572 = phi i32 [ %136, %135 ], [ %.7571845, %.lr.ph ]
  %140 = add i32 %.8572, -1
  %141 = load ptr, ptr %6, align 8, !tbaa !18
  %142 = getelementptr inbounds i8, ptr %141, i64 1
  store ptr %142, ptr %6, align 8, !tbaa !18
  %143 = load i8, ptr %141, align 1, !tbaa !22
  %144 = zext i8 %143 to i64
  %145 = shl nuw nsw i64 %144, %indvars.iv
  %146 = add i64 %145, %.3533846
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 8
  %147 = icmp ult i64 %indvars.iv, 6
  br i1 %147, label %.lr.ph, label %._crit_edge.loopexit, !llvm.loop !27

._crit_edge.loopexit:                             ; preds = %139
  %148 = trunc nuw nsw i64 %indvars.iv.next to i32
  br label %._crit_edge

._crit_edge:                                      ; preds = %._crit_edge.loopexit, %.preheader696
  %.7571.lcssa = phi i32 [ %.0564, %.preheader696 ], [ %140, %._crit_edge.loopexit ]
  %.3533.lcssa = phi i64 [ %.0530, %.preheader696 ], [ %146, %._crit_edge.loopexit ]
  %.3526.lcssa = phi i32 [ %.0523, %.preheader696 ], [ %148, %._crit_edge.loopexit ]
  %149 = trunc i64 %.3533.lcssa to i32
  %150 = and i32 %149, 31
  %151 = add nuw nsw i32 %150, 257
  store i32 %151, ptr %26, align 4, !tbaa !28
  %152 = lshr i32 %149, 5
  %153 = and i32 %152, 31
  %154 = add nuw nsw i32 %153, 1
  store i32 %154, ptr %27, align 8, !tbaa !29
  %155 = lshr i32 %149, 10
  %156 = and i32 %155, 15
  %157 = add nuw nsw i32 %156, 4
  store i32 %157, ptr %28, align 8, !tbaa !30
  %158 = lshr i64 %.3533.lcssa, 14
  %159 = add i32 %.3526.lcssa, -14
  %160 = icmp ugt i32 %150, 29
  %161 = icmp ugt i32 %153, 29
  %or.cond680 = or i1 %160, %161
  br i1 %or.cond680, label %162, label %.preheader685.preheader

162:                                              ; preds = %._crit_edge
  store ptr @.str.3, ptr %13, align 8, !tbaa !12
  store i32 16209, ptr %14, align 8, !tbaa !13
  br label %.thread

.preheader685.preheader:                          ; preds = %._crit_edge
  store i32 0, ptr %29, align 4, !tbaa !31
  br label %.preheader685

.preheader695:                                    ; preds = %181
  %163 = icmp ult i32 %186, 19
  br i1 %163, label %.lr.ph899.preheader, label %200

.lr.ph899.preheader:                              ; preds = %.preheader695
  %164 = zext nneg i32 %186 to i64
  br label %.lr.ph899

.preheader685:                                    ; preds = %.preheader685.preheader, %181
  %.pre13061334 = phi i32 [ %.pre13061335, %181 ], [ %157, %.preheader685.preheader ]
  %165 = phi i32 [ %182, %181 ], [ %157, %.preheader685.preheader ]
  %166 = phi i32 [ %186, %181 ], [ 0, %.preheader685.preheader ]
  %.4527894 = phi i32 [ %193, %181 ], [ %159, %.preheader685.preheader ]
  %.4534893 = phi i64 [ %192, %181 ], [ %158, %.preheader685.preheader ]
  %.9573892 = phi i32 [ %.10574.lcssa, %181 ], [ %.7571.lcssa, %.preheader685.preheader ]
  %167 = icmp ult i32 %.4527894, 3
  br i1 %167, label %.lr.ph853, label %181

.lr.ph853:                                        ; preds = %.preheader685
  %168 = or disjoint i32 %.4527894, 8
  %169 = icmp eq i32 %.9573892, 0
  br i1 %169, label %170, label %._crit_edge854

170:                                              ; preds = %.lr.ph853
  %171 = call i32 %1(ptr noundef %2, ptr noundef nonnull %6) #5
  %172 = icmp eq i32 %171, 0
  br i1 %172, label %.split, label %.._crit_edge854_crit_edge

.._crit_edge854_crit_edge:                        ; preds = %170
  %.pre1305.pre = load i32, ptr %29, align 4, !tbaa !31
  %.pre1306.pre = load i32, ptr %28, align 8, !tbaa !30
  br label %._crit_edge854

.split:                                           ; preds = %170
  store ptr null, ptr %6, align 8, !tbaa !18
  br label %.loopexit687

._crit_edge854:                                   ; preds = %.._crit_edge854_crit_edge, %.lr.ph853
  %.pre1306 = phi i32 [ %.pre1306.pre, %.._crit_edge854_crit_edge ], [ %.pre13061334, %.lr.ph853 ]
  %.pre1305 = phi i32 [ %.pre1305.pre, %.._crit_edge854_crit_edge ], [ %166, %.lr.ph853 ]
  %.11575 = phi i32 [ %171, %.._crit_edge854_crit_edge ], [ %.9573892, %.lr.ph853 ]
  %173 = add i32 %.11575, -1
  %174 = load ptr, ptr %6, align 8, !tbaa !18
  %175 = getelementptr inbounds i8, ptr %174, i64 1
  store ptr %175, ptr %6, align 8, !tbaa !18
  %176 = load i8, ptr %174, align 1, !tbaa !22
  %177 = zext i8 %176 to i64
  %178 = zext nneg i32 %.4527894 to i64
  %179 = shl nuw nsw i64 %177, %178
  %180 = add nuw nsw i64 %179, %.4534893
  br label %181

181:                                              ; preds = %._crit_edge854, %.preheader685
  %.pre13061335 = phi i32 [ %.pre1306, %._crit_edge854 ], [ %.pre13061334, %.preheader685 ]
  %182 = phi i32 [ %.pre1306, %._crit_edge854 ], [ %165, %.preheader685 ]
  %183 = phi i32 [ %.pre1305, %._crit_edge854 ], [ %166, %.preheader685 ]
  %.10574.lcssa = phi i32 [ %173, %._crit_edge854 ], [ %.9573892, %.preheader685 ]
  %.5535.lcssa = phi i64 [ %180, %._crit_edge854 ], [ %.4534893, %.preheader685 ]
  %.5528.lcssa = phi i32 [ %168, %._crit_edge854 ], [ %.4527894, %.preheader685 ]
  %184 = trunc i64 %.5535.lcssa to i16
  %185 = and i16 %184, 7
  %186 = add i32 %183, 1
  store i32 %186, ptr %29, align 4, !tbaa !31
  %187 = zext i32 %183 to i64
  %188 = getelementptr inbounds [19 x i16], ptr @inflateBack.order, i64 0, i64 %187
  %189 = load i16, ptr %188, align 2, !tbaa !32
  %190 = zext i16 %189 to i64
  %191 = getelementptr inbounds [320 x i16], ptr %30, i64 0, i64 %190
  store i16 %185, ptr %191, align 2, !tbaa !32
  %192 = lshr i64 %.5535.lcssa, 3
  %193 = add i32 %.5528.lcssa, -3
  %194 = icmp ult i32 %186, %182
  br i1 %194, label %.preheader685, label %.preheader695, !llvm.loop !34

.lr.ph899:                                        ; preds = %.lr.ph899.preheader, %.lr.ph899
  %indvars.iv1276 = phi i64 [ %164, %.lr.ph899.preheader ], [ %indvars.iv.next1277, %.lr.ph899 ]
  %indvars.iv.next1277 = add nuw nsw i64 %indvars.iv1276, 1
  %195 = getelementptr inbounds [19 x i16], ptr @inflateBack.order, i64 0, i64 %indvars.iv1276
  %196 = load i16, ptr %195, align 2, !tbaa !32
  %197 = zext i16 %196 to i64
  %198 = getelementptr inbounds [320 x i16], ptr %30, i64 0, i64 %197
  store i16 0, ptr %198, align 2, !tbaa !32
  %199 = and i64 %indvars.iv.next1277, 4294967295
  %exitcond.not = icmp eq i64 %199, 19
  br i1 %exitcond.not, label %._crit_edge900, label %.lr.ph899, !llvm.loop !35

._crit_edge900:                                   ; preds = %.lr.ph899
  store i32 19, ptr %29, align 4, !tbaa !31
  br label %200

200:                                              ; preds = %._crit_edge900, %.preheader695
  store ptr %31, ptr %32, align 8, !tbaa !36
  store ptr %31, ptr %33, align 8, !tbaa !37
  store i32 7, ptr %34, align 8, !tbaa !38
  %201 = call i32 @inflate_table(i32 noundef 0, ptr noundef nonnull %30, i32 noundef 19, ptr noundef nonnull %32, ptr noundef nonnull %34, ptr noundef nonnull %35) #5
  %.not646 = icmp eq i32 %201, 0
  br i1 %.not646, label %203, label %202

202:                                              ; preds = %200
  store ptr @.str.4, ptr %13, align 8, !tbaa !12
  store i32 16209, ptr %14, align 8, !tbaa !13
  br label %.thread

203:                                              ; preds = %200
  store i32 0, ptr %29, align 4, !tbaa !31
  %204 = load i32, ptr %26, align 4, !tbaa !28
  %205 = load i32, ptr %27, align 8, !tbaa !29
  %206 = sub i32 0, %204
  %.not1160 = icmp eq i32 %205, %206
  br i1 %.not1160, label %._crit_edge950, label %.preheader684

.preheader684:                                    ; preds = %203, %400
  %.6529949 = phi i32 [ %.12, %400 ], [ %193, %203 ]
  %.6536948 = phi i64 [ %.12542, %400 ], [ %192, %203 ]
  %.12576947 = phi i32 [ %.22586, %400 ], [ %.10574.lcssa, %203 ]
  %207 = load ptr, ptr %33, align 8, !tbaa !37
  %208 = trunc i64 %.6536948 to i32
  %209 = load i32, ptr %34, align 8, !tbaa !38
  %notmask903 = shl nsw i32 -1, %209
  %210 = xor i32 %notmask903, -1
  %211 = and i32 %210, %208
  %212 = zext nneg i32 %211 to i64
  %213 = getelementptr inbounds %struct.code, ptr %207, i64 %212
  %.sroa.18.0..sroa_idx904 = getelementptr inbounds i8, ptr %213, i64 1
  %.sroa.18.0.copyload905 = load i8, ptr %.sroa.18.0..sroa_idx904, align 1, !tbaa !22
  %214 = zext i8 %.sroa.18.0.copyload905 to i32
  %.not647908 = icmp ult i32 %.6529949, %214
  br i1 %.not647908, label %.lr.ph912.preheader, label %._crit_edge913

.lr.ph912.preheader:                              ; preds = %.preheader684
  %215 = zext nneg i32 %.6529949 to i64
  br label %.lr.ph912

.lr.ph912:                                        ; preds = %.lr.ph912.preheader, %223
  %216 = phi i32 [ %209, %.lr.ph912.preheader ], [ %224, %223 ]
  %217 = phi ptr [ %207, %.lr.ph912.preheader ], [ %225, %223 ]
  %indvars.iv1279 = phi i64 [ %215, %.lr.ph912.preheader ], [ %indvars.iv.next1280, %223 ]
  %.7537910 = phi i64 [ %.6536948, %.lr.ph912.preheader ], [ %232, %223 ]
  %.13577909 = phi i32 [ %.12576947, %.lr.ph912.preheader ], [ %226, %223 ]
  %218 = icmp eq i32 %.13577909, 0
  br i1 %218, label %219, label %223

219:                                              ; preds = %.lr.ph912
  %220 = call i32 %1(ptr noundef %2, ptr noundef nonnull %6) #5
  %221 = icmp eq i32 %220, 0
  br i1 %221, label %222, label %._crit_edge1307

._crit_edge1307:                                  ; preds = %219
  %.pre1308 = load ptr, ptr %33, align 8, !tbaa !37
  %.pre1309 = load i32, ptr %34, align 8, !tbaa !38
  br label %223

222:                                              ; preds = %219
  store ptr null, ptr %6, align 8, !tbaa !18
  br label %.loopexit687

223:                                              ; preds = %._crit_edge1307, %.lr.ph912
  %224 = phi i32 [ %.pre1309, %._crit_edge1307 ], [ %216, %.lr.ph912 ]
  %225 = phi ptr [ %.pre1308, %._crit_edge1307 ], [ %217, %.lr.ph912 ]
  %.14578 = phi i32 [ %220, %._crit_edge1307 ], [ %.13577909, %.lr.ph912 ]
  %226 = add i32 %.14578, -1
  %227 = load ptr, ptr %6, align 8, !tbaa !18
  %228 = getelementptr inbounds i8, ptr %227, i64 1
  store ptr %228, ptr %6, align 8, !tbaa !18
  %229 = load i8, ptr %227, align 1, !tbaa !22
  %230 = zext i8 %229 to i64
  %231 = shl i64 %230, %indvars.iv1279
  %232 = add i64 %231, %.7537910
  %indvars.iv.next1280 = add nuw nsw i64 %indvars.iv1279, 8
  %233 = trunc i64 %232 to i32
  %notmask = shl nsw i32 -1, %224
  %234 = xor i32 %notmask, -1
  %235 = and i32 %234, %233
  %236 = zext nneg i32 %235 to i64
  %237 = getelementptr inbounds %struct.code, ptr %225, i64 %236
  %.sroa.18.0..sroa_idx = getelementptr inbounds i8, ptr %237, i64 1
  %.sroa.18.0.copyload = load i8, ptr %.sroa.18.0..sroa_idx, align 1, !tbaa !22
  %238 = zext i8 %.sroa.18.0.copyload to i64
  %.not647 = icmp ult i64 %indvars.iv.next1280, %238
  br i1 %.not647, label %.lr.ph912, label %._crit_edge913.loopexit

._crit_edge913.loopexit:                          ; preds = %223
  %239 = zext i8 %.sroa.18.0.copyload to i32
  %240 = trunc nuw i64 %indvars.iv.next1280 to i32
  br label %._crit_edge913

._crit_edge913:                                   ; preds = %._crit_edge913.loopexit, %.preheader684
  %.lcssa902 = phi i32 [ %214, %.preheader684 ], [ %239, %._crit_edge913.loopexit ]
  %.13577.lcssa = phi i32 [ %.12576947, %.preheader684 ], [ %226, %._crit_edge913.loopexit ]
  %.7537.lcssa = phi i64 [ %.6536948, %.preheader684 ], [ %232, %._crit_edge913.loopexit ]
  %.7.lcssa = phi i32 [ %.6529949, %.preheader684 ], [ %240, %._crit_edge913.loopexit ]
  %.sroa.18.0.copyload.lcssa = phi i8 [ %.sroa.18.0.copyload905, %.preheader684 ], [ %.sroa.18.0.copyload, %._crit_edge913.loopexit ]
  %.pn1161 = phi ptr [ %213, %.preheader684 ], [ %237, %._crit_edge913.loopexit ]
  %.sroa.40.0.copyload.lcssa.in = getelementptr inbounds i8, ptr %.pn1161, i64 2
  %.sroa.40.0.copyload.lcssa = load i16, ptr %.sroa.40.0.copyload.lcssa.in, align 2, !tbaa !32
  %241 = icmp ult i16 %.sroa.40.0.copyload.lcssa, 16
  br i1 %241, label %242, label %250

242:                                              ; preds = %._crit_edge913
  %243 = zext nneg i8 %.sroa.18.0.copyload.lcssa to i64
  %244 = lshr i64 %.7537.lcssa, %243
  %245 = sub i32 %.7.lcssa, %.lcssa902
  %246 = load i32, ptr %29, align 4, !tbaa !31
  %247 = add i32 %246, 1
  store i32 %247, ptr %29, align 4, !tbaa !31
  %248 = zext i32 %246 to i64
  %249 = getelementptr inbounds [320 x i16], ptr %30, i64 0, i64 %248
  store i16 %.sroa.40.0.copyload.lcssa, ptr %249, align 2, !tbaa !32
  %.pre1310 = load i32, ptr %26, align 4, !tbaa !28
  %.pre1311 = load i32, ptr %27, align 8, !tbaa !29
  %.pre1337 = add i32 %.pre1311, %.pre1310
  br label %400

250:                                              ; preds = %._crit_edge913
  switch i16 %.sroa.40.0.copyload.lcssa, label %.preheader681 [
    i16 16, label %.preheader682
    i16 17, label %.preheader683
  ]

.preheader683:                                    ; preds = %250
  %251 = add nuw nsw i32 %.lcssa902, 3
  %252 = icmp ult i32 %.7.lcssa, %251
  br i1 %252, label %.lr.ph924.preheader, label %._crit_edge925

.lr.ph924.preheader:                              ; preds = %.preheader683
  %253 = zext nneg i32 %.7.lcssa to i64
  %254 = zext nneg i32 %251 to i64
  br label %.lr.ph924

.preheader682:                                    ; preds = %250
  %255 = add nuw nsw i32 %.lcssa902, 2
  %256 = icmp ult i32 %.7.lcssa, %255
  br i1 %256, label %.lr.ph932.preheader, label %._crit_edge933

.lr.ph932.preheader:                              ; preds = %.preheader682
  %257 = zext nneg i32 %.7.lcssa to i64
  %258 = zext nneg i32 %255 to i64
  br label %.lr.ph932

.preheader681:                                    ; preds = %250
  %259 = add nuw nsw i32 %.lcssa902, 7
  %260 = icmp ult i32 %.7.lcssa, %259
  br i1 %260, label %.lr.ph940.preheader, label %._crit_edge941

.lr.ph940.preheader:                              ; preds = %.preheader681
  %261 = zext nneg i32 %.7.lcssa to i64
  %262 = zext nneg i32 %259 to i64
  br label %.lr.ph940

.lr.ph932:                                        ; preds = %.lr.ph932.preheader, %268
  %indvars.iv1285 = phi i64 [ %257, %.lr.ph932.preheader ], [ %indvars.iv.next1286, %268 ]
  %.8538930 = phi i64 [ %.7537.lcssa, %.lr.ph932.preheader ], [ %275, %268 ]
  %.15579929 = phi i32 [ %.13577.lcssa, %.lr.ph932.preheader ], [ %269, %268 ]
  %263 = icmp eq i32 %.15579929, 0
  br i1 %263, label %264, label %268

264:                                              ; preds = %.lr.ph932
  %265 = call i32 %1(ptr noundef %2, ptr noundef nonnull %6) #5
  %266 = icmp eq i32 %265, 0
  br i1 %266, label %267, label %268

267:                                              ; preds = %264
  store ptr null, ptr %6, align 8, !tbaa !18
  br label %.loopexit687

268:                                              ; preds = %264, %.lr.ph932
  %.16580 = phi i32 [ %265, %264 ], [ %.15579929, %.lr.ph932 ]
  %269 = add i32 %.16580, -1
  %270 = load ptr, ptr %6, align 8, !tbaa !18
  %271 = getelementptr inbounds i8, ptr %270, i64 1
  store ptr %271, ptr %6, align 8, !tbaa !18
  %272 = load i8, ptr %270, align 1, !tbaa !22
  %273 = zext i8 %272 to i64
  %274 = shl i64 %273, %indvars.iv1285
  %275 = add i64 %274, %.8538930
  %indvars.iv.next1286 = add nuw nsw i64 %indvars.iv1285, 8
  %276 = icmp ult i64 %indvars.iv.next1286, %258
  br i1 %276, label %.lr.ph932, label %._crit_edge933.loopexit, !llvm.loop !39

._crit_edge933.loopexit:                          ; preds = %268
  %277 = trunc nuw i64 %indvars.iv.next1286 to i32
  br label %._crit_edge933

._crit_edge933:                                   ; preds = %._crit_edge933.loopexit, %.preheader682
  %.15579.lcssa = phi i32 [ %.13577.lcssa, %.preheader682 ], [ %269, %._crit_edge933.loopexit ]
  %.8538.lcssa = phi i64 [ %.7537.lcssa, %.preheader682 ], [ %275, %._crit_edge933.loopexit ]
  %.8.lcssa = phi i32 [ %.7.lcssa, %.preheader682 ], [ %277, %._crit_edge933.loopexit ]
  %278 = zext nneg i8 %.sroa.18.0.copyload.lcssa to i64
  %279 = lshr i64 %.8538.lcssa, %278
  %280 = sub i32 %.8.lcssa, %.lcssa902
  %281 = load i32, ptr %29, align 4, !tbaa !31
  %282 = icmp eq i32 %281, 0
  br i1 %282, label %283, label %284

283:                                              ; preds = %._crit_edge933
  store ptr @.str.5, ptr %13, align 8, !tbaa !12
  store i32 16209, ptr %14, align 8, !tbaa !13
  br label %.thread

284:                                              ; preds = %._crit_edge933
  %285 = add i32 %281, -1
  %286 = zext i32 %285 to i64
  %287 = getelementptr inbounds [320 x i16], ptr %30, i64 0, i64 %286
  %288 = load i16, ptr %287, align 2, !tbaa !32
  %289 = trunc i64 %279 to i32
  %290 = and i32 %289, 3
  %291 = add nuw nsw i32 %290, 3
  %292 = lshr i64 %279, 2
  %293 = add i32 %280, -2
  br label %338

.lr.ph924:                                        ; preds = %.lr.ph924.preheader, %299
  %indvars.iv1282 = phi i64 [ %253, %.lr.ph924.preheader ], [ %indvars.iv.next1283, %299 ]
  %.9539922 = phi i64 [ %.7537.lcssa, %.lr.ph924.preheader ], [ %306, %299 ]
  %.17581921 = phi i32 [ %.13577.lcssa, %.lr.ph924.preheader ], [ %300, %299 ]
  %294 = icmp eq i32 %.17581921, 0
  br i1 %294, label %295, label %299

295:                                              ; preds = %.lr.ph924
  %296 = call i32 %1(ptr noundef %2, ptr noundef nonnull %6) #5
  %297 = icmp eq i32 %296, 0
  br i1 %297, label %298, label %299

298:                                              ; preds = %295
  store ptr null, ptr %6, align 8, !tbaa !18
  br label %.loopexit687

299:                                              ; preds = %295, %.lr.ph924
  %.18582 = phi i32 [ %296, %295 ], [ %.17581921, %.lr.ph924 ]
  %300 = add i32 %.18582, -1
  %301 = load ptr, ptr %6, align 8, !tbaa !18
  %302 = getelementptr inbounds i8, ptr %301, i64 1
  store ptr %302, ptr %6, align 8, !tbaa !18
  %303 = load i8, ptr %301, align 1, !tbaa !22
  %304 = zext i8 %303 to i64
  %305 = shl i64 %304, %indvars.iv1282
  %306 = add i64 %305, %.9539922
  %indvars.iv.next1283 = add nuw nsw i64 %indvars.iv1282, 8
  %307 = icmp ult i64 %indvars.iv.next1283, %254
  br i1 %307, label %.lr.ph924, label %._crit_edge925.loopexit, !llvm.loop !40

._crit_edge925.loopexit:                          ; preds = %299
  %308 = trunc nuw i64 %indvars.iv.next1283 to i32
  br label %._crit_edge925

._crit_edge925:                                   ; preds = %._crit_edge925.loopexit, %.preheader683
  %.17581.lcssa = phi i32 [ %.13577.lcssa, %.preheader683 ], [ %300, %._crit_edge925.loopexit ]
  %.9539.lcssa = phi i64 [ %.7537.lcssa, %.preheader683 ], [ %306, %._crit_edge925.loopexit ]
  %.9.lcssa = phi i32 [ %.7.lcssa, %.preheader683 ], [ %308, %._crit_edge925.loopexit ]
  %309 = zext nneg i8 %.sroa.18.0.copyload.lcssa to i64
  %310 = lshr i64 %.9539.lcssa, %309
  %311 = trunc i64 %310 to i32
  %312 = and i32 %311, 7
  %313 = add nuw nsw i32 %312, 3
  %314 = lshr i64 %310, 3
  %reass.sub = sub i32 %.9.lcssa, %.lcssa902
  %315 = add i32 %reass.sub, -3
  br label %338

.lr.ph940:                                        ; preds = %.lr.ph940.preheader, %321
  %indvars.iv1288 = phi i64 [ %261, %.lr.ph940.preheader ], [ %indvars.iv.next1289, %321 ]
  %.10540938 = phi i64 [ %.7537.lcssa, %.lr.ph940.preheader ], [ %328, %321 ]
  %.19583937 = phi i32 [ %.13577.lcssa, %.lr.ph940.preheader ], [ %322, %321 ]
  %316 = icmp eq i32 %.19583937, 0
  br i1 %316, label %317, label %321

317:                                              ; preds = %.lr.ph940
  %318 = call i32 %1(ptr noundef %2, ptr noundef nonnull %6) #5
  %319 = icmp eq i32 %318, 0
  br i1 %319, label %320, label %321

320:                                              ; preds = %317
  store ptr null, ptr %6, align 8, !tbaa !18
  br label %.loopexit687

321:                                              ; preds = %317, %.lr.ph940
  %.20584 = phi i32 [ %318, %317 ], [ %.19583937, %.lr.ph940 ]
  %322 = add i32 %.20584, -1
  %323 = load ptr, ptr %6, align 8, !tbaa !18
  %324 = getelementptr inbounds i8, ptr %323, i64 1
  store ptr %324, ptr %6, align 8, !tbaa !18
  %325 = load i8, ptr %323, align 1, !tbaa !22
  %326 = zext i8 %325 to i64
  %327 = shl i64 %326, %indvars.iv1288
  %328 = add i64 %327, %.10540938
  %indvars.iv.next1289 = add nuw nsw i64 %indvars.iv1288, 8
  %329 = icmp ult i64 %indvars.iv.next1289, %262
  br i1 %329, label %.lr.ph940, label %._crit_edge941.loopexit, !llvm.loop !41

._crit_edge941.loopexit:                          ; preds = %321
  %330 = trunc nuw i64 %indvars.iv.next1289 to i32
  br label %._crit_edge941

._crit_edge941:                                   ; preds = %._crit_edge941.loopexit, %.preheader681
  %.19583.lcssa = phi i32 [ %.13577.lcssa, %.preheader681 ], [ %322, %._crit_edge941.loopexit ]
  %.10540.lcssa = phi i64 [ %.7537.lcssa, %.preheader681 ], [ %328, %._crit_edge941.loopexit ]
  %.10.lcssa = phi i32 [ %.7.lcssa, %.preheader681 ], [ %330, %._crit_edge941.loopexit ]
  %331 = zext nneg i8 %.sroa.18.0.copyload.lcssa to i64
  %332 = lshr i64 %.10540.lcssa, %331
  %333 = trunc i64 %332 to i32
  %334 = and i32 %333, 127
  %335 = add nuw nsw i32 %334, 11
  %336 = lshr i64 %332, 7
  %reass.sub1162 = sub i32 %.10.lcssa, %.lcssa902
  %337 = add i32 %reass.sub1162, -7
  br label %338

338:                                              ; preds = %._crit_edge925, %._crit_edge941, %284
  %.21585 = phi i32 [ %.15579.lcssa, %284 ], [ %.17581.lcssa, %._crit_edge925 ], [ %.19583.lcssa, %._crit_edge941 ]
  %.11541 = phi i64 [ %292, %284 ], [ %314, %._crit_edge925 ], [ %336, %._crit_edge941 ]
  %.11 = phi i32 [ %293, %284 ], [ %315, %._crit_edge925 ], [ %337, %._crit_edge941 ]
  %.2 = phi i32 [ %291, %284 ], [ %313, %._crit_edge925 ], [ %335, %._crit_edge941 ]
  %.0518 = phi i16 [ %288, %284 ], [ 0, %._crit_edge925 ], [ 0, %._crit_edge941 ]
  %339 = load i32, ptr %29, align 4, !tbaa !31
  %340 = add i32 %339, %.2
  %341 = load i32, ptr %26, align 4, !tbaa !28
  %342 = load i32, ptr %27, align 8, !tbaa !29
  %343 = add i32 %342, %341
  %344 = icmp ugt i32 %340, %343
  br i1 %344, label %385, label %.preheader.preheader

.preheader.preheader:                             ; preds = %338
  %min.iters.check1545 = icmp ult i32 %.2, 16
  %345 = sub nsw i32 0, %.2
  %346 = icmp ugt i32 %339, %345
  %or.cond1559 = select i1 %min.iters.check1545, i1 true, i1 %346
  br i1 %or.cond1559, label %.preheader.preheader1561, label %vector.ph1546

.preheader.preheader1561:                         ; preds = %middle.block1543, %.preheader.preheader
  %.3946.ph = phi i32 [ %.2, %.preheader.preheader ], [ %ind.end1549, %middle.block1543 ]
  %.ph = phi i32 [ %339, %.preheader.preheader ], [ %ind.end1551, %middle.block1543 ]
  %347 = add nsw i32 %.3946.ph, -1
  %xtraiter = and i32 %.3946.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.preheader1561, %.preheader.prol
  %.3946.prol = phi i32 [ %349, %.preheader.prol ], [ %.3946.ph, %.preheader.preheader1561 ]
  %348 = phi i32 [ %350, %.preheader.prol ], [ %.ph, %.preheader.preheader1561 ]
  %prol.iter = phi i32 [ %prol.iter.next, %.preheader.prol ], [ 0, %.preheader.preheader1561 ]
  %349 = add nsw i32 %.3946.prol, -1
  %350 = add i32 %348, 1
  %351 = zext i32 %348 to i64
  %352 = getelementptr inbounds [320 x i16], ptr %30, i64 0, i64 %351
  store i16 %.0518, ptr %352, align 2, !tbaa !32
  %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 !42

.preheader.prol.loopexit:                         ; preds = %.preheader.prol, %.preheader.preheader1561
  %.lcssa1578.unr = phi i32 [ poison, %.preheader.preheader1561 ], [ %350, %.preheader.prol ]
  %.3946.unr = phi i32 [ %.3946.ph, %.preheader.preheader1561 ], [ %349, %.preheader.prol ]
  %.unr = phi i32 [ %.ph, %.preheader.preheader1561 ], [ %350, %.preheader.prol ]
  %353 = icmp ult i32 %347, 3
  br i1 %353, label %.loopexit, label %.preheader

vector.ph1546:                                    ; preds = %.preheader.preheader
  %n.vec1548 = and i32 %.2, -16
  %ind.end1549 = and i32 %.2, 15
  %ind.end1551 = add i32 %339, %n.vec1548
  %broadcast.splatinsert = insertelement <8 x i16> poison, i16 %.0518, i64 0
  %broadcast.splat = shufflevector <8 x i16> %broadcast.splatinsert, <8 x i16> poison, <8 x i32> zeroinitializer
  %354 = zext i32 %339 to i64
  %355 = getelementptr inbounds [320 x i16], ptr %30, i64 0, i64 %354
  %356 = getelementptr inbounds i8, ptr %355, i64 16
  store <8 x i16> %broadcast.splat, ptr %355, align 2, !tbaa !32
  store <8 x i16> %broadcast.splat, ptr %356, align 2, !tbaa !32
  %357 = icmp eq i32 %n.vec1548, 16
  br i1 %357, label %middle.block1543, label %vector.body1553.1, !llvm.loop !44

vector.body1553.1:                                ; preds = %vector.ph1546
  %offset.idx.1 = add i32 %339, 16
  %358 = zext i32 %offset.idx.1 to i64
  %359 = getelementptr inbounds [320 x i16], ptr %30, i64 0, i64 %358
  %360 = getelementptr inbounds i8, ptr %359, i64 16
  store <8 x i16> %broadcast.splat, ptr %359, align 2, !tbaa !32
  store <8 x i16> %broadcast.splat, ptr %360, align 2, !tbaa !32
  %361 = icmp eq i32 %n.vec1548, 32
  br i1 %361, label %middle.block1543, label %vector.body1553.2, !llvm.loop !44

vector.body1553.2:                                ; preds = %vector.body1553.1
  %offset.idx.2 = add i32 %339, 32
  %362 = zext i32 %offset.idx.2 to i64
  %363 = getelementptr inbounds [320 x i16], ptr %30, i64 0, i64 %362
  %364 = getelementptr inbounds i8, ptr %363, i64 16
  store <8 x i16> %broadcast.splat, ptr %363, align 2, !tbaa !32
  store <8 x i16> %broadcast.splat, ptr %364, align 2, !tbaa !32
  %365 = icmp eq i32 %n.vec1548, 48
  br i1 %365, label %middle.block1543, label %vector.body1553.3, !llvm.loop !44

vector.body1553.3:                                ; preds = %vector.body1553.2
  %offset.idx.3 = add i32 %339, 48
  %366 = zext i32 %offset.idx.3 to i64
  %367 = getelementptr inbounds [320 x i16], ptr %30, i64 0, i64 %366
  %368 = getelementptr inbounds i8, ptr %367, i64 16
  store <8 x i16> %broadcast.splat, ptr %367, align 2, !tbaa !32
  store <8 x i16> %broadcast.splat, ptr %368, align 2, !tbaa !32
  %369 = icmp eq i32 %n.vec1548, 64
  br i1 %369, label %middle.block1543, label %vector.body1553.4, !llvm.loop !44

vector.body1553.4:                                ; preds = %vector.body1553.3
  %offset.idx.4 = add i32 %339, 64
  %370 = zext i32 %offset.idx.4 to i64
  %371 = getelementptr inbounds [320 x i16], ptr %30, i64 0, i64 %370
  %372 = getelementptr inbounds i8, ptr %371, i64 16
  store <8 x i16> %broadcast.splat, ptr %371, align 2, !tbaa !32
  store <8 x i16> %broadcast.splat, ptr %372, align 2, !tbaa !32
  %373 = icmp eq i32 %n.vec1548, 80
  br i1 %373, label %middle.block1543, label %vector.body1553.5, !llvm.loop !44

vector.body1553.5:                                ; preds = %vector.body1553.4
  %offset.idx.5 = add i32 %339, 80
  %374 = zext i32 %offset.idx.5 to i64
  %375 = getelementptr inbounds [320 x i16], ptr %30, i64 0, i64 %374
  %376 = getelementptr inbounds i8, ptr %375, i64 16
  store <8 x i16> %broadcast.splat, ptr %375, align 2, !tbaa !32
  store <8 x i16> %broadcast.splat, ptr %376, align 2, !tbaa !32
  %377 = icmp eq i32 %n.vec1548, 96
  br i1 %377, label %middle.block1543, label %vector.body1553.6, !llvm.loop !44

vector.body1553.6:                                ; preds = %vector.body1553.5
  %offset.idx.6 = add i32 %339, 96
  %378 = zext i32 %offset.idx.6 to i64
  %379 = getelementptr inbounds [320 x i16], ptr %30, i64 0, i64 %378
  %380 = getelementptr inbounds i8, ptr %379, i64 16
  store <8 x i16> %broadcast.splat, ptr %379, align 2, !tbaa !32
  store <8 x i16> %broadcast.splat, ptr %380, align 2, !tbaa !32
  %381 = icmp eq i32 %n.vec1548, 112
  br i1 %381, label %middle.block1543, label %vector.body1553.7, !llvm.loop !44

vector.body1553.7:                                ; preds = %vector.body1553.6
  %offset.idx.7 = add i32 %339, 112
  %382 = zext i32 %offset.idx.7 to i64
  %383 = getelementptr inbounds [320 x i16], ptr %30, i64 0, i64 %382
  %384 = getelementptr inbounds i8, ptr %383, i64 16
  store <8 x i16> %broadcast.splat, ptr %383, align 2, !tbaa !32
  store <8 x i16> %broadcast.splat, ptr %384, align 2, !tbaa !32
  br label %middle.block1543

middle.block1543:                                 ; preds = %vector.body1553.7, %vector.body1553.6, %vector.body1553.5, %vector.body1553.4, %vector.body1553.3, %vector.body1553.2, %vector.body1553.1, %vector.ph1546
  %cmp.n1556 = icmp eq i32 %.2, %n.vec1548
  br i1 %cmp.n1556, label %.loopexit, label %.preheader.preheader1561

385:                                              ; preds = %338
  store ptr @.str.5, ptr %13, align 8, !tbaa !12
  store i32 16209, ptr %14, align 8, !tbaa !13
  br label %.thread

.preheader:                                       ; preds = %.preheader.prol.loopexit, %.preheader
  %.3946 = phi i32 [ %396, %.preheader ], [ %.3946.unr, %.preheader.prol.loopexit ]
  %386 = phi i32 [ %397, %.preheader ], [ %.unr, %.preheader.prol.loopexit ]
  %387 = add i32 %386, 1
  %388 = zext i32 %386 to i64
  %389 = getelementptr inbounds [320 x i16], ptr %30, i64 0, i64 %388
  store i16 %.0518, ptr %389, align 2, !tbaa !32
  %390 = add i32 %386, 2
  %391 = zext i32 %387 to i64
  %392 = getelementptr inbounds [320 x i16], ptr %30, i64 0, i64 %391
  store i16 %.0518, ptr %392, align 2, !tbaa !32
  %393 = add i32 %386, 3
  %394 = zext i32 %390 to i64
  %395 = getelementptr inbounds [320 x i16], ptr %30, i64 0, i64 %394
  store i16 %.0518, ptr %395, align 2, !tbaa !32
  %396 = add nsw i32 %.3946, -4
  %397 = add i32 %386, 4
  %398 = zext i32 %393 to i64
  %399 = getelementptr inbounds [320 x i16], ptr %30, i64 0, i64 %398
  store i16 %.0518, ptr %399, align 2, !tbaa !32
  %.not648.3 = icmp eq i32 %396, 0
  br i1 %.not648.3, label %.loopexit, label %.preheader, !llvm.loop !47

.loopexit:                                        ; preds = %.preheader.prol.loopexit, %.preheader, %middle.block1543
  %.lcssa1453 = phi i32 [ %ind.end1551, %middle.block1543 ], [ %.lcssa1578.unr, %.preheader.prol.loopexit ], [ %397, %.preheader ]
  store i32 %.lcssa1453, ptr %29, align 4, !tbaa !31
  br label %400

400:                                              ; preds = %.loopexit, %242
  %.pre-phi = phi i32 [ %343, %.loopexit ], [ %.pre1337, %242 ]
  %401 = phi i32 [ %341, %.loopexit ], [ %.pre1310, %242 ]
  %402 = phi i32 [ %.lcssa1453, %.loopexit ], [ %247, %242 ]
  %.22586 = phi i32 [ %.21585, %.loopexit ], [ %.13577.lcssa, %242 ]
  %.12542 = phi i64 [ %.11541, %.loopexit ], [ %244, %242 ]
  %.12 = phi i32 [ %.11, %.loopexit ], [ %245, %242 ]
  %403 = icmp ult i32 %402, %.pre-phi
  br i1 %403, label %.preheader684, label %._crit_edge950, !llvm.loop !48

._crit_edge950:                                   ; preds = %400, %203
  %404 = phi i32 [ %204, %203 ], [ %401, %400 ]
  %.12576.lcssa = phi i32 [ %.10574.lcssa, %203 ], [ %.22586, %400 ]
  %.6536.lcssa = phi i64 [ %192, %203 ], [ %.12542, %400 ]
  %.6529.lcssa = phi i32 [ %193, %203 ], [ %.12, %400 ]
  %.pr676 = load i32, ptr %14, align 8, !tbaa !13
  %405 = icmp eq i32 %.pr676, 16209
  br i1 %405, label %.thread, label %406

406:                                              ; preds = %._crit_edge950
  %407 = load i16, ptr %36, align 8, !tbaa !32
  %408 = icmp eq i16 %407, 0
  br i1 %408, label %409, label %410

409:                                              ; preds = %406
  store ptr @.str.6, ptr %13, align 8, !tbaa !12
  store i32 16209, ptr %14, align 8, !tbaa !13
  br label %.thread

410:                                              ; preds = %406
  store ptr %31, ptr %32, align 8, !tbaa !36
  store ptr %31, ptr %33, align 8, !tbaa !37
  store i32 9, ptr %34, align 8, !tbaa !38
  %411 = call i32 @inflate_table(i32 noundef 1, ptr noundef nonnull %30, i32 noundef %404, ptr noundef nonnull %32, ptr noundef nonnull %34, ptr noundef nonnull %35) #5
  %.not649 = icmp eq i32 %411, 0
  br i1 %.not649, label %413, label %412

412:                                              ; preds = %410
  store ptr @.str.7, ptr %13, align 8, !tbaa !12
  store i32 16209, ptr %14, align 8, !tbaa !13
  br label %.thread

413:                                              ; preds = %410
  %414 = load ptr, ptr %32, align 8, !tbaa !36
  store ptr %414, ptr %37, align 8, !tbaa !49
  store i32 6, ptr %38, align 4, !tbaa !50
  %415 = load i32, ptr %26, align 4, !tbaa !28
  %416 = zext i32 %415 to i64
  %417 = getelementptr inbounds i16, ptr %30, i64 %416
  %418 = load i32, ptr %27, align 8, !tbaa !29
  %419 = call i32 @inflate_table(i32 noundef 2, ptr noundef nonnull %417, i32 noundef %418, ptr noundef nonnull %32, ptr noundef nonnull %38, ptr noundef nonnull %35) #5
  %.not650 = icmp eq i32 %419, 0
  br i1 %.not650, label %421, label %420

420:                                              ; preds = %413
  store ptr @.str.8, ptr %13, align 8, !tbaa !12
  store i32 16209, ptr %14, align 8, !tbaa !13
  br label %.thread

421:                                              ; preds = %413
  store i32 16200, ptr %14, align 8, !tbaa !13
  br label %422

422:                                              ; preds = %421, %47
  %.24588 = phi i32 [ %.0564, %47 ], [ %.12576.lcssa, %421 ]
  %.14544 = phi i64 [ %.0530, %47 ], [ %.6536.lcssa, %421 ]
  %.14 = phi i32 [ %.0523, %47 ], [ %.6529.lcssa, %421 ]
  %423 = icmp ugt i32 %.24588, 5
  %424 = icmp ugt i32 %.0556, 257
  %or.cond = select i1 %423, i1 %424, i1 false
  br i1 %or.cond, label %434, label %.preheader694

.preheader694:                                    ; preds = %422
  %425 = load ptr, ptr %33, align 8, !tbaa !37
  %426 = trunc i64 %.14544 to i32
  %427 = load i32, ptr %34, align 8, !tbaa !38
  %notmask651954 = shl nsw i32 -1, %427
  %428 = xor i32 %notmask651954, -1
  %429 = and i32 %428, %426
  %430 = zext nneg i32 %429 to i64
  %431 = getelementptr inbounds %struct.code, ptr %425, i64 %430
  %.sroa.18.0..sroa_idx38955 = getelementptr inbounds i8, ptr %431, i64 1
  %.sroa.18.0.copyload39956 = load i8, ptr %.sroa.18.0..sroa_idx38955, align 1, !tbaa !22
  %432 = zext i8 %.sroa.18.0.copyload39956 to i32
  %.not652959 = icmp ult i32 %.14, %432
  br i1 %.not652959, label %.lr.ph963.preheader, label %._crit_edge964

.lr.ph963.preheader:                              ; preds = %.preheader694
  %433 = zext nneg i32 %.14 to i64
  br label %.lr.ph963

434:                                              ; preds = %422
  store ptr %.0590, ptr %42, align 8, !tbaa !51
  store i32 %.0556, ptr %43, align 8, !tbaa !52
  %435 = load ptr, ptr %6, align 8, !tbaa !18
  store ptr %435, ptr %0, align 8, !tbaa !17
  store i32 %.24588, ptr %44, align 8, !tbaa !19
  store i64 %.14544, ptr %45, align 8, !tbaa !53
  store i32 %.14, ptr %46, align 8, !tbaa !54
  %436 = load i32, ptr %16, align 8, !tbaa !16
  %437 = load i32, ptr %24, align 4, !tbaa !21
  %438 = icmp ult i32 %436, %437
  br i1 %438, label %439, label %441

439:                                              ; preds = %434
  %440 = sub i32 %437, %.0556
  store i32 %440, ptr %16, align 8, !tbaa !16
  br label %441

441:                                              ; preds = %439, %434
  call void @inflate_fast(ptr noundef nonnull %0, i32 noundef %437) #5
  %442 = load ptr, ptr %42, align 8, !tbaa !51
  %443 = load i32, ptr %43, align 8, !tbaa !52
  %444 = load ptr, ptr %0, align 8, !tbaa !17
  store ptr %444, ptr %6, align 8, !tbaa !18
  %445 = load i32, ptr %44, align 8, !tbaa !19
  %446 = load i64, ptr %45, align 8, !tbaa !53
  %447 = load i32, ptr %46, align 8, !tbaa !54
  br label %.thread

.lr.ph963:                                        ; preds = %.lr.ph963.preheader, %455
  %448 = phi i32 [ %427, %.lr.ph963.preheader ], [ %456, %455 ]
  %449 = phi ptr [ %425, %.lr.ph963.preheader ], [ %457, %455 ]
  %indvars.iv1291 = phi i64 [ %433, %.lr.ph963.preheader ], [ %indvars.iv.next1292, %455 ]
  %.15545961 = phi i64 [ %.14544, %.lr.ph963.preheader ], [ %464, %455 ]
  %.25589960 = phi i32 [ %.24588, %.lr.ph963.preheader ], [ %458, %455 ]
  %450 = icmp eq i32 %.25589960, 0
  br i1 %450, label %451, label %455

451:                                              ; preds = %.lr.ph963
  %452 = call i32 %1(ptr noundef %2, ptr noundef nonnull %6) #5
  %453 = icmp eq i32 %452, 0
  br i1 %453, label %454, label %._crit_edge1312

._crit_edge1312:                                  ; preds = %451
  %.pre1313 = load ptr, ptr %33, align 8, !tbaa !37
  %.pre1314 = load i32, ptr %34, align 8, !tbaa !38
  br label %455

454:                                              ; preds = %451
  store ptr null, ptr %6, align 8, !tbaa !18
  br label %.loopexit687

455:                                              ; preds = %._crit_edge1312, %.lr.ph963
  %456 = phi i32 [ %.pre1314, %._crit_edge1312 ], [ %448, %.lr.ph963 ]
  %457 = phi ptr [ %.pre1313, %._crit_edge1312 ], [ %449, %.lr.ph963 ]
  %.26 = phi i32 [ %452, %._crit_edge1312 ], [ %.25589960, %.lr.ph963 ]
  %458 = add i32 %.26, -1
  %459 = load ptr, ptr %6, align 8, !tbaa !18
  %460 = getelementptr inbounds i8, ptr %459, i64 1
  store ptr %460, ptr %6, align 8, !tbaa !18
  %461 = load i8, ptr %459, align 1, !tbaa !22
  %462 = zext i8 %461 to i64
  %463 = shl i64 %462, %indvars.iv1291
  %464 = add i64 %463, %.15545961
  %indvars.iv.next1292 = add nuw nsw i64 %indvars.iv1291, 8
  %465 = trunc i64 %464 to i32
  %notmask651 = shl nsw i32 -1, %456
  %466 = xor i32 %notmask651, -1
  %467 = and i32 %466, %465
  %468 = zext nneg i32 %467 to i64
  %469 = getelementptr inbounds %struct.code, ptr %457, i64 %468
  %.sroa.18.0..sroa_idx38 = getelementptr inbounds i8, ptr %469, i64 1
  %.sroa.18.0.copyload39 = load i8, ptr %.sroa.18.0..sroa_idx38, align 1, !tbaa !22
  %470 = zext i8 %.sroa.18.0.copyload39 to i64
  %.not652 = icmp ult i64 %indvars.iv.next1292, %470
  br i1 %.not652, label %.lr.ph963, label %._crit_edge964.loopexit

._crit_edge964.loopexit:                          ; preds = %455
  %471 = zext i8 %.sroa.18.0.copyload39 to i32
  %472 = trunc nuw i64 %indvars.iv.next1292 to i32
  br label %._crit_edge964

._crit_edge964:                                   ; preds = %._crit_edge964.loopexit, %.preheader694
  %473 = phi ptr [ %425, %.preheader694 ], [ %457, %._crit_edge964.loopexit ]
  %.25589.lcssa = phi i32 [ %.24588, %.preheader694 ], [ %458, %._crit_edge964.loopexit ]
  %.15545.lcssa = phi i64 [ %.14544, %.preheader694 ], [ %464, %._crit_edge964.loopexit ]
  %.15.lcssa = phi i32 [ %.14, %.preheader694 ], [ %472, %._crit_edge964.loopexit ]
  %.lcssa749 = phi ptr [ %431, %.preheader694 ], [ %469, %._crit_edge964.loopexit ]
  %.sroa.18.0.copyload39.lcssa = phi i8 [ %.sroa.18.0.copyload39956, %.preheader694 ], [ %.sroa.18.0.copyload39, %._crit_edge964.loopexit ]
  %.lcssa745 = phi i32 [ %432, %.preheader694 ], [ %471, %._crit_edge964.loopexit ]
  %.sroa.40.0.copyload66.lcssa.in = getelementptr inbounds i8, ptr %.lcssa749, i64 2
  %.sroa.40.0.copyload66.lcssa = load i16, ptr %.sroa.40.0.copyload66.lcssa.in, align 2, !tbaa !32
  %.sroa.025.0.copyload34 = load i8, ptr %.lcssa749, align 2, !tbaa !22
  %474 = add i8 %.sroa.025.0.copyload34, -1
  %or.cond675 = icmp ult i8 %474, 15
  br i1 %or.cond675, label %.preheader693, label %516

.preheader693:                                    ; preds = %._crit_edge964
  %475 = zext nneg i8 %.sroa.025.0.copyload34 to i32
  %476 = zext i16 %.sroa.40.0.copyload66.lcssa to i32
  %477 = add nuw nsw i32 %.lcssa745, %475
  %notmask654 = shl nsw i32 -1, %477
  %478 = xor i32 %notmask654, -1
  %479 = trunc i64 %.15545.lcssa to i32
  %480 = and i32 %479, %478
  %481 = lshr i32 %480, %.lcssa745
  %482 = add nuw i32 %481, %476
  %483 = zext i32 %482 to i64
  %484 = getelementptr inbounds %struct.code, ptr %473, i64 %483
  %.sroa.18.0..sroa_idx40972 = getelementptr inbounds i8, ptr %484, i64 1
  %.sroa.18.0.copyload41973 = load i8, ptr %.sroa.18.0..sroa_idx40972, align 1, !tbaa !22
  %485 = zext i8 %.sroa.18.0.copyload41973 to i32
  %486 = add nuw nsw i32 %.lcssa745, %485
  %.not655974 = icmp ugt i32 %486, %.15.lcssa
  br i1 %.not655974, label %.lr.ph978.preheader, label %._crit_edge979

.lr.ph978.preheader:                              ; preds = %.preheader693
  %487 = zext nneg i32 %.15.lcssa to i64
  br label %.lr.ph978

.lr.ph978:                                        ; preds = %.lr.ph978.preheader, %494
  %488 = phi ptr [ %473, %.lr.ph978.preheader ], [ %495, %494 ]
  %indvars.iv1294 = phi i64 [ %487, %.lr.ph978.preheader ], [ %indvars.iv.next1295, %494 ]
  %.16546976 = phi i64 [ %.15545.lcssa, %.lr.ph978.preheader ], [ %502, %494 ]
  %.27975 = phi i32 [ %.25589.lcssa, %.lr.ph978.preheader ], [ %496, %494 ]
  %489 = icmp eq i32 %.27975, 0
  br i1 %489, label %490, label %494

490:                                              ; preds = %.lr.ph978
  %491 = call i32 %1(ptr noundef %2, ptr noundef nonnull %6) #5
  %492 = icmp eq i32 %491, 0
  br i1 %492, label %493, label %._crit_edge1315

._crit_edge1315:                                  ; preds = %490
  %.pre1316 = load ptr, ptr %33, align 8, !tbaa !37
  br label %494

493:                                              ; preds = %490
  store ptr null, ptr %6, align 8, !tbaa !18
  br label %.loopexit687

494:                                              ; preds = %._crit_edge1315, %.lr.ph978
  %495 = phi ptr [ %.pre1316, %._crit_edge1315 ], [ %488, %.lr.ph978 ]
  %.28 = phi i32 [ %491, %._crit_edge1315 ], [ %.27975, %.lr.ph978 ]
  %496 = add i32 %.28, -1
  %497 = load ptr, ptr %6, align 8, !tbaa !18
  %498 = getelementptr inbounds i8, ptr %497, i64 1
  store ptr %498, ptr %6, align 8, !tbaa !18
  %499 = load i8, ptr %497, align 1, !tbaa !22
  %500 = zext i8 %499 to i64
  %501 = shl i64 %500, %indvars.iv1294
  %502 = add i64 %501, %.16546976
  %indvars.iv.next1295 = add nuw nsw i64 %indvars.iv1294, 8
  %503 = trunc i64 %502 to i32
  %504 = and i32 %503, %478
  %505 = lshr i32 %504, %.lcssa745
  %506 = add nuw i32 %505, %476
  %507 = zext i32 %506 to i64
  %508 = getelementptr inbounds %struct.code, ptr %495, i64 %507
  %.sroa.18.0..sroa_idx40 = getelementptr inbounds i8, ptr %508, i64 1
  %.sroa.18.0.copyload41 = load i8, ptr %.sroa.18.0..sroa_idx40, align 1, !tbaa !22
  %509 = zext i8 %.sroa.18.0.copyload41 to i32
  %510 = add nuw nsw i32 %.lcssa745, %509
  %511 = zext nneg i32 %510 to i64
  %.not655 = icmp ult i64 %indvars.iv.next1295, %511
  br i1 %.not655, label %.lr.ph978, label %._crit_edge979.loopexit

._crit_edge979.loopexit:                          ; preds = %494
  %512 = trunc nuw i64 %indvars.iv.next1295 to i32
  br label %._crit_edge979

._crit_edge979:                                   ; preds = %._crit_edge979.loopexit, %.preheader693
  %.27.lcssa = phi i32 [ %.25589.lcssa, %.preheader693 ], [ %496, %._crit_edge979.loopexit ]
  %.16546.lcssa = phi i64 [ %.15545.lcssa, %.preheader693 ], [ %502, %._crit_edge979.loopexit ]
  %.16.lcssa = phi i32 [ %.15.lcssa, %.preheader693 ], [ %512, %._crit_edge979.loopexit ]
  %.lcssa757 = phi ptr [ %484, %.preheader693 ], [ %508, %._crit_edge979.loopexit ]
  %.sroa.18.0.copyload41.lcssa = phi i8 [ %.sroa.18.0.copyload41973, %.preheader693 ], [ %.sroa.18.0.copyload41, %._crit_edge979.loopexit ]
  %.sroa.40.0..sroa_idx67 = getelementptr inbounds i8, ptr %.lcssa757, i64 2
  %.sroa.40.0.copyload68 = load i16, ptr %.sroa.40.0..sroa_idx67, align 2, !tbaa !32
  %.sroa.025.0.copyload35 = load i8, ptr %.lcssa757, align 2, !tbaa !22
  %513 = zext nneg i8 %.sroa.18.0.copyload39.lcssa to i64
  %514 = lshr i64 %.16546.lcssa, %513
  %515 = sub i32 %.16.lcssa, %.lcssa745
  br label %516

516:                                              ; preds = %._crit_edge964, %._crit_edge979
  %.29 = phi i32 [ %.27.lcssa, %._crit_edge979 ], [ %.25589.lcssa, %._crit_edge964 ]
  %.17547 = phi i64 [ %514, %._crit_edge979 ], [ %.15545.lcssa, %._crit_edge964 ]
  %.17 = phi i32 [ %515, %._crit_edge979 ], [ %.15.lcssa, %._crit_edge964 ]
  %.sroa.40.0 = phi i16 [ %.sroa.40.0.copyload68, %._crit_edge979 ], [ %.sroa.40.0.copyload66.lcssa, %._crit_edge964 ]
  %.sroa.18.0 = phi i8 [ %.sroa.18.0.copyload41.lcssa, %._crit_edge979 ], [ %.sroa.18.0.copyload39.lcssa, %._crit_edge964 ]
  %.sroa.025.0 = phi i8 [ %.sroa.025.0.copyload35, %._crit_edge979 ], [ %.sroa.025.0.copyload34, %._crit_edge964 ]
  %517 = zext i8 %.sroa.18.0 to i32
  %518 = zext nneg i8 %.sroa.18.0 to i64
  %519 = lshr i64 %.17547, %518
  %520 = sub i32 %.17, %517
  %521 = zext i16 %.sroa.40.0 to i32
  store i32 %521, ptr %39, align 4, !tbaa !25
  %522 = zext i8 %.sroa.025.0 to i32
  %523 = icmp eq i8 %.sroa.025.0, 0
  br i1 %523, label %524, label %535

524:                                              ; preds = %516
  %525 = icmp eq i32 %.0556, 0
  br i1 %525, label %526, label %530

526:                                              ; preds = %524
  %527 = load ptr, ptr %22, align 8, !tbaa !20
  %528 = load i32, ptr %24, align 4, !tbaa !21
  store i32 %528, ptr %16, align 8, !tbaa !16
  %529 = call i32 %3(ptr noundef %4, ptr noundef %527, i32 noundef %528) #5
  %.not670 = icmp eq i32 %529, 0
  br i1 %.not670, label %._crit_edge1331, label %.loopexit687

._crit_edge1331:                                  ; preds = %526
  %.pre1332 = load i32, ptr %39, align 4, !tbaa !25
  br label %530

530:                                              ; preds = %._crit_edge1331, %524
  %531 = phi i32 [ %.pre1332, %._crit_edge1331 ], [ %521, %524 ]
  %.3593 = phi ptr [ %527, %._crit_edge1331 ], [ %.0590, %524 ]
  %.3559 = phi i32 [ %528, %._crit_edge1331 ], [ %.0556, %524 ]
  %532 = trunc i32 %531 to i8
  %533 = getelementptr inbounds i8, ptr %.3593, i64 1
  store i8 %532, ptr %.3593, align 1, !tbaa !22
  %534 = add i32 %.3559, -1
  store i32 16200, ptr %14, align 8, !tbaa !13
  br label %.thread

535:                                              ; preds = %516
  %536 = and i32 %522, 32
  %.not656 = icmp eq i32 %536, 0
  br i1 %.not656, label %538, label %537

537:                                              ; preds = %535
  store i32 16191, ptr %14, align 8, !tbaa !13
  br label %.thread

538:                                              ; preds = %535
  %539 = and i32 %522, 64
  %.not657 = icmp eq i32 %539, 0
  br i1 %.not657, label %541, label %540

540:                                              ; preds = %538
  store ptr @.str.9, ptr %13, align 8, !tbaa !12
  store i32 16209, ptr %14, align 8, !tbaa !13
  br label %.thread

541:                                              ; preds = %538
  %542 = and i32 %522, 15
  store i32 %542, ptr %40, align 4, !tbaa !55
  %.not658 = icmp eq i32 %542, 0
  br i1 %.not658, label %570, label %.preheader692

.preheader692:                                    ; preds = %541
  %543 = icmp ult i32 %520, %542
  br i1 %543, label %.lr.ph988, label %._crit_edge989

.lr.ph988:                                        ; preds = %.preheader692, %550
  %544 = phi i32 [ %551, %550 ], [ %542, %.preheader692 ]
  %.18987 = phi i32 [ %560, %550 ], [ %520, %.preheader692 ]
  %.18548986 = phi i64 [ %559, %550 ], [ %519, %.preheader692 ]
  %.30985 = phi i32 [ %552, %550 ], [ %.29, %.preheader692 ]
  %545 = icmp eq i32 %.30985, 0
  br i1 %545, label %546, label %550

546:                                              ; preds = %.lr.ph988
  %547 = call i32 %1(ptr noundef %2, ptr noundef nonnull %6) #5
  %548 = icmp eq i32 %547, 0
  br i1 %548, label %549, label %._crit_edge1317

._crit_edge1317:                                  ; preds = %546
  %.pre1318 = load i32, ptr %40, align 4, !tbaa !55
  br label %550

549:                                              ; preds = %546
  store ptr null, ptr %6, align 8, !tbaa !18
  br label %.loopexit687

550:                                              ; preds = %._crit_edge1317, %.lr.ph988
  %551 = phi i32 [ %.pre1318, %._crit_edge1317 ], [ %544, %.lr.ph988 ]
  %.31 = phi i32 [ %547, %._crit_edge1317 ], [ %.30985, %.lr.ph988 ]
  %552 = add i32 %.31, -1
  %553 = load ptr, ptr %6, align 8, !tbaa !18
  %554 = getelementptr inbounds i8, ptr %553, i64 1
  store ptr %554, ptr %6, align 8, !tbaa !18
  %555 = load i8, ptr %553, align 1, !tbaa !22
  %556 = zext i8 %555 to i64
  %557 = zext nneg i32 %.18987 to i64
  %558 = shl i64 %556, %557
  %559 = add i64 %558, %.18548986
  %560 = add i32 %.18987, 8
  %561 = icmp ult i32 %560, %551
  br i1 %561, label %.lr.ph988, label %._crit_edge989.loopexit, !llvm.loop !56

._crit_edge989.loopexit:                          ; preds = %550
  %.pre1319 = load i32, ptr %39, align 4, !tbaa !25
  br label %._crit_edge989

._crit_edge989:                                   ; preds = %._crit_edge989.loopexit, %.preheader692
  %562 = phi i32 [ %521, %.preheader692 ], [ %.pre1319, %._crit_edge989.loopexit ]
  %.30.lcssa = phi i32 [ %.29, %.preheader692 ], [ %552, %._crit_edge989.loopexit ]
  %.18548.lcssa = phi i64 [ %519, %.preheader692 ], [ %559, %._crit_edge989.loopexit ]
  %.18.lcssa = phi i32 [ %520, %.preheader692 ], [ %560, %._crit_edge989.loopexit ]
  %.lcssa762 = phi i32 [ %542, %.preheader692 ], [ %551, %._crit_edge989.loopexit ]
  %563 = trunc i64 %.18548.lcssa to i32
  %notmask659 = shl nsw i32 -1, %.lcssa762
  %564 = xor i32 %notmask659, -1
  %565 = and i32 %564, %563
  %566 = add i32 %562, %565
  store i32 %566, ptr %39, align 4, !tbaa !25
  %567 = zext nneg i32 %.lcssa762 to i64
  %568 = lshr i64 %.18548.lcssa, %567
  %569 = sub i32 %.18.lcssa, %.lcssa762
  br label %570

570:                                              ; preds = %._crit_edge989, %541
  %.32 = phi i32 [ %.30.lcssa, %._crit_edge989 ], [ %.29, %541 ]
  %.19549 = phi i64 [ %568, %._crit_edge989 ], [ %519, %541 ]
  %.19 = phi i32 [ %569, %._crit_edge989 ], [ %520, %541 ]
  %571 = load ptr, ptr %37, align 8, !tbaa !49
  %572 = trunc i64 %.19549 to i32
  %573 = load i32, ptr %38, align 4, !tbaa !50
  %notmask660994 = shl nsw i32 -1, %573
  %574 = xor i32 %notmask660994, -1
  %575 = and i32 %574, %572
  %576 = zext nneg i32 %575 to i64
  %577 = getelementptr inbounds %struct.code, ptr %571, i64 %576
  %.sroa.18.0..sroa_idx42995 = getelementptr inbounds i8, ptr %577, i64 1
  %.sroa.18.0.copyload43996 = load i8, ptr %.sroa.18.0..sroa_idx42995, align 1, !tbaa !22
  %578 = zext i8 %.sroa.18.0.copyload43996 to i32
  %.not661999 = icmp ult i32 %.19, %578
  br i1 %.not661999, label %.lr.ph1004.preheader, label %._crit_edge1005

.lr.ph1004.preheader:                             ; preds = %570
  %579 = zext nneg i32 %.19 to i64
  br label %.lr.ph1004

.lr.ph1004:                                       ; preds = %.lr.ph1004.preheader, %587
  %580 = phi i32 [ %573, %.lr.ph1004.preheader ], [ %588, %587 ]
  %581 = phi ptr [ %571, %.lr.ph1004.preheader ], [ %589, %587 ]
  %indvars.iv1297 = phi i64 [ %579, %.lr.ph1004.preheader ], [ %indvars.iv.next1298, %587 ]
  %.205501001 = phi i64 [ %.19549, %.lr.ph1004.preheader ], [ %596, %587 ]
  %.331000 = phi i32 [ %.32, %.lr.ph1004.preheader ], [ %590, %587 ]
  %582 = icmp eq i32 %.331000, 0
  br i1 %582, label %583, label %587

583:                                              ; preds = %.lr.ph1004
  %584 = call i32 %1(ptr noundef %2, ptr noundef nonnull %6) #5
  %585 = icmp eq i32 %584, 0
  br i1 %585, label %586, label %._crit_edge1320

._crit_edge1320:                                  ; preds = %583
  %.pre1321 = load ptr, ptr %37, align 8, !tbaa !49
  %.pre1322 = load i32, ptr %38, align 4, !tbaa !50
  br label %587

586:                                              ; preds = %583
  store ptr null, ptr %6, align 8, !tbaa !18
  br label %.loopexit687

587:                                              ; preds = %._crit_edge1320, %.lr.ph1004
  %588 = phi i32 [ %.pre1322, %._crit_edge1320 ], [ %580, %.lr.ph1004 ]
  %589 = phi ptr [ %.pre1321, %._crit_edge1320 ], [ %581, %.lr.ph1004 ]
  %.34 = phi i32 [ %584, %._crit_edge1320 ], [ %.331000, %.lr.ph1004 ]
  %590 = add i32 %.34, -1
  %591 = load ptr, ptr %6, align 8, !tbaa !18
  %592 = getelementptr inbounds i8, ptr %591, i64 1
  store ptr %592, ptr %6, align 8, !tbaa !18
  %593 = load i8, ptr %591, align 1, !tbaa !22
  %594 = zext i8 %593 to i64
  %595 = shl i64 %594, %indvars.iv1297
  %596 = add i64 %595, %.205501001
  %indvars.iv.next1298 = add nuw nsw i64 %indvars.iv1297, 8
  %597 = trunc i64 %596 to i32
  %notmask660 = shl nsw i32 -1, %588
  %598 = xor i32 %notmask660, -1
  %599 = and i32 %598, %597
  %600 = zext nneg i32 %599 to i64
  %601 = getelementptr inbounds %struct.code, ptr %589, i64 %600
  %.sroa.18.0..sroa_idx42 = getelementptr inbounds i8, ptr %601, i64 1
  %.sroa.18.0.copyload43 = load i8, ptr %.sroa.18.0..sroa_idx42, align 1, !tbaa !22
  %602 = zext i8 %.sroa.18.0.copyload43 to i64
  %.not661 = icmp ult i64 %indvars.iv.next1298, %602
  br i1 %.not661, label %.lr.ph1004, label %._crit_edge1005.loopexit

._crit_edge1005.loopexit:                         ; preds = %587
  %603 = zext i8 %.sroa.18.0.copyload43 to i32
  %604 = trunc nuw i64 %indvars.iv.next1298 to i32
  br label %._crit_edge1005

._crit_edge1005:                                  ; preds = %._crit_edge1005.loopexit, %570
  %605 = phi ptr [ %571, %570 ], [ %589, %._crit_edge1005.loopexit ]
  %.33.lcssa = phi i32 [ %.32, %570 ], [ %590, %._crit_edge1005.loopexit ]
  %.20550.lcssa = phi i64 [ %.19549, %570 ], [ %596, %._crit_edge1005.loopexit ]
  %.20.lcssa = phi i32 [ %.19, %570 ], [ %604, %._crit_edge1005.loopexit ]
  %.lcssa771 = phi ptr [ %577, %570 ], [ %601, %._crit_edge1005.loopexit ]
  %.sroa.18.0.copyload43.lcssa = phi i8 [ %.sroa.18.0.copyload43996, %570 ], [ %.sroa.18.0.copyload43, %._crit_edge1005.loopexit ]
  %.lcssa767 = phi i32 [ %578, %570 ], [ %603, %._crit_edge1005.loopexit ]
  %.sroa.40.0.copyload70.lcssa.in = getelementptr inbounds i8, ptr %.lcssa771, i64 2
  %.sroa.40.0.copyload70.lcssa = load i16, ptr %.sroa.40.0.copyload70.lcssa.in, align 2, !tbaa !32
  %.sroa.025.0.copyload36 = load i8, ptr %.lcssa771, align 2, !tbaa !22
  %606 = icmp ult i8 %.sroa.025.0.copyload36, 16
  br i1 %606, label %.preheader691, label %648

.preheader691:                                    ; preds = %._crit_edge1005
  %607 = zext nneg i8 %.sroa.025.0.copyload36 to i32
  %608 = zext i16 %.sroa.40.0.copyload70.lcssa to i32
  %609 = add nuw nsw i32 %.lcssa767, %607
  %notmask662 = shl nsw i32 -1, %609
  %610 = xor i32 %notmask662, -1
  %611 = trunc i64 %.20550.lcssa to i32
  %612 = and i32 %611, %610
  %613 = lshr i32 %612, %.lcssa767
  %614 = add nuw i32 %613, %608
  %615 = zext i32 %614 to i64
  %616 = getelementptr inbounds %struct.code, ptr %605, i64 %615
  %.sroa.18.0..sroa_idx441013 = getelementptr inbounds i8, ptr %616, i64 1
  %.sroa.18.0.copyload451014 = load i8, ptr %.sroa.18.0..sroa_idx441013, align 1, !tbaa !22
  %617 = zext i8 %.sroa.18.0.copyload451014 to i32
  %618 = add nuw nsw i32 %.lcssa767, %617
  %.not6631015 = icmp ugt i32 %618, %.20.lcssa
  br i1 %.not6631015, label %.lr.ph1019.preheader, label %._crit_edge1020

.lr.ph1019.preheader:                             ; preds = %.preheader691
  %619 = zext nneg i32 %.20.lcssa to i64
  br label %.lr.ph1019

.lr.ph1019:                                       ; preds = %.lr.ph1019.preheader, %626
  %620 = phi ptr [ %605, %.lr.ph1019.preheader ], [ %627, %626 ]
  %indvars.iv1300 = phi i64 [ %619, %.lr.ph1019.preheader ], [ %indvars.iv.next1301, %626 ]
  %.215511017 = phi i64 [ %.20550.lcssa, %.lr.ph1019.preheader ], [ %634, %626 ]
  %.351016 = phi i32 [ %.33.lcssa, %.lr.ph1019.preheader ], [ %628, %626 ]
  %621 = icmp eq i32 %.351016, 0
  br i1 %621, label %622, label %626

622:                                              ; preds = %.lr.ph1019
  %623 = call i32 %1(ptr noundef %2, ptr noundef nonnull %6) #5
  %624 = icmp eq i32 %623, 0
  br i1 %624, label %625, label %._crit_edge1323

._crit_edge1323:                                  ; preds = %622
  %.pre1324 = load ptr, ptr %37, align 8, !tbaa !49
  br label %626

625:                                              ; preds = %622
  store ptr null, ptr %6, align 8, !tbaa !18
  br label %.loopexit687

626:                                              ; preds = %._crit_edge1323, %.lr.ph1019
  %627 = phi ptr [ %.pre1324, %._crit_edge1323 ], [ %620, %.lr.ph1019 ]
  %.36 = phi i32 [ %623, %._crit_edge1323 ], [ %.351016, %.lr.ph1019 ]
  %628 = add i32 %.36, -1
  %629 = load ptr, ptr %6, align 8, !tbaa !18
  %630 = getelementptr inbounds i8, ptr %629, i64 1
  store ptr %630, ptr %6, align 8, !tbaa !18
  %631 = load i8, ptr %629, align 1, !tbaa !22
  %632 = zext i8 %631 to i64
  %633 = shl i64 %632, %indvars.iv1300
  %634 = add i64 %633, %.215511017
  %indvars.iv.next1301 = add nuw nsw i64 %indvars.iv1300, 8
  %635 = trunc i64 %634 to i32
  %636 = and i32 %635, %610
  %637 = lshr i32 %636, %.lcssa767
  %638 = add nuw i32 %637, %608
  %639 = zext i32 %638 to i64
  %640 = getelementptr inbounds %struct.code, ptr %627, i64 %639
  %.sroa.18.0..sroa_idx44 = getelementptr inbounds i8, ptr %640, i64 1
  %.sroa.18.0.copyload45 = load i8, ptr %.sroa.18.0..sroa_idx44, align 1, !tbaa !22
  %641 = zext i8 %.sroa.18.0.copyload45 to i32
  %642 = add nuw nsw i32 %.lcssa767, %641
  %643 = zext nneg i32 %642 to i64
  %.not663 = icmp ult i64 %indvars.iv.next1301, %643
  br i1 %.not663, label %.lr.ph1019, label %._crit_edge1020.loopexit

._crit_edge1020.loopexit:                         ; preds = %626
  %644 = trunc nuw i64 %indvars.iv.next1301 to i32
  br label %._crit_edge1020

._crit_edge1020:                                  ; preds = %._crit_edge1020.loopexit, %.preheader691
  %.35.lcssa = phi i32 [ %.33.lcssa, %.preheader691 ], [ %628, %._crit_edge1020.loopexit ]
  %.21551.lcssa = phi i64 [ %.20550.lcssa, %.preheader691 ], [ %634, %._crit_edge1020.loopexit ]
  %.21.lcssa = phi i32 [ %.20.lcssa, %.preheader691 ], [ %644, %._crit_edge1020.loopexit ]
  %.lcssa779 = phi ptr [ %616, %.preheader691 ], [ %640, %._crit_edge1020.loopexit ]
  %.sroa.18.0.copyload45.lcssa = phi i8 [ %.sroa.18.0.copyload451014, %.preheader691 ], [ %.sroa.18.0.copyload45, %._crit_edge1020.loopexit ]
  %.sroa.40.0..sroa_idx71 = getelementptr inbounds i8, ptr %.lcssa779, i64 2
  %.sroa.40.0.copyload72 = load i16, ptr %.sroa.40.0..sroa_idx71, align 2, !tbaa !32
  %.sroa.025.0.copyload37 = load i8, ptr %.lcssa779, align 2, !tbaa !22
  %645 = zext nneg i8 %.sroa.18.0.copyload43.lcssa to i64
  %646 = lshr i64 %.21551.lcssa, %645
  %647 = sub i32 %.21.lcssa, %.lcssa767
  br label %648

648:                                              ; preds = %._crit_edge1005, %._crit_edge1020
  %.37 = phi i32 [ %.35.lcssa, %._crit_edge1020 ], [ %.33.lcssa, %._crit_edge1005 ]
  %.22552 = phi i64 [ %646, %._crit_edge1020 ], [ %.20550.lcssa, %._crit_edge1005 ]
  %.22 = phi i32 [ %647, %._crit_edge1020 ], [ %.20.lcssa, %._crit_edge1005 ]
  %.sroa.40.1 = phi i16 [ %.sroa.40.0.copyload72, %._crit_edge1020 ], [ %.sroa.40.0.copyload70.lcssa, %._crit_edge1005 ]
  %.sroa.18.1 = phi i8 [ %.sroa.18.0.copyload45.lcssa, %._crit_edge1020 ], [ %.sroa.18.0.copyload43.lcssa, %._crit_edge1005 ]
  %.sroa.025.1 = phi i8 [ %.sroa.025.0.copyload37, %._crit_edge1020 ], [ %.sroa.025.0.copyload36, %._crit_edge1005 ]
  %649 = zext i8 %.sroa.18.1 to i32
  %650 = zext nneg i8 %.sroa.18.1 to i64
  %651 = lshr i64 %.22552, %650
  %652 = sub i32 %.22, %649
  %653 = zext i8 %.sroa.025.1 to i32
  %654 = and i32 %653, 64
  %.not664 = icmp eq i32 %654, 0
  br i1 %.not664, label %656, label %655

655:                                              ; preds = %648
  store ptr @.str.10, ptr %13, align 8, !tbaa !12
  store i32 16209, ptr %14, align 8, !tbaa !13
  br label %.thread

656:                                              ; preds = %648
  %657 = zext i16 %.sroa.40.1 to i32
  store i32 %657, ptr %41, align 8, !tbaa !57
  %658 = and i32 %653, 15
  store i32 %658, ptr %40, align 4, !tbaa !55
  %.not665 = icmp eq i32 %658, 0
  br i1 %.not665, label %686, label %.preheader690

.preheader690:                                    ; preds = %656
  %659 = icmp ult i32 %652, %658
  br i1 %659, label %.lr.ph1029, label %._crit_edge1030

.lr.ph1029:                                       ; preds = %.preheader690, %666
  %660 = phi i32 [ %667, %666 ], [ %658, %.preheader690 ]
  %.231028 = phi i32 [ %676, %666 ], [ %652, %.preheader690 ]
  %.235531027 = phi i64 [ %675, %666 ], [ %651, %.preheader690 ]
  %.381026 = phi i32 [ %668, %666 ], [ %.37, %.preheader690 ]
  %661 = icmp eq i32 %.381026, 0
  br i1 %661, label %662, label %666

662:                                              ; preds = %.lr.ph1029
  %663 = call i32 %1(ptr noundef %2, ptr noundef nonnull %6) #5
  %664 = icmp eq i32 %663, 0
  br i1 %664, label %665, label %._crit_edge1325

._crit_edge1325:                                  ; preds = %662
  %.pre1326 = load i32, ptr %40, align 4, !tbaa !55
  br label %666

665:                                              ; preds = %662
  store ptr null, ptr %6, align 8, !tbaa !18
  br label %.loopexit687

666:                                              ; preds = %._crit_edge1325, %.lr.ph1029
  %667 = phi i32 [ %.pre1326, %._crit_edge1325 ], [ %660, %.lr.ph1029 ]
  %.39 = phi i32 [ %663, %._crit_edge1325 ], [ %.381026, %.lr.ph1029 ]
  %668 = add i32 %.39, -1
  %669 = load ptr, ptr %6, align 8, !tbaa !18
  %670 = getelementptr inbounds i8, ptr %669, i64 1
  store ptr %670, ptr %6, align 8, !tbaa !18
  %671 = load i8, ptr %669, align 1, !tbaa !22
  %672 = zext i8 %671 to i64
  %673 = zext nneg i32 %.231028 to i64
  %674 = shl i64 %672, %673
  %675 = add i64 %674, %.235531027
  %676 = add i32 %.231028, 8
  %677 = icmp ult i32 %676, %667
  br i1 %677, label %.lr.ph1029, label %._crit_edge1030.loopexit, !llvm.loop !58

._crit_edge1030.loopexit:                         ; preds = %666
  %.pre1327 = load i32, ptr %41, align 8, !tbaa !57
  br label %._crit_edge1030

._crit_edge1030:                                  ; preds = %._crit_edge1030.loopexit, %.preheader690
  %678 = phi i32 [ %657, %.preheader690 ], [ %.pre1327, %._crit_edge1030.loopexit ]
  %.38.lcssa = phi i32 [ %.37, %.preheader690 ], [ %668, %._crit_edge1030.loopexit ]
  %.23553.lcssa = phi i64 [ %651, %.preheader690 ], [ %675, %._crit_edge1030.loopexit ]
  %.23.lcssa = phi i32 [ %652, %.preheader690 ], [ %676, %._crit_edge1030.loopexit ]
  %.lcssa784 = phi i32 [ %658, %.preheader690 ], [ %667, %._crit_edge1030.loopexit ]
  %679 = trunc i64 %.23553.lcssa to i32
  %notmask666 = shl nsw i32 -1, %.lcssa784
  %680 = xor i32 %notmask666, -1
  %681 = and i32 %680, %679
  %682 = add i32 %678, %681
  store i32 %682, ptr %41, align 8, !tbaa !57
  %683 = zext nneg i32 %.lcssa784 to i64
  %684 = lshr i64 %.23553.lcssa, %683
  %685 = sub i32 %.23.lcssa, %.lcssa784
  br label %686

686:                                              ; preds = %._crit_edge1030, %656
  %687 = phi i32 [ %682, %._crit_edge1030 ], [ %657, %656 ]
  %.40 = phi i32 [ %.38.lcssa, %._crit_edge1030 ], [ %.37, %656 ]
  %.24554 = phi i64 [ %684, %._crit_edge1030 ], [ %651, %656 ]
  %.24 = phi i32 [ %685, %._crit_edge1030 ], [ %652, %656 ]
  %688 = load i32, ptr %24, align 4, !tbaa !21
  %689 = load i32, ptr %16, align 8, !tbaa !16
  %690 = icmp ult i32 %689, %688
  %691 = select i1 %690, i32 %.0556, i32 0
  %692 = sub i32 %688, %691
  %693 = icmp ugt i32 %687, %692
  br i1 %693, label %694, label %.preheader688

694:                                              ; preds = %686
  store ptr @.str.11, ptr %13, align 8, !tbaa !12
  store i32 16209, ptr %14, align 8, !tbaa !13
  br label %.thread

.preheader688:                                    ; preds = %686, %.loopexit1557
  %.4594 = phi ptr [ %.lcssa1483, %.loopexit1557 ], [ %.0590, %686 ]
  %.4560 = phi i32 [ %748, %.loopexit1557 ], [ %.0556, %686 ]
  %695 = icmp eq i32 %.4560, 0
  %.pre1330 = load i32, ptr %24, align 4, !tbaa !21
  br i1 %695, label %696, label %699

696:                                              ; preds = %.preheader688
  %697 = load ptr, ptr %22, align 8, !tbaa !20
  store i32 %.pre1330, ptr %16, align 8, !tbaa !16
  %698 = call i32 %3(ptr noundef %4, ptr noundef %697, i32 noundef %.pre1330) #5
  %.not667 = icmp eq i32 %698, 0
  br i1 %.not667, label %._crit_edge1328, label %.loopexit687

._crit_edge1328:                                  ; preds = %696
  %.pre1329 = load i32, ptr %24, align 4, !tbaa !21
  br label %699

699:                                              ; preds = %._crit_edge1328, %.preheader688
  %700 = phi i32 [ %.pre1329, %._crit_edge1328 ], [ %.pre1330, %.preheader688 ]
  %.5595 = phi ptr [ %697, %._crit_edge1328 ], [ %.4594, %.preheader688 ]
  %.5561 = phi i32 [ %.pre1330, %._crit_edge1328 ], [ %.4560, %.preheader688 ]
  %701 = load i32, ptr %41, align 8, !tbaa !57
  %702 = sub i32 %700, %701
  %703 = icmp ult i32 %702, %.5561
  %704 = zext i32 %702 to i64
  %705 = zext i32 %701 to i64
  %706 = sub nsw i64 0, %705
  %707 = select i1 %703, i32 %702, i32 0
  %.4 = sub i32 %.5561, %707
  %.pn = select i1 %703, i64 %704, i64 %706
  %.0519 = getelementptr i8, ptr %.5595, i64 %.pn
  %708 = load i32, ptr %39, align 4, !tbaa !25
  %.5 = call i32 @llvm.umin.i32(i32 %.4, i32 %708)
  %709 = sub i32 %708, %.5
  store i32 %709, ptr %39, align 4, !tbaa !25
  %710 = add i32 %.5, -1
  %711 = zext i32 %710 to i64
  %712 = add nuw nsw i64 %711, 1
  %min.iters.check = icmp ult i32 %710, 31
  %713 = add nsw i64 %.pn, 31
  %diff.check = icmp ult i64 %713, 32
  %or.cond1560 = select i1 %min.iters.check, i1 true, i1 %diff.check
  br i1 %or.cond1560, label %scalar.ph.preheader, label %vector.ph

vector.ph:                                        ; preds = %699
  %n.vec = and i64 %712, 8589934560
  %ind.end = getelementptr i8, ptr %.5595, i64 %n.vec
  %.cast = trunc i64 %n.vec to i32
  %ind.end1535 = sub i32 %.5, %.cast
  %ind.end1537 = getelementptr i8, ptr %.0519, 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 %.5595, i64 %index
  %next.gep1540 = getelementptr i8, ptr %.0519, i64 %index
  %714 = getelementptr i8, ptr %next.gep1540, i64 16
  %wide.load = load <16 x i8>, ptr %next.gep1540, align 1, !tbaa !22
  %wide.load1542 = load <16 x i8>, ptr %714, align 1, !tbaa !22
  %715 = getelementptr i8, ptr %next.gep, i64 16
  store <16 x i8> %wide.load, ptr %next.gep, align 1, !tbaa !22
  store <16 x i8> %wide.load1542, ptr %715, align 1, !tbaa !22
  %index.next = add nuw i64 %index, 32
  %716 = icmp eq i64 %index.next, %n.vec
  br i1 %716, label %middle.block, label %vector.body, !llvm.loop !59

middle.block:                                     ; preds = %vector.body
  %cmp.n = icmp eq i64 %712, %n.vec
  br i1 %cmp.n, label %.loopexit1557, label %scalar.ph.preheader

scalar.ph.preheader:                              ; preds = %middle.block, %699
  %.6596.ph = phi ptr [ %.5595, %699 ], [ %ind.end, %middle.block ]
  %.6.ph = phi i32 [ %.5, %699 ], [ %ind.end1535, %middle.block ]
  %.1520.ph = phi ptr [ %.0519, %699 ], [ %ind.end1537, %middle.block ]
  %717 = add i32 %.6.ph, -1
  %xtraiter1660 = and i32 %.6.ph, 7
  %lcmp.mod1661.not = icmp eq i32 %xtraiter1660, 0
  br i1 %lcmp.mod1661.not, label %scalar.ph.prol.loopexit, label %scalar.ph.prol

scalar.ph.prol:                                   ; preds = %scalar.ph.preheader, %scalar.ph.prol
  %.6596.prol = phi ptr [ %720, %scalar.ph.prol ], [ %.6596.ph, %scalar.ph.preheader ]
  %.6.prol = phi i32 [ %721, %scalar.ph.prol ], [ %.6.ph, %scalar.ph.preheader ]
  %.1520.prol = phi ptr [ %718, %scalar.ph.prol ], [ %.1520.ph, %scalar.ph.preheader ]
  %prol.iter1662 = phi i32 [ %prol.iter1662.next, %scalar.ph.prol ], [ 0, %scalar.ph.preheader ]
  %718 = getelementptr inbounds i8, ptr %.1520.prol, i64 1
  %719 = load i8, ptr %.1520.prol, align 1, !tbaa !22
  %720 = getelementptr inbounds i8, ptr %.6596.prol, i64 1
  store i8 %719, ptr %.6596.prol, align 1, !tbaa !22
  %721 = add i32 %.6.prol, -1
  %prol.iter1662.next = add i32 %prol.iter1662, 1
  %prol.iter1662.cmp.not = icmp eq i32 %prol.iter1662.next, %xtraiter1660
  br i1 %prol.iter1662.cmp.not, label %scalar.ph.prol.loopexit, label %scalar.ph.prol, !llvm.loop !60

scalar.ph.prol.loopexit:                          ; preds = %scalar.ph.prol, %scalar.ph.preheader
  %.lcssa1608.unr = phi ptr [ poison, %scalar.ph.preheader ], [ %720, %scalar.ph.prol ]
  %.6596.unr = phi ptr [ %.6596.ph, %scalar.ph.preheader ], [ %720, %scalar.ph.prol ]
  %.6.unr = phi i32 [ %.6.ph, %scalar.ph.preheader ], [ %721, %scalar.ph.prol ]
  %.1520.unr = phi ptr [ %.1520.ph, %scalar.ph.preheader ], [ %718, %scalar.ph.prol ]
  %722 = icmp ult i32 %717, 7
  br i1 %722, label %.loopexit1557, label %scalar.ph

scalar.ph:                                        ; preds = %scalar.ph.prol.loopexit, %scalar.ph
  %.6596 = phi ptr [ %746, %scalar.ph ], [ %.6596.unr, %scalar.ph.prol.loopexit ]
  %.6 = phi i32 [ %747, %scalar.ph ], [ %.6.unr, %scalar.ph.prol.loopexit ]
  %.1520 = phi ptr [ %744, %scalar.ph ], [ %.1520.unr, %scalar.ph.prol.loopexit ]
  %723 = getelementptr inbounds i8, ptr %.1520, i64 1
  %724 = load i8, ptr %.1520, align 1, !tbaa !22
  %725 = getelementptr inbounds i8, ptr %.6596, i64 1
  store i8 %724, ptr %.6596, align 1, !tbaa !22
  %726 = getelementptr inbounds i8, ptr %.1520, i64 2
  %727 = load i8, ptr %723, align 1, !tbaa !22
  %728 = getelementptr inbounds i8, ptr %.6596, i64 2
  store i8 %727, ptr %725, align 1, !tbaa !22
  %729 = getelementptr inbounds i8, ptr %.1520, i64 3
  %730 = load i8, ptr %726, align 1, !tbaa !22
  %731 = getelementptr inbounds i8, ptr %.6596, i64 3
  store i8 %730, ptr %728, align 1, !tbaa !22
  %732 = getelementptr inbounds i8, ptr %.1520, i64 4
  %733 = load i8, ptr %729, align 1, !tbaa !22
  %734 = getelementptr inbounds i8, ptr %.6596, i64 4
  store i8 %733, ptr %731, align 1, !tbaa !22
  %735 = getelementptr inbounds i8, ptr %.1520, i64 5
  %736 = load i8, ptr %732, align 1, !tbaa !22
  %737 = getelementptr inbounds i8, ptr %.6596, i64 5
  store i8 %736, ptr %734, align 1, !tbaa !22
  %738 = getelementptr inbounds i8, ptr %.1520, i64 6
  %739 = load i8, ptr %735, align 1, !tbaa !22
  %740 = getelementptr inbounds i8, ptr %.6596, i64 6
  store i8 %739, ptr %737, align 1, !tbaa !22
  %741 = getelementptr inbounds i8, ptr %.1520, i64 7
  %742 = load i8, ptr %738, align 1, !tbaa !22
  %743 = getelementptr inbounds i8, ptr %.6596, i64 7
  store i8 %742, ptr %740, align 1, !tbaa !22
  %744 = getelementptr inbounds i8, ptr %.1520, i64 8
  %745 = load i8, ptr %741, align 1, !tbaa !22
  %746 = getelementptr inbounds i8, ptr %.6596, i64 8
  store i8 %745, ptr %743, align 1, !tbaa !22
  %747 = add i32 %.6, -8
  %.not668.7 = icmp eq i32 %747, 0
  br i1 %.not668.7, label %.loopexit1557, label %scalar.ph, !llvm.loop !61

.loopexit1557:                                    ; preds = %scalar.ph.prol.loopexit, %scalar.ph, %middle.block
  %.lcssa1483 = phi ptr [ %ind.end, %middle.block ], [ %.lcssa1608.unr, %scalar.ph.prol.loopexit ], [ %746, %scalar.ph ]
  %748 = sub i32 %.5561, %.5
  %749 = load i32, ptr %39, align 4, !tbaa !25
  %.not669 = icmp eq i32 %749, 0
  br i1 %.not669, label %.thread, label %.preheader688, !llvm.loop !62

.thread:                                          ; preds = %.loopexit1557, %283, %385, %._crit_edge950, %694, %655, %540, %537, %530, %441, %420, %412, %409, %202, %162, %._crit_edge1051, %109, %80, %56
  %.7597 = phi ptr [ %442, %441 ], [ %533, %530 ], [ %.0590, %537 ], [ %.0590, %540 ], [ %.0590, %655 ], [ %.0590, %694 ], [ %.0590, %162 ], [ %.0590, %202 ], [ %.0590, %._crit_edge950 ], [ %.0590, %409 ], [ %.0590, %412 ], [ %.0590, %420 ], [ %.0590, %109 ], [ %.1591.lcssa, %._crit_edge1051 ], [ %.0590, %56 ], [ %.0590, %80 ], [ %.0590, %385 ], [ %.0590, %283 ], [ %.lcssa1483, %.loopexit1557 ]
  %.41 = phi i32 [ %445, %441 ], [ %.29, %530 ], [ %.29, %537 ], [ %.29, %540 ], [ %.37, %655 ], [ %.40, %694 ], [ %.7571.lcssa, %162 ], [ %.10574.lcssa, %202 ], [ %.12576.lcssa, %._crit_edge950 ], [ %.12576.lcssa, %409 ], [ %.12576.lcssa, %412 ], [ %.12576.lcssa, %420 ], [ %.3567.lcssa, %109 ], [ %.5569.lcssa, %._crit_edge1051 ], [ %.0564, %56 ], [ %.1565.lcssa, %80 ], [ %.21585, %385 ], [ %.15579.lcssa, %283 ], [ %.40, %.loopexit1557 ]
  %.6562 = phi i32 [ %443, %441 ], [ %534, %530 ], [ %.0556, %537 ], [ %.0556, %540 ], [ %.0556, %655 ], [ %.0556, %694 ], [ %.0556, %162 ], [ %.0556, %202 ], [ %.0556, %._crit_edge950 ], [ %.0556, %409 ], [ %.0556, %412 ], [ %.0556, %420 ], [ %.0556, %109 ], [ %.1557.lcssa, %._crit_edge1051 ], [ %.0556, %56 ], [ %.0556, %80 ], [ %.0556, %385 ], [ %.0556, %283 ], [ %748, %.loopexit1557 ]
  %.25555 = phi i64 [ %446, %441 ], [ %519, %530 ], [ %519, %537 ], [ %519, %540 ], [ %651, %655 ], [ %.24554, %694 ], [ %158, %162 ], [ %192, %202 ], [ %.6536.lcssa, %._crit_edge950 ], [ %.6536.lcssa, %409 ], [ %.6536.lcssa, %412 ], [ %.6536.lcssa, %420 ], [ %.2532.lcssa, %109 ], [ 0, %._crit_edge1051 ], [ %59, %56 ], [ %81, %80 ], [ %.11541, %385 ], [ %279, %283 ], [ %.24554, %.loopexit1557 ]
  %.25 = phi i32 [ %447, %441 ], [ %520, %530 ], [ %520, %537 ], [ %520, %540 ], [ %652, %655 ], [ %.24, %694 ], [ %159, %162 ], [ %193, %202 ], [ %.6529.lcssa, %._crit_edge950 ], [ %.6529.lcssa, %409 ], [ %.6529.lcssa, %412 ], [ %.6529.lcssa, %420 ], [ %.2525.lcssa, %109 ], [ 0, %._crit_edge1051 ], [ %60, %56 ], [ %82, %80 ], [ %.11, %385 ], [ %280, %283 ], [ %.24, %.loopexit1557 ]
  %.pre = load i32, ptr %14, align 8, !tbaa !13
  br label %47

.loopexit687.loopexit1438:                        ; preds = %47
  br label %.loopexit687

.loopexit687.loopexit1563:                        ; preds = %47
  br label %.loopexit687

.loopexit687:                                     ; preds = %526, %696, %120, %47, %.loopexit687.loopexit1563, %.loopexit687.loopexit1438, %665, %625, %586, %549, %493, %454, %320, %298, %267, %222, %.split, %138, %117, %95, %.split1064
  %.42 = phi i32 [ 0, %549 ], [ 0, %665 ], [ 0, %625 ], [ 0, %586 ], [ 0, %493 ], [ 0, %454 ], [ 0, %138 ], [ 0, %.split ], [ 0, %267 ], [ 0, %298 ], [ 0, %320 ], [ 0, %222 ], [ 0, %95 ], [ 0, %117 ], [ 0, %.split1064 ], [ %.0564, %.loopexit687.loopexit1438 ], [ %.0564, %47 ], [ %.6570, %120 ], [ %.40, %696 ], [ %.29, %526 ], [ %.0564, %.loopexit687.loopexit1563 ]
  %.7563 = phi i32 [ %.0556, %549 ], [ %.0556, %665 ], [ %.0556, %625 ], [ %.0556, %586 ], [ %.0556, %493 ], [ %.0556, %454 ], [ %.0556, %138 ], [ %.0556, %.split ], [ %.0556, %267 ], [ %.0556, %298 ], [ %.0556, %320 ], [ %.0556, %222 ], [ %.0556, %95 ], [ %.15571048, %117 ], [ %.0556, %.split1064 ], [ %.0556, %.loopexit687.loopexit1438 ], [ %.0556, %47 ], [ %122, %120 ], [ %.pre1330, %696 ], [ %528, %526 ], [ %.0556, %.loopexit687.loopexit1563 ]
  %750 = phi i1 [ false, %549 ], [ false, %665 ], [ false, %625 ], [ false, %586 ], [ false, %493 ], [ false, %454 ], [ false, %138 ], [ false, %.split ], [ false, %267 ], [ false, %298 ], [ false, %320 ], [ false, %222 ], [ false, %95 ], [ false, %117 ], [ false, %.split1064 ], [ true, %.loopexit687.loopexit1438 ], [ false, %47 ], [ false, %120 ], [ false, %696 ], [ false, %526 ], [ false, %.loopexit687.loopexit1563 ]
  %.0 = phi i32 [ -5, %549 ], [ -5, %665 ], [ -5, %625 ], [ -5, %586 ], [ -5, %493 ], [ -5, %454 ], [ -5, %138 ], [ -5, %.split ], [ -5, %267 ], [ -5, %298 ], [ -5, %320 ], [ -5, %222 ], [ -5, %95 ], [ -5, %117 ], [ -5, %.split1064 ], [ 1, %.loopexit687.loopexit1438 ], [ -2, %47 ], [ -5, %120 ], [ -5, %696 ], [ -5, %526 ], [ -3, %.loopexit687.loopexit1563 ]
  %751 = load i32, ptr %24, align 4, !tbaa !21
  %752 = icmp ult i32 %.7563, %751
  br i1 %752, label %753, label %758

753:                                              ; preds = %.loopexit687
  %754 = load ptr, ptr %22, align 8, !tbaa !20
  %755 = sub i32 %751, %.7563
  %756 = call i32 %3(ptr noundef %4, ptr noundef %754, i32 noundef %755) #5
  %757 = icmp ne i32 %756, 0
  %or.cond3 = and i1 %750, %757
  %spec.store.select = select i1 %or.cond3, i32 -5, i32 %.0
  br label %758

758:                                              ; preds = %753, %.loopexit687
  %.1 = phi i32 [ %spec.store.select, %753 ], [ %.0, %.loopexit687 ]
  %759 = load ptr, ptr %6, align 8, !tbaa !18
  store ptr %759, ptr %0, align 8, !tbaa !17
  store i32 %.42, ptr %44, align 8, !tbaa !19
  br label %760

760:                                              ; preds = %5, %8, %758
  %.0598 = phi i32 [ %.1, %758 ], [ -2, %8 ], [ -2, %5 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #5
  ret i32 %.0598
}

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

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

declare i32 @inflate_table(i32 noundef, ptr noundef, i32 noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #3

declare void @inflate_fast(ptr noundef, i32 noundef) local_unnamed_addr #3

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i32 @llvm.umin.i32(i32, i32) #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 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #3 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #5 = { 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 56}
!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 48}
!13 = !{!14, !10, i64 8}
!14 = !{!"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}
!15 = !{!14, !10, i64 12}
!16 = !{!14, !10, i64 64}
!17 = !{!6, !7, i64 0}
!18 = !{!7, !7, i64 0}
!19 = !{!6, !10, i64 8}
!20 = !{!14, !7, i64 72}
!21 = !{!14, !10, i64 60}
!22 = !{!8, !8, i64 0}
!23 = distinct !{!23, !24}
!24 = !{!"llvm.loop.mustprogress"}
!25 = !{!14, !10, i64 92}
!26 = distinct !{!26, !24}
!27 = distinct !{!27, !24}
!28 = !{!14, !10, i64 132}
!29 = !{!14, !10, i64 136}
!30 = !{!14, !10, i64 128}
!31 = !{!14, !10, i64 140}
!32 = !{!33, !33, i64 0}
!33 = !{!"short", !8, i64 0}
!34 = distinct !{!34, !24}
!35 = distinct !{!35, !24}
!36 = !{!14, !7, i64 144}
!37 = !{!14, !7, i64 104}
!38 = !{!14, !10, i64 120}
!39 = distinct !{!39, !24}
!40 = distinct !{!40, !24}
!41 = distinct !{!41, !24}
!42 = distinct !{!42, !43}
!43 = !{!"llvm.loop.unroll.disable"}
!44 = distinct !{!44, !24, !45, !46}
!45 = !{!"llvm.loop.isvectorized", i32 1}
!46 = !{!"llvm.loop.unroll.runtime.disable"}
!47 = distinct !{!47, !24, !45}
!48 = distinct !{!48, !24}
!49 = !{!14, !7, i64 112}
!50 = !{!14, !10, i64 124}
!51 = !{!6, !7, i64 24}
!52 = !{!6, !10, i64 32}
!53 = !{!14, !11, i64 80}
!54 = !{!14, !10, i64 88}
!55 = !{!14, !10, i64 100}
!56 = distinct !{!56, !24}
!57 = !{!14, !10, i64 96}
!58 = distinct !{!58, !24}
!59 = distinct !{!59, !24, !45, !46}
!60 = distinct !{!60, !43}
!61 = distinct !{!61, !24, !45}
!62 = distinct !{!62, !24}


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