; LLVM IR from modlfo/AudioEngine :: AudioEngine/JuceLibraryCode/modules/juce_core/zip/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 { 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], [2048 x %struct.code] }

@z_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 [28 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.10 = 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 @z_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 %1792

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 0
  store i32 11, 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 1
  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 11
  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 13
  %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 10
  %63 = load i32, ptr %62, align 4, !tbaa !23
  store i32 %63, ptr %16, align 4, !tbaa !20
  br label %64

64:                                               ; preds = %1783, %56
  %65 = load ptr, ptr %12, align 8, !tbaa !5
  %66 = getelementptr inbounds %struct.inflate_state, ptr %65, i32 0, i32 0
  %67 = load i32, ptr %66, align 8, !tbaa !14
  switch i32 %67, label %1782 [
    i32 11, label %68
    i32 13, label %165
    i32 15, label %321
    i32 18, label %1021
    i32 26, label %1759
    i32 27, label %1781
  ]

68:                                               ; preds = %64
  %69 = load ptr, ptr %12, align 8, !tbaa !5
  %70 = getelementptr inbounds %struct.inflate_state, ptr %69, i32 0, i32 1
  %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 0
  store i32 26, ptr %87, align 8, !tbaa !14
  br label %1783

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 %1784

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 1
  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 0
  store i32 13, ptr %144, align 8, !tbaa !14
  br label %157

145:                                              ; preds = %138
  %146 = load ptr, ptr %12, align 8, !tbaa !5
  call void @fixedtables1(ptr noundef %146)
  %147 = load ptr, ptr %12, align 8, !tbaa !5
  %148 = getelementptr inbounds %struct.inflate_state, ptr %147, i32 0, i32 0
  store i32 18, 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 0
  store i32 15, 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 0
  store i32 27, 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 %1783

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 %1784

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 0
  store i32 27, ptr %226, align 8, !tbaa !14
  br label %1783

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 16
  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 16
  %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 16
  %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 %1784

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 13
  %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 10
  %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 11
  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 %1784

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 16
  %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 0
  store i32 11, ptr %320, align 8, !tbaa !14
  br label %1783

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 %1784

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 24
  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 25
  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 23
  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 24
  %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 25
  %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 0
  store i32 27, ptr %412, align 8, !tbaa !14
  br label %1783

413:                                              ; preds = %403
  %414 = load ptr, ptr %12, align 8, !tbaa !5
  %415 = getelementptr inbounds %struct.inflate_state, ptr %414, i32 0, i32 26
  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 26
  %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 23
  %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 %1784

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 28
  %469 = load ptr, ptr %12, align 8, !tbaa !5
  %470 = getelementptr inbounds %struct.inflate_state, ptr %469, i32 0, i32 26
  %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 @z_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 26
  %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 28
  %494 = load ptr, ptr %12, align 8, !tbaa !5
  %495 = getelementptr inbounds %struct.inflate_state, ptr %494, i32 0, i32 26
  %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 @z_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 30
  %506 = getelementptr inbounds [2048 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 27
  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 27
  %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 19
  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 21
  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 28
  %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 27
  %521 = load ptr, ptr %12, align 8, !tbaa !5
  %522 = getelementptr inbounds %struct.inflate_state, ptr %521, i32 0, i32 21
  %523 = load ptr, ptr %12, align 8, !tbaa !5
  %524 = getelementptr inbounds %struct.inflate_state, ptr %523, i32 0, i32 29
  %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 0
  store i32 27, ptr %533, align 8, !tbaa !14
  br label %1783

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

537:                                              ; preds = %943, %534
  %538 = load ptr, ptr %12, align 8, !tbaa !5
  %539 = getelementptr inbounds %struct.inflate_state, ptr %538, i32 0, i32 26
  %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 24
  %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 25
  %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 %944

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 19
  %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 21
  %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 %1784

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 %672

606:                                              ; preds = %601
  br label %607

607:                                              ; preds = %606
  br label %608

608:                                              ; preds = %644, %607
  %609 = load i32, ptr %18, align 4, !tbaa !20
  %610 = getelementptr inbounds %struct.code, ptr %21, i32 0, i32 1
  %611 = load i8, ptr %610, align 1, !tbaa !44
  %612 = zext i8 %611 to i32
  %613 = icmp ult i32 %609, %612
  br i1 %613, label %614, label %645

614:                                              ; preds = %608
  br label %615

615:                                              ; preds = %614
  br label %616

616:                                              ; preds = %615
  %617 = load i32, ptr %15, align 4, !tbaa !20
  %618 = icmp eq i32 %617, 0
  br i1 %618, label %619, label %627

619:                                              ; preds = %616
  %620 = load ptr, ptr %8, align 8, !tbaa !5
  %621 = load ptr, ptr %9, align 8, !tbaa !5
  %622 = call i32 %620(ptr noundef %621, ptr noundef %13)
  store i32 %622, ptr %15, align 4, !tbaa !20
  %623 = load i32, ptr %15, align 4, !tbaa !20
  %624 = icmp eq i32 %623, 0
  br i1 %624, label %625, label %626

625:                                              ; preds = %619
  store ptr null, ptr %13, align 8, !tbaa !5
  store i32 -5, ptr %24, align 4, !tbaa !20
  br label %1784

626:                                              ; preds = %619
  br label %627

627:                                              ; preds = %626, %616
  br label %628

628:                                              ; preds = %627
  br label %629

629:                                              ; preds = %628
  %630 = load i32, ptr %15, align 4, !tbaa !20
  %631 = add i32 %630, -1
  store i32 %631, ptr %15, align 4, !tbaa !20
  %632 = load ptr, ptr %13, align 8, !tbaa !5
  %633 = getelementptr inbounds i8, ptr %632, i32 1
  store ptr %633, ptr %13, align 8, !tbaa !5
  %634 = load i8, ptr %632, align 1, !tbaa !24
  %635 = zext i8 %634 to i64
  %636 = load i32, ptr %18, align 4, !tbaa !20
  %637 = zext i32 %636 to i64
  %638 = shl i64 %635, %637
  %639 = load i64, ptr %17, align 8, !tbaa !21
  %640 = add i64 %639, %638
  store i64 %640, ptr %17, align 8, !tbaa !21
  %641 = load i32, ptr %18, align 4, !tbaa !20
  %642 = add i32 %641, 8
  store i32 %642, ptr %18, align 4, !tbaa !20
  br label %643

643:                                              ; preds = %629
  br label %644

644:                                              ; preds = %643
  br label %608, !llvm.loop !47

645:                                              ; preds = %608
  br label %646

646:                                              ; preds = %645
  br label %647

647:                                              ; preds = %646
  br label %648

648:                                              ; preds = %647
  %649 = getelementptr inbounds %struct.code, ptr %21, i32 0, i32 1
  %650 = load i8, ptr %649, align 1, !tbaa !44
  %651 = zext i8 %650 to i32
  %652 = load i64, ptr %17, align 8, !tbaa !21
  %653 = zext i32 %651 to i64
  %654 = lshr i64 %652, %653
  store i64 %654, ptr %17, align 8, !tbaa !21
  %655 = getelementptr inbounds %struct.code, ptr %21, i32 0, i32 1
  %656 = load i8, ptr %655, align 1, !tbaa !44
  %657 = zext i8 %656 to i32
  %658 = load i32, ptr %18, align 4, !tbaa !20
  %659 = sub i32 %658, %657
  store i32 %659, ptr %18, align 4, !tbaa !20
  br label %660

660:                                              ; preds = %648
  br label %661

661:                                              ; preds = %660
  %662 = getelementptr inbounds %struct.code, ptr %21, i32 0, i32 2
  %663 = load i16, ptr %662, align 2, !tbaa !46
  %664 = load ptr, ptr %12, align 8, !tbaa !5
  %665 = getelementptr inbounds %struct.inflate_state, ptr %664, i32 0, i32 28
  %666 = load ptr, ptr %12, align 8, !tbaa !5
  %667 = getelementptr inbounds %struct.inflate_state, ptr %666, i32 0, i32 26
  %668 = load i32, ptr %667, align 4, !tbaa !34
  %669 = add i32 %668, 1
  store i32 %669, ptr %667, align 4, !tbaa !34
  %670 = zext i32 %668 to i64
  %671 = getelementptr inbounds [320 x i16], ptr %665, i64 0, i64 %670
  store i16 %663, ptr %671, align 2, !tbaa !36
  br label %943

672:                                              ; preds = %601
  %673 = getelementptr inbounds %struct.code, ptr %21, i32 0, i32 2
  %674 = load i16, ptr %673, align 2, !tbaa !46
  %675 = zext i16 %674 to i32
  %676 = icmp eq i32 %675, 16
  br i1 %676, label %677, label %765

677:                                              ; preds = %672
  br label %678

678:                                              ; preds = %677
  br label %679

679:                                              ; preds = %716, %678
  %680 = load i32, ptr %18, align 4, !tbaa !20
  %681 = getelementptr inbounds %struct.code, ptr %21, i32 0, i32 1
  %682 = load i8, ptr %681, align 1, !tbaa !44
  %683 = zext i8 %682 to i32
  %684 = add nsw i32 %683, 2
  %685 = icmp ult i32 %680, %684
  br i1 %685, label %686, label %717

686:                                              ; preds = %679
  br label %687

687:                                              ; preds = %686
  br label %688

688:                                              ; preds = %687
  %689 = load i32, ptr %15, align 4, !tbaa !20
  %690 = icmp eq i32 %689, 0
  br i1 %690, label %691, label %699

691:                                              ; preds = %688
  %692 = load ptr, ptr %8, align 8, !tbaa !5
  %693 = load ptr, ptr %9, align 8, !tbaa !5
  %694 = call i32 %692(ptr noundef %693, ptr noundef %13)
  store i32 %694, ptr %15, align 4, !tbaa !20
  %695 = load i32, ptr %15, align 4, !tbaa !20
  %696 = icmp eq i32 %695, 0
  br i1 %696, label %697, label %698

697:                                              ; preds = %691
  store ptr null, ptr %13, align 8, !tbaa !5
  store i32 -5, ptr %24, align 4, !tbaa !20
  br label %1784

698:                                              ; preds = %691
  br label %699

699:                                              ; preds = %698, %688
  br label %700

700:                                              ; preds = %699
  br label %701

701:                                              ; preds = %700
  %702 = load i32, ptr %15, align 4, !tbaa !20
  %703 = add i32 %702, -1
  store i32 %703, ptr %15, align 4, !tbaa !20
  %704 = load ptr, ptr %13, align 8, !tbaa !5
  %705 = getelementptr inbounds i8, ptr %704, i32 1
  store ptr %705, ptr %13, align 8, !tbaa !5
  %706 = load i8, ptr %704, align 1, !tbaa !24
  %707 = zext i8 %706 to i64
  %708 = load i32, ptr %18, align 4, !tbaa !20
  %709 = zext i32 %708 to i64
  %710 = shl i64 %707, %709
  %711 = load i64, ptr %17, align 8, !tbaa !21
  %712 = add i64 %711, %710
  store i64 %712, ptr %17, align 8, !tbaa !21
  %713 = load i32, ptr %18, align 4, !tbaa !20
  %714 = add i32 %713, 8
  store i32 %714, ptr %18, align 4, !tbaa !20
  br label %715

715:                                              ; preds = %701
  br label %716

716:                                              ; preds = %715
  br label %679, !llvm.loop !48

717:                                              ; preds = %679
  br label %718

718:                                              ; preds = %717
  br label %719

719:                                              ; preds = %718
  br label %720

720:                                              ; preds = %719
  %721 = getelementptr inbounds %struct.code, ptr %21, i32 0, i32 1
  %722 = load i8, ptr %721, align 1, !tbaa !44
  %723 = zext i8 %722 to i32
  %724 = load i64, ptr %17, align 8, !tbaa !21
  %725 = zext i32 %723 to i64
  %726 = lshr i64 %724, %725
  store i64 %726, ptr %17, align 8, !tbaa !21
  %727 = getelementptr inbounds %struct.code, ptr %21, i32 0, i32 1
  %728 = load i8, ptr %727, align 1, !tbaa !44
  %729 = zext i8 %728 to i32
  %730 = load i32, ptr %18, align 4, !tbaa !20
  %731 = sub i32 %730, %729
  store i32 %731, ptr %18, align 4, !tbaa !20
  br label %732

732:                                              ; preds = %720
  br label %733

733:                                              ; preds = %732
  %734 = load ptr, ptr %12, align 8, !tbaa !5
  %735 = getelementptr inbounds %struct.inflate_state, ptr %734, i32 0, i32 26
  %736 = load i32, ptr %735, align 4, !tbaa !34
  %737 = icmp eq i32 %736, 0
  br i1 %737, label %738, label %743

738:                                              ; preds = %733
  %739 = load ptr, ptr %7, align 8, !tbaa !5
  %740 = getelementptr inbounds %struct.z_stream_s, ptr %739, i32 0, i32 6
  store ptr @.str.5, ptr %740, align 8, !tbaa !13
  %741 = load ptr, ptr %12, align 8, !tbaa !5
  %742 = getelementptr inbounds %struct.inflate_state, ptr %741, i32 0, i32 0
  store i32 27, ptr %742, align 8, !tbaa !14
  br label %944

743:                                              ; preds = %733
  %744 = load ptr, ptr %12, align 8, !tbaa !5
  %745 = getelementptr inbounds %struct.inflate_state, ptr %744, i32 0, i32 28
  %746 = load ptr, ptr %12, align 8, !tbaa !5
  %747 = getelementptr inbounds %struct.inflate_state, ptr %746, i32 0, i32 26
  %748 = load i32, ptr %747, align 4, !tbaa !34
  %749 = sub i32 %748, 1
  %750 = zext i32 %749 to i64
  %751 = getelementptr inbounds [320 x i16], ptr %745, i64 0, i64 %750
  %752 = load i16, ptr %751, align 2, !tbaa !36
  %753 = zext i16 %752 to i32
  store i32 %753, ptr %23, align 4, !tbaa !20
  %754 = load i64, ptr %17, align 8, !tbaa !21
  %755 = trunc i64 %754 to i32
  %756 = and i32 %755, 3
  %757 = add i32 3, %756
  store i32 %757, ptr %19, align 4, !tbaa !20
  br label %758

758:                                              ; preds = %743
  %759 = load i64, ptr %17, align 8, !tbaa !21
  %760 = lshr i64 %759, 2
  store i64 %760, ptr %17, align 8, !tbaa !21
  %761 = load i32, ptr %18, align 4, !tbaa !20
  %762 = sub i32 %761, 2
  store i32 %762, ptr %18, align 4, !tbaa !20
  br label %763

763:                                              ; preds = %758
  br label %764

764:                                              ; preds = %763
  br label %907

765:                                              ; preds = %672
  %766 = getelementptr inbounds %struct.code, ptr %21, i32 0, i32 2
  %767 = load i16, ptr %766, align 2, !tbaa !46
  %768 = zext i16 %767 to i32
  %769 = icmp eq i32 %768, 17
  br i1 %769, label %770, label %838

770:                                              ; preds = %765
  br label %771

771:                                              ; preds = %770
  br label %772

772:                                              ; preds = %809, %771
  %773 = load i32, ptr %18, align 4, !tbaa !20
  %774 = getelementptr inbounds %struct.code, ptr %21, i32 0, i32 1
  %775 = load i8, ptr %774, align 1, !tbaa !44
  %776 = zext i8 %775 to i32
  %777 = add nsw i32 %776, 3
  %778 = icmp ult i32 %773, %777
  br i1 %778, label %779, label %810

779:                                              ; preds = %772
  br label %780

780:                                              ; preds = %779
  br label %781

781:                                              ; preds = %780
  %782 = load i32, ptr %15, align 4, !tbaa !20
  %783 = icmp eq i32 %782, 0
  br i1 %783, label %784, label %792

784:                                              ; preds = %781
  %785 = load ptr, ptr %8, align 8, !tbaa !5
  %786 = load ptr, ptr %9, align 8, !tbaa !5
  %787 = call i32 %785(ptr noundef %786, ptr noundef %13)
  store i32 %787, ptr %15, align 4, !tbaa !20
  %788 = load i32, ptr %15, align 4, !tbaa !20
  %789 = icmp eq i32 %788, 0
  br i1 %789, label %790, label %791

790:                                              ; preds = %784
  store ptr null, ptr %13, align 8, !tbaa !5
  store i32 -5, ptr %24, align 4, !tbaa !20
  br label %1784

791:                                              ; preds = %784
  br label %792

792:                                              ; preds = %791, %781
  br label %793

793:                                              ; preds = %792
  br label %794

794:                                              ; preds = %793
  %795 = load i32, ptr %15, align 4, !tbaa !20
  %796 = add i32 %795, -1
  store i32 %796, ptr %15, align 4, !tbaa !20
  %797 = load ptr, ptr %13, align 8, !tbaa !5
  %798 = getelementptr inbounds i8, ptr %797, i32 1
  store ptr %798, ptr %13, align 8, !tbaa !5
  %799 = load i8, ptr %797, align 1, !tbaa !24
  %800 = zext i8 %799 to i64
  %801 = load i32, ptr %18, align 4, !tbaa !20
  %802 = zext i32 %801 to i64
  %803 = shl i64 %800, %802
  %804 = load i64, ptr %17, align 8, !tbaa !21
  %805 = add i64 %804, %803
  store i64 %805, ptr %17, align 8, !tbaa !21
  %806 = load i32, ptr %18, align 4, !tbaa !20
  %807 = add i32 %806, 8
  store i32 %807, ptr %18, align 4, !tbaa !20
  br label %808

808:                                              ; preds = %794
  br label %809

809:                                              ; preds = %808
  br label %772, !llvm.loop !49

810:                                              ; preds = %772
  br label %811

811:                                              ; preds = %810
  br label %812

812:                                              ; preds = %811
  br label %813

813:                                              ; preds = %812
  %814 = getelementptr inbounds %struct.code, ptr %21, i32 0, i32 1
  %815 = load i8, ptr %814, align 1, !tbaa !44
  %816 = zext i8 %815 to i32
  %817 = load i64, ptr %17, align 8, !tbaa !21
  %818 = zext i32 %816 to i64
  %819 = lshr i64 %817, %818
  store i64 %819, ptr %17, align 8, !tbaa !21
  %820 = getelementptr inbounds %struct.code, ptr %21, i32 0, i32 1
  %821 = load i8, ptr %820, align 1, !tbaa !44
  %822 = zext i8 %821 to i32
  %823 = load i32, ptr %18, align 4, !tbaa !20
  %824 = sub i32 %823, %822
  store i32 %824, ptr %18, align 4, !tbaa !20
  br label %825

825:                                              ; preds = %813
  br label %826

826:                                              ; preds = %825
  store i32 0, ptr %23, align 4, !tbaa !20
  %827 = load i64, ptr %17, align 8, !tbaa !21
  %828 = trunc i64 %827 to i32
  %829 = and i32 %828, 7
  %830 = add i32 3, %829
  store i32 %830, ptr %19, align 4, !tbaa !20
  br label %831

831:                                              ; preds = %826
  %832 = load i64, ptr %17, align 8, !tbaa !21
  %833 = lshr i64 %832, 3
  store i64 %833, ptr %17, align 8, !tbaa !21
  %834 = load i32, ptr %18, align 4, !tbaa !20
  %835 = sub i32 %834, 3
  store i32 %835, ptr %18, align 4, !tbaa !20
  br label %836

836:                                              ; preds = %831
  br label %837

837:                                              ; preds = %836
  br label %906

838:                                              ; preds = %765
  br label %839

839:                                              ; preds = %838
  br label %840

840:                                              ; preds = %877, %839
  %841 = load i32, ptr %18, align 4, !tbaa !20
  %842 = getelementptr inbounds %struct.code, ptr %21, i32 0, i32 1
  %843 = load i8, ptr %842, align 1, !tbaa !44
  %844 = zext i8 %843 to i32
  %845 = add nsw i32 %844, 7
  %846 = icmp ult i32 %841, %845
  br i1 %846, label %847, label %878

847:                                              ; preds = %840
  br label %848

848:                                              ; preds = %847
  br label %849

849:                                              ; preds = %848
  %850 = load i32, ptr %15, align 4, !tbaa !20
  %851 = icmp eq i32 %850, 0
  br i1 %851, label %852, label %860

852:                                              ; preds = %849
  %853 = load ptr, ptr %8, align 8, !tbaa !5
  %854 = load ptr, ptr %9, align 8, !tbaa !5
  %855 = call i32 %853(ptr noundef %854, ptr noundef %13)
  store i32 %855, ptr %15, align 4, !tbaa !20
  %856 = load i32, ptr %15, align 4, !tbaa !20
  %857 = icmp eq i32 %856, 0
  br i1 %857, label %858, label %859

858:                                              ; preds = %852
  store ptr null, ptr %13, align 8, !tbaa !5
  store i32 -5, ptr %24, align 4, !tbaa !20
  br label %1784

859:                                              ; preds = %852
  br label %860

860:                                              ; preds = %859, %849
  br label %861

861:                                              ; preds = %860
  br label %862

862:                                              ; preds = %861
  %863 = load i32, ptr %15, align 4, !tbaa !20
  %864 = add i32 %863, -1
  store i32 %864, ptr %15, align 4, !tbaa !20
  %865 = load ptr, ptr %13, align 8, !tbaa !5
  %866 = getelementptr inbounds i8, ptr %865, i32 1
  store ptr %866, ptr %13, align 8, !tbaa !5
  %867 = load i8, ptr %865, align 1, !tbaa !24
  %868 = zext i8 %867 to i64
  %869 = load i32, ptr %18, align 4, !tbaa !20
  %870 = zext i32 %869 to i64
  %871 = shl i64 %868, %870
  %872 = load i64, ptr %17, align 8, !tbaa !21
  %873 = add i64 %872, %871
  store i64 %873, ptr %17, align 8, !tbaa !21
  %874 = load i32, ptr %18, align 4, !tbaa !20
  %875 = add i32 %874, 8
  store i32 %875, ptr %18, align 4, !tbaa !20
  br label %876

876:                                              ; preds = %862
  br label %877

877:                                              ; preds = %876
  br label %840, !llvm.loop !50

878:                                              ; preds = %840
  br label %879

879:                                              ; preds = %878
  br label %880

880:                                              ; preds = %879
  br label %881

881:                                              ; preds = %880
  %882 = getelementptr inbounds %struct.code, ptr %21, i32 0, i32 1
  %883 = load i8, ptr %882, align 1, !tbaa !44
  %884 = zext i8 %883 to i32
  %885 = load i64, ptr %17, align 8, !tbaa !21
  %886 = zext i32 %884 to i64
  %887 = lshr i64 %885, %886
  store i64 %887, ptr %17, align 8, !tbaa !21
  %888 = getelementptr inbounds %struct.code, ptr %21, i32 0, i32 1
  %889 = load i8, ptr %888, align 1, !tbaa !44
  %890 = zext i8 %889 to i32
  %891 = load i32, ptr %18, align 4, !tbaa !20
  %892 = sub i32 %891, %890
  store i32 %892, ptr %18, align 4, !tbaa !20
  br label %893

893:                                              ; preds = %881
  br label %894

894:                                              ; preds = %893
  store i32 0, ptr %23, align 4, !tbaa !20
  %895 = load i64, ptr %17, align 8, !tbaa !21
  %896 = trunc i64 %895 to i32
  %897 = and i32 %896, 127
  %898 = add i32 11, %897
  store i32 %898, ptr %19, align 4, !tbaa !20
  br label %899

899:                                              ; preds = %894
  %900 = load i64, ptr %17, align 8, !tbaa !21
  %901 = lshr i64 %900, 7
  store i64 %901, ptr %17, align 8, !tbaa !21
  %902 = load i32, ptr %18, align 4, !tbaa !20
  %903 = sub i32 %902, 7
  store i32 %903, ptr %18, align 4, !tbaa !20
  br label %904

904:                                              ; preds = %899
  br label %905

905:                                              ; preds = %904
  br label %906

906:                                              ; preds = %905, %837
  br label %907

907:                                              ; preds = %906, %764
  %908 = load ptr, ptr %12, align 8, !tbaa !5
  %909 = getelementptr inbounds %struct.inflate_state, ptr %908, i32 0, i32 26
  %910 = load i32, ptr %909, align 4, !tbaa !34
  %911 = load i32, ptr %19, align 4, !tbaa !20
  %912 = add i32 %910, %911
  %913 = load ptr, ptr %12, align 8, !tbaa !5
  %914 = getelementptr inbounds %struct.inflate_state, ptr %913, i32 0, i32 24
  %915 = load i32, ptr %914, align 4, !tbaa !31
  %916 = load ptr, ptr %12, align 8, !tbaa !5
  %917 = getelementptr inbounds %struct.inflate_state, ptr %916, i32 0, i32 25
  %918 = load i32, ptr %917, align 8, !tbaa !32
  %919 = add i32 %915, %918
  %920 = icmp ugt i32 %912, %919
  br i1 %920, label %921, label %926

921:                                              ; preds = %907
  %922 = load ptr, ptr %7, align 8, !tbaa !5
  %923 = getelementptr inbounds %struct.z_stream_s, ptr %922, i32 0, i32 6
  store ptr @.str.5, ptr %923, align 8, !tbaa !13
  %924 = load ptr, ptr %12, align 8, !tbaa !5
  %925 = getelementptr inbounds %struct.inflate_state, ptr %924, i32 0, i32 0
  store i32 27, ptr %925, align 8, !tbaa !14
  br label %944

926:                                              ; preds = %907
  br label %927

927:                                              ; preds = %931, %926
  %928 = load i32, ptr %19, align 4, !tbaa !20
  %929 = add i32 %928, -1
  store i32 %929, ptr %19, align 4, !tbaa !20
  %930 = icmp ne i32 %928, 0
  br i1 %930, label %931, label %942

931:                                              ; preds = %927
  %932 = load i32, ptr %23, align 4, !tbaa !20
  %933 = trunc i32 %932 to i16
  %934 = load ptr, ptr %12, align 8, !tbaa !5
  %935 = getelementptr inbounds %struct.inflate_state, ptr %934, i32 0, i32 28
  %936 = load ptr, ptr %12, align 8, !tbaa !5
  %937 = getelementptr inbounds %struct.inflate_state, ptr %936, i32 0, i32 26
  %938 = load i32, ptr %937, align 4, !tbaa !34
  %939 = add i32 %938, 1
  store i32 %939, ptr %937, align 4, !tbaa !34
  %940 = zext i32 %938 to i64
  %941 = getelementptr inbounds [320 x i16], ptr %935, i64 0, i64 %940
  store i16 %933, ptr %941, align 2, !tbaa !36
  br label %927, !llvm.loop !51

942:                                              ; preds = %927
  br label %943

943:                                              ; preds = %942, %661
  br label %537, !llvm.loop !52

944:                                              ; preds = %921, %738, %537
  %945 = load ptr, ptr %12, align 8, !tbaa !5
  %946 = getelementptr inbounds %struct.inflate_state, ptr %945, i32 0, i32 0
  %947 = load i32, ptr %946, align 8, !tbaa !14
  %948 = icmp eq i32 %947, 27
  br i1 %948, label %949, label %950

949:                                              ; preds = %944
  br label %1783

950:                                              ; preds = %944
  %951 = load ptr, ptr %12, align 8, !tbaa !5
  %952 = getelementptr inbounds %struct.inflate_state, ptr %951, i32 0, i32 30
  %953 = getelementptr inbounds [2048 x %struct.code], ptr %952, i64 0, i64 0
  %954 = load ptr, ptr %12, align 8, !tbaa !5
  %955 = getelementptr inbounds %struct.inflate_state, ptr %954, i32 0, i32 27
  store ptr %953, ptr %955, align 8, !tbaa !40
  %956 = load ptr, ptr %12, align 8, !tbaa !5
  %957 = getelementptr inbounds %struct.inflate_state, ptr %956, i32 0, i32 27
  %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 19
  store ptr %958, ptr %960, align 8, !tbaa !41
  %961 = load ptr, ptr %12, align 8, !tbaa !5
  %962 = getelementptr inbounds %struct.inflate_state, ptr %961, i32 0, i32 21
  store i32 9, ptr %962, align 8, !tbaa !42
  %963 = load ptr, ptr %12, align 8, !tbaa !5
  %964 = getelementptr inbounds %struct.inflate_state, ptr %963, i32 0, i32 28
  %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 24
  %968 = load i32, ptr %967, align 4, !tbaa !31
  %969 = load ptr, ptr %12, align 8, !tbaa !5
  %970 = getelementptr inbounds %struct.inflate_state, ptr %969, i32 0, i32 27
  %971 = load ptr, ptr %12, align 8, !tbaa !5
  %972 = getelementptr inbounds %struct.inflate_state, ptr %971, i32 0, i32 21
  %973 = load ptr, ptr %12, align 8, !tbaa !5
  %974 = getelementptr inbounds %struct.inflate_state, ptr %973, i32 0, i32 29
  %975 = getelementptr inbounds [288 x i16], ptr %974, i64 0, i64 0
  %976 = call i32 @inflate_table(i32 noundef 1, ptr noundef %965, i32 noundef %968, ptr noundef %970, ptr noundef %972, ptr noundef %975)
  store i32 %976, ptr %24, align 4, !tbaa !20
  %977 = load i32, ptr %24, align 4, !tbaa !20
  %978 = icmp ne i32 %977, 0
  br i1 %978, label %979, label %984

979:                                              ; preds = %950
  %980 = load ptr, ptr %7, align 8, !tbaa !5
  %981 = getelementptr inbounds %struct.z_stream_s, ptr %980, i32 0, i32 6
  store ptr @.str.6, ptr %981, align 8, !tbaa !13
  %982 = load ptr, ptr %12, align 8, !tbaa !5
  %983 = getelementptr inbounds %struct.inflate_state, ptr %982, i32 0, i32 0
  store i32 27, ptr %983, align 8, !tbaa !14
  br label %1783

984:                                              ; preds = %950
  %985 = load ptr, ptr %12, align 8, !tbaa !5
  %986 = getelementptr inbounds %struct.inflate_state, ptr %985, i32 0, i32 27
  %987 = load ptr, ptr %986, align 8, !tbaa !40
  %988 = load ptr, ptr %12, align 8, !tbaa !5
  %989 = getelementptr inbounds %struct.inflate_state, ptr %988, i32 0, i32 20
  store ptr %987, ptr %989, align 8, !tbaa !53
  %990 = load ptr, ptr %12, align 8, !tbaa !5
  %991 = getelementptr inbounds %struct.inflate_state, ptr %990, i32 0, i32 22
  store i32 6, ptr %991, align 4, !tbaa !54
  %992 = load ptr, ptr %12, align 8, !tbaa !5
  %993 = getelementptr inbounds %struct.inflate_state, ptr %992, i32 0, i32 28
  %994 = getelementptr inbounds [320 x i16], ptr %993, i64 0, i64 0
  %995 = load ptr, ptr %12, align 8, !tbaa !5
  %996 = getelementptr inbounds %struct.inflate_state, ptr %995, i32 0, i32 24
  %997 = load i32, ptr %996, align 4, !tbaa !31
  %998 = zext i32 %997 to i64
  %999 = getelementptr inbounds i16, ptr %994, i64 %998
  %1000 = load ptr, ptr %12, align 8, !tbaa !5
  %1001 = getelementptr inbounds %struct.inflate_state, ptr %1000, i32 0, i32 25
  %1002 = load i32, ptr %1001, align 8, !tbaa !32
  %1003 = load ptr, ptr %12, align 8, !tbaa !5
  %1004 = getelementptr inbounds %struct.inflate_state, ptr %1003, i32 0, i32 27
  %1005 = load ptr, ptr %12, align 8, !tbaa !5
  %1006 = getelementptr inbounds %struct.inflate_state, ptr %1005, i32 0, i32 22
  %1007 = load ptr, ptr %12, align 8, !tbaa !5
  %1008 = getelementptr inbounds %struct.inflate_state, ptr %1007, i32 0, i32 29
  %1009 = getelementptr inbounds [288 x i16], ptr %1008, i64 0, i64 0
  %1010 = call i32 @inflate_table(i32 noundef 2, ptr noundef %999, i32 noundef %1002, ptr noundef %1004, ptr noundef %1006, ptr noundef %1009)
  store i32 %1010, ptr %24, align 4, !tbaa !20
  %1011 = load i32, ptr %24, align 4, !tbaa !20
  %1012 = icmp ne i32 %1011, 0
  br i1 %1012, label %1013, label %1018

1013:                                             ; preds = %984
  %1014 = load ptr, ptr %7, align 8, !tbaa !5
  %1015 = getelementptr inbounds %struct.z_stream_s, ptr %1014, i32 0, i32 6
  store ptr @.str.7, ptr %1015, align 8, !tbaa !13
  %1016 = load ptr, ptr %12, align 8, !tbaa !5
  %1017 = getelementptr inbounds %struct.inflate_state, ptr %1016, i32 0, i32 0
  store i32 27, ptr %1017, align 8, !tbaa !14
  br label %1783

1018:                                             ; preds = %984
  %1019 = load ptr, ptr %12, align 8, !tbaa !5
  %1020 = getelementptr inbounds %struct.inflate_state, ptr %1019, i32 0, i32 0
  store i32 18, ptr %1020, align 8, !tbaa !14
  br label %1021

1021:                                             ; preds = %1018, %64
  %1022 = load i32, ptr %15, align 4, !tbaa !20
  %1023 = icmp uge i32 %1022, 6
  br i1 %1023, label %1024, label %1090

1024:                                             ; preds = %1021
  %1025 = load i32, ptr %16, align 4, !tbaa !20
  %1026 = icmp uge i32 %1025, 258
  br i1 %1026, label %1027, label %1090

1027:                                             ; preds = %1024
  br label %1028

1028:                                             ; preds = %1027
  %1029 = load ptr, ptr %14, align 8, !tbaa !5
  %1030 = load ptr, ptr %7, align 8, !tbaa !5
  %1031 = getelementptr inbounds %struct.z_stream_s, ptr %1030, i32 0, i32 3
  store ptr %1029, ptr %1031, align 8, !tbaa !55
  %1032 = load i32, ptr %16, align 4, !tbaa !20
  %1033 = load ptr, ptr %7, align 8, !tbaa !5
  %1034 = getelementptr inbounds %struct.z_stream_s, ptr %1033, i32 0, i32 4
  store i32 %1032, ptr %1034, align 8, !tbaa !56
  %1035 = load ptr, ptr %13, align 8, !tbaa !5
  %1036 = load ptr, ptr %7, align 8, !tbaa !5
  %1037 = getelementptr inbounds %struct.z_stream_s, ptr %1036, i32 0, i32 0
  store ptr %1035, ptr %1037, align 8, !tbaa !18
  %1038 = load i32, ptr %15, align 4, !tbaa !20
  %1039 = load ptr, ptr %7, align 8, !tbaa !5
  %1040 = getelementptr inbounds %struct.z_stream_s, ptr %1039, i32 0, i32 1
  store i32 %1038, ptr %1040, align 8, !tbaa !19
  %1041 = load i64, ptr %17, align 8, !tbaa !21
  %1042 = load ptr, ptr %12, align 8, !tbaa !5
  %1043 = getelementptr inbounds %struct.inflate_state, ptr %1042, i32 0, i32 14
  store i64 %1041, ptr %1043, align 8, !tbaa !57
  %1044 = load i32, ptr %18, align 4, !tbaa !20
  %1045 = load ptr, ptr %12, align 8, !tbaa !5
  %1046 = getelementptr inbounds %struct.inflate_state, ptr %1045, i32 0, i32 15
  store i32 %1044, ptr %1046, align 8, !tbaa !58
  br label %1047

1047:                                             ; preds = %1028
  br label %1048

1048:                                             ; preds = %1047
  %1049 = load ptr, ptr %12, align 8, !tbaa !5
  %1050 = getelementptr inbounds %struct.inflate_state, ptr %1049, i32 0, i32 11
  %1051 = load i32, ptr %1050, align 8, !tbaa !17
  %1052 = load ptr, ptr %12, align 8, !tbaa !5
  %1053 = getelementptr inbounds %struct.inflate_state, ptr %1052, i32 0, i32 10
  %1054 = load i32, ptr %1053, align 4, !tbaa !23
  %1055 = icmp ult i32 %1051, %1054
  br i1 %1055, label %1056, label %1064

1056:                                             ; preds = %1048
  %1057 = load ptr, ptr %12, align 8, !tbaa !5
  %1058 = getelementptr inbounds %struct.inflate_state, ptr %1057, i32 0, i32 10
  %1059 = load i32, ptr %1058, align 4, !tbaa !23
  %1060 = load i32, ptr %16, align 4, !tbaa !20
  %1061 = sub i32 %1059, %1060
  %1062 = load ptr, ptr %12, align 8, !tbaa !5
  %1063 = getelementptr inbounds %struct.inflate_state, ptr %1062, i32 0, i32 11
  store i32 %1061, ptr %1063, align 8, !tbaa !17
  br label %1064

1064:                                             ; preds = %1056, %1048
  %1065 = load ptr, ptr %7, align 8, !tbaa !5
  %1066 = load ptr, ptr %12, align 8, !tbaa !5
  %1067 = getelementptr inbounds %struct.inflate_state, ptr %1066, i32 0, i32 10
  %1068 = load i32, ptr %1067, align 4, !tbaa !23
  call void @inflate_fast(ptr noundef %1065, i32 noundef %1068)
  br label %1069

1069:                                             ; preds = %1064
  %1070 = load ptr, ptr %7, align 8, !tbaa !5
  %1071 = getelementptr inbounds %struct.z_stream_s, ptr %1070, i32 0, i32 3
  %1072 = load ptr, ptr %1071, align 8, !tbaa !55
  store ptr %1072, ptr %14, align 8, !tbaa !5
  %1073 = load ptr, ptr %7, align 8, !tbaa !5
  %1074 = getelementptr inbounds %struct.z_stream_s, ptr %1073, i32 0, i32 4
  %1075 = load i32, ptr %1074, align 8, !tbaa !56
  store i32 %1075, ptr %16, align 4, !tbaa !20
  %1076 = load ptr, ptr %7, align 8, !tbaa !5
  %1077 = getelementptr inbounds %struct.z_stream_s, ptr %1076, i32 0, i32 0
  %1078 = load ptr, ptr %1077, align 8, !tbaa !18
  store ptr %1078, ptr %13, align 8, !tbaa !5
  %1079 = load ptr, ptr %7, align 8, !tbaa !5
  %1080 = getelementptr inbounds %struct.z_stream_s, ptr %1079, i32 0, i32 1
  %1081 = load i32, ptr %1080, align 8, !tbaa !19
  store i32 %1081, ptr %15, align 4, !tbaa !20
  %1082 = load ptr, ptr %12, align 8, !tbaa !5
  %1083 = getelementptr inbounds %struct.inflate_state, ptr %1082, i32 0, i32 14
  %1084 = load i64, ptr %1083, align 8, !tbaa !57
  store i64 %1084, ptr %17, align 8, !tbaa !21
  %1085 = load ptr, ptr %12, align 8, !tbaa !5
  %1086 = getelementptr inbounds %struct.inflate_state, ptr %1085, i32 0, i32 15
  %1087 = load i32, ptr %1086, align 8, !tbaa !58
  store i32 %1087, ptr %18, align 4, !tbaa !20
  br label %1088

1088:                                             ; preds = %1069
  br label %1089

1089:                                             ; preds = %1088
  br label %1783

1090:                                             ; preds = %1024, %1021
  br label %1091

1091:                                             ; preds = %1141, %1090
  %1092 = load ptr, ptr %12, align 8, !tbaa !5
  %1093 = getelementptr inbounds %struct.inflate_state, ptr %1092, i32 0, i32 19
  %1094 = load ptr, ptr %1093, align 8, !tbaa !41
  %1095 = load i64, ptr %17, align 8, !tbaa !21
  %1096 = trunc i64 %1095 to i32
  %1097 = load ptr, ptr %12, align 8, !tbaa !5
  %1098 = getelementptr inbounds %struct.inflate_state, ptr %1097, i32 0, i32 21
  %1099 = load i32, ptr %1098, align 8, !tbaa !42
  %1100 = shl i32 1, %1099
  %1101 = sub i32 %1100, 1
  %1102 = and i32 %1096, %1101
  %1103 = zext i32 %1102 to i64
  %1104 = getelementptr inbounds %struct.code, ptr %1094, i64 %1103
  call void @llvm.memcpy.p0.p0.i64(ptr align 2 %21, ptr align 2 %1104, i64 4, i1 false), !tbaa.struct !43
  %1105 = getelementptr inbounds %struct.code, ptr %21, i32 0, i32 1
  %1106 = load i8, ptr %1105, align 1, !tbaa !44
  %1107 = zext i8 %1106 to i32
  %1108 = load i32, ptr %18, align 4, !tbaa !20
  %1109 = icmp ule i32 %1107, %1108
  br i1 %1109, label %1110, label %1111

1110:                                             ; preds = %1091
  br label %1142

1111:                                             ; preds = %1091
  br label %1112

1112:                                             ; preds = %1111
  br label %1113

1113:                                             ; preds = %1112
  %1114 = load i32, ptr %15, align 4, !tbaa !20
  %1115 = icmp eq i32 %1114, 0
  br i1 %1115, label %1116, label %1124

1116:                                             ; preds = %1113
  %1117 = load ptr, ptr %8, align 8, !tbaa !5
  %1118 = load ptr, ptr %9, align 8, !tbaa !5
  %1119 = call i32 %1117(ptr noundef %1118, ptr noundef %13)
  store i32 %1119, ptr %15, align 4, !tbaa !20
  %1120 = load i32, ptr %15, align 4, !tbaa !20
  %1121 = icmp eq i32 %1120, 0
  br i1 %1121, label %1122, label %1123

1122:                                             ; preds = %1116
  store ptr null, ptr %13, align 8, !tbaa !5
  store i32 -5, ptr %24, align 4, !tbaa !20
  br label %1784

1123:                                             ; preds = %1116
  br label %1124

1124:                                             ; preds = %1123, %1113
  br label %1125

1125:                                             ; preds = %1124
  br label %1126

1126:                                             ; preds = %1125
  %1127 = load i32, ptr %15, align 4, !tbaa !20
  %1128 = add i32 %1127, -1
  store i32 %1128, ptr %15, align 4, !tbaa !20
  %1129 = load ptr, ptr %13, align 8, !tbaa !5
  %1130 = getelementptr inbounds i8, ptr %1129, i32 1
  store ptr %1130, ptr %13, align 8, !tbaa !5
  %1131 = load i8, ptr %1129, align 1, !tbaa !24
  %1132 = zext i8 %1131 to i64
  %1133 = load i32, ptr %18, align 4, !tbaa !20
  %1134 = zext i32 %1133 to i64
  %1135 = shl i64 %1132, %1134
  %1136 = load i64, ptr %17, align 8, !tbaa !21
  %1137 = add i64 %1136, %1135
  store i64 %1137, ptr %17, align 8, !tbaa !21
  %1138 = load i32, ptr %18, align 4, !tbaa !20
  %1139 = add i32 %1138, 8
  store i32 %1139, ptr %18, align 4, !tbaa !20
  br label %1140

1140:                                             ; preds = %1126
  br label %1141

1141:                                             ; preds = %1140
  br label %1091

1142:                                             ; preds = %1110
  %1143 = getelementptr inbounds %struct.code, ptr %21, i32 0, i32 0
  %1144 = load i8, ptr %1143, align 2, !tbaa !59
  %1145 = zext i8 %1144 to i32
  %1146 = icmp ne i32 %1145, 0
  br i1 %1146, label %1147, label %1236

1147:                                             ; preds = %1142
  %1148 = getelementptr inbounds %struct.code, ptr %21, i32 0, i32 0
  %1149 = load i8, ptr %1148, align 2, !tbaa !59
  %1150 = zext i8 %1149 to i32
  %1151 = and i32 %1150, 240
  %1152 = icmp eq i32 %1151, 0
  br i1 %1152, label %1153, label %1236

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

1154:                                             ; preds = %1220, %1153
  %1155 = load ptr, ptr %12, align 8, !tbaa !5
  %1156 = getelementptr inbounds %struct.inflate_state, ptr %1155, i32 0, i32 19
  %1157 = load ptr, ptr %1156, align 8, !tbaa !41
  %1158 = getelementptr inbounds %struct.code, ptr %22, i32 0, i32 2
  %1159 = load i16, ptr %1158, align 2, !tbaa !46
  %1160 = zext i16 %1159 to i32
  %1161 = load i64, ptr %17, align 8, !tbaa !21
  %1162 = trunc i64 %1161 to i32
  %1163 = getelementptr inbounds %struct.code, ptr %22, i32 0, i32 1
  %1164 = load i8, ptr %1163, align 1, !tbaa !44
  %1165 = zext i8 %1164 to i32
  %1166 = getelementptr inbounds %struct.code, ptr %22, i32 0, i32 0
  %1167 = load i8, ptr %1166, align 2, !tbaa !59
  %1168 = zext i8 %1167 to i32
  %1169 = add nsw i32 %1165, %1168
  %1170 = shl i32 1, %1169
  %1171 = sub i32 %1170, 1
  %1172 = and i32 %1162, %1171
  %1173 = getelementptr inbounds %struct.code, ptr %22, i32 0, i32 1
  %1174 = load i8, ptr %1173, align 1, !tbaa !44
  %1175 = zext i8 %1174 to i32
  %1176 = lshr i32 %1172, %1175
  %1177 = add i32 %1160, %1176
  %1178 = zext i32 %1177 to i64
  %1179 = getelementptr inbounds %struct.code, ptr %1157, i64 %1178
  call void @llvm.memcpy.p0.p0.i64(ptr align 2 %21, ptr align 2 %1179, i64 4, i1 false), !tbaa.struct !43
  %1180 = getelementptr inbounds %struct.code, ptr %22, i32 0, i32 1
  %1181 = load i8, ptr %1180, align 1, !tbaa !44
  %1182 = zext i8 %1181 to i32
  %1183 = getelementptr inbounds %struct.code, ptr %21, i32 0, i32 1
  %1184 = load i8, ptr %1183, align 1, !tbaa !44
  %1185 = zext i8 %1184 to i32
  %1186 = add nsw i32 %1182, %1185
  %1187 = load i32, ptr %18, align 4, !tbaa !20
  %1188 = icmp ule i32 %1186, %1187
  br i1 %1188, label %1189, label %1190

1189:                                             ; preds = %1154
  br label %1221

1190:                                             ; preds = %1154
  br label %1191

1191:                                             ; preds = %1190
  br label %1192

1192:                                             ; preds = %1191
  %1193 = load i32, ptr %15, align 4, !tbaa !20
  %1194 = icmp eq i32 %1193, 0
  br i1 %1194, label %1195, label %1203

1195:                                             ; preds = %1192
  %1196 = load ptr, ptr %8, align 8, !tbaa !5
  %1197 = load ptr, ptr %9, align 8, !tbaa !5
  %1198 = call i32 %1196(ptr noundef %1197, ptr noundef %13)
  store i32 %1198, ptr %15, align 4, !tbaa !20
  %1199 = load i32, ptr %15, align 4, !tbaa !20
  %1200 = icmp eq i32 %1199, 0
  br i1 %1200, label %1201, label %1202

1201:                                             ; preds = %1195
  store ptr null, ptr %13, align 8, !tbaa !5
  store i32 -5, ptr %24, align 4, !tbaa !20
  br label %1784

1202:                                             ; preds = %1195
  br label %1203

1203:                                             ; preds = %1202, %1192
  br label %1204

1204:                                             ; preds = %1203
  br label %1205

1205:                                             ; preds = %1204
  %1206 = load i32, ptr %15, align 4, !tbaa !20
  %1207 = add i32 %1206, -1
  store i32 %1207, ptr %15, align 4, !tbaa !20
  %1208 = load ptr, ptr %13, align 8, !tbaa !5
  %1209 = getelementptr inbounds i8, ptr %1208, i32 1
  store ptr %1209, ptr %13, align 8, !tbaa !5
  %1210 = load i8, ptr %1208, align 1, !tbaa !24
  %1211 = zext i8 %1210 to i64
  %1212 = load i32, ptr %18, align 4, !tbaa !20
  %1213 = zext i32 %1212 to i64
  %1214 = shl i64 %1211, %1213
  %1215 = load i64, ptr %17, align 8, !tbaa !21
  %1216 = add i64 %1215, %1214
  store i64 %1216, ptr %17, align 8, !tbaa !21
  %1217 = load i32, ptr %18, align 4, !tbaa !20
  %1218 = add i32 %1217, 8
  store i32 %1218, ptr %18, align 4, !tbaa !20
  br label %1219

1219:                                             ; preds = %1205
  br label %1220

1220:                                             ; preds = %1219
  br label %1154

1221:                                             ; preds = %1189
  br label %1222

1222:                                             ; preds = %1221
  %1223 = getelementptr inbounds %struct.code, ptr %22, i32 0, i32 1
  %1224 = load i8, ptr %1223, align 1, !tbaa !44
  %1225 = zext i8 %1224 to i32
  %1226 = load i64, ptr %17, align 8, !tbaa !21
  %1227 = zext i32 %1225 to i64
  %1228 = lshr i64 %1226, %1227
  store i64 %1228, ptr %17, align 8, !tbaa !21
  %1229 = getelementptr inbounds %struct.code, ptr %22, i32 0, i32 1
  %1230 = load i8, ptr %1229, align 1, !tbaa !44
  %1231 = zext i8 %1230 to i32
  %1232 = load i32, ptr %18, align 4, !tbaa !20
  %1233 = sub i32 %1232, %1231
  store i32 %1233, ptr %18, align 4, !tbaa !20
  br label %1234

1234:                                             ; preds = %1222
  br label %1235

1235:                                             ; preds = %1234
  br label %1236

1236:                                             ; preds = %1235, %1147, %1142
  br label %1237

1237:                                             ; preds = %1236
  %1238 = getelementptr inbounds %struct.code, ptr %21, i32 0, i32 1
  %1239 = load i8, ptr %1238, align 1, !tbaa !44
  %1240 = zext i8 %1239 to i32
  %1241 = load i64, ptr %17, align 8, !tbaa !21
  %1242 = zext i32 %1240 to i64
  %1243 = lshr i64 %1241, %1242
  store i64 %1243, ptr %17, align 8, !tbaa !21
  %1244 = getelementptr inbounds %struct.code, ptr %21, i32 0, i32 1
  %1245 = load i8, ptr %1244, align 1, !tbaa !44
  %1246 = zext i8 %1245 to i32
  %1247 = load i32, ptr %18, align 4, !tbaa !20
  %1248 = sub i32 %1247, %1246
  store i32 %1248, ptr %18, align 4, !tbaa !20
  br label %1249

1249:                                             ; preds = %1237
  br label %1250

1250:                                             ; preds = %1249
  %1251 = getelementptr inbounds %struct.code, ptr %21, i32 0, i32 2
  %1252 = load i16, ptr %1251, align 2, !tbaa !46
  %1253 = zext i16 %1252 to i32
  %1254 = load ptr, ptr %12, align 8, !tbaa !5
  %1255 = getelementptr inbounds %struct.inflate_state, ptr %1254, i32 0, i32 16
  store i32 %1253, ptr %1255, align 4, !tbaa !28
  %1256 = getelementptr inbounds %struct.code, ptr %21, i32 0, i32 0
  %1257 = load i8, ptr %1256, align 2, !tbaa !59
  %1258 = zext i8 %1257 to i32
  %1259 = icmp eq i32 %1258, 0
  br i1 %1259, label %1260, label %1295

1260:                                             ; preds = %1250
  br label %1261

1261:                                             ; preds = %1260
  %1262 = load i32, ptr %16, align 4, !tbaa !20
  %1263 = icmp eq i32 %1262, 0
  br i1 %1263, label %1264, label %1282

1264:                                             ; preds = %1261
  %1265 = load ptr, ptr %12, align 8, !tbaa !5
  %1266 = getelementptr inbounds %struct.inflate_state, ptr %1265, i32 0, i32 13
  %1267 = load ptr, ptr %1266, align 8, !tbaa !22
  store ptr %1267, ptr %14, align 8, !tbaa !5
  %1268 = load ptr, ptr %12, align 8, !tbaa !5
  %1269 = getelementptr inbounds %struct.inflate_state, ptr %1268, i32 0, i32 10
  %1270 = load i32, ptr %1269, align 4, !tbaa !23
  store i32 %1270, ptr %16, align 4, !tbaa !20
  %1271 = load i32, ptr %16, align 4, !tbaa !20
  %1272 = load ptr, ptr %12, align 8, !tbaa !5
  %1273 = getelementptr inbounds %struct.inflate_state, ptr %1272, i32 0, i32 11
  store i32 %1271, ptr %1273, align 8, !tbaa !17
  %1274 = load ptr, ptr %10, align 8, !tbaa !5
  %1275 = load ptr, ptr %11, align 8, !tbaa !5
  %1276 = load ptr, ptr %14, align 8, !tbaa !5
  %1277 = load i32, ptr %16, align 4, !tbaa !20
  %1278 = call i32 %1274(ptr noundef %1275, ptr noundef %1276, i32 noundef %1277)
  %1279 = icmp ne i32 %1278, 0
  br i1 %1279, label %1280, label %1281

1280:                                             ; preds = %1264
  store i32 -5, ptr %24, align 4, !tbaa !20
  br label %1784

1281:                                             ; preds = %1264
  br label %1282

1282:                                             ; preds = %1281, %1261
  br label %1283

1283:                                             ; preds = %1282
  br label %1284

1284:                                             ; preds = %1283
  %1285 = load ptr, ptr %12, align 8, !tbaa !5
  %1286 = getelementptr inbounds %struct.inflate_state, ptr %1285, i32 0, i32 16
  %1287 = load i32, ptr %1286, align 4, !tbaa !28
  %1288 = trunc i32 %1287 to i8
  %1289 = load ptr, ptr %14, align 8, !tbaa !5
  %1290 = getelementptr inbounds i8, ptr %1289, i32 1
  store ptr %1290, ptr %14, align 8, !tbaa !5
  store i8 %1288, ptr %1289, align 1, !tbaa !24
  %1291 = load i32, ptr %16, align 4, !tbaa !20
  %1292 = add i32 %1291, -1
  store i32 %1292, ptr %16, align 4, !tbaa !20
  %1293 = load ptr, ptr %12, align 8, !tbaa !5
  %1294 = getelementptr inbounds %struct.inflate_state, ptr %1293, i32 0, i32 0
  store i32 18, ptr %1294, align 8, !tbaa !14
  br label %1783

1295:                                             ; preds = %1250
  %1296 = getelementptr inbounds %struct.code, ptr %21, i32 0, i32 0
  %1297 = load i8, ptr %1296, align 2, !tbaa !59
  %1298 = zext i8 %1297 to i32
  %1299 = and i32 %1298, 32
  %1300 = icmp ne i32 %1299, 0
  br i1 %1300, label %1301, label %1304

1301:                                             ; preds = %1295
  %1302 = load ptr, ptr %12, align 8, !tbaa !5
  %1303 = getelementptr inbounds %struct.inflate_state, ptr %1302, i32 0, i32 0
  store i32 11, ptr %1303, align 8, !tbaa !14
  br label %1783

1304:                                             ; preds = %1295
  %1305 = getelementptr inbounds %struct.code, ptr %21, i32 0, i32 0
  %1306 = load i8, ptr %1305, align 2, !tbaa !59
  %1307 = zext i8 %1306 to i32
  %1308 = and i32 %1307, 64
  %1309 = icmp ne i32 %1308, 0
  br i1 %1309, label %1310, label %1315

1310:                                             ; preds = %1304
  %1311 = load ptr, ptr %7, align 8, !tbaa !5
  %1312 = getelementptr inbounds %struct.z_stream_s, ptr %1311, i32 0, i32 6
  store ptr @.str.8, ptr %1312, align 8, !tbaa !13
  %1313 = load ptr, ptr %12, align 8, !tbaa !5
  %1314 = getelementptr inbounds %struct.inflate_state, ptr %1313, i32 0, i32 0
  store i32 27, ptr %1314, align 8, !tbaa !14
  br label %1783

1315:                                             ; preds = %1304
  %1316 = getelementptr inbounds %struct.code, ptr %21, i32 0, i32 0
  %1317 = load i8, ptr %1316, align 2, !tbaa !59
  %1318 = zext i8 %1317 to i32
  %1319 = and i32 %1318, 15
  %1320 = load ptr, ptr %12, align 8, !tbaa !5
  %1321 = getelementptr inbounds %struct.inflate_state, ptr %1320, i32 0, i32 18
  store i32 %1319, ptr %1321, align 4, !tbaa !60
  %1322 = load ptr, ptr %12, align 8, !tbaa !5
  %1323 = getelementptr inbounds %struct.inflate_state, ptr %1322, i32 0, i32 18
  %1324 = load i32, ptr %1323, align 4, !tbaa !60
  %1325 = icmp ne i32 %1324, 0
  br i1 %1325, label %1326, label %1394

1326:                                             ; preds = %1315
  br label %1327

1327:                                             ; preds = %1326
  br label %1328

1328:                                             ; preds = %1364, %1327
  %1329 = load i32, ptr %18, align 4, !tbaa !20
  %1330 = load ptr, ptr %12, align 8, !tbaa !5
  %1331 = getelementptr inbounds %struct.inflate_state, ptr %1330, i32 0, i32 18
  %1332 = load i32, ptr %1331, align 4, !tbaa !60
  %1333 = icmp ult i32 %1329, %1332
  br i1 %1333, label %1334, label %1365

1334:                                             ; preds = %1328
  br label %1335

1335:                                             ; preds = %1334
  br label %1336

1336:                                             ; preds = %1335
  %1337 = load i32, ptr %15, align 4, !tbaa !20
  %1338 = icmp eq i32 %1337, 0
  br i1 %1338, label %1339, label %1347

1339:                                             ; preds = %1336
  %1340 = load ptr, ptr %8, align 8, !tbaa !5
  %1341 = load ptr, ptr %9, align 8, !tbaa !5
  %1342 = call i32 %1340(ptr noundef %1341, ptr noundef %13)
  store i32 %1342, ptr %15, align 4, !tbaa !20
  %1343 = load i32, ptr %15, align 4, !tbaa !20
  %1344 = icmp eq i32 %1343, 0
  br i1 %1344, label %1345, label %1346

1345:                                             ; preds = %1339
  store ptr null, ptr %13, align 8, !tbaa !5
  store i32 -5, ptr %24, align 4, !tbaa !20
  br label %1784

1346:                                             ; preds = %1339
  br label %1347

1347:                                             ; preds = %1346, %1336
  br label %1348

1348:                                             ; preds = %1347
  br label %1349

1349:                                             ; preds = %1348
  %1350 = load i32, ptr %15, align 4, !tbaa !20
  %1351 = add i32 %1350, -1
  store i32 %1351, ptr %15, align 4, !tbaa !20
  %1352 = load ptr, ptr %13, align 8, !tbaa !5
  %1353 = getelementptr inbounds i8, ptr %1352, i32 1
  store ptr %1353, ptr %13, align 8, !tbaa !5
  %1354 = load i8, ptr %1352, align 1, !tbaa !24
  %1355 = zext i8 %1354 to i64
  %1356 = load i32, ptr %18, align 4, !tbaa !20
  %1357 = zext i32 %1356 to i64
  %1358 = shl i64 %1355, %1357
  %1359 = load i64, ptr %17, align 8, !tbaa !21
  %1360 = add i64 %1359, %1358
  store i64 %1360, ptr %17, align 8, !tbaa !21
  %1361 = load i32, ptr %18, align 4, !tbaa !20
  %1362 = add i32 %1361, 8
  store i32 %1362, ptr %18, align 4, !tbaa !20
  br label %1363

1363:                                             ; preds = %1349
  br label %1364

1364:                                             ; preds = %1363
  br label %1328, !llvm.loop !61

1365:                                             ; preds = %1328
  br label %1366

1366:                                             ; preds = %1365
  br label %1367

1367:                                             ; preds = %1366
  %1368 = load i64, ptr %17, align 8, !tbaa !21
  %1369 = trunc i64 %1368 to i32
  %1370 = load ptr, ptr %12, align 8, !tbaa !5
  %1371 = getelementptr inbounds %struct.inflate_state, ptr %1370, i32 0, i32 18
  %1372 = load i32, ptr %1371, align 4, !tbaa !60
  %1373 = shl i32 1, %1372
  %1374 = sub i32 %1373, 1
  %1375 = and i32 %1369, %1374
  %1376 = load ptr, ptr %12, align 8, !tbaa !5
  %1377 = getelementptr inbounds %struct.inflate_state, ptr %1376, i32 0, i32 16
  %1378 = load i32, ptr %1377, align 4, !tbaa !28
  %1379 = add i32 %1378, %1375
  store i32 %1379, ptr %1377, align 4, !tbaa !28
  br label %1380

1380:                                             ; preds = %1367
  %1381 = load ptr, ptr %12, align 8, !tbaa !5
  %1382 = getelementptr inbounds %struct.inflate_state, ptr %1381, i32 0, i32 18
  %1383 = load i32, ptr %1382, align 4, !tbaa !60
  %1384 = load i64, ptr %17, align 8, !tbaa !21
  %1385 = zext i32 %1383 to i64
  %1386 = lshr i64 %1384, %1385
  store i64 %1386, ptr %17, align 8, !tbaa !21
  %1387 = load ptr, ptr %12, align 8, !tbaa !5
  %1388 = getelementptr inbounds %struct.inflate_state, ptr %1387, i32 0, i32 18
  %1389 = load i32, ptr %1388, align 4, !tbaa !60
  %1390 = load i32, ptr %18, align 4, !tbaa !20
  %1391 = sub i32 %1390, %1389
  store i32 %1391, ptr %18, align 4, !tbaa !20
  br label %1392

1392:                                             ; preds = %1380
  br label %1393

1393:                                             ; preds = %1392
  br label %1394

1394:                                             ; preds = %1393, %1315
  br label %1395

1395:                                             ; preds = %1445, %1394
  %1396 = load ptr, ptr %12, align 8, !tbaa !5
  %1397 = getelementptr inbounds %struct.inflate_state, ptr %1396, i32 0, i32 20
  %1398 = load ptr, ptr %1397, align 8, !tbaa !53
  %1399 = load i64, ptr %17, align 8, !tbaa !21
  %1400 = trunc i64 %1399 to i32
  %1401 = load ptr, ptr %12, align 8, !tbaa !5
  %1402 = getelementptr inbounds %struct.inflate_state, ptr %1401, i32 0, i32 22
  %1403 = load i32, ptr %1402, align 4, !tbaa !54
  %1404 = shl i32 1, %1403
  %1405 = sub i32 %1404, 1
  %1406 = and i32 %1400, %1405
  %1407 = zext i32 %1406 to i64
  %1408 = getelementptr inbounds %struct.code, ptr %1398, i64 %1407
  call void @llvm.memcpy.p0.p0.i64(ptr align 2 %21, ptr align 2 %1408, i64 4, i1 false), !tbaa.struct !43
  %1409 = getelementptr inbounds %struct.code, ptr %21, i32 0, i32 1
  %1410 = load i8, ptr %1409, align 1, !tbaa !44
  %1411 = zext i8 %1410 to i32
  %1412 = load i32, ptr %18, align 4, !tbaa !20
  %1413 = icmp ule i32 %1411, %1412
  br i1 %1413, label %1414, label %1415

1414:                                             ; preds = %1395
  br label %1446

1415:                                             ; preds = %1395
  br label %1416

1416:                                             ; preds = %1415
  br label %1417

1417:                                             ; preds = %1416
  %1418 = load i32, ptr %15, align 4, !tbaa !20
  %1419 = icmp eq i32 %1418, 0
  br i1 %1419, label %1420, label %1428

1420:                                             ; preds = %1417
  %1421 = load ptr, ptr %8, align 8, !tbaa !5
  %1422 = load ptr, ptr %9, align 8, !tbaa !5
  %1423 = call i32 %1421(ptr noundef %1422, ptr noundef %13)
  store i32 %1423, ptr %15, align 4, !tbaa !20
  %1424 = load i32, ptr %15, align 4, !tbaa !20
  %1425 = icmp eq i32 %1424, 0
  br i1 %1425, label %1426, label %1427

1426:                                             ; preds = %1420
  store ptr null, ptr %13, align 8, !tbaa !5
  store i32 -5, ptr %24, align 4, !tbaa !20
  br label %1784

1427:                                             ; preds = %1420
  br label %1428

1428:                                             ; preds = %1427, %1417
  br label %1429

1429:                                             ; preds = %1428
  br label %1430

1430:                                             ; preds = %1429
  %1431 = load i32, ptr %15, align 4, !tbaa !20
  %1432 = add i32 %1431, -1
  store i32 %1432, ptr %15, align 4, !tbaa !20
  %1433 = load ptr, ptr %13, align 8, !tbaa !5
  %1434 = getelementptr inbounds i8, ptr %1433, i32 1
  store ptr %1434, ptr %13, align 8, !tbaa !5
  %1435 = load i8, ptr %1433, align 1, !tbaa !24
  %1436 = zext i8 %1435 to i64
  %1437 = load i32, ptr %18, align 4, !tbaa !20
  %1438 = zext i32 %1437 to i64
  %1439 = shl i64 %1436, %1438
  %1440 = load i64, ptr %17, align 8, !tbaa !21
  %1441 = add i64 %1440, %1439
  store i64 %1441, ptr %17, align 8, !tbaa !21
  %1442 = load i32, ptr %18, align 4, !tbaa !20
  %1443 = add i32 %1442, 8
  store i32 %1443, ptr %18, align 4, !tbaa !20
  br label %1444

1444:                                             ; preds = %1430
  br label %1445

1445:                                             ; preds = %1444
  br label %1395

1446:                                             ; preds = %1414
  %1447 = getelementptr inbounds %struct.code, ptr %21, i32 0, i32 0
  %1448 = load i8, ptr %1447, align 2, !tbaa !59
  %1449 = zext i8 %1448 to i32
  %1450 = and i32 %1449, 240
  %1451 = icmp eq i32 %1450, 0
  br i1 %1451, label %1452, label %1535

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

1453:                                             ; preds = %1519, %1452
  %1454 = load ptr, ptr %12, align 8, !tbaa !5
  %1455 = getelementptr inbounds %struct.inflate_state, ptr %1454, i32 0, i32 20
  %1456 = load ptr, ptr %1455, align 8, !tbaa !53
  %1457 = getelementptr inbounds %struct.code, ptr %22, i32 0, i32 2
  %1458 = load i16, ptr %1457, align 2, !tbaa !46
  %1459 = zext i16 %1458 to i32
  %1460 = load i64, ptr %17, align 8, !tbaa !21
  %1461 = trunc i64 %1460 to i32
  %1462 = getelementptr inbounds %struct.code, ptr %22, i32 0, i32 1
  %1463 = load i8, ptr %1462, align 1, !tbaa !44
  %1464 = zext i8 %1463 to i32
  %1465 = getelementptr inbounds %struct.code, ptr %22, i32 0, i32 0
  %1466 = load i8, ptr %1465, align 2, !tbaa !59
  %1467 = zext i8 %1466 to i32
  %1468 = add nsw i32 %1464, %1467
  %1469 = shl i32 1, %1468
  %1470 = sub i32 %1469, 1
  %1471 = and i32 %1461, %1470
  %1472 = getelementptr inbounds %struct.code, ptr %22, i32 0, i32 1
  %1473 = load i8, ptr %1472, align 1, !tbaa !44
  %1474 = zext i8 %1473 to i32
  %1475 = lshr i32 %1471, %1474
  %1476 = add i32 %1459, %1475
  %1477 = zext i32 %1476 to i64
  %1478 = getelementptr inbounds %struct.code, ptr %1456, i64 %1477
  call void @llvm.memcpy.p0.p0.i64(ptr align 2 %21, ptr align 2 %1478, i64 4, i1 false), !tbaa.struct !43
  %1479 = getelementptr inbounds %struct.code, ptr %22, i32 0, i32 1
  %1480 = load i8, ptr %1479, align 1, !tbaa !44
  %1481 = zext i8 %1480 to i32
  %1482 = getelementptr inbounds %struct.code, ptr %21, i32 0, i32 1
  %1483 = load i8, ptr %1482, align 1, !tbaa !44
  %1484 = zext i8 %1483 to i32
  %1485 = add nsw i32 %1481, %1484
  %1486 = load i32, ptr %18, align 4, !tbaa !20
  %1487 = icmp ule i32 %1485, %1486
  br i1 %1487, label %1488, label %1489

1488:                                             ; preds = %1453
  br label %1520

1489:                                             ; preds = %1453
  br label %1490

1490:                                             ; preds = %1489
  br label %1491

1491:                                             ; preds = %1490
  %1492 = load i32, ptr %15, align 4, !tbaa !20
  %1493 = icmp eq i32 %1492, 0
  br i1 %1493, label %1494, label %1502

1494:                                             ; preds = %1491
  %1495 = load ptr, ptr %8, align 8, !tbaa !5
  %1496 = load ptr, ptr %9, align 8, !tbaa !5
  %1497 = call i32 %1495(ptr noundef %1496, ptr noundef %13)
  store i32 %1497, ptr %15, align 4, !tbaa !20
  %1498 = load i32, ptr %15, align 4, !tbaa !20
  %1499 = icmp eq i32 %1498, 0
  br i1 %1499, label %1500, label %1501

1500:                                             ; preds = %1494
  store ptr null, ptr %13, align 8, !tbaa !5
  store i32 -5, ptr %24, align 4, !tbaa !20
  br label %1784

1501:                                             ; preds = %1494
  br label %1502

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

1503:                                             ; preds = %1502
  br label %1504

1504:                                             ; preds = %1503
  %1505 = load i32, ptr %15, align 4, !tbaa !20
  %1506 = add i32 %1505, -1
  store i32 %1506, ptr %15, align 4, !tbaa !20
  %1507 = load ptr, ptr %13, align 8, !tbaa !5
  %1508 = getelementptr inbounds i8, ptr %1507, i32 1
  store ptr %1508, ptr %13, align 8, !tbaa !5
  %1509 = load i8, ptr %1507, align 1, !tbaa !24
  %1510 = zext i8 %1509 to i64
  %1511 = load i32, ptr %18, align 4, !tbaa !20
  %1512 = zext i32 %1511 to i64
  %1513 = shl i64 %1510, %1512
  %1514 = load i64, ptr %17, align 8, !tbaa !21
  %1515 = add i64 %1514, %1513
  store i64 %1515, ptr %17, align 8, !tbaa !21
  %1516 = load i32, ptr %18, align 4, !tbaa !20
  %1517 = add i32 %1516, 8
  store i32 %1517, ptr %18, align 4, !tbaa !20
  br label %1518

1518:                                             ; preds = %1504
  br label %1519

1519:                                             ; preds = %1518
  br label %1453

1520:                                             ; preds = %1488
  br label %1521

1521:                                             ; preds = %1520
  %1522 = getelementptr inbounds %struct.code, ptr %22, i32 0, i32 1
  %1523 = load i8, ptr %1522, align 1, !tbaa !44
  %1524 = zext i8 %1523 to i32
  %1525 = load i64, ptr %17, align 8, !tbaa !21
  %1526 = zext i32 %1524 to i64
  %1527 = lshr i64 %1525, %1526
  store i64 %1527, ptr %17, align 8, !tbaa !21
  %1528 = getelementptr inbounds %struct.code, ptr %22, i32 0, i32 1
  %1529 = load i8, ptr %1528, align 1, !tbaa !44
  %1530 = zext i8 %1529 to i32
  %1531 = load i32, ptr %18, align 4, !tbaa !20
  %1532 = sub i32 %1531, %1530
  store i32 %1532, ptr %18, align 4, !tbaa !20
  br label %1533

1533:                                             ; preds = %1521
  br label %1534

1534:                                             ; preds = %1533
  br label %1535

1535:                                             ; preds = %1534, %1446
  br label %1536

1536:                                             ; preds = %1535
  %1537 = getelementptr inbounds %struct.code, ptr %21, i32 0, i32 1
  %1538 = load i8, ptr %1537, align 1, !tbaa !44
  %1539 = zext i8 %1538 to i32
  %1540 = load i64, ptr %17, align 8, !tbaa !21
  %1541 = zext i32 %1539 to i64
  %1542 = lshr i64 %1540, %1541
  store i64 %1542, ptr %17, align 8, !tbaa !21
  %1543 = getelementptr inbounds %struct.code, ptr %21, i32 0, i32 1
  %1544 = load i8, ptr %1543, align 1, !tbaa !44
  %1545 = zext i8 %1544 to i32
  %1546 = load i32, ptr %18, align 4, !tbaa !20
  %1547 = sub i32 %1546, %1545
  store i32 %1547, ptr %18, align 4, !tbaa !20
  br label %1548

1548:                                             ; preds = %1536
  br label %1549

1549:                                             ; preds = %1548
  %1550 = getelementptr inbounds %struct.code, ptr %21, i32 0, i32 0
  %1551 = load i8, ptr %1550, align 2, !tbaa !59
  %1552 = zext i8 %1551 to i32
  %1553 = and i32 %1552, 64
  %1554 = icmp ne i32 %1553, 0
  br i1 %1554, label %1555, label %1560

1555:                                             ; preds = %1549
  %1556 = load ptr, ptr %7, align 8, !tbaa !5
  %1557 = getelementptr inbounds %struct.z_stream_s, ptr %1556, i32 0, i32 6
  store ptr @.str.9, ptr %1557, align 8, !tbaa !13
  %1558 = load ptr, ptr %12, align 8, !tbaa !5
  %1559 = getelementptr inbounds %struct.inflate_state, ptr %1558, i32 0, i32 0
  store i32 27, ptr %1559, align 8, !tbaa !14
  br label %1783

1560:                                             ; preds = %1549
  %1561 = getelementptr inbounds %struct.code, ptr %21, i32 0, i32 2
  %1562 = load i16, ptr %1561, align 2, !tbaa !46
  %1563 = zext i16 %1562 to i32
  %1564 = load ptr, ptr %12, align 8, !tbaa !5
  %1565 = getelementptr inbounds %struct.inflate_state, ptr %1564, i32 0, i32 17
  store i32 %1563, ptr %1565, align 8, !tbaa !62
  %1566 = getelementptr inbounds %struct.code, ptr %21, i32 0, i32 0
  %1567 = load i8, ptr %1566, align 2, !tbaa !59
  %1568 = zext i8 %1567 to i32
  %1569 = and i32 %1568, 15
  %1570 = load ptr, ptr %12, align 8, !tbaa !5
  %1571 = getelementptr inbounds %struct.inflate_state, ptr %1570, i32 0, i32 18
  store i32 %1569, ptr %1571, align 4, !tbaa !60
  %1572 = load ptr, ptr %12, align 8, !tbaa !5
  %1573 = getelementptr inbounds %struct.inflate_state, ptr %1572, i32 0, i32 18
  %1574 = load i32, ptr %1573, align 4, !tbaa !60
  %1575 = icmp ne i32 %1574, 0
  br i1 %1575, label %1576, label %1644

1576:                                             ; preds = %1560
  br label %1577

1577:                                             ; preds = %1576
  br label %1578

1578:                                             ; preds = %1614, %1577
  %1579 = load i32, ptr %18, align 4, !tbaa !20
  %1580 = load ptr, ptr %12, align 8, !tbaa !5
  %1581 = getelementptr inbounds %struct.inflate_state, ptr %1580, i32 0, i32 18
  %1582 = load i32, ptr %1581, align 4, !tbaa !60
  %1583 = icmp ult i32 %1579, %1582
  br i1 %1583, label %1584, label %1615

1584:                                             ; preds = %1578
  br label %1585

1585:                                             ; preds = %1584
  br label %1586

1586:                                             ; preds = %1585
  %1587 = load i32, ptr %15, align 4, !tbaa !20
  %1588 = icmp eq i32 %1587, 0
  br i1 %1588, label %1589, label %1597

1589:                                             ; preds = %1586
  %1590 = load ptr, ptr %8, align 8, !tbaa !5
  %1591 = load ptr, ptr %9, align 8, !tbaa !5
  %1592 = call i32 %1590(ptr noundef %1591, ptr noundef %13)
  store i32 %1592, ptr %15, align 4, !tbaa !20
  %1593 = load i32, ptr %15, align 4, !tbaa !20
  %1594 = icmp eq i32 %1593, 0
  br i1 %1594, label %1595, label %1596

1595:                                             ; preds = %1589
  store ptr null, ptr %13, align 8, !tbaa !5
  store i32 -5, ptr %24, align 4, !tbaa !20
  br label %1784

1596:                                             ; preds = %1589
  br label %1597

1597:                                             ; preds = %1596, %1586
  br label %1598

1598:                                             ; preds = %1597
  br label %1599

1599:                                             ; preds = %1598
  %1600 = load i32, ptr %15, align 4, !tbaa !20
  %1601 = add i32 %1600, -1
  store i32 %1601, ptr %15, align 4, !tbaa !20
  %1602 = load ptr, ptr %13, align 8, !tbaa !5
  %1603 = getelementptr inbounds i8, ptr %1602, i32 1
  store ptr %1603, ptr %13, align 8, !tbaa !5
  %1604 = load i8, ptr %1602, align 1, !tbaa !24
  %1605 = zext i8 %1604 to i64
  %1606 = load i32, ptr %18, align 4, !tbaa !20
  %1607 = zext i32 %1606 to i64
  %1608 = shl i64 %1605, %1607
  %1609 = load i64, ptr %17, align 8, !tbaa !21
  %1610 = add i64 %1609, %1608
  store i64 %1610, ptr %17, align 8, !tbaa !21
  %1611 = load i32, ptr %18, align 4, !tbaa !20
  %1612 = add i32 %1611, 8
  store i32 %1612, ptr %18, align 4, !tbaa !20
  br label %1613

1613:                                             ; preds = %1599
  br label %1614

1614:                                             ; preds = %1613
  br label %1578, !llvm.loop !63

1615:                                             ; preds = %1578
  br label %1616

1616:                                             ; preds = %1615
  br label %1617

1617:                                             ; preds = %1616
  %1618 = load i64, ptr %17, align 8, !tbaa !21
  %1619 = trunc i64 %1618 to i32
  %1620 = load ptr, ptr %12, align 8, !tbaa !5
  %1621 = getelementptr inbounds %struct.inflate_state, ptr %1620, i32 0, i32 18
  %1622 = load i32, ptr %1621, align 4, !tbaa !60
  %1623 = shl i32 1, %1622
  %1624 = sub i32 %1623, 1
  %1625 = and i32 %1619, %1624
  %1626 = load ptr, ptr %12, align 8, !tbaa !5
  %1627 = getelementptr inbounds %struct.inflate_state, ptr %1626, i32 0, i32 17
  %1628 = load i32, ptr %1627, align 8, !tbaa !62
  %1629 = add i32 %1628, %1625
  store i32 %1629, ptr %1627, align 8, !tbaa !62
  br label %1630

1630:                                             ; preds = %1617
  %1631 = load ptr, ptr %12, align 8, !tbaa !5
  %1632 = getelementptr inbounds %struct.inflate_state, ptr %1631, i32 0, i32 18
  %1633 = load i32, ptr %1632, align 4, !tbaa !60
  %1634 = load i64, ptr %17, align 8, !tbaa !21
  %1635 = zext i32 %1633 to i64
  %1636 = lshr i64 %1634, %1635
  store i64 %1636, ptr %17, align 8, !tbaa !21
  %1637 = load ptr, ptr %12, align 8, !tbaa !5
  %1638 = getelementptr inbounds %struct.inflate_state, ptr %1637, i32 0, i32 18
  %1639 = load i32, ptr %1638, align 4, !tbaa !60
  %1640 = load i32, ptr %18, align 4, !tbaa !20
  %1641 = sub i32 %1640, %1639
  store i32 %1641, ptr %18, align 4, !tbaa !20
  br label %1642

1642:                                             ; preds = %1630
  br label %1643

1643:                                             ; preds = %1642
  br label %1644

1644:                                             ; preds = %1643, %1560
  %1645 = load ptr, ptr %12, align 8, !tbaa !5
  %1646 = getelementptr inbounds %struct.inflate_state, ptr %1645, i32 0, i32 17
  %1647 = load i32, ptr %1646, align 8, !tbaa !62
  %1648 = load ptr, ptr %12, align 8, !tbaa !5
  %1649 = getelementptr inbounds %struct.inflate_state, ptr %1648, i32 0, i32 10
  %1650 = load i32, ptr %1649, align 4, !tbaa !23
  %1651 = load ptr, ptr %12, align 8, !tbaa !5
  %1652 = getelementptr inbounds %struct.inflate_state, ptr %1651, i32 0, i32 11
  %1653 = load i32, ptr %1652, align 8, !tbaa !17
  %1654 = load ptr, ptr %12, align 8, !tbaa !5
  %1655 = getelementptr inbounds %struct.inflate_state, ptr %1654, i32 0, i32 10
  %1656 = load i32, ptr %1655, align 4, !tbaa !23
  %1657 = icmp ult i32 %1653, %1656
  br i1 %1657, label %1658, label %1660

1658:                                             ; preds = %1644
  %1659 = load i32, ptr %16, align 4, !tbaa !20
  br label %1661

1660:                                             ; preds = %1644
  br label %1661

1661:                                             ; preds = %1660, %1658
  %1662 = phi i32 [ %1659, %1658 ], [ 0, %1660 ]
  %1663 = sub i32 %1650, %1662
  %1664 = icmp ugt i32 %1647, %1663
  br i1 %1664, label %1665, label %1670

1665:                                             ; preds = %1661
  %1666 = load ptr, ptr %7, align 8, !tbaa !5
  %1667 = getelementptr inbounds %struct.z_stream_s, ptr %1666, i32 0, i32 6
  store ptr @.str.10, ptr %1667, align 8, !tbaa !13
  %1668 = load ptr, ptr %12, align 8, !tbaa !5
  %1669 = getelementptr inbounds %struct.inflate_state, ptr %1668, i32 0, i32 0
  store i32 27, ptr %1669, align 8, !tbaa !14
  br label %1783

1670:                                             ; preds = %1661
  br label %1671

1671:                                             ; preds = %1753, %1670
  br label %1672

1672:                                             ; preds = %1671
  %1673 = load i32, ptr %16, align 4, !tbaa !20
  %1674 = icmp eq i32 %1673, 0
  br i1 %1674, label %1675, label %1693

1675:                                             ; preds = %1672
  %1676 = load ptr, ptr %12, align 8, !tbaa !5
  %1677 = getelementptr inbounds %struct.inflate_state, ptr %1676, i32 0, i32 13
  %1678 = load ptr, ptr %1677, align 8, !tbaa !22
  store ptr %1678, ptr %14, align 8, !tbaa !5
  %1679 = load ptr, ptr %12, align 8, !tbaa !5
  %1680 = getelementptr inbounds %struct.inflate_state, ptr %1679, i32 0, i32 10
  %1681 = load i32, ptr %1680, align 4, !tbaa !23
  store i32 %1681, ptr %16, align 4, !tbaa !20
  %1682 = load i32, ptr %16, align 4, !tbaa !20
  %1683 = load ptr, ptr %12, align 8, !tbaa !5
  %1684 = getelementptr inbounds %struct.inflate_state, ptr %1683, i32 0, i32 11
  store i32 %1682, ptr %1684, align 8, !tbaa !17
  %1685 = load ptr, ptr %10, align 8, !tbaa !5
  %1686 = load ptr, ptr %11, align 8, !tbaa !5
  %1687 = load ptr, ptr %14, align 8, !tbaa !5
  %1688 = load i32, ptr %16, align 4, !tbaa !20
  %1689 = call i32 %1685(ptr noundef %1686, ptr noundef %1687, i32 noundef %1688)
  %1690 = icmp ne i32 %1689, 0
  br i1 %1690, label %1691, label %1692

1691:                                             ; preds = %1675
  store i32 -5, ptr %24, align 4, !tbaa !20
  br label %1784

1692:                                             ; preds = %1675
  br label %1693

1693:                                             ; preds = %1692, %1672
  br label %1694

1694:                                             ; preds = %1693
  br label %1695

1695:                                             ; preds = %1694
  %1696 = load ptr, ptr %12, align 8, !tbaa !5
  %1697 = getelementptr inbounds %struct.inflate_state, ptr %1696, i32 0, i32 10
  %1698 = load i32, ptr %1697, align 4, !tbaa !23
  %1699 = load ptr, ptr %12, align 8, !tbaa !5
  %1700 = getelementptr inbounds %struct.inflate_state, ptr %1699, i32 0, i32 17
  %1701 = load i32, ptr %1700, align 8, !tbaa !62
  %1702 = sub i32 %1698, %1701
  store i32 %1702, ptr %19, align 4, !tbaa !20
  %1703 = load i32, ptr %19, align 4, !tbaa !20
  %1704 = load i32, ptr %16, align 4, !tbaa !20
  %1705 = icmp ult i32 %1703, %1704
  br i1 %1705, label %1706, label %1714

1706:                                             ; preds = %1695
  %1707 = load ptr, ptr %14, align 8, !tbaa !5
  %1708 = load i32, ptr %19, align 4, !tbaa !20
  %1709 = zext i32 %1708 to i64
  %1710 = getelementptr inbounds i8, ptr %1707, i64 %1709
  store ptr %1710, ptr %20, align 8, !tbaa !5
  %1711 = load i32, ptr %16, align 4, !tbaa !20
  %1712 = load i32, ptr %19, align 4, !tbaa !20
  %1713 = sub i32 %1711, %1712
  store i32 %1713, ptr %19, align 4, !tbaa !20
  br label %1723

1714:                                             ; preds = %1695
  %1715 = load ptr, ptr %14, align 8, !tbaa !5
  %1716 = load ptr, ptr %12, align 8, !tbaa !5
  %1717 = getelementptr inbounds %struct.inflate_state, ptr %1716, i32 0, i32 17
  %1718 = load i32, ptr %1717, align 8, !tbaa !62
  %1719 = zext i32 %1718 to i64
  %1720 = sub i64 0, %1719
  %1721 = getelementptr inbounds i8, ptr %1715, i64 %1720
  store ptr %1721, ptr %20, align 8, !tbaa !5
  %1722 = load i32, ptr %16, align 4, !tbaa !20
  store i32 %1722, ptr %19, align 4, !tbaa !20
  br label %1723

1723:                                             ; preds = %1714, %1706
  %1724 = load i32, ptr %19, align 4, !tbaa !20
  %1725 = load ptr, ptr %12, align 8, !tbaa !5
  %1726 = getelementptr inbounds %struct.inflate_state, ptr %1725, i32 0, i32 16
  %1727 = load i32, ptr %1726, align 4, !tbaa !28
  %1728 = icmp ugt i32 %1724, %1727
  br i1 %1728, label %1729, label %1733

1729:                                             ; preds = %1723
  %1730 = load ptr, ptr %12, align 8, !tbaa !5
  %1731 = getelementptr inbounds %struct.inflate_state, ptr %1730, i32 0, i32 16
  %1732 = load i32, ptr %1731, align 4, !tbaa !28
  store i32 %1732, ptr %19, align 4, !tbaa !20
  br label %1733

1733:                                             ; preds = %1729, %1723
  %1734 = load i32, ptr %19, align 4, !tbaa !20
  %1735 = load ptr, ptr %12, align 8, !tbaa !5
  %1736 = getelementptr inbounds %struct.inflate_state, ptr %1735, i32 0, i32 16
  %1737 = load i32, ptr %1736, align 4, !tbaa !28
  %1738 = sub i32 %1737, %1734
  store i32 %1738, ptr %1736, align 4, !tbaa !28
  %1739 = load i32, ptr %19, align 4, !tbaa !20
  %1740 = load i32, ptr %16, align 4, !tbaa !20
  %1741 = sub i32 %1740, %1739
  store i32 %1741, ptr %16, align 4, !tbaa !20
  br label %1742

1742:                                             ; preds = %1748, %1733
  %1743 = load ptr, ptr %20, align 8, !tbaa !5
  %1744 = getelementptr inbounds i8, ptr %1743, i32 1
  store ptr %1744, ptr %20, align 8, !tbaa !5
  %1745 = load i8, ptr %1743, align 1, !tbaa !24
  %1746 = load ptr, ptr %14, align 8, !tbaa !5
  %1747 = getelementptr inbounds i8, ptr %1746, i32 1
  store ptr %1747, ptr %14, align 8, !tbaa !5
  store i8 %1745, ptr %1746, align 1, !tbaa !24
  br label %1748

1748:                                             ; preds = %1742
  %1749 = load i32, ptr %19, align 4, !tbaa !20
  %1750 = add i32 %1749, -1
  store i32 %1750, ptr %19, align 4, !tbaa !20
  %1751 = icmp ne i32 %1750, 0
  br i1 %1751, label %1742, label %1752, !llvm.loop !64

1752:                                             ; preds = %1748
  br label %1753

1753:                                             ; preds = %1752
  %1754 = load ptr, ptr %12, align 8, !tbaa !5
  %1755 = getelementptr inbounds %struct.inflate_state, ptr %1754, i32 0, i32 16
  %1756 = load i32, ptr %1755, align 4, !tbaa !28
  %1757 = icmp ne i32 %1756, 0
  br i1 %1757, label %1671, label %1758, !llvm.loop !65

1758:                                             ; preds = %1753
  br label %1783

1759:                                             ; preds = %64
  store i32 1, ptr %24, align 4, !tbaa !20
  %1760 = load i32, ptr %16, align 4, !tbaa !20
  %1761 = load ptr, ptr %12, align 8, !tbaa !5
  %1762 = getelementptr inbounds %struct.inflate_state, ptr %1761, i32 0, i32 10
  %1763 = load i32, ptr %1762, align 4, !tbaa !23
  %1764 = icmp ult i32 %1760, %1763
  br i1 %1764, label %1765, label %1780

1765:                                             ; preds = %1759
  %1766 = load ptr, ptr %10, align 8, !tbaa !5
  %1767 = load ptr, ptr %11, align 8, !tbaa !5
  %1768 = load ptr, ptr %12, align 8, !tbaa !5
  %1769 = getelementptr inbounds %struct.inflate_state, ptr %1768, i32 0, i32 13
  %1770 = load ptr, ptr %1769, align 8, !tbaa !22
  %1771 = load ptr, ptr %12, align 8, !tbaa !5
  %1772 = getelementptr inbounds %struct.inflate_state, ptr %1771, i32 0, i32 10
  %1773 = load i32, ptr %1772, align 4, !tbaa !23
  %1774 = load i32, ptr %16, align 4, !tbaa !20
  %1775 = sub i32 %1773, %1774
  %1776 = call i32 %1766(ptr noundef %1767, ptr noundef %1770, i32 noundef %1775)
  %1777 = icmp ne i32 %1776, 0
  br i1 %1777, label %1778, label %1779

1778:                                             ; preds = %1765
  store i32 -5, ptr %24, align 4, !tbaa !20
  br label %1779

1779:                                             ; preds = %1778, %1765
  br label %1780

1780:                                             ; preds = %1779, %1759
  br label %1784

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

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

1783:                                             ; preds = %1758, %1665, %1555, %1310, %1301, %1284, %1089, %1013, %979, %949, %529, %408, %318, %222, %164, %85
  br label %64

1784:                                             ; preds = %1782, %1781, %1780, %1691, %1595, %1500, %1426, %1345, %1280, %1201, %1122, %858, %790, %697, %625, %581, %440, %337, %278, %254, %193, %104
  %1785 = load ptr, ptr %13, align 8, !tbaa !5
  %1786 = load ptr, ptr %7, align 8, !tbaa !5
  %1787 = getelementptr inbounds %struct.z_stream_s, ptr %1786, i32 0, i32 0
  store ptr %1785, ptr %1787, align 8, !tbaa !18
  %1788 = load i32, ptr %15, align 4, !tbaa !20
  %1789 = load ptr, ptr %7, align 8, !tbaa !5
  %1790 = getelementptr inbounds %struct.z_stream_s, ptr %1789, i32 0, i32 1
  store i32 %1788, ptr %1790, align 8, !tbaa !19
  %1791 = load i32, ptr %24, align 4, !tbaa !20
  store i32 %1791, ptr %6, align 4
  store i32 1, ptr %25, align 4
  br label %1792

1792:                                             ; preds = %1784, %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
  %1793 = load i32, ptr %6, align 4
  ret i32 %1793
}

; Function Attrs: nounwind uwtable
declare hidden void @fixedtables1(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 0}
!15 = !{!"inflate_state", !11, i64 0, !11, i64 4, !11, i64 8, !11, i64 12, !11, i64 16, !11, i64 20, !12, i64 24, !12, i64 32, !6, i64 40, !11, i64 48, !11, i64 52, !11, i64 56, !11, i64 60, !6, i64 64, !12, i64 72, !11, i64 80, !11, i64 84, !11, i64 88, !11, i64 92, !6, i64 96, !6, i64 104, !11, i64 112, !11, i64 116, !11, i64 120, !11, i64 124, !11, i64 128, !11, i64 132, !6, i64 136, !7, i64 144, !7, i64 784, !7, i64 1360}
!16 = !{!15, !11, i64 4}
!17 = !{!15, !11, i64 56}
!18 = !{!10, !6, i64 0}
!19 = !{!10, !11, i64 8}
!20 = !{!11, !11, i64 0}
!21 = !{!12, !12, i64 0}
!22 = !{!15, !6, i64 64}
!23 = !{!15, !11, i64 52}
!24 = !{!7, !7, i64 0}
!25 = distinct !{!25, !26}
!26 = !{!"llvm.loop.mustprogress"}
!27 = distinct !{!27, !26}
!28 = !{!15, !11, i64 84}
!29 = distinct !{!29, !26}
!30 = distinct !{!30, !26}
!31 = !{!15, !11, i64 124}
!32 = !{!15, !11, i64 128}
!33 = !{!15, !11, i64 120}
!34 = !{!15, !11, i64 132}
!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 136}
!41 = !{!15, !6, i64 96}
!42 = !{!15, !11, i64 112}
!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 = distinct !{!52, !26}
!53 = !{!15, !6, i64 104}
!54 = !{!15, !11, i64 116}
!55 = !{!10, !6, i64 24}
!56 = !{!10, !11, i64 32}
!57 = !{!15, !12, i64 72}
!58 = !{!15, !11, i64 80}
!59 = !{!45, !7, i64 0}
!60 = !{!15, !11, i64 92}
!61 = distinct !{!61, !26}
!62 = !{!15, !11, i64 88}
!63 = distinct !{!63, !26}
!64 = distinct !{!64, !26}
!65 = distinct !{!65, !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 }

@z_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 [28 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.10 = 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 @z_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 %769, 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 %769, label %12

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

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

.split1138:                                       ; preds = %12, %17
  %20 = phi i32 [ %19, %17 ], [ 0, %12 ]
  %21 = getelementptr inbounds i8, ptr %10, i64 64
  %22 = load ptr, ptr %21, align 8, !tbaa !20
  %23 = getelementptr inbounds i8, ptr %10, i64 52
  %24 = load i32, ptr %23, align 4, !tbaa !21
  %25 = getelementptr inbounds i8, ptr %10, i64 124
  %26 = getelementptr inbounds i8, ptr %10, i64 128
  %27 = getelementptr inbounds i8, ptr %10, i64 120
  %28 = getelementptr inbounds i8, ptr %10, i64 132
  %29 = getelementptr inbounds i8, ptr %10, i64 144
  %30 = getelementptr inbounds i8, ptr %10, i64 1360
  %31 = getelementptr inbounds i8, ptr %10, i64 136
  %32 = getelementptr inbounds i8, ptr %10, i64 96
  %33 = getelementptr inbounds i8, ptr %10, i64 112
  %34 = getelementptr inbounds i8, ptr %10, i64 784
  %35 = getelementptr inbounds i8, ptr %10, i64 104
  %36 = getelementptr inbounds i8, ptr %10, i64 116
  %37 = getelementptr inbounds i8, ptr %10, i64 84
  %38 = getelementptr inbounds i8, ptr %10, i64 92
  %39 = getelementptr inbounds i8, ptr %10, i64 88
  %40 = getelementptr inbounds i8, ptr %0, i64 24
  %41 = getelementptr inbounds i8, ptr %0, i64 32
  %42 = getelementptr inbounds i8, ptr %0, i64 8
  %43 = getelementptr inbounds i8, ptr %10, i64 72
  %44 = getelementptr inbounds i8, ptr %10, i64 80
  br label %45

45:                                               ; preds = %.thread, %.split1138
  %46 = phi i32 [ 11, %.split1138 ], [ %.pre, %.thread ]
  %.0594 = phi ptr [ %22, %.split1138 ], [ %.7601, %.thread ]
  %.0567 = phi i32 [ %20, %.split1138 ], [ %.43, %.thread ]
  %.0560 = phi i32 [ %24, %.split1138 ], [ %.6566, %.thread ]
  %.0533 = phi i64 [ 0, %.split1138 ], [ %.26559, %.thread ]
  %.0526 = phi i32 [ 0, %.split1138 ], [ %.26, %.thread ]
  switch i32 %46, label %.loopexit696 [
    i32 11, label %49
    i32 13, label %81
    i32 15, label %.preheader705
    i32 18, label %433
    i32 26, label %761
    i32 27, label %.loopexit696.loopexit1547
  ]

.preheader705:                                    ; preds = %45
  %47 = icmp ult i32 %.0526, 14
  br i1 %47, label %.lr.ph.preheader, label %._crit_edge

.lr.ph.preheader:                                 ; preds = %.preheader705
  %48 = zext nneg i32 %.0526 to i64
  br label %.lr.ph

49:                                               ; preds = %45
  %50 = load i32, ptr %14, align 4, !tbaa !15
  %.not681 = icmp eq i32 %50, 0
  br i1 %.not681, label %.preheader695, label %54

.preheader695:                                    ; preds = %49
  %51 = icmp ult i32 %.0526, 3
  br i1 %51, label %.lr.ph1059, label %70

.lr.ph1059:                                       ; preds = %.preheader695
  %52 = or disjoint i32 %.0526, 8
  %53 = icmp eq i32 %.0567, 0
  br i1 %53, label %59, label %._crit_edge1060

54:                                               ; preds = %49
  %55 = and i32 %.0526, 7
  %56 = zext nneg i32 %55 to i64
  %57 = lshr i64 %.0533, %56
  %58 = and i32 %.0526, -8
  store i32 26, ptr %10, align 8, !tbaa !13
  br label %.thread

59:                                               ; preds = %.lr.ph1059
  %60 = call i32 %1(ptr noundef %2, ptr noundef nonnull %6) #5
  %61 = icmp eq i32 %60, 0
  br i1 %61, label %.split1065, label %._crit_edge1060

.split1065:                                       ; preds = %59
  store ptr null, ptr %6, align 8, !tbaa !18
  br label %.loopexit696

._crit_edge1060:                                  ; preds = %59, %.lr.ph1059
  %.2569 = phi i32 [ %60, %59 ], [ %.0567, %.lr.ph1059 ]
  %62 = add i32 %.2569, -1
  %63 = load ptr, ptr %6, align 8, !tbaa !18
  %64 = getelementptr inbounds i8, ptr %63, i64 1
  store ptr %64, ptr %6, align 8, !tbaa !18
  %65 = load i8, ptr %63, align 1, !tbaa !22
  %66 = zext i8 %65 to i64
  %67 = zext nneg i32 %.0526 to i64
  %68 = shl nuw nsw i64 %66, %67
  %69 = add i64 %68, %.0533
  br label %70

70:                                               ; preds = %._crit_edge1060, %.preheader695
  %.1568.lcssa = phi i32 [ %62, %._crit_edge1060 ], [ %.0567, %.preheader695 ]
  %.1534.lcssa = phi i64 [ %69, %._crit_edge1060 ], [ %.0533, %.preheader695 ]
  %.1527.lcssa = phi i32 [ %52, %._crit_edge1060 ], [ %.0526, %.preheader695 ]
  %71 = trunc i64 %.1534.lcssa to i32
  %72 = and i32 %71, 1
  store i32 %72, ptr %14, align 4, !tbaa !15
  %73 = lshr i32 %71, 1
  %74 = and i32 %73, 3
  switch i32 %74, label %default.unreachable1322 [
    i32 0, label %78
    i32 1, label %75
    i32 2, label %76
    i32 3, label %77
  ]

75:                                               ; preds = %70
  call void @fixedtables1(ptr noundef nonnull %10)
  br label %78

76:                                               ; preds = %70
  br label %78

77:                                               ; preds = %70
  store ptr @.str.1, ptr %13, align 8, !tbaa !12
  br label %78

default.unreachable1322:                          ; preds = %70
  unreachable

78:                                               ; preds = %70, %75, %76, %77
  %.sink = phi i32 [ 18, %75 ], [ 15, %76 ], [ 27, %77 ], [ 13, %70 ]
  store i32 %.sink, ptr %10, align 8, !tbaa !13
  %79 = lshr i64 %.1534.lcssa, 3
  %80 = add i32 %.1527.lcssa, -3
  br label %.thread

81:                                               ; preds = %45
  %82 = and i32 %.0526, 7
  %83 = zext nneg i32 %82 to i64
  %84 = lshr i64 %.0533, %83
  %85 = and i32 %.0526, -8
  %86 = icmp ult i32 %.0526, 32
  br i1 %86, label %.lr.ph1040.preheader, label %._crit_edge1041

.lr.ph1040.preheader:                             ; preds = %81
  %87 = and i32 %.0526, 24
  %88 = zext nneg i32 %87 to i64
  br label %.lr.ph1040

.lr.ph1040:                                       ; preds = %.lr.ph1040.preheader, %94
  %indvars.iv1287 = phi i64 [ %88, %.lr.ph1040.preheader ], [ %indvars.iv.next1288, %94 ]
  %.25351037 = phi i64 [ %84, %.lr.ph1040.preheader ], [ %101, %94 ]
  %.35701036 = phi i32 [ %.0567, %.lr.ph1040.preheader ], [ %95, %94 ]
  %89 = icmp eq i32 %.35701036, 0
  br i1 %89, label %90, label %94

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

93:                                               ; preds = %90
  store ptr null, ptr %6, align 8, !tbaa !18
  br label %.loopexit696

94:                                               ; preds = %90, %.lr.ph1040
  %.4571 = phi i32 [ %91, %90 ], [ %.35701036, %.lr.ph1040 ]
  %95 = add i32 %.4571, -1
  %96 = load ptr, ptr %6, align 8, !tbaa !18
  %97 = getelementptr inbounds i8, ptr %96, i64 1
  store ptr %97, ptr %6, align 8, !tbaa !18
  %98 = load i8, ptr %96, align 1, !tbaa !22
  %99 = zext i8 %98 to i64
  %100 = shl nuw nsw i64 %99, %indvars.iv1287
  %101 = add i64 %100, %.25351037
  %indvars.iv.next1288 = add nuw nsw i64 %indvars.iv1287, 8
  %102 = icmp ult i64 %indvars.iv1287, 24
  br i1 %102, label %.lr.ph1040, label %._crit_edge1041.loopexit, !llvm.loop !23

._crit_edge1041.loopexit:                         ; preds = %94
  %103 = trunc nuw i64 %indvars.iv.next1288 to i32
  br label %._crit_edge1041

._crit_edge1041:                                  ; preds = %._crit_edge1041.loopexit, %81
  %.3570.lcssa = phi i32 [ %.0567, %81 ], [ %95, %._crit_edge1041.loopexit ]
  %.2535.lcssa = phi i64 [ %84, %81 ], [ %101, %._crit_edge1041.loopexit ]
  %.2528.lcssa = phi i32 [ %85, %81 ], [ %103, %._crit_edge1041.loopexit ]
  %104 = and i64 %.2535.lcssa, 65535
  %105 = lshr i64 %.2535.lcssa, 16
  %106 = xor i64 %105, %104
  %.not678 = icmp eq i64 %106, 65535
  br i1 %.not678, label %108, label %107

107:                                              ; preds = %._crit_edge1041
  store ptr @.str.2, ptr %13, align 8, !tbaa !12
  store i32 27, ptr %10, align 8, !tbaa !13
  br label %.thread

108:                                              ; preds = %._crit_edge1041
  %109 = trunc i64 %.2535.lcssa to i32
  %110 = and i32 %109, 65535
  store i32 %110, ptr %37, align 4, !tbaa !25
  %.not6791045 = icmp eq i32 %110, 0
  br i1 %.not6791045, label %._crit_edge1052, label %.lr.ph1051

.lr.ph1051:                                       ; preds = %108, %122
  %.15611049 = phi i32 [ %128, %122 ], [ %.0560, %108 ]
  %.55721048 = phi i32 [ %125, %122 ], [ %.3570.lcssa, %108 ]
  %.15951047 = phi ptr [ %129, %122 ], [ %.0594, %108 ]
  %storemerge1046 = phi i32 [ %131, %122 ], [ %110, %108 ]
  %111 = icmp eq i32 %.55721048, 0
  br i1 %111, label %112, label %116

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

115:                                              ; preds = %112
  store ptr null, ptr %6, align 8, !tbaa !18
  br label %.loopexit696

116:                                              ; preds = %.lr.ph1051, %112
  %.6573 = phi i32 [ %113, %112 ], [ %.55721048, %.lr.ph1051 ]
  %117 = icmp eq i32 %.15611049, 0
  br i1 %117, label %118, label %122

118:                                              ; preds = %116
  %119 = load ptr, ptr %21, align 8, !tbaa !20
  %120 = load i32, ptr %23, align 4, !tbaa !21
  store i32 %120, ptr %15, align 8, !tbaa !16
  %121 = call i32 %3(ptr noundef %4, ptr noundef %119, i32 noundef %120) #5
  %.not680 = icmp eq i32 %121, 0
  br i1 %.not680, label %122, label %.loopexit696

122:                                              ; preds = %118, %116
  %.2596 = phi ptr [ %119, %118 ], [ %.15951047, %116 ]
  %.2562 = phi i32 [ %120, %118 ], [ %.15611049, %116 ]
  %spec.select = call i32 @llvm.umin.i32(i32 %storemerge1046, i32 %.6573)
  %.1525 = call i32 @llvm.umin.i32(i32 %spec.select, i32 %.2562)
  %123 = load ptr, ptr %6, align 8, !tbaa !18
  %124 = zext i32 %.1525 to i64
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %.2596, ptr align 1 %123, i64 %124, i1 false)
  %125 = sub i32 %.6573, %.1525
  %126 = load ptr, ptr %6, align 8, !tbaa !18
  %127 = getelementptr inbounds i8, ptr %126, i64 %124
  store ptr %127, ptr %6, align 8, !tbaa !18
  %128 = sub i32 %.2562, %.1525
  %129 = getelementptr inbounds i8, ptr %.2596, i64 %124
  %130 = load i32, ptr %37, align 4, !tbaa !25
  %131 = sub i32 %130, %.1525
  store i32 %131, ptr %37, align 4, !tbaa !25
  %.not679 = icmp eq i32 %131, 0
  br i1 %.not679, label %._crit_edge1052, label %.lr.ph1051, !llvm.loop !26

._crit_edge1052:                                  ; preds = %122, %108
  %.1595.lcssa = phi ptr [ %.0594, %108 ], [ %129, %122 ]
  %.5572.lcssa = phi i32 [ %.3570.lcssa, %108 ], [ %125, %122 ]
  %.1561.lcssa = phi i32 [ %.0560, %108 ], [ %128, %122 ]
  store i32 11, ptr %10, align 8, !tbaa !13
  br label %.thread

.lr.ph:                                           ; preds = %.lr.ph.preheader, %137
  %indvars.iv = phi i64 [ %48, %.lr.ph.preheader ], [ %indvars.iv.next, %137 ]
  %.3536861 = phi i64 [ %.0533, %.lr.ph.preheader ], [ %144, %137 ]
  %.7574860 = phi i32 [ %.0567, %.lr.ph.preheader ], [ %138, %137 ]
  %132 = icmp eq i32 %.7574860, 0
  br i1 %132, label %133, label %137

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

136:                                              ; preds = %133
  store ptr null, ptr %6, align 8, !tbaa !18
  br label %.loopexit696

137:                                              ; preds = %133, %.lr.ph
  %.8575 = phi i32 [ %134, %133 ], [ %.7574860, %.lr.ph ]
  %138 = add i32 %.8575, -1
  %139 = load ptr, ptr %6, align 8, !tbaa !18
  %140 = getelementptr inbounds i8, ptr %139, i64 1
  store ptr %140, ptr %6, align 8, !tbaa !18
  %141 = load i8, ptr %139, align 1, !tbaa !22
  %142 = zext i8 %141 to i64
  %143 = shl nuw nsw i64 %142, %indvars.iv
  %144 = add i64 %143, %.3536861
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 8
  %145 = icmp ult i64 %indvars.iv, 6
  br i1 %145, label %.lr.ph, label %._crit_edge.loopexit, !llvm.loop !27

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

._crit_edge:                                      ; preds = %._crit_edge.loopexit, %.preheader705
  %.7574.lcssa = phi i32 [ %.0567, %.preheader705 ], [ %138, %._crit_edge.loopexit ]
  %.3536.lcssa = phi i64 [ %.0533, %.preheader705 ], [ %144, %._crit_edge.loopexit ]
  %.3529.lcssa = phi i32 [ %.0526, %.preheader705 ], [ %146, %._crit_edge.loopexit ]
  %147 = trunc i64 %.3536.lcssa to i32
  %148 = and i32 %147, 31
  %149 = add nuw nsw i32 %148, 257
  store i32 %149, ptr %25, align 4, !tbaa !28
  %150 = lshr i32 %147, 5
  %151 = and i32 %150, 31
  %152 = add nuw nsw i32 %151, 1
  store i32 %152, ptr %26, align 8, !tbaa !29
  %153 = lshr i32 %147, 10
  %154 = and i32 %153, 15
  %155 = add nuw nsw i32 %154, 4
  store i32 %155, ptr %27, align 8, !tbaa !30
  %156 = lshr i64 %.3536.lcssa, 14
  %157 = add i32 %.3529.lcssa, -14
  %158 = icmp ugt i32 %148, 29
  %159 = icmp ugt i32 %151, 29
  %or.cond688 = or i1 %158, %159
  br i1 %or.cond688, label %160, label %.preheader694.preheader

160:                                              ; preds = %._crit_edge
  store ptr @.str.3, ptr %13, align 8, !tbaa !12
  store i32 27, ptr %10, align 8, !tbaa !13
  br label %.thread

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

.preheader704:                                    ; preds = %179
  %161 = icmp ult i32 %184, 19
  br i1 %161, label %.lr.ph892.preheader, label %198

.lr.ph892.preheader:                              ; preds = %.preheader704
  %162 = zext nneg i32 %184 to i64
  br label %.lr.ph892

.preheader694:                                    ; preds = %.preheader694.preheader, %179
  %.pre12901318 = phi i32 [ %.pre12901319, %179 ], [ %155, %.preheader694.preheader ]
  %163 = phi i32 [ %180, %179 ], [ %155, %.preheader694.preheader ]
  %164 = phi i32 [ %184, %179 ], [ 0, %.preheader694.preheader ]
  %.4530887 = phi i32 [ %191, %179 ], [ %157, %.preheader694.preheader ]
  %.4537886 = phi i64 [ %190, %179 ], [ %156, %.preheader694.preheader ]
  %.9576885 = phi i32 [ %.10577.lcssa, %179 ], [ %.7574.lcssa, %.preheader694.preheader ]
  %165 = icmp ult i32 %.4530887, 3
  br i1 %165, label %.lr.ph868, label %179

.lr.ph868:                                        ; preds = %.preheader694
  %166 = or disjoint i32 %.4530887, 8
  %167 = icmp eq i32 %.9576885, 0
  br i1 %167, label %168, label %._crit_edge869

168:                                              ; preds = %.lr.ph868
  %169 = call i32 %1(ptr noundef %2, ptr noundef nonnull %6) #5
  %170 = icmp eq i32 %169, 0
  br i1 %170, label %.split, label %.._crit_edge869_crit_edge

.._crit_edge869_crit_edge:                        ; preds = %168
  %.pre1289.pre = load i32, ptr %28, align 4, !tbaa !31
  %.pre1290.pre = load i32, ptr %27, align 8, !tbaa !30
  br label %._crit_edge869

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

._crit_edge869:                                   ; preds = %.._crit_edge869_crit_edge, %.lr.ph868
  %.pre1290 = phi i32 [ %.pre1290.pre, %.._crit_edge869_crit_edge ], [ %.pre12901318, %.lr.ph868 ]
  %.pre1289 = phi i32 [ %.pre1289.pre, %.._crit_edge869_crit_edge ], [ %164, %.lr.ph868 ]
  %.11578 = phi i32 [ %169, %.._crit_edge869_crit_edge ], [ %.9576885, %.lr.ph868 ]
  %171 = add i32 %.11578, -1
  %172 = load ptr, ptr %6, align 8, !tbaa !18
  %173 = getelementptr inbounds i8, ptr %172, i64 1
  store ptr %173, ptr %6, align 8, !tbaa !18
  %174 = load i8, ptr %172, align 1, !tbaa !22
  %175 = zext i8 %174 to i64
  %176 = zext nneg i32 %.4530887 to i64
  %177 = shl nuw nsw i64 %175, %176
  %178 = add nuw nsw i64 %177, %.4537886
  br label %179

179:                                              ; preds = %._crit_edge869, %.preheader694
  %.pre12901319 = phi i32 [ %.pre1290, %._crit_edge869 ], [ %.pre12901318, %.preheader694 ]
  %180 = phi i32 [ %.pre1290, %._crit_edge869 ], [ %163, %.preheader694 ]
  %181 = phi i32 [ %.pre1289, %._crit_edge869 ], [ %164, %.preheader694 ]
  %.10577.lcssa = phi i32 [ %171, %._crit_edge869 ], [ %.9576885, %.preheader694 ]
  %.5538.lcssa = phi i64 [ %178, %._crit_edge869 ], [ %.4537886, %.preheader694 ]
  %.5531.lcssa = phi i32 [ %166, %._crit_edge869 ], [ %.4530887, %.preheader694 ]
  %182 = trunc i64 %.5538.lcssa to i16
  %183 = and i16 %182, 7
  %184 = add i32 %181, 1
  store i32 %184, ptr %28, align 4, !tbaa !31
  %185 = zext i32 %181 to i64
  %186 = getelementptr inbounds [19 x i16], ptr @z_inflateBack.order, i64 0, i64 %185
  %187 = load i16, ptr %186, align 2, !tbaa !32
  %188 = zext i16 %187 to i64
  %189 = getelementptr inbounds [320 x i16], ptr %29, i64 0, i64 %188
  store i16 %183, ptr %189, align 2, !tbaa !32
  %190 = lshr i64 %.5538.lcssa, 3
  %191 = add i32 %.5531.lcssa, -3
  %192 = icmp ult i32 %184, %180
  br i1 %192, label %.preheader694, label %.preheader704, !llvm.loop !34

.lr.ph892:                                        ; preds = %.lr.ph892.preheader, %.lr.ph892
  %indvars.iv1257 = phi i64 [ %162, %.lr.ph892.preheader ], [ %indvars.iv.next1258, %.lr.ph892 ]
  %indvars.iv.next1258 = add nuw nsw i64 %indvars.iv1257, 1
  %193 = getelementptr inbounds [19 x i16], ptr @z_inflateBack.order, i64 0, i64 %indvars.iv1257
  %194 = load i16, ptr %193, align 2, !tbaa !32
  %195 = zext i16 %194 to i64
  %196 = getelementptr inbounds [320 x i16], ptr %29, i64 0, i64 %195
  store i16 0, ptr %196, align 2, !tbaa !32
  %197 = and i64 %indvars.iv.next1258, 4294967295
  %exitcond.not = icmp eq i64 %197, 19
  br i1 %exitcond.not, label %._crit_edge893, label %.lr.ph892, !llvm.loop !35

._crit_edge893:                                   ; preds = %.lr.ph892
  store i32 19, ptr %28, align 4, !tbaa !31
  br label %198

198:                                              ; preds = %._crit_edge893, %.preheader704
  store ptr %30, ptr %31, align 8, !tbaa !36
  store ptr %30, ptr %32, align 8, !tbaa !37
  store i32 7, ptr %33, align 8, !tbaa !38
  %199 = call i32 @inflate_table(i32 noundef 0, ptr noundef nonnull %29, i32 noundef 19, ptr noundef nonnull %31, ptr noundef nonnull %33, ptr noundef nonnull %34) #5
  %.not653 = icmp eq i32 %199, 0
  br i1 %.not653, label %201, label %200

200:                                              ; preds = %198
  store ptr @.str.4, ptr %13, align 8, !tbaa !12
  store i32 27, ptr %10, align 8, !tbaa !13
  br label %.thread

201:                                              ; preds = %198
  store i32 0, ptr %28, align 4, !tbaa !31
  %202 = load i32, ptr %25, align 4, !tbaa !28
  %203 = load i32, ptr %26, align 8, !tbaa !29
  %204 = sub i32 0, %202
  %.not1140 = icmp eq i32 %203, %204
  br i1 %.not1140, label %._crit_edge951, label %.preheader693

.preheader693:                                    ; preds = %201, %415
  %.6532950 = phi i32 [ %.13, %415 ], [ %191, %201 ]
  %.6539949 = phi i64 [ %.13546, %415 ], [ %190, %201 ]
  %.12579948 = phi i32 [ %.24591, %415 ], [ %.10577.lcssa, %201 ]
  %205 = load ptr, ptr %32, align 8, !tbaa !37
  %206 = trunc i64 %.6539949 to i32
  %207 = load i32, ptr %33, align 8, !tbaa !38
  %notmask896 = shl nsw i32 -1, %207
  %208 = xor i32 %notmask896, -1
  %209 = and i32 %208, %206
  %210 = zext nneg i32 %209 to i64
  %211 = getelementptr inbounds %struct.code, ptr %205, i64 %210
  %.sroa.18.0..sroa_idx897 = getelementptr inbounds i8, ptr %211, i64 1
  %.sroa.18.0.copyload898 = load i8, ptr %.sroa.18.0..sroa_idx897, align 1, !tbaa !22
  %212 = zext i8 %.sroa.18.0.copyload898 to i32
  %.not654901 = icmp ult i32 %.6532950, %212
  br i1 %.not654901, label %.lr.ph905.preheader, label %._crit_edge906

.lr.ph905.preheader:                              ; preds = %.preheader693
  %213 = zext nneg i32 %.6532950 to i64
  br label %.lr.ph905

.lr.ph905:                                        ; preds = %.lr.ph905.preheader, %221
  %214 = phi i32 [ %207, %.lr.ph905.preheader ], [ %222, %221 ]
  %215 = phi ptr [ %205, %.lr.ph905.preheader ], [ %223, %221 ]
  %indvars.iv1260 = phi i64 [ %213, %.lr.ph905.preheader ], [ %indvars.iv.next1261, %221 ]
  %.7540903 = phi i64 [ %.6539949, %.lr.ph905.preheader ], [ %230, %221 ]
  %.13580902 = phi i32 [ %.12579948, %.lr.ph905.preheader ], [ %224, %221 ]
  %216 = icmp eq i32 %.13580902, 0
  br i1 %216, label %217, label %221

217:                                              ; preds = %.lr.ph905
  %218 = call i32 %1(ptr noundef %2, ptr noundef nonnull %6) #5
  %219 = icmp eq i32 %218, 0
  br i1 %219, label %220, label %._crit_edge1291

._crit_edge1291:                                  ; preds = %217
  %.pre1292 = load ptr, ptr %32, align 8, !tbaa !37
  %.pre1293 = load i32, ptr %33, align 8, !tbaa !38
  br label %221

220:                                              ; preds = %217
  store ptr null, ptr %6, align 8, !tbaa !18
  br label %.loopexit696

221:                                              ; preds = %._crit_edge1291, %.lr.ph905
  %222 = phi i32 [ %.pre1293, %._crit_edge1291 ], [ %214, %.lr.ph905 ]
  %223 = phi ptr [ %.pre1292, %._crit_edge1291 ], [ %215, %.lr.ph905 ]
  %.14581 = phi i32 [ %218, %._crit_edge1291 ], [ %.13580902, %.lr.ph905 ]
  %224 = add i32 %.14581, -1
  %225 = load ptr, ptr %6, align 8, !tbaa !18
  %226 = getelementptr inbounds i8, ptr %225, i64 1
  store ptr %226, ptr %6, align 8, !tbaa !18
  %227 = load i8, ptr %225, align 1, !tbaa !22
  %228 = zext i8 %227 to i64
  %229 = shl i64 %228, %indvars.iv1260
  %230 = add i64 %229, %.7540903
  %indvars.iv.next1261 = add nuw nsw i64 %indvars.iv1260, 8
  %231 = trunc i64 %230 to i32
  %notmask = shl nsw i32 -1, %222
  %232 = xor i32 %notmask, -1
  %233 = and i32 %232, %231
  %234 = zext nneg i32 %233 to i64
  %235 = getelementptr inbounds %struct.code, ptr %223, i64 %234
  %.sroa.18.0..sroa_idx = getelementptr inbounds i8, ptr %235, i64 1
  %.sroa.18.0.copyload = load i8, ptr %.sroa.18.0..sroa_idx, align 1, !tbaa !22
  %236 = zext i8 %.sroa.18.0.copyload to i64
  %.not654 = icmp ult i64 %indvars.iv.next1261, %236
  br i1 %.not654, label %.lr.ph905, label %._crit_edge906.loopexit

._crit_edge906.loopexit:                          ; preds = %221
  %237 = zext i8 %.sroa.18.0.copyload to i32
  %238 = trunc nuw i64 %indvars.iv.next1261 to i32
  br label %._crit_edge906

._crit_edge906:                                   ; preds = %._crit_edge906.loopexit, %.preheader693
  %.lcssa895 = phi i32 [ %212, %.preheader693 ], [ %237, %._crit_edge906.loopexit ]
  %.13580.lcssa = phi i32 [ %.12579948, %.preheader693 ], [ %224, %._crit_edge906.loopexit ]
  %.7540.lcssa = phi i64 [ %.6539949, %.preheader693 ], [ %230, %._crit_edge906.loopexit ]
  %.7.lcssa = phi i32 [ %.6532950, %.preheader693 ], [ %238, %._crit_edge906.loopexit ]
  %.sroa.18.0.copyload.lcssa = phi i8 [ %.sroa.18.0.copyload898, %.preheader693 ], [ %.sroa.18.0.copyload, %._crit_edge906.loopexit ]
  %.pn1141 = phi ptr [ %211, %.preheader693 ], [ %235, %._crit_edge906.loopexit ]
  %.sroa.41.0.copyload.lcssa.in = getelementptr inbounds i8, ptr %.pn1141, i64 2
  %.sroa.41.0.copyload.lcssa = load i16, ptr %.sroa.41.0.copyload.lcssa.in, align 2, !tbaa !32
  %239 = icmp ult i16 %.sroa.41.0.copyload.lcssa, 16
  br i1 %239, label %.preheader, label %265

.preheader:                                       ; preds = %._crit_edge906
  %240 = icmp ult i32 %.7.lcssa, %.lcssa895
  br i1 %240, label %.lr.ph943.preheader, label %._crit_edge944

.lr.ph943.preheader:                              ; preds = %.preheader
  %241 = zext nneg i32 %.7.lcssa to i64
  %242 = zext nneg i32 %.lcssa895 to i64
  br label %.lr.ph943

.lr.ph943:                                        ; preds = %.lr.ph943.preheader, %248
  %indvars.iv1272 = phi i64 [ %241, %.lr.ph943.preheader ], [ %indvars.iv.next1273, %248 ]
  %.8541941 = phi i64 [ %.7540.lcssa, %.lr.ph943.preheader ], [ %255, %248 ]
  %.15582940 = phi i32 [ %.13580.lcssa, %.lr.ph943.preheader ], [ %249, %248 ]
  %243 = icmp eq i32 %.15582940, 0
  br i1 %243, label %244, label %248

244:                                              ; preds = %.lr.ph943
  %245 = call i32 %1(ptr noundef %2, ptr noundef nonnull %6) #5
  %246 = icmp eq i32 %245, 0
  br i1 %246, label %247, label %248

247:                                              ; preds = %244
  store ptr null, ptr %6, align 8, !tbaa !18
  br label %.loopexit696

248:                                              ; preds = %244, %.lr.ph943
  %.16583 = phi i32 [ %245, %244 ], [ %.15582940, %.lr.ph943 ]
  %249 = add i32 %.16583, -1
  %250 = load ptr, ptr %6, align 8, !tbaa !18
  %251 = getelementptr inbounds i8, ptr %250, i64 1
  store ptr %251, ptr %6, align 8, !tbaa !18
  %252 = load i8, ptr %250, align 1, !tbaa !22
  %253 = zext i8 %252 to i64
  %254 = shl i64 %253, %indvars.iv1272
  %255 = add i64 %254, %.8541941
  %indvars.iv.next1273 = add nuw nsw i64 %indvars.iv1272, 8
  %256 = icmp ult i64 %indvars.iv.next1273, %242
  br i1 %256, label %.lr.ph943, label %._crit_edge944.loopexit, !llvm.loop !39

._crit_edge944.loopexit:                          ; preds = %248
  %257 = trunc nuw i64 %indvars.iv.next1273 to i32
  br label %._crit_edge944

._crit_edge944:                                   ; preds = %._crit_edge944.loopexit, %.preheader
  %.15582.lcssa = phi i32 [ %.13580.lcssa, %.preheader ], [ %249, %._crit_edge944.loopexit ]
  %.8541.lcssa = phi i64 [ %.7540.lcssa, %.preheader ], [ %255, %._crit_edge944.loopexit ]
  %.8.lcssa = phi i32 [ %.7.lcssa, %.preheader ], [ %257, %._crit_edge944.loopexit ]
  %258 = zext nneg i8 %.sroa.18.0.copyload.lcssa to i64
  %259 = lshr i64 %.8541.lcssa, %258
  %260 = sub i32 %.8.lcssa, %.lcssa895
  %261 = load i32, ptr %28, align 4, !tbaa !31
  %262 = add i32 %261, 1
  store i32 %262, ptr %28, align 4, !tbaa !31
  %263 = zext i32 %261 to i64
  %264 = getelementptr inbounds [320 x i16], ptr %29, i64 0, i64 %263
  store i16 %.sroa.41.0.copyload.lcssa, ptr %264, align 2, !tbaa !32
  %.pre1294 = load i32, ptr %25, align 4, !tbaa !28
  %.pre1295 = load i32, ptr %26, align 8, !tbaa !29
  %.pre1321 = add i32 %.pre1295, %.pre1294
  br label %415

265:                                              ; preds = %._crit_edge906
  switch i16 %.sroa.41.0.copyload.lcssa, label %.preheader690 [
    i16 16, label %.preheader691
    i16 17, label %.preheader692
  ]

.preheader692:                                    ; preds = %265
  %266 = add nuw nsw i32 %.lcssa895, 3
  %267 = icmp ult i32 %.7.lcssa, %266
  br i1 %267, label %.lr.ph917.preheader, label %._crit_edge918

.lr.ph917.preheader:                              ; preds = %.preheader692
  %268 = zext nneg i32 %.7.lcssa to i64
  %269 = zext nneg i32 %266 to i64
  br label %.lr.ph917

.preheader691:                                    ; preds = %265
  %270 = add nuw nsw i32 %.lcssa895, 2
  %271 = icmp ult i32 %.7.lcssa, %270
  br i1 %271, label %.lr.ph925.preheader, label %._crit_edge926

.lr.ph925.preheader:                              ; preds = %.preheader691
  %272 = zext nneg i32 %.7.lcssa to i64
  %273 = zext nneg i32 %270 to i64
  br label %.lr.ph925

.preheader690:                                    ; preds = %265
  %274 = add nuw nsw i32 %.lcssa895, 7
  %275 = icmp ult i32 %.7.lcssa, %274
  br i1 %275, label %.lr.ph933.preheader, label %._crit_edge934

.lr.ph933.preheader:                              ; preds = %.preheader690
  %276 = zext nneg i32 %.7.lcssa to i64
  %277 = zext nneg i32 %274 to i64
  br label %.lr.ph933

.lr.ph925:                                        ; preds = %.lr.ph925.preheader, %283
  %indvars.iv1266 = phi i64 [ %272, %.lr.ph925.preheader ], [ %indvars.iv.next1267, %283 ]
  %.9542923 = phi i64 [ %.7540.lcssa, %.lr.ph925.preheader ], [ %290, %283 ]
  %.17584922 = phi i32 [ %.13580.lcssa, %.lr.ph925.preheader ], [ %284, %283 ]
  %278 = icmp eq i32 %.17584922, 0
  br i1 %278, label %279, label %283

279:                                              ; preds = %.lr.ph925
  %280 = call i32 %1(ptr noundef %2, ptr noundef nonnull %6) #5
  %281 = icmp eq i32 %280, 0
  br i1 %281, label %282, label %283

282:                                              ; preds = %279
  store ptr null, ptr %6, align 8, !tbaa !18
  br label %.loopexit696

283:                                              ; preds = %279, %.lr.ph925
  %.18585 = phi i32 [ %280, %279 ], [ %.17584922, %.lr.ph925 ]
  %284 = add i32 %.18585, -1
  %285 = load ptr, ptr %6, align 8, !tbaa !18
  %286 = getelementptr inbounds i8, ptr %285, i64 1
  store ptr %286, ptr %6, align 8, !tbaa !18
  %287 = load i8, ptr %285, align 1, !tbaa !22
  %288 = zext i8 %287 to i64
  %289 = shl i64 %288, %indvars.iv1266
  %290 = add i64 %289, %.9542923
  %indvars.iv.next1267 = add nuw nsw i64 %indvars.iv1266, 8
  %291 = icmp ult i64 %indvars.iv.next1267, %273
  br i1 %291, label %.lr.ph925, label %._crit_edge926.loopexit, !llvm.loop !40

._crit_edge926.loopexit:                          ; preds = %283
  %292 = trunc nuw i64 %indvars.iv.next1267 to i32
  br label %._crit_edge926

._crit_edge926:                                   ; preds = %._crit_edge926.loopexit, %.preheader691
  %.17584.lcssa = phi i32 [ %.13580.lcssa, %.preheader691 ], [ %284, %._crit_edge926.loopexit ]
  %.9542.lcssa = phi i64 [ %.7540.lcssa, %.preheader691 ], [ %290, %._crit_edge926.loopexit ]
  %.9.lcssa = phi i32 [ %.7.lcssa, %.preheader691 ], [ %292, %._crit_edge926.loopexit ]
  %293 = zext nneg i8 %.sroa.18.0.copyload.lcssa to i64
  %294 = lshr i64 %.9542.lcssa, %293
  %295 = sub i32 %.9.lcssa, %.lcssa895
  %296 = load i32, ptr %28, align 4, !tbaa !31
  %297 = icmp eq i32 %296, 0
  br i1 %297, label %298, label %299

298:                                              ; preds = %._crit_edge926
  store ptr @.str.5, ptr %13, align 8, !tbaa !12
  store i32 27, ptr %10, align 8, !tbaa !13
  br label %.thread

299:                                              ; preds = %._crit_edge926
  %300 = add i32 %296, -1
  %301 = zext i32 %300 to i64
  %302 = getelementptr inbounds [320 x i16], ptr %29, i64 0, i64 %301
  %303 = load i16, ptr %302, align 2, !tbaa !32
  %304 = trunc i64 %294 to i32
  %305 = and i32 %304, 3
  %306 = add nuw nsw i32 %305, 3
  %307 = lshr i64 %294, 2
  %308 = add i32 %295, -2
  br label %353

.lr.ph917:                                        ; preds = %.lr.ph917.preheader, %314
  %indvars.iv1263 = phi i64 [ %268, %.lr.ph917.preheader ], [ %indvars.iv.next1264, %314 ]
  %.10543915 = phi i64 [ %.7540.lcssa, %.lr.ph917.preheader ], [ %321, %314 ]
  %.19586914 = phi i32 [ %.13580.lcssa, %.lr.ph917.preheader ], [ %315, %314 ]
  %309 = icmp eq i32 %.19586914, 0
  br i1 %309, label %310, label %314

310:                                              ; preds = %.lr.ph917
  %311 = call i32 %1(ptr noundef %2, ptr noundef nonnull %6) #5
  %312 = icmp eq i32 %311, 0
  br i1 %312, label %313, label %314

313:                                              ; preds = %310
  store ptr null, ptr %6, align 8, !tbaa !18
  br label %.loopexit696

314:                                              ; preds = %310, %.lr.ph917
  %.20587 = phi i32 [ %311, %310 ], [ %.19586914, %.lr.ph917 ]
  %315 = add i32 %.20587, -1
  %316 = load ptr, ptr %6, align 8, !tbaa !18
  %317 = getelementptr inbounds i8, ptr %316, i64 1
  store ptr %317, ptr %6, align 8, !tbaa !18
  %318 = load i8, ptr %316, align 1, !tbaa !22
  %319 = zext i8 %318 to i64
  %320 = shl i64 %319, %indvars.iv1263
  %321 = add i64 %320, %.10543915
  %indvars.iv.next1264 = add nuw nsw i64 %indvars.iv1263, 8
  %322 = icmp ult i64 %indvars.iv.next1264, %269
  br i1 %322, label %.lr.ph917, label %._crit_edge918.loopexit, !llvm.loop !41

._crit_edge918.loopexit:                          ; preds = %314
  %323 = trunc nuw i64 %indvars.iv.next1264 to i32
  br label %._crit_edge918

._crit_edge918:                                   ; preds = %._crit_edge918.loopexit, %.preheader692
  %.19586.lcssa = phi i32 [ %.13580.lcssa, %.preheader692 ], [ %315, %._crit_edge918.loopexit ]
  %.10543.lcssa = phi i64 [ %.7540.lcssa, %.preheader692 ], [ %321, %._crit_edge918.loopexit ]
  %.10.lcssa = phi i32 [ %.7.lcssa, %.preheader692 ], [ %323, %._crit_edge918.loopexit ]
  %324 = zext nneg i8 %.sroa.18.0.copyload.lcssa to i64
  %325 = lshr i64 %.10543.lcssa, %324
  %326 = trunc i64 %325 to i32
  %327 = and i32 %326, 7
  %328 = add nuw nsw i32 %327, 3
  %329 = lshr i64 %325, 3
  %reass.sub = sub i32 %.10.lcssa, %.lcssa895
  %330 = add i32 %reass.sub, -3
  br label %353

.lr.ph933:                                        ; preds = %.lr.ph933.preheader, %336
  %indvars.iv1269 = phi i64 [ %276, %.lr.ph933.preheader ], [ %indvars.iv.next1270, %336 ]
  %.11544931 = phi i64 [ %.7540.lcssa, %.lr.ph933.preheader ], [ %343, %336 ]
  %.21588930 = phi i32 [ %.13580.lcssa, %.lr.ph933.preheader ], [ %337, %336 ]
  %331 = icmp eq i32 %.21588930, 0
  br i1 %331, label %332, label %336

332:                                              ; preds = %.lr.ph933
  %333 = call i32 %1(ptr noundef %2, ptr noundef nonnull %6) #5
  %334 = icmp eq i32 %333, 0
  br i1 %334, label %335, label %336

335:                                              ; preds = %332
  store ptr null, ptr %6, align 8, !tbaa !18
  br label %.loopexit696

336:                                              ; preds = %332, %.lr.ph933
  %.22589 = phi i32 [ %333, %332 ], [ %.21588930, %.lr.ph933 ]
  %337 = add i32 %.22589, -1
  %338 = load ptr, ptr %6, align 8, !tbaa !18
  %339 = getelementptr inbounds i8, ptr %338, i64 1
  store ptr %339, ptr %6, align 8, !tbaa !18
  %340 = load i8, ptr %338, align 1, !tbaa !22
  %341 = zext i8 %340 to i64
  %342 = shl i64 %341, %indvars.iv1269
  %343 = add i64 %342, %.11544931
  %indvars.iv.next1270 = add nuw nsw i64 %indvars.iv1269, 8
  %344 = icmp ult i64 %indvars.iv.next1270, %277
  br i1 %344, label %.lr.ph933, label %._crit_edge934.loopexit, !llvm.loop !42

._crit_edge934.loopexit:                          ; preds = %336
  %345 = trunc nuw i64 %indvars.iv.next1270 to i32
  br label %._crit_edge934

._crit_edge934:                                   ; preds = %._crit_edge934.loopexit, %.preheader690
  %.21588.lcssa = phi i32 [ %.13580.lcssa, %.preheader690 ], [ %337, %._crit_edge934.loopexit ]
  %.11544.lcssa = phi i64 [ %.7540.lcssa, %.preheader690 ], [ %343, %._crit_edge934.loopexit ]
  %.11.lcssa = phi i32 [ %.7.lcssa, %.preheader690 ], [ %345, %._crit_edge934.loopexit ]
  %346 = zext nneg i8 %.sroa.18.0.copyload.lcssa to i64
  %347 = lshr i64 %.11544.lcssa, %346
  %348 = trunc i64 %347 to i32
  %349 = and i32 %348, 127
  %350 = add nuw nsw i32 %349, 11
  %351 = lshr i64 %347, 7
  %reass.sub1142 = sub i32 %.11.lcssa, %.lcssa895
  %352 = add i32 %reass.sub1142, -7
  br label %353

353:                                              ; preds = %._crit_edge918, %._crit_edge934, %299
  %.23590 = phi i32 [ %.17584.lcssa, %299 ], [ %.19586.lcssa, %._crit_edge918 ], [ %.21588.lcssa, %._crit_edge934 ]
  %.12545 = phi i64 [ %307, %299 ], [ %329, %._crit_edge918 ], [ %351, %._crit_edge934 ]
  %.12 = phi i32 [ %308, %299 ], [ %330, %._crit_edge918 ], [ %352, %._crit_edge934 ]
  %.2 = phi i32 [ %306, %299 ], [ %328, %._crit_edge918 ], [ %350, %._crit_edge934 ]
  %.0522 = phi i16 [ %303, %299 ], [ 0, %._crit_edge918 ], [ 0, %._crit_edge934 ]
  %354 = load i32, ptr %28, align 4, !tbaa !31
  %355 = add i32 %354, %.2
  %356 = load i32, ptr %25, align 4, !tbaa !28
  %357 = load i32, ptr %26, align 8, !tbaa !29
  %358 = add i32 %357, %356
  %359 = icmp ugt i32 %355, %358
  br i1 %359, label %400, label %.preheader689.preheader

.preheader689.preheader:                          ; preds = %353
  %min.iters.check1529 = icmp ult i32 %.2, 16
  %360 = sub nsw i32 0, %.2
  %361 = icmp ugt i32 %354, %360
  %or.cond1543 = select i1 %min.iters.check1529, i1 true, i1 %361
  br i1 %or.cond1543, label %.preheader689.preheader1545, label %vector.ph1530

.preheader689.preheader1545:                      ; preds = %middle.block1527, %.preheader689.preheader
  %.3939.ph = phi i32 [ %.2, %.preheader689.preheader ], [ %ind.end1533, %middle.block1527 ]
  %.ph = phi i32 [ %354, %.preheader689.preheader ], [ %ind.end1535, %middle.block1527 ]
  %362 = add nsw i32 %.3939.ph, -1
  %xtraiter = and i32 %.3939.ph, 3
  %lcmp.mod.not = icmp eq i32 %xtraiter, 0
  br i1 %lcmp.mod.not, label %.preheader689.prol.loopexit, label %.preheader689.prol

.preheader689.prol:                               ; preds = %.preheader689.preheader1545, %.preheader689.prol
  %.3939.prol = phi i32 [ %364, %.preheader689.prol ], [ %.3939.ph, %.preheader689.preheader1545 ]
  %363 = phi i32 [ %365, %.preheader689.prol ], [ %.ph, %.preheader689.preheader1545 ]
  %prol.iter = phi i32 [ %prol.iter.next, %.preheader689.prol ], [ 0, %.preheader689.preheader1545 ]
  %364 = add nsw i32 %.3939.prol, -1
  %365 = add i32 %363, 1
  %366 = zext i32 %363 to i64
  %367 = getelementptr inbounds [320 x i16], ptr %29, i64 0, i64 %366
  store i16 %.0522, ptr %367, 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 %.preheader689.prol.loopexit, label %.preheader689.prol, !llvm.loop !43

.preheader689.prol.loopexit:                      ; preds = %.preheader689.prol, %.preheader689.preheader1545
  %.lcssa1562.unr = phi i32 [ poison, %.preheader689.preheader1545 ], [ %365, %.preheader689.prol ]
  %.3939.unr = phi i32 [ %.3939.ph, %.preheader689.preheader1545 ], [ %364, %.preheader689.prol ]
  %.unr = phi i32 [ %.ph, %.preheader689.preheader1545 ], [ %365, %.preheader689.prol ]
  %368 = icmp ult i32 %362, 3
  br i1 %368, label %.loopexit, label %.preheader689

vector.ph1530:                                    ; preds = %.preheader689.preheader
  %n.vec1532 = and i32 %.2, -16
  %ind.end1533 = and i32 %.2, 15
  %ind.end1535 = add i32 %354, %n.vec1532
  %broadcast.splatinsert = insertelement <8 x i16> poison, i16 %.0522, i64 0
  %broadcast.splat = shufflevector <8 x i16> %broadcast.splatinsert, <8 x i16> poison, <8 x i32> zeroinitializer
  %369 = zext i32 %354 to i64
  %370 = getelementptr inbounds [320 x i16], ptr %29, i64 0, i64 %369
  %371 = getelementptr inbounds i8, ptr %370, i64 16
  store <8 x i16> %broadcast.splat, ptr %370, align 2, !tbaa !32
  store <8 x i16> %broadcast.splat, ptr %371, align 2, !tbaa !32
  %372 = icmp eq i32 %n.vec1532, 16
  br i1 %372, label %middle.block1527, label %vector.body1537.1, !llvm.loop !45

vector.body1537.1:                                ; preds = %vector.ph1530
  %offset.idx.1 = add i32 %354, 16
  %373 = zext i32 %offset.idx.1 to i64
  %374 = getelementptr inbounds [320 x i16], ptr %29, i64 0, i64 %373
  %375 = getelementptr inbounds i8, ptr %374, i64 16
  store <8 x i16> %broadcast.splat, ptr %374, align 2, !tbaa !32
  store <8 x i16> %broadcast.splat, ptr %375, align 2, !tbaa !32
  %376 = icmp eq i32 %n.vec1532, 32
  br i1 %376, label %middle.block1527, label %vector.body1537.2, !llvm.loop !45

vector.body1537.2:                                ; preds = %vector.body1537.1
  %offset.idx.2 = add i32 %354, 32
  %377 = zext i32 %offset.idx.2 to i64
  %378 = getelementptr inbounds [320 x i16], ptr %29, i64 0, i64 %377
  %379 = getelementptr inbounds i8, ptr %378, i64 16
  store <8 x i16> %broadcast.splat, ptr %378, align 2, !tbaa !32
  store <8 x i16> %broadcast.splat, ptr %379, align 2, !tbaa !32
  %380 = icmp eq i32 %n.vec1532, 48
  br i1 %380, label %middle.block1527, label %vector.body1537.3, !llvm.loop !45

vector.body1537.3:                                ; preds = %vector.body1537.2
  %offset.idx.3 = add i32 %354, 48
  %381 = zext i32 %offset.idx.3 to i64
  %382 = getelementptr inbounds [320 x i16], ptr %29, i64 0, i64 %381
  %383 = getelementptr inbounds i8, ptr %382, i64 16
  store <8 x i16> %broadcast.splat, ptr %382, align 2, !tbaa !32
  store <8 x i16> %broadcast.splat, ptr %383, align 2, !tbaa !32
  %384 = icmp eq i32 %n.vec1532, 64
  br i1 %384, label %middle.block1527, label %vector.body1537.4, !llvm.loop !45

vector.body1537.4:                                ; preds = %vector.body1537.3
  %offset.idx.4 = add i32 %354, 64
  %385 = zext i32 %offset.idx.4 to i64
  %386 = getelementptr inbounds [320 x i16], ptr %29, i64 0, i64 %385
  %387 = getelementptr inbounds i8, ptr %386, i64 16
  store <8 x i16> %broadcast.splat, ptr %386, align 2, !tbaa !32
  store <8 x i16> %broadcast.splat, ptr %387, align 2, !tbaa !32
  %388 = icmp eq i32 %n.vec1532, 80
  br i1 %388, label %middle.block1527, label %vector.body1537.5, !llvm.loop !45

vector.body1537.5:                                ; preds = %vector.body1537.4
  %offset.idx.5 = add i32 %354, 80
  %389 = zext i32 %offset.idx.5 to i64
  %390 = getelementptr inbounds [320 x i16], ptr %29, i64 0, i64 %389
  %391 = getelementptr inbounds i8, ptr %390, i64 16
  store <8 x i16> %broadcast.splat, ptr %390, align 2, !tbaa !32
  store <8 x i16> %broadcast.splat, ptr %391, align 2, !tbaa !32
  %392 = icmp eq i32 %n.vec1532, 96
  br i1 %392, label %middle.block1527, label %vector.body1537.6, !llvm.loop !45

vector.body1537.6:                                ; preds = %vector.body1537.5
  %offset.idx.6 = add i32 %354, 96
  %393 = zext i32 %offset.idx.6 to i64
  %394 = getelementptr inbounds [320 x i16], ptr %29, i64 0, i64 %393
  %395 = getelementptr inbounds i8, ptr %394, i64 16
  store <8 x i16> %broadcast.splat, ptr %394, align 2, !tbaa !32
  store <8 x i16> %broadcast.splat, ptr %395, align 2, !tbaa !32
  %396 = icmp eq i32 %n.vec1532, 112
  br i1 %396, label %middle.block1527, label %vector.body1537.7, !llvm.loop !45

vector.body1537.7:                                ; preds = %vector.body1537.6
  %offset.idx.7 = add i32 %354, 112
  %397 = zext i32 %offset.idx.7 to i64
  %398 = getelementptr inbounds [320 x i16], ptr %29, i64 0, i64 %397
  %399 = getelementptr inbounds i8, ptr %398, i64 16
  store <8 x i16> %broadcast.splat, ptr %398, align 2, !tbaa !32
  store <8 x i16> %broadcast.splat, ptr %399, align 2, !tbaa !32
  br label %middle.block1527

middle.block1527:                                 ; preds = %vector.body1537.7, %vector.body1537.6, %vector.body1537.5, %vector.body1537.4, %vector.body1537.3, %vector.body1537.2, %vector.body1537.1, %vector.ph1530
  %cmp.n1540 = icmp eq i32 %.2, %n.vec1532
  br i1 %cmp.n1540, label %.loopexit, label %.preheader689.preheader1545

400:                                              ; preds = %353
  store ptr @.str.5, ptr %13, align 8, !tbaa !12
  store i32 27, ptr %10, align 8, !tbaa !13
  br label %.thread

.preheader689:                                    ; preds = %.preheader689.prol.loopexit, %.preheader689
  %.3939 = phi i32 [ %411, %.preheader689 ], [ %.3939.unr, %.preheader689.prol.loopexit ]
  %401 = phi i32 [ %412, %.preheader689 ], [ %.unr, %.preheader689.prol.loopexit ]
  %402 = add i32 %401, 1
  %403 = zext i32 %401 to i64
  %404 = getelementptr inbounds [320 x i16], ptr %29, i64 0, i64 %403
  store i16 %.0522, ptr %404, align 2, !tbaa !32
  %405 = add i32 %401, 2
  %406 = zext i32 %402 to i64
  %407 = getelementptr inbounds [320 x i16], ptr %29, i64 0, i64 %406
  store i16 %.0522, ptr %407, align 2, !tbaa !32
  %408 = add i32 %401, 3
  %409 = zext i32 %405 to i64
  %410 = getelementptr inbounds [320 x i16], ptr %29, i64 0, i64 %409
  store i16 %.0522, ptr %410, align 2, !tbaa !32
  %411 = add nsw i32 %.3939, -4
  %412 = add i32 %401, 4
  %413 = zext i32 %408 to i64
  %414 = getelementptr inbounds [320 x i16], ptr %29, i64 0, i64 %413
  store i16 %.0522, ptr %414, align 2, !tbaa !32
  %.not655.3 = icmp eq i32 %411, 0
  br i1 %.not655.3, label %.loopexit, label %.preheader689, !llvm.loop !48

.loopexit:                                        ; preds = %.preheader689.prol.loopexit, %.preheader689, %middle.block1527
  %.lcssa1437 = phi i32 [ %ind.end1535, %middle.block1527 ], [ %.lcssa1562.unr, %.preheader689.prol.loopexit ], [ %412, %.preheader689 ]
  store i32 %.lcssa1437, ptr %28, align 4, !tbaa !31
  br label %415

415:                                              ; preds = %.loopexit, %._crit_edge944
  %.pre-phi = phi i32 [ %358, %.loopexit ], [ %.pre1321, %._crit_edge944 ]
  %416 = phi i32 [ %356, %.loopexit ], [ %.pre1294, %._crit_edge944 ]
  %417 = phi i32 [ %.lcssa1437, %.loopexit ], [ %262, %._crit_edge944 ]
  %.24591 = phi i32 [ %.23590, %.loopexit ], [ %.15582.lcssa, %._crit_edge944 ]
  %.13546 = phi i64 [ %.12545, %.loopexit ], [ %259, %._crit_edge944 ]
  %.13 = phi i32 [ %.12, %.loopexit ], [ %260, %._crit_edge944 ]
  %418 = icmp ult i32 %417, %.pre-phi
  br i1 %418, label %.preheader693, label %._crit_edge951, !llvm.loop !49

._crit_edge951:                                   ; preds = %415, %201
  %419 = phi i32 [ %202, %201 ], [ %416, %415 ]
  %.12579.lcssa = phi i32 [ %.10577.lcssa, %201 ], [ %.24591, %415 ]
  %.6539.lcssa = phi i64 [ %190, %201 ], [ %.13546, %415 ]
  %.6532.lcssa = phi i32 [ %191, %201 ], [ %.13, %415 ]
  %.pr684 = load i32, ptr %10, align 8, !tbaa !13
  %420 = icmp eq i32 %.pr684, 27
  br i1 %420, label %.thread, label %421

421:                                              ; preds = %._crit_edge951
  store ptr %30, ptr %31, align 8, !tbaa !36
  store ptr %30, ptr %32, align 8, !tbaa !37
  store i32 9, ptr %33, align 8, !tbaa !38
  %422 = call i32 @inflate_table(i32 noundef 1, ptr noundef nonnull %29, i32 noundef %419, ptr noundef nonnull %31, ptr noundef nonnull %33, ptr noundef nonnull %34) #5
  %.not656 = icmp eq i32 %422, 0
  br i1 %.not656, label %424, label %423

423:                                              ; preds = %421
  store ptr @.str.6, ptr %13, align 8, !tbaa !12
  store i32 27, ptr %10, align 8, !tbaa !13
  br label %.thread

424:                                              ; preds = %421
  %425 = load ptr, ptr %31, align 8, !tbaa !36
  store ptr %425, ptr %35, align 8, !tbaa !50
  store i32 6, ptr %36, align 4, !tbaa !51
  %426 = load i32, ptr %25, align 4, !tbaa !28
  %427 = zext i32 %426 to i64
  %428 = getelementptr inbounds i16, ptr %29, i64 %427
  %429 = load i32, ptr %26, align 8, !tbaa !29
  %430 = call i32 @inflate_table(i32 noundef 2, ptr noundef nonnull %428, i32 noundef %429, ptr noundef nonnull %31, ptr noundef nonnull %36, ptr noundef nonnull %34) #5
  %.not657 = icmp eq i32 %430, 0
  br i1 %.not657, label %432, label %431

431:                                              ; preds = %424
  store ptr @.str.7, ptr %13, align 8, !tbaa !12
  store i32 27, ptr %10, align 8, !tbaa !13
  br label %.thread

432:                                              ; preds = %424
  store i32 18, ptr %10, align 8, !tbaa !13
  br label %433

433:                                              ; preds = %432, %45
  %.26593 = phi i32 [ %.0567, %45 ], [ %.12579.lcssa, %432 ]
  %.15548 = phi i64 [ %.0533, %45 ], [ %.6539.lcssa, %432 ]
  %.15 = phi i32 [ %.0526, %45 ], [ %.6532.lcssa, %432 ]
  %434 = icmp ugt i32 %.26593, 5
  %435 = icmp ugt i32 %.0560, 257
  %or.cond = select i1 %434, i1 %435, i1 false
  br i1 %or.cond, label %445, label %.preheader703

.preheader703:                                    ; preds = %433
  %436 = load ptr, ptr %32, align 8, !tbaa !37
  %437 = trunc i64 %.15548 to i32
  %438 = load i32, ptr %33, align 8, !tbaa !38
  %notmask658955 = shl nsw i32 -1, %438
  %439 = xor i32 %notmask658955, -1
  %440 = and i32 %439, %437
  %441 = zext nneg i32 %440 to i64
  %442 = getelementptr inbounds %struct.code, ptr %436, i64 %441
  %.sroa.18.0..sroa_idx35956 = getelementptr inbounds i8, ptr %442, i64 1
  %.sroa.18.0.copyload36957 = load i8, ptr %.sroa.18.0..sroa_idx35956, align 1, !tbaa !22
  %443 = zext i8 %.sroa.18.0.copyload36957 to i32
  %.not659960 = icmp ult i32 %.15, %443
  br i1 %.not659960, label %.lr.ph964.preheader, label %._crit_edge965

.lr.ph964.preheader:                              ; preds = %.preheader703
  %444 = zext nneg i32 %.15 to i64
  br label %.lr.ph964

445:                                              ; preds = %433
  store ptr %.0594, ptr %40, align 8, !tbaa !52
  store i32 %.0560, ptr %41, align 8, !tbaa !53
  %446 = load ptr, ptr %6, align 8, !tbaa !18
  store ptr %446, ptr %0, align 8, !tbaa !17
  store i32 %.26593, ptr %42, align 8, !tbaa !19
  store i64 %.15548, ptr %43, align 8, !tbaa !54
  store i32 %.15, ptr %44, align 8, !tbaa !55
  %447 = load i32, ptr %15, align 8, !tbaa !16
  %448 = load i32, ptr %23, align 4, !tbaa !21
  %449 = icmp ult i32 %447, %448
  br i1 %449, label %450, label %452

450:                                              ; preds = %445
  %451 = sub i32 %448, %.0560
  store i32 %451, ptr %15, align 8, !tbaa !16
  br label %452

452:                                              ; preds = %450, %445
  call void @inflate_fast(ptr noundef nonnull %0, i32 noundef %448) #5
  %453 = load ptr, ptr %40, align 8, !tbaa !52
  %454 = load i32, ptr %41, align 8, !tbaa !53
  %455 = load ptr, ptr %0, align 8, !tbaa !17
  store ptr %455, ptr %6, align 8, !tbaa !18
  %456 = load i32, ptr %42, align 8, !tbaa !19
  %457 = load i64, ptr %43, align 8, !tbaa !54
  %458 = load i32, ptr %44, align 8, !tbaa !55
  br label %.thread

.lr.ph964:                                        ; preds = %.lr.ph964.preheader, %466
  %459 = phi i32 [ %438, %.lr.ph964.preheader ], [ %467, %466 ]
  %460 = phi ptr [ %436, %.lr.ph964.preheader ], [ %468, %466 ]
  %indvars.iv1275 = phi i64 [ %444, %.lr.ph964.preheader ], [ %indvars.iv.next1276, %466 ]
  %.16549962 = phi i64 [ %.15548, %.lr.ph964.preheader ], [ %475, %466 ]
  %.27961 = phi i32 [ %.26593, %.lr.ph964.preheader ], [ %469, %466 ]
  %461 = icmp eq i32 %.27961, 0
  br i1 %461, label %462, label %466

462:                                              ; preds = %.lr.ph964
  %463 = call i32 %1(ptr noundef %2, ptr noundef nonnull %6) #5
  %464 = icmp eq i32 %463, 0
  br i1 %464, label %465, label %._crit_edge1296

._crit_edge1296:                                  ; preds = %462
  %.pre1297 = load ptr, ptr %32, align 8, !tbaa !37
  %.pre1298 = load i32, ptr %33, align 8, !tbaa !38
  br label %466

465:                                              ; preds = %462
  store ptr null, ptr %6, align 8, !tbaa !18
  br label %.loopexit696

466:                                              ; preds = %._crit_edge1296, %.lr.ph964
  %467 = phi i32 [ %.pre1298, %._crit_edge1296 ], [ %459, %.lr.ph964 ]
  %468 = phi ptr [ %.pre1297, %._crit_edge1296 ], [ %460, %.lr.ph964 ]
  %.28 = phi i32 [ %463, %._crit_edge1296 ], [ %.27961, %.lr.ph964 ]
  %469 = add i32 %.28, -1
  %470 = load ptr, ptr %6, align 8, !tbaa !18
  %471 = getelementptr inbounds i8, ptr %470, i64 1
  store ptr %471, ptr %6, align 8, !tbaa !18
  %472 = load i8, ptr %470, align 1, !tbaa !22
  %473 = zext i8 %472 to i64
  %474 = shl i64 %473, %indvars.iv1275
  %475 = add i64 %474, %.16549962
  %indvars.iv.next1276 = add nuw nsw i64 %indvars.iv1275, 8
  %476 = trunc i64 %475 to i32
  %notmask658 = shl nsw i32 -1, %467
  %477 = xor i32 %notmask658, -1
  %478 = and i32 %477, %476
  %479 = zext nneg i32 %478 to i64
  %480 = getelementptr inbounds %struct.code, ptr %468, i64 %479
  %.sroa.18.0..sroa_idx35 = getelementptr inbounds i8, ptr %480, i64 1
  %.sroa.18.0.copyload36 = load i8, ptr %.sroa.18.0..sroa_idx35, align 1, !tbaa !22
  %481 = zext i8 %.sroa.18.0.copyload36 to i64
  %.not659 = icmp ult i64 %indvars.iv.next1276, %481
  br i1 %.not659, label %.lr.ph964, label %._crit_edge965.loopexit

._crit_edge965.loopexit:                          ; preds = %466
  %482 = zext i8 %.sroa.18.0.copyload36 to i32
  %483 = trunc nuw i64 %indvars.iv.next1276 to i32
  br label %._crit_edge965

._crit_edge965:                                   ; preds = %._crit_edge965.loopexit, %.preheader703
  %484 = phi ptr [ %436, %.preheader703 ], [ %468, %._crit_edge965.loopexit ]
  %.27.lcssa = phi i32 [ %.26593, %.preheader703 ], [ %469, %._crit_edge965.loopexit ]
  %.16549.lcssa = phi i64 [ %.15548, %.preheader703 ], [ %475, %._crit_edge965.loopexit ]
  %.16.lcssa = phi i32 [ %.15, %.preheader703 ], [ %483, %._crit_edge965.loopexit ]
  %.lcssa764 = phi ptr [ %442, %.preheader703 ], [ %480, %._crit_edge965.loopexit ]
  %.sroa.18.0.copyload36.lcssa = phi i8 [ %.sroa.18.0.copyload36957, %.preheader703 ], [ %.sroa.18.0.copyload36, %._crit_edge965.loopexit ]
  %.lcssa760 = phi i32 [ %443, %.preheader703 ], [ %482, %._crit_edge965.loopexit ]
  %.sroa.41.0.copyload64.lcssa.in = getelementptr inbounds i8, ptr %.lcssa764, i64 2
  %.sroa.41.0.copyload64.lcssa = load i16, ptr %.sroa.41.0.copyload64.lcssa.in, align 2, !tbaa !32
  %.sroa.022.0.copyload31 = load i8, ptr %.lcssa764, align 2, !tbaa !22
  %485 = add i8 %.sroa.022.0.copyload31, -1
  %or.cond682 = icmp ult i8 %485, 15
  br i1 %or.cond682, label %.preheader702, label %527

.preheader702:                                    ; preds = %._crit_edge965
  %486 = zext nneg i8 %.sroa.022.0.copyload31 to i32
  %487 = zext i16 %.sroa.41.0.copyload64.lcssa to i32
  %488 = add nuw nsw i32 %.lcssa760, %486
  %notmask661 = shl nsw i32 -1, %488
  %489 = xor i32 %notmask661, -1
  %490 = trunc i64 %.16549.lcssa to i32
  %491 = and i32 %490, %489
  %492 = lshr i32 %491, %.lcssa760
  %493 = add nuw i32 %492, %487
  %494 = zext i32 %493 to i64
  %495 = getelementptr inbounds %struct.code, ptr %484, i64 %494
  %.sroa.18.0..sroa_idx37973 = getelementptr inbounds i8, ptr %495, i64 1
  %.sroa.18.0.copyload38974 = load i8, ptr %.sroa.18.0..sroa_idx37973, align 1, !tbaa !22
  %496 = zext i8 %.sroa.18.0.copyload38974 to i32
  %497 = add nuw nsw i32 %.lcssa760, %496
  %.not662975 = icmp ugt i32 %497, %.16.lcssa
  br i1 %.not662975, label %.lr.ph979.preheader, label %._crit_edge980

.lr.ph979.preheader:                              ; preds = %.preheader702
  %498 = zext nneg i32 %.16.lcssa to i64
  br label %.lr.ph979

.lr.ph979:                                        ; preds = %.lr.ph979.preheader, %505
  %499 = phi ptr [ %484, %.lr.ph979.preheader ], [ %506, %505 ]
  %indvars.iv1278 = phi i64 [ %498, %.lr.ph979.preheader ], [ %indvars.iv.next1279, %505 ]
  %.17550977 = phi i64 [ %.16549.lcssa, %.lr.ph979.preheader ], [ %513, %505 ]
  %.29976 = phi i32 [ %.27.lcssa, %.lr.ph979.preheader ], [ %507, %505 ]
  %500 = icmp eq i32 %.29976, 0
  br i1 %500, label %501, label %505

501:                                              ; preds = %.lr.ph979
  %502 = call i32 %1(ptr noundef %2, ptr noundef nonnull %6) #5
  %503 = icmp eq i32 %502, 0
  br i1 %503, label %504, label %._crit_edge1299

._crit_edge1299:                                  ; preds = %501
  %.pre1300 = load ptr, ptr %32, align 8, !tbaa !37
  br label %505

504:                                              ; preds = %501
  store ptr null, ptr %6, align 8, !tbaa !18
  br label %.loopexit696

505:                                              ; preds = %._crit_edge1299, %.lr.ph979
  %506 = phi ptr [ %.pre1300, %._crit_edge1299 ], [ %499, %.lr.ph979 ]
  %.30 = phi i32 [ %502, %._crit_edge1299 ], [ %.29976, %.lr.ph979 ]
  %507 = add i32 %.30, -1
  %508 = load ptr, ptr %6, align 8, !tbaa !18
  %509 = getelementptr inbounds i8, ptr %508, i64 1
  store ptr %509, ptr %6, align 8, !tbaa !18
  %510 = load i8, ptr %508, align 1, !tbaa !22
  %511 = zext i8 %510 to i64
  %512 = shl i64 %511, %indvars.iv1278
  %513 = add i64 %512, %.17550977
  %indvars.iv.next1279 = add nuw nsw i64 %indvars.iv1278, 8
  %514 = trunc i64 %513 to i32
  %515 = and i32 %514, %489
  %516 = lshr i32 %515, %.lcssa760
  %517 = add nuw i32 %516, %487
  %518 = zext i32 %517 to i64
  %519 = getelementptr inbounds %struct.code, ptr %506, i64 %518
  %.sroa.18.0..sroa_idx37 = getelementptr inbounds i8, ptr %519, i64 1
  %.sroa.18.0.copyload38 = load i8, ptr %.sroa.18.0..sroa_idx37, align 1, !tbaa !22
  %520 = zext i8 %.sroa.18.0.copyload38 to i32
  %521 = add nuw nsw i32 %.lcssa760, %520
  %522 = zext nneg i32 %521 to i64
  %.not662 = icmp ult i64 %indvars.iv.next1279, %522
  br i1 %.not662, label %.lr.ph979, label %._crit_edge980.loopexit

._crit_edge980.loopexit:                          ; preds = %505
  %523 = trunc nuw i64 %indvars.iv.next1279 to i32
  br label %._crit_edge980

._crit_edge980:                                   ; preds = %._crit_edge980.loopexit, %.preheader702
  %.29.lcssa = phi i32 [ %.27.lcssa, %.preheader702 ], [ %507, %._crit_edge980.loopexit ]
  %.17550.lcssa = phi i64 [ %.16549.lcssa, %.preheader702 ], [ %513, %._crit_edge980.loopexit ]
  %.17.lcssa = phi i32 [ %.16.lcssa, %.preheader702 ], [ %523, %._crit_edge980.loopexit ]
  %.lcssa772 = phi ptr [ %495, %.preheader702 ], [ %519, %._crit_edge980.loopexit ]
  %.sroa.18.0.copyload38.lcssa = phi i8 [ %.sroa.18.0.copyload38974, %.preheader702 ], [ %.sroa.18.0.copyload38, %._crit_edge980.loopexit ]
  %.sroa.41.0..sroa_idx65 = getelementptr inbounds i8, ptr %.lcssa772, i64 2
  %.sroa.41.0.copyload66 = load i16, ptr %.sroa.41.0..sroa_idx65, align 2, !tbaa !32
  %.sroa.022.0.copyload32 = load i8, ptr %.lcssa772, align 2, !tbaa !22
  %524 = zext nneg i8 %.sroa.18.0.copyload36.lcssa to i64
  %525 = lshr i64 %.17550.lcssa, %524
  %526 = sub i32 %.17.lcssa, %.lcssa760
  br label %527

527:                                              ; preds = %._crit_edge965, %._crit_edge980
  %.31 = phi i32 [ %.29.lcssa, %._crit_edge980 ], [ %.27.lcssa, %._crit_edge965 ]
  %.18551 = phi i64 [ %525, %._crit_edge980 ], [ %.16549.lcssa, %._crit_edge965 ]
  %.18 = phi i32 [ %526, %._crit_edge980 ], [ %.16.lcssa, %._crit_edge965 ]
  %.sroa.41.0 = phi i16 [ %.sroa.41.0.copyload66, %._crit_edge980 ], [ %.sroa.41.0.copyload64.lcssa, %._crit_edge965 ]
  %.sroa.18.0 = phi i8 [ %.sroa.18.0.copyload38.lcssa, %._crit_edge980 ], [ %.sroa.18.0.copyload36.lcssa, %._crit_edge965 ]
  %.sroa.022.0 = phi i8 [ %.sroa.022.0.copyload32, %._crit_edge980 ], [ %.sroa.022.0.copyload31, %._crit_edge965 ]
  %528 = zext i8 %.sroa.18.0 to i32
  %529 = zext nneg i8 %.sroa.18.0 to i64
  %530 = lshr i64 %.18551, %529
  %531 = sub i32 %.18, %528
  %532 = zext i16 %.sroa.41.0 to i32
  store i32 %532, ptr %37, align 4, !tbaa !25
  %533 = zext i8 %.sroa.022.0 to i32
  %534 = icmp eq i8 %.sroa.022.0, 0
  br i1 %534, label %535, label %546

535:                                              ; preds = %527
  %536 = icmp eq i32 %.0560, 0
  br i1 %536, label %537, label %541

537:                                              ; preds = %535
  %538 = load ptr, ptr %21, align 8, !tbaa !20
  %539 = load i32, ptr %23, align 4, !tbaa !21
  store i32 %539, ptr %15, align 8, !tbaa !16
  %540 = call i32 %3(ptr noundef %4, ptr noundef %538, i32 noundef %539) #5
  %.not677 = icmp eq i32 %540, 0
  br i1 %.not677, label %._crit_edge1315, label %.loopexit696

._crit_edge1315:                                  ; preds = %537
  %.pre1316 = load i32, ptr %37, align 4, !tbaa !25
  br label %541

541:                                              ; preds = %._crit_edge1315, %535
  %542 = phi i32 [ %.pre1316, %._crit_edge1315 ], [ %532, %535 ]
  %.3597 = phi ptr [ %538, %._crit_edge1315 ], [ %.0594, %535 ]
  %.3563 = phi i32 [ %539, %._crit_edge1315 ], [ %.0560, %535 ]
  %543 = trunc i32 %542 to i8
  %544 = getelementptr inbounds i8, ptr %.3597, i64 1
  store i8 %543, ptr %.3597, align 1, !tbaa !22
  %545 = add i32 %.3563, -1
  store i32 18, ptr %10, align 8, !tbaa !13
  br label %.thread

546:                                              ; preds = %527
  %547 = and i32 %533, 32
  %.not663 = icmp eq i32 %547, 0
  br i1 %.not663, label %549, label %548

548:                                              ; preds = %546
  store i32 11, ptr %10, align 8, !tbaa !13
  br label %.thread

549:                                              ; preds = %546
  %550 = and i32 %533, 64
  %.not664 = icmp eq i32 %550, 0
  br i1 %.not664, label %552, label %551

551:                                              ; preds = %549
  store ptr @.str.8, ptr %13, align 8, !tbaa !12
  store i32 27, ptr %10, align 8, !tbaa !13
  br label %.thread

552:                                              ; preds = %549
  %553 = and i32 %533, 15
  store i32 %553, ptr %38, align 4, !tbaa !56
  %.not665 = icmp eq i32 %553, 0
  br i1 %.not665, label %581, label %.preheader701

.preheader701:                                    ; preds = %552
  %554 = icmp ult i32 %531, %553
  br i1 %554, label %.lr.ph989, label %._crit_edge990

.lr.ph989:                                        ; preds = %.preheader701, %561
  %555 = phi i32 [ %562, %561 ], [ %553, %.preheader701 ]
  %.19988 = phi i32 [ %571, %561 ], [ %531, %.preheader701 ]
  %.19552987 = phi i64 [ %570, %561 ], [ %530, %.preheader701 ]
  %.32986 = phi i32 [ %563, %561 ], [ %.31, %.preheader701 ]
  %556 = icmp eq i32 %.32986, 0
  br i1 %556, label %557, label %561

557:                                              ; preds = %.lr.ph989
  %558 = call i32 %1(ptr noundef %2, ptr noundef nonnull %6) #5
  %559 = icmp eq i32 %558, 0
  br i1 %559, label %560, label %._crit_edge1301

._crit_edge1301:                                  ; preds = %557
  %.pre1302 = load i32, ptr %38, align 4, !tbaa !56
  br label %561

560:                                              ; preds = %557
  store ptr null, ptr %6, align 8, !tbaa !18
  br label %.loopexit696

561:                                              ; preds = %._crit_edge1301, %.lr.ph989
  %562 = phi i32 [ %.pre1302, %._crit_edge1301 ], [ %555, %.lr.ph989 ]
  %.33 = phi i32 [ %558, %._crit_edge1301 ], [ %.32986, %.lr.ph989 ]
  %563 = add i32 %.33, -1
  %564 = load ptr, ptr %6, align 8, !tbaa !18
  %565 = getelementptr inbounds i8, ptr %564, i64 1
  store ptr %565, ptr %6, align 8, !tbaa !18
  %566 = load i8, ptr %564, align 1, !tbaa !22
  %567 = zext i8 %566 to i64
  %568 = zext nneg i32 %.19988 to i64
  %569 = shl i64 %567, %568
  %570 = add i64 %569, %.19552987
  %571 = add i32 %.19988, 8
  %572 = icmp ult i32 %571, %562
  br i1 %572, label %.lr.ph989, label %._crit_edge990.loopexit, !llvm.loop !57

._crit_edge990.loopexit:                          ; preds = %561
  %.pre1303 = load i32, ptr %37, align 4, !tbaa !25
  br label %._crit_edge990

._crit_edge990:                                   ; preds = %._crit_edge990.loopexit, %.preheader701
  %573 = phi i32 [ %532, %.preheader701 ], [ %.pre1303, %._crit_edge990.loopexit ]
  %.32.lcssa = phi i32 [ %.31, %.preheader701 ], [ %563, %._crit_edge990.loopexit ]
  %.19552.lcssa = phi i64 [ %530, %.preheader701 ], [ %570, %._crit_edge990.loopexit ]
  %.19.lcssa = phi i32 [ %531, %.preheader701 ], [ %571, %._crit_edge990.loopexit ]
  %.lcssa777 = phi i32 [ %553, %.preheader701 ], [ %562, %._crit_edge990.loopexit ]
  %574 = trunc i64 %.19552.lcssa to i32
  %notmask666 = shl nsw i32 -1, %.lcssa777
  %575 = xor i32 %notmask666, -1
  %576 = and i32 %575, %574
  %577 = add i32 %573, %576
  store i32 %577, ptr %37, align 4, !tbaa !25
  %578 = zext nneg i32 %.lcssa777 to i64
  %579 = lshr i64 %.19552.lcssa, %578
  %580 = sub i32 %.19.lcssa, %.lcssa777
  br label %581

581:                                              ; preds = %._crit_edge990, %552
  %.34 = phi i32 [ %.32.lcssa, %._crit_edge990 ], [ %.31, %552 ]
  %.20553 = phi i64 [ %579, %._crit_edge990 ], [ %530, %552 ]
  %.20 = phi i32 [ %580, %._crit_edge990 ], [ %531, %552 ]
  %582 = load ptr, ptr %35, align 8, !tbaa !50
  %583 = trunc i64 %.20553 to i32
  %584 = load i32, ptr %36, align 4, !tbaa !51
  %notmask667995 = shl nsw i32 -1, %584
  %585 = xor i32 %notmask667995, -1
  %586 = and i32 %585, %583
  %587 = zext nneg i32 %586 to i64
  %588 = getelementptr inbounds %struct.code, ptr %582, i64 %587
  %.sroa.18.0..sroa_idx39996 = getelementptr inbounds i8, ptr %588, i64 1
  %.sroa.18.0.copyload40997 = load i8, ptr %.sroa.18.0..sroa_idx39996, align 1, !tbaa !22
  %589 = zext i8 %.sroa.18.0.copyload40997 to i32
  %.not6681000 = icmp ult i32 %.20, %589
  br i1 %.not6681000, label %.lr.ph1005.preheader, label %._crit_edge1006

.lr.ph1005.preheader:                             ; preds = %581
  %590 = zext nneg i32 %.20 to i64
  br label %.lr.ph1005

.lr.ph1005:                                       ; preds = %.lr.ph1005.preheader, %598
  %591 = phi i32 [ %584, %.lr.ph1005.preheader ], [ %599, %598 ]
  %592 = phi ptr [ %582, %.lr.ph1005.preheader ], [ %600, %598 ]
  %indvars.iv1281 = phi i64 [ %590, %.lr.ph1005.preheader ], [ %indvars.iv.next1282, %598 ]
  %.215541002 = phi i64 [ %.20553, %.lr.ph1005.preheader ], [ %607, %598 ]
  %.351001 = phi i32 [ %.34, %.lr.ph1005.preheader ], [ %601, %598 ]
  %593 = icmp eq i32 %.351001, 0
  br i1 %593, label %594, label %598

594:                                              ; preds = %.lr.ph1005
  %595 = call i32 %1(ptr noundef %2, ptr noundef nonnull %6) #5
  %596 = icmp eq i32 %595, 0
  br i1 %596, label %597, label %._crit_edge1304

._crit_edge1304:                                  ; preds = %594
  %.pre1305 = load ptr, ptr %35, align 8, !tbaa !50
  %.pre1306 = load i32, ptr %36, align 4, !tbaa !51
  br label %598

597:                                              ; preds = %594
  store ptr null, ptr %6, align 8, !tbaa !18
  br label %.loopexit696

598:                                              ; preds = %._crit_edge1304, %.lr.ph1005
  %599 = phi i32 [ %.pre1306, %._crit_edge1304 ], [ %591, %.lr.ph1005 ]
  %600 = phi ptr [ %.pre1305, %._crit_edge1304 ], [ %592, %.lr.ph1005 ]
  %.36 = phi i32 [ %595, %._crit_edge1304 ], [ %.351001, %.lr.ph1005 ]
  %601 = add i32 %.36, -1
  %602 = load ptr, ptr %6, align 8, !tbaa !18
  %603 = getelementptr inbounds i8, ptr %602, i64 1
  store ptr %603, ptr %6, align 8, !tbaa !18
  %604 = load i8, ptr %602, align 1, !tbaa !22
  %605 = zext i8 %604 to i64
  %606 = shl i64 %605, %indvars.iv1281
  %607 = add i64 %606, %.215541002
  %indvars.iv.next1282 = add nuw nsw i64 %indvars.iv1281, 8
  %608 = trunc i64 %607 to i32
  %notmask667 = shl nsw i32 -1, %599
  %609 = xor i32 %notmask667, -1
  %610 = and i32 %609, %608
  %611 = zext nneg i32 %610 to i64
  %612 = getelementptr inbounds %struct.code, ptr %600, i64 %611
  %.sroa.18.0..sroa_idx39 = getelementptr inbounds i8, ptr %612, i64 1
  %.sroa.18.0.copyload40 = load i8, ptr %.sroa.18.0..sroa_idx39, align 1, !tbaa !22
  %613 = zext i8 %.sroa.18.0.copyload40 to i64
  %.not668 = icmp ult i64 %indvars.iv.next1282, %613
  br i1 %.not668, label %.lr.ph1005, label %._crit_edge1006.loopexit

._crit_edge1006.loopexit:                         ; preds = %598
  %614 = zext i8 %.sroa.18.0.copyload40 to i32
  %615 = trunc nuw i64 %indvars.iv.next1282 to i32
  br label %._crit_edge1006

._crit_edge1006:                                  ; preds = %._crit_edge1006.loopexit, %581
  %616 = phi ptr [ %582, %581 ], [ %600, %._crit_edge1006.loopexit ]
  %.35.lcssa = phi i32 [ %.34, %581 ], [ %601, %._crit_edge1006.loopexit ]
  %.21554.lcssa = phi i64 [ %.20553, %581 ], [ %607, %._crit_edge1006.loopexit ]
  %.21.lcssa = phi i32 [ %.20, %581 ], [ %615, %._crit_edge1006.loopexit ]
  %.lcssa786 = phi ptr [ %588, %581 ], [ %612, %._crit_edge1006.loopexit ]
  %.sroa.18.0.copyload40.lcssa = phi i8 [ %.sroa.18.0.copyload40997, %581 ], [ %.sroa.18.0.copyload40, %._crit_edge1006.loopexit ]
  %.lcssa782 = phi i32 [ %589, %581 ], [ %614, %._crit_edge1006.loopexit ]
  %.sroa.41.0.copyload68.lcssa.in = getelementptr inbounds i8, ptr %.lcssa786, i64 2
  %.sroa.41.0.copyload68.lcssa = load i16, ptr %.sroa.41.0.copyload68.lcssa.in, align 2, !tbaa !32
  %.sroa.022.0.copyload33 = load i8, ptr %.lcssa786, align 2, !tbaa !22
  %617 = icmp ult i8 %.sroa.022.0.copyload33, 16
  br i1 %617, label %.preheader700, label %659

.preheader700:                                    ; preds = %._crit_edge1006
  %618 = zext nneg i8 %.sroa.022.0.copyload33 to i32
  %619 = zext i16 %.sroa.41.0.copyload68.lcssa to i32
  %620 = add nuw nsw i32 %.lcssa782, %618
  %notmask669 = shl nsw i32 -1, %620
  %621 = xor i32 %notmask669, -1
  %622 = trunc i64 %.21554.lcssa to i32
  %623 = and i32 %622, %621
  %624 = lshr i32 %623, %.lcssa782
  %625 = add nuw i32 %624, %619
  %626 = zext i32 %625 to i64
  %627 = getelementptr inbounds %struct.code, ptr %616, i64 %626
  %.sroa.18.0..sroa_idx411014 = getelementptr inbounds i8, ptr %627, i64 1
  %.sroa.18.0.copyload421015 = load i8, ptr %.sroa.18.0..sroa_idx411014, align 1, !tbaa !22
  %628 = zext i8 %.sroa.18.0.copyload421015 to i32
  %629 = add nuw nsw i32 %.lcssa782, %628
  %.not6701016 = icmp ugt i32 %629, %.21.lcssa
  br i1 %.not6701016, label %.lr.ph1020.preheader, label %._crit_edge1021

.lr.ph1020.preheader:                             ; preds = %.preheader700
  %630 = zext nneg i32 %.21.lcssa to i64
  br label %.lr.ph1020

.lr.ph1020:                                       ; preds = %.lr.ph1020.preheader, %637
  %631 = phi ptr [ %616, %.lr.ph1020.preheader ], [ %638, %637 ]
  %indvars.iv1284 = phi i64 [ %630, %.lr.ph1020.preheader ], [ %indvars.iv.next1285, %637 ]
  %.225551018 = phi i64 [ %.21554.lcssa, %.lr.ph1020.preheader ], [ %645, %637 ]
  %.371017 = phi i32 [ %.35.lcssa, %.lr.ph1020.preheader ], [ %639, %637 ]
  %632 = icmp eq i32 %.371017, 0
  br i1 %632, label %633, label %637

633:                                              ; preds = %.lr.ph1020
  %634 = call i32 %1(ptr noundef %2, ptr noundef nonnull %6) #5
  %635 = icmp eq i32 %634, 0
  br i1 %635, label %636, label %._crit_edge1307

._crit_edge1307:                                  ; preds = %633
  %.pre1308 = load ptr, ptr %35, align 8, !tbaa !50
  br label %637

636:                                              ; preds = %633
  store ptr null, ptr %6, align 8, !tbaa !18
  br label %.loopexit696

637:                                              ; preds = %._crit_edge1307, %.lr.ph1020
  %638 = phi ptr [ %.pre1308, %._crit_edge1307 ], [ %631, %.lr.ph1020 ]
  %.38 = phi i32 [ %634, %._crit_edge1307 ], [ %.371017, %.lr.ph1020 ]
  %639 = add i32 %.38, -1
  %640 = load ptr, ptr %6, align 8, !tbaa !18
  %641 = getelementptr inbounds i8, ptr %640, i64 1
  store ptr %641, ptr %6, align 8, !tbaa !18
  %642 = load i8, ptr %640, align 1, !tbaa !22
  %643 = zext i8 %642 to i64
  %644 = shl i64 %643, %indvars.iv1284
  %645 = add i64 %644, %.225551018
  %indvars.iv.next1285 = add nuw nsw i64 %indvars.iv1284, 8
  %646 = trunc i64 %645 to i32
  %647 = and i32 %646, %621
  %648 = lshr i32 %647, %.lcssa782
  %649 = add nuw i32 %648, %619
  %650 = zext i32 %649 to i64
  %651 = getelementptr inbounds %struct.code, ptr %638, i64 %650
  %.sroa.18.0..sroa_idx41 = getelementptr inbounds i8, ptr %651, i64 1
  %.sroa.18.0.copyload42 = load i8, ptr %.sroa.18.0..sroa_idx41, align 1, !tbaa !22
  %652 = zext i8 %.sroa.18.0.copyload42 to i32
  %653 = add nuw nsw i32 %.lcssa782, %652
  %654 = zext nneg i32 %653 to i64
  %.not670 = icmp ult i64 %indvars.iv.next1285, %654
  br i1 %.not670, label %.lr.ph1020, label %._crit_edge1021.loopexit

._crit_edge1021.loopexit:                         ; preds = %637
  %655 = trunc nuw i64 %indvars.iv.next1285 to i32
  br label %._crit_edge1021

._crit_edge1021:                                  ; preds = %._crit_edge1021.loopexit, %.preheader700
  %.37.lcssa = phi i32 [ %.35.lcssa, %.preheader700 ], [ %639, %._crit_edge1021.loopexit ]
  %.22555.lcssa = phi i64 [ %.21554.lcssa, %.preheader700 ], [ %645, %._crit_edge1021.loopexit ]
  %.22.lcssa = phi i32 [ %.21.lcssa, %.preheader700 ], [ %655, %._crit_edge1021.loopexit ]
  %.lcssa794 = phi ptr [ %627, %.preheader700 ], [ %651, %._crit_edge1021.loopexit ]
  %.sroa.18.0.copyload42.lcssa = phi i8 [ %.sroa.18.0.copyload421015, %.preheader700 ], [ %.sroa.18.0.copyload42, %._crit_edge1021.loopexit ]
  %.sroa.41.0..sroa_idx69 = getelementptr inbounds i8, ptr %.lcssa794, i64 2
  %.sroa.41.0.copyload70 = load i16, ptr %.sroa.41.0..sroa_idx69, align 2, !tbaa !32
  %.sroa.022.0.copyload34 = load i8, ptr %.lcssa794, align 2, !tbaa !22
  %656 = zext nneg i8 %.sroa.18.0.copyload40.lcssa to i64
  %657 = lshr i64 %.22555.lcssa, %656
  %658 = sub i32 %.22.lcssa, %.lcssa782
  br label %659

659:                                              ; preds = %._crit_edge1006, %._crit_edge1021
  %.39 = phi i32 [ %.37.lcssa, %._crit_edge1021 ], [ %.35.lcssa, %._crit_edge1006 ]
  %.23556 = phi i64 [ %657, %._crit_edge1021 ], [ %.21554.lcssa, %._crit_edge1006 ]
  %.23 = phi i32 [ %658, %._crit_edge1021 ], [ %.21.lcssa, %._crit_edge1006 ]
  %.sroa.41.1 = phi i16 [ %.sroa.41.0.copyload70, %._crit_edge1021 ], [ %.sroa.41.0.copyload68.lcssa, %._crit_edge1006 ]
  %.sroa.18.1 = phi i8 [ %.sroa.18.0.copyload42.lcssa, %._crit_edge1021 ], [ %.sroa.18.0.copyload40.lcssa, %._crit_edge1006 ]
  %.sroa.022.1 = phi i8 [ %.sroa.022.0.copyload34, %._crit_edge1021 ], [ %.sroa.022.0.copyload33, %._crit_edge1006 ]
  %660 = zext i8 %.sroa.18.1 to i32
  %661 = zext nneg i8 %.sroa.18.1 to i64
  %662 = lshr i64 %.23556, %661
  %663 = sub i32 %.23, %660
  %664 = zext i8 %.sroa.022.1 to i32
  %665 = and i32 %664, 64
  %.not671 = icmp eq i32 %665, 0
  br i1 %.not671, label %667, label %666

666:                                              ; preds = %659
  store ptr @.str.9, ptr %13, align 8, !tbaa !12
  store i32 27, ptr %10, align 8, !tbaa !13
  br label %.thread

667:                                              ; preds = %659
  %668 = zext i16 %.sroa.41.1 to i32
  store i32 %668, ptr %39, align 8, !tbaa !58
  %669 = and i32 %664, 15
  store i32 %669, ptr %38, align 4, !tbaa !56
  %.not672 = icmp eq i32 %669, 0
  br i1 %.not672, label %697, label %.preheader699

.preheader699:                                    ; preds = %667
  %670 = icmp ult i32 %663, %669
  br i1 %670, label %.lr.ph1030, label %._crit_edge1031

.lr.ph1030:                                       ; preds = %.preheader699, %677
  %671 = phi i32 [ %678, %677 ], [ %669, %.preheader699 ]
  %.241029 = phi i32 [ %687, %677 ], [ %663, %.preheader699 ]
  %.245571028 = phi i64 [ %686, %677 ], [ %662, %.preheader699 ]
  %.401027 = phi i32 [ %679, %677 ], [ %.39, %.preheader699 ]
  %672 = icmp eq i32 %.401027, 0
  br i1 %672, label %673, label %677

673:                                              ; preds = %.lr.ph1030
  %674 = call i32 %1(ptr noundef %2, ptr noundef nonnull %6) #5
  %675 = icmp eq i32 %674, 0
  br i1 %675, label %676, label %._crit_edge1309

._crit_edge1309:                                  ; preds = %673
  %.pre1310 = load i32, ptr %38, align 4, !tbaa !56
  br label %677

676:                                              ; preds = %673
  store ptr null, ptr %6, align 8, !tbaa !18
  br label %.loopexit696

677:                                              ; preds = %._crit_edge1309, %.lr.ph1030
  %678 = phi i32 [ %.pre1310, %._crit_edge1309 ], [ %671, %.lr.ph1030 ]
  %.41 = phi i32 [ %674, %._crit_edge1309 ], [ %.401027, %.lr.ph1030 ]
  %679 = add i32 %.41, -1
  %680 = load ptr, ptr %6, align 8, !tbaa !18
  %681 = getelementptr inbounds i8, ptr %680, i64 1
  store ptr %681, ptr %6, align 8, !tbaa !18
  %682 = load i8, ptr %680, align 1, !tbaa !22
  %683 = zext i8 %682 to i64
  %684 = zext nneg i32 %.241029 to i64
  %685 = shl i64 %683, %684
  %686 = add i64 %685, %.245571028
  %687 = add i32 %.241029, 8
  %688 = icmp ult i32 %687, %678
  br i1 %688, label %.lr.ph1030, label %._crit_edge1031.loopexit, !llvm.loop !59

._crit_edge1031.loopexit:                         ; preds = %677
  %.pre1311 = load i32, ptr %39, align 8, !tbaa !58
  br label %._crit_edge1031

._crit_edge1031:                                  ; preds = %._crit_edge1031.loopexit, %.preheader699
  %689 = phi i32 [ %668, %.preheader699 ], [ %.pre1311, %._crit_edge1031.loopexit ]
  %.40.lcssa = phi i32 [ %.39, %.preheader699 ], [ %679, %._crit_edge1031.loopexit ]
  %.24557.lcssa = phi i64 [ %662, %.preheader699 ], [ %686, %._crit_edge1031.loopexit ]
  %.24.lcssa = phi i32 [ %663, %.preheader699 ], [ %687, %._crit_edge1031.loopexit ]
  %.lcssa799 = phi i32 [ %669, %.preheader699 ], [ %678, %._crit_edge1031.loopexit ]
  %690 = trunc i64 %.24557.lcssa to i32
  %notmask673 = shl nsw i32 -1, %.lcssa799
  %691 = xor i32 %notmask673, -1
  %692 = and i32 %691, %690
  %693 = add i32 %689, %692
  store i32 %693, ptr %39, align 8, !tbaa !58
  %694 = zext nneg i32 %.lcssa799 to i64
  %695 = lshr i64 %.24557.lcssa, %694
  %696 = sub i32 %.24.lcssa, %.lcssa799
  br label %697

697:                                              ; preds = %._crit_edge1031, %667
  %698 = phi i32 [ %693, %._crit_edge1031 ], [ %668, %667 ]
  %.42 = phi i32 [ %.40.lcssa, %._crit_edge1031 ], [ %.39, %667 ]
  %.25558 = phi i64 [ %695, %._crit_edge1031 ], [ %662, %667 ]
  %.25 = phi i32 [ %696, %._crit_edge1031 ], [ %663, %667 ]
  %699 = load i32, ptr %23, align 4, !tbaa !21
  %700 = load i32, ptr %15, align 8, !tbaa !16
  %701 = icmp ult i32 %700, %699
  %702 = select i1 %701, i32 %.0560, i32 0
  %703 = sub i32 %699, %702
  %704 = icmp ugt i32 %698, %703
  br i1 %704, label %705, label %.preheader697

705:                                              ; preds = %697
  store ptr @.str.10, ptr %13, align 8, !tbaa !12
  store i32 27, ptr %10, align 8, !tbaa !13
  br label %.thread

.preheader697:                                    ; preds = %697, %.loopexit1541
  %.4598 = phi ptr [ %.lcssa1469, %.loopexit1541 ], [ %.0594, %697 ]
  %.4564 = phi i32 [ %759, %.loopexit1541 ], [ %.0560, %697 ]
  %706 = icmp eq i32 %.4564, 0
  %.pre1314 = load i32, ptr %23, align 4, !tbaa !21
  br i1 %706, label %707, label %710

707:                                              ; preds = %.preheader697
  %708 = load ptr, ptr %21, align 8, !tbaa !20
  store i32 %.pre1314, ptr %15, align 8, !tbaa !16
  %709 = call i32 %3(ptr noundef %4, ptr noundef %708, i32 noundef %.pre1314) #5
  %.not674 = icmp eq i32 %709, 0
  br i1 %.not674, label %._crit_edge1312, label %.loopexit696

._crit_edge1312:                                  ; preds = %707
  %.pre1313 = load i32, ptr %23, align 4, !tbaa !21
  br label %710

710:                                              ; preds = %._crit_edge1312, %.preheader697
  %711 = phi i32 [ %.pre1313, %._crit_edge1312 ], [ %.pre1314, %.preheader697 ]
  %.5599 = phi ptr [ %708, %._crit_edge1312 ], [ %.4598, %.preheader697 ]
  %.5565 = phi i32 [ %.pre1314, %._crit_edge1312 ], [ %.4564, %.preheader697 ]
  %712 = load i32, ptr %39, align 8, !tbaa !58
  %713 = sub i32 %711, %712
  %714 = icmp ult i32 %713, %.5565
  %715 = zext i32 %713 to i64
  %716 = zext i32 %712 to i64
  %717 = sub nsw i64 0, %716
  %718 = select i1 %714, i32 %713, i32 0
  %.4 = sub i32 %.5565, %718
  %.pn = select i1 %714, i64 %715, i64 %717
  %.0523 = getelementptr i8, ptr %.5599, i64 %.pn
  %719 = load i32, ptr %37, align 4, !tbaa !25
  %.5 = call i32 @llvm.umin.i32(i32 %.4, i32 %719)
  %720 = sub i32 %719, %.5
  store i32 %720, ptr %37, align 4, !tbaa !25
  %721 = add i32 %.5, -1
  %722 = zext i32 %721 to i64
  %723 = add nuw nsw i64 %722, 1
  %min.iters.check = icmp ult i32 %721, 31
  %724 = add nsw i64 %.pn, 31
  %diff.check = icmp ult i64 %724, 32
  %or.cond1544 = select i1 %min.iters.check, i1 true, i1 %diff.check
  br i1 %or.cond1544, label %scalar.ph.preheader, label %vector.ph

vector.ph:                                        ; preds = %710
  %n.vec = and i64 %723, 8589934560
  %ind.end = getelementptr i8, ptr %.5599, i64 %n.vec
  %.cast = trunc i64 %n.vec to i32
  %ind.end1519 = sub i32 %.5, %.cast
  %ind.end1521 = getelementptr i8, ptr %.0523, 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 %.5599, i64 %index
  %next.gep1524 = getelementptr i8, ptr %.0523, i64 %index
  %725 = getelementptr i8, ptr %next.gep1524, i64 16
  %wide.load = load <16 x i8>, ptr %next.gep1524, align 1, !tbaa !22
  %wide.load1526 = load <16 x i8>, ptr %725, align 1, !tbaa !22
  %726 = 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.load1526, ptr %726, align 1, !tbaa !22
  %index.next = add nuw i64 %index, 32
  %727 = icmp eq i64 %index.next, %n.vec
  br i1 %727, label %middle.block, label %vector.body, !llvm.loop !60

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

scalar.ph.preheader:                              ; preds = %middle.block, %710
  %.6600.ph = phi ptr [ %.5599, %710 ], [ %ind.end, %middle.block ]
  %.6.ph = phi i32 [ %.5, %710 ], [ %ind.end1519, %middle.block ]
  %.1.ph = phi ptr [ %.0523, %710 ], [ %ind.end1521, %middle.block ]
  %728 = add i32 %.6.ph, -1
  %xtraiter1644 = and i32 %.6.ph, 7
  %lcmp.mod1645.not = icmp eq i32 %xtraiter1644, 0
  br i1 %lcmp.mod1645.not, label %scalar.ph.prol.loopexit, label %scalar.ph.prol

scalar.ph.prol:                                   ; preds = %scalar.ph.preheader, %scalar.ph.prol
  %.6600.prol = phi ptr [ %731, %scalar.ph.prol ], [ %.6600.ph, %scalar.ph.preheader ]
  %.6.prol = phi i32 [ %732, %scalar.ph.prol ], [ %.6.ph, %scalar.ph.preheader ]
  %.1.prol = phi ptr [ %729, %scalar.ph.prol ], [ %.1.ph, %scalar.ph.preheader ]
  %prol.iter1646 = phi i32 [ %prol.iter1646.next, %scalar.ph.prol ], [ 0, %scalar.ph.preheader ]
  %729 = getelementptr inbounds i8, ptr %.1.prol, i64 1
  %730 = load i8, ptr %.1.prol, align 1, !tbaa !22
  %731 = getelementptr inbounds i8, ptr %.6600.prol, i64 1
  store i8 %730, ptr %.6600.prol, align 1, !tbaa !22
  %732 = add i32 %.6.prol, -1
  %prol.iter1646.next = add i32 %prol.iter1646, 1
  %prol.iter1646.cmp.not = icmp eq i32 %prol.iter1646.next, %xtraiter1644
  br i1 %prol.iter1646.cmp.not, label %scalar.ph.prol.loopexit, label %scalar.ph.prol, !llvm.loop !61

scalar.ph.prol.loopexit:                          ; preds = %scalar.ph.prol, %scalar.ph.preheader
  %.lcssa1594.unr = phi ptr [ poison, %scalar.ph.preheader ], [ %731, %scalar.ph.prol ]
  %.6600.unr = phi ptr [ %.6600.ph, %scalar.ph.preheader ], [ %731, %scalar.ph.prol ]
  %.6.unr = phi i32 [ %.6.ph, %scalar.ph.preheader ], [ %732, %scalar.ph.prol ]
  %.1.unr = phi ptr [ %.1.ph, %scalar.ph.preheader ], [ %729, %scalar.ph.prol ]
  %733 = icmp ult i32 %728, 7
  br i1 %733, label %.loopexit1541, label %scalar.ph

scalar.ph:                                        ; preds = %scalar.ph.prol.loopexit, %scalar.ph
  %.6600 = phi ptr [ %757, %scalar.ph ], [ %.6600.unr, %scalar.ph.prol.loopexit ]
  %.6 = phi i32 [ %758, %scalar.ph ], [ %.6.unr, %scalar.ph.prol.loopexit ]
  %.1 = phi ptr [ %755, %scalar.ph ], [ %.1.unr, %scalar.ph.prol.loopexit ]
  %734 = getelementptr inbounds i8, ptr %.1, i64 1
  %735 = load i8, ptr %.1, align 1, !tbaa !22
  %736 = getelementptr inbounds i8, ptr %.6600, i64 1
  store i8 %735, ptr %.6600, align 1, !tbaa !22
  %737 = getelementptr inbounds i8, ptr %.1, i64 2
  %738 = load i8, ptr %734, align 1, !tbaa !22
  %739 = getelementptr inbounds i8, ptr %.6600, i64 2
  store i8 %738, ptr %736, align 1, !tbaa !22
  %740 = getelementptr inbounds i8, ptr %.1, i64 3
  %741 = load i8, ptr %737, align 1, !tbaa !22
  %742 = getelementptr inbounds i8, ptr %.6600, i64 3
  store i8 %741, ptr %739, align 1, !tbaa !22
  %743 = getelementptr inbounds i8, ptr %.1, i64 4
  %744 = load i8, ptr %740, align 1, !tbaa !22
  %745 = getelementptr inbounds i8, ptr %.6600, i64 4
  store i8 %744, ptr %742, align 1, !tbaa !22
  %746 = getelementptr inbounds i8, ptr %.1, i64 5
  %747 = load i8, ptr %743, align 1, !tbaa !22
  %748 = getelementptr inbounds i8, ptr %.6600, i64 5
  store i8 %747, ptr %745, align 1, !tbaa !22
  %749 = getelementptr inbounds i8, ptr %.1, i64 6
  %750 = load i8, ptr %746, align 1, !tbaa !22
  %751 = getelementptr inbounds i8, ptr %.6600, i64 6
  store i8 %750, ptr %748, align 1, !tbaa !22
  %752 = getelementptr inbounds i8, ptr %.1, i64 7
  %753 = load i8, ptr %749, align 1, !tbaa !22
  %754 = getelementptr inbounds i8, ptr %.6600, i64 7
  store i8 %753, ptr %751, align 1, !tbaa !22
  %755 = getelementptr inbounds i8, ptr %.1, i64 8
  %756 = load i8, ptr %752, align 1, !tbaa !22
  %757 = getelementptr inbounds i8, ptr %.6600, i64 8
  store i8 %756, ptr %754, align 1, !tbaa !22
  %758 = add i32 %.6, -8
  %.not675.7 = icmp eq i32 %758, 0
  br i1 %.not675.7, label %.loopexit1541, label %scalar.ph, !llvm.loop !62

.loopexit1541:                                    ; preds = %scalar.ph.prol.loopexit, %scalar.ph, %middle.block
  %.lcssa1469 = phi ptr [ %ind.end, %middle.block ], [ %.lcssa1594.unr, %scalar.ph.prol.loopexit ], [ %757, %scalar.ph ]
  %759 = sub i32 %.5565, %.5
  %760 = load i32, ptr %37, align 4, !tbaa !25
  %.not676 = icmp eq i32 %760, 0
  br i1 %.not676, label %.thread, label %.preheader697, !llvm.loop !63

761:                                              ; preds = %45
  %762 = load i32, ptr %23, align 4, !tbaa !21
  %763 = icmp ult i32 %.0560, %762
  br i1 %763, label %764, label %.loopexit696

764:                                              ; preds = %761
  %765 = load ptr, ptr %21, align 8, !tbaa !20
  %766 = sub i32 %762, %.0560
  %767 = call i32 %3(ptr noundef %4, ptr noundef %765, i32 noundef %766) #5
  %.not652 = icmp eq i32 %767, 0
  %spec.select683 = select i1 %.not652, i32 1, i32 -5
  br label %.loopexit696

.thread:                                          ; preds = %.loopexit1541, %298, %400, %._crit_edge951, %705, %666, %551, %548, %541, %452, %431, %423, %200, %160, %._crit_edge1052, %107, %78, %54
  %.7601 = phi ptr [ %453, %452 ], [ %544, %541 ], [ %.0594, %548 ], [ %.0594, %551 ], [ %.0594, %666 ], [ %.0594, %705 ], [ %.0594, %160 ], [ %.0594, %200 ], [ %.0594, %._crit_edge951 ], [ %.0594, %423 ], [ %.0594, %431 ], [ %.0594, %107 ], [ %.1595.lcssa, %._crit_edge1052 ], [ %.0594, %54 ], [ %.0594, %78 ], [ %.0594, %400 ], [ %.0594, %298 ], [ %.lcssa1469, %.loopexit1541 ]
  %.43 = phi i32 [ %456, %452 ], [ %.31, %541 ], [ %.31, %548 ], [ %.31, %551 ], [ %.39, %666 ], [ %.42, %705 ], [ %.7574.lcssa, %160 ], [ %.10577.lcssa, %200 ], [ %.12579.lcssa, %._crit_edge951 ], [ %.12579.lcssa, %423 ], [ %.12579.lcssa, %431 ], [ %.3570.lcssa, %107 ], [ %.5572.lcssa, %._crit_edge1052 ], [ %.0567, %54 ], [ %.1568.lcssa, %78 ], [ %.23590, %400 ], [ %.17584.lcssa, %298 ], [ %.42, %.loopexit1541 ]
  %.6566 = phi i32 [ %454, %452 ], [ %545, %541 ], [ %.0560, %548 ], [ %.0560, %551 ], [ %.0560, %666 ], [ %.0560, %705 ], [ %.0560, %160 ], [ %.0560, %200 ], [ %.0560, %._crit_edge951 ], [ %.0560, %423 ], [ %.0560, %431 ], [ %.0560, %107 ], [ %.1561.lcssa, %._crit_edge1052 ], [ %.0560, %54 ], [ %.0560, %78 ], [ %.0560, %400 ], [ %.0560, %298 ], [ %759, %.loopexit1541 ]
  %.26559 = phi i64 [ %457, %452 ], [ %530, %541 ], [ %530, %548 ], [ %530, %551 ], [ %662, %666 ], [ %.25558, %705 ], [ %156, %160 ], [ %190, %200 ], [ %.6539.lcssa, %._crit_edge951 ], [ %.6539.lcssa, %423 ], [ %.6539.lcssa, %431 ], [ %.2535.lcssa, %107 ], [ 0, %._crit_edge1052 ], [ %57, %54 ], [ %79, %78 ], [ %.12545, %400 ], [ %294, %298 ], [ %.25558, %.loopexit1541 ]
  %.26 = phi i32 [ %458, %452 ], [ %531, %541 ], [ %531, %548 ], [ %531, %551 ], [ %663, %666 ], [ %.25, %705 ], [ %157, %160 ], [ %191, %200 ], [ %.6532.lcssa, %._crit_edge951 ], [ %.6532.lcssa, %423 ], [ %.6532.lcssa, %431 ], [ %.2528.lcssa, %107 ], [ 0, %._crit_edge1052 ], [ %58, %54 ], [ %80, %78 ], [ %.12, %400 ], [ %295, %298 ], [ %.25, %.loopexit1541 ]
  %.pre = load i32, ptr %10, align 8, !tbaa !13
  br label %45

.loopexit696.loopexit1547:                        ; preds = %45
  br label %.loopexit696

.loopexit696:                                     ; preds = %537, %707, %118, %45, %.loopexit696.loopexit1547, %764, %761, %676, %636, %597, %560, %504, %465, %335, %313, %282, %247, %220, %.split, %136, %115, %93, %.split1065
  %.44 = phi i32 [ %.0567, %761 ], [ 0, %560 ], [ 0, %676 ], [ 0, %636 ], [ 0, %597 ], [ 0, %504 ], [ 0, %465 ], [ 0, %136 ], [ 0, %.split ], [ 0, %247 ], [ 0, %282 ], [ 0, %313 ], [ 0, %335 ], [ 0, %220 ], [ 0, %93 ], [ 0, %115 ], [ 0, %.split1065 ], [ %.0567, %764 ], [ %.0567, %45 ], [ %.6573, %118 ], [ %.42, %707 ], [ %.31, %537 ], [ %.0567, %.loopexit696.loopexit1547 ]
  %.0 = phi i32 [ 1, %761 ], [ -5, %560 ], [ -5, %676 ], [ -5, %636 ], [ -5, %597 ], [ -5, %504 ], [ -5, %465 ], [ -5, %136 ], [ -5, %.split ], [ -5, %247 ], [ -5, %282 ], [ -5, %313 ], [ -5, %335 ], [ -5, %220 ], [ -5, %93 ], [ -5, %115 ], [ -5, %.split1065 ], [ %spec.select683, %764 ], [ -2, %45 ], [ -5, %118 ], [ -5, %707 ], [ -5, %537 ], [ -3, %.loopexit696.loopexit1547 ]
  %768 = load ptr, ptr %6, align 8, !tbaa !18
  store ptr %768, ptr %0, align 8, !tbaa !17
  store i32 %.44, ptr %42, align 8, !tbaa !19
  br label %769

769:                                              ; preds = %5, %8, %.loopexit696
  %.0602 = phi i32 [ %.0, %.loopexit696 ], [ -2, %8 ], [ -2, %5 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #5
  ret i32 %.0602
}

; Function Attrs: nounwind uwtable
declare hidden void @fixedtables1(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 0}
!14 = !{!"inflate_state", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !11, i64 24, !11, i64 32, !7, i64 40, !10, i64 48, !10, i64 52, !10, i64 56, !10, i64 60, !7, i64 64, !11, i64 72, !10, i64 80, !10, i64 84, !10, i64 88, !10, i64 92, !7, i64 96, !7, i64 104, !10, i64 112, !10, i64 116, !10, i64 120, !10, i64 124, !10, i64 128, !10, i64 132, !7, i64 136, !8, i64 144, !8, i64 784, !8, i64 1360}
!15 = !{!14, !10, i64 4}
!16 = !{!14, !10, i64 56}
!17 = !{!6, !7, i64 0}
!18 = !{!7, !7, i64 0}
!19 = !{!6, !10, i64 8}
!20 = !{!14, !7, i64 64}
!21 = !{!14, !10, i64 52}
!22 = !{!8, !8, i64 0}
!23 = distinct !{!23, !24}
!24 = !{!"llvm.loop.mustprogress"}
!25 = !{!14, !10, i64 84}
!26 = distinct !{!26, !24}
!27 = distinct !{!27, !24}
!28 = !{!14, !10, i64 124}
!29 = !{!14, !10, i64 128}
!30 = !{!14, !10, i64 120}
!31 = !{!14, !10, i64 132}
!32 = !{!33, !33, i64 0}
!33 = !{!"short", !8, i64 0}
!34 = distinct !{!34, !24}
!35 = distinct !{!35, !24}
!36 = !{!14, !7, i64 136}
!37 = !{!14, !7, i64 96}
!38 = !{!14, !10, i64 112}
!39 = distinct !{!39, !24}
!40 = distinct !{!40, !24}
!41 = distinct !{!41, !24}
!42 = distinct !{!42, !24}
!43 = distinct !{!43, !44}
!44 = !{!"llvm.loop.unroll.disable"}
!45 = distinct !{!45, !24, !46, !47}
!46 = !{!"llvm.loop.isvectorized", i32 1}
!47 = !{!"llvm.loop.unroll.runtime.disable"}
!48 = distinct !{!48, !24, !46}
!49 = distinct !{!49, !24}
!50 = !{!14, !7, i64 104}
!51 = !{!14, !10, i64 116}
!52 = !{!6, !7, i64 24}
!53 = !{!6, !10, i64 32}
!54 = !{!14, !11, i64 72}
!55 = !{!14, !10, i64 80}
!56 = !{!14, !10, i64 92}
!57 = distinct !{!57, !24}
!58 = !{!14, !10, i64 88}
!59 = distinct !{!59, !24}
!60 = distinct !{!60, !24, !46, !47}
!61 = distinct !{!61, !44}
!62 = distinct !{!62, !24, !46}
!63 = distinct !{!63, !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