; LLVM IR from fwip/fastqz :: fastqz15 (main)

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

%"class.libzpaq::Array" = type <{ ptr, i64, i32, [4 x i8] }>
%"class.libzpaq::Array.0" = type <{ ptr, i64, i32, [4 x i8] }>
%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"class.std::allocator" = type { i8 }
%union.pthread_attr_t = type { i64, [48 x i8] }
%struct.Job = type { i32, %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string" }

@.str.2 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [557 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [35 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.33 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.34 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.35 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.36 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.37 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.38 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.39 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.40 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.41 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.42 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.43 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.44 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.45 = external hidden unnamed_addr constant [15 x i8], align 1

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN7libzpaq5errorEPKc(ptr noundef) #0

; Function Attrs: noreturn nounwind
declare void @exit(i32 noundef) #1

; Function Attrs: mustprogress uwtable
declare dso_local noundef ptr @_Z8compressPv(ptr noundef) #2

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

declare i32 @printf(ptr noundef, ...) #4

; Function Attrs: mustprogress nounwind uwtable
declare noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32)) #0 align 2

declare noalias ptr @fopen(ptr noundef, ptr noundef) #4

declare i32 @__gxx_personality_v0(...)

declare void @perror(ptr noundef) #4

declare i32 @fclose(ptr noundef) #4

; Function Attrs: nounwind
declare i32 @remove(ptr noundef) #5

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef ptr @_Z10decompressPv(ptr noundef) #2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_Z4hashy(i64 noundef) #0

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_Z6rmatchRN7libzpaq5ArrayIhEEjPhii(ptr noundef nonnull align 8 dereferenceable(20), i32 noundef, ptr noundef, i32 noundef, i32 noundef) #2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZN7libzpaq5ArrayIhEixEm(ptr noundef nonnull align 8 dereferenceable(20), i64 noundef) #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z7readrefRN7libzpaq5ArrayIhEEPKc(ptr noundef nonnull align 8 dereferenceable(20), ptr noundef) #2

declare void @rewind(ptr noundef) #4

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7libzpaq5ArrayIhE6resizeEmi(ptr noundef nonnull align 8 dereferenceable(20), i64 noundef, i32 noundef) #2 align 2

; Function Attrs: mustprogress norecurse uwtable
define dso_local noundef i32 @main(i32 noundef %0, ptr noundef %1) #6 personality ptr @__gxx_personality_v0 {
  %3 = alloca i32, align 4
  %4 = alloca i32, align 4
  %5 = alloca ptr, align 8
  %6 = alloca i64, align 8
  %7 = alloca i8, align 1
  %8 = alloca i32, align 4
  %9 = alloca i32, align 4
  %10 = alloca i32, align 4
  %11 = alloca %"class.libzpaq::Array", align 8
  %12 = alloca %"class.libzpaq::Array.0", align 8
  %13 = alloca ptr, align 8
  %14 = alloca i32, align 4
  %15 = alloca i32, align 4
  %16 = alloca i32, align 4
  %17 = alloca i32, align 4
  %18 = alloca i64, align 8
  %19 = alloca i32, align 4
  %20 = alloca i32, align 4
  %21 = alloca i32, align 4
  %22 = alloca i32, align 4
  %23 = alloca ptr, align 8
  %24 = alloca [4 x ptr], align 16
  %25 = alloca i32, align 4
  %26 = alloca i32, align 4
  %27 = alloca i32, align 4
  %28 = alloca i32, align 4
  %29 = alloca i32, align 4
  %30 = alloca i32, align 4
  %31 = alloca %"class.std::__cxx11::basic_string", align 8
  %32 = alloca %"class.std::__cxx11::basic_string", align 8
  %33 = alloca %"class.std::__cxx11::basic_string", align 8
  %34 = alloca %"class.std::allocator", align 1
  %35 = alloca i32, align 4
  %36 = alloca [4096 x i8], align 16
  %37 = alloca [4096 x i8], align 16
  %38 = alloca [4099 x i32], align 16
  %39 = alloca i32, align 4
  %40 = alloca i32, align 4
  %41 = alloca i32, align 4
  %42 = alloca i8, align 1
  %43 = alloca i32, align 4
  %44 = alloca i32, align 4
  %45 = alloca i64, align 8
  %46 = alloca i32, align 4
  %47 = alloca i32, align 4
  %48 = alloca i32, align 4
  %49 = alloca i32, align 4
  %50 = alloca i32, align 4
  %51 = alloca i32, align 4
  %52 = alloca i32, align 4
  %53 = alloca i32, align 4
  %54 = alloca i32, align 4
  %55 = alloca i32, align 4
  %56 = alloca [4 x i64], align 16
  %57 = alloca %union.pthread_attr_t, align 8
  %58 = alloca [4 x %struct.Job], align 16
  %59 = alloca %"class.std::__cxx11::basic_string", align 8
  %60 = alloca %"class.std::__cxx11::basic_string", align 8
  %61 = alloca %"class.std::__cxx11::basic_string", align 8
  %62 = alloca %"class.std::allocator", align 1
  %63 = alloca %"class.std::__cxx11::basic_string", align 8
  %64 = alloca ptr, align 8
  %65 = alloca [4 x %struct.Job], align 16
  %66 = alloca [4 x i64], align 16
  %67 = alloca %union.pthread_attr_t, align 8
  %68 = alloca i32, align 4
  %69 = alloca %"class.std::__cxx11::basic_string", align 8
  %70 = alloca %"class.std::__cxx11::basic_string", align 8
  %71 = alloca %"class.std::__cxx11::basic_string", align 8
  %72 = alloca %"class.std::allocator", align 1
  %73 = alloca %"class.std::__cxx11::basic_string", align 8
  %74 = alloca i32, align 4
  %75 = alloca ptr, align 8
  %76 = alloca [4 x ptr], align 16
  %77 = alloca ptr, align 8
  %78 = alloca i32, align 4
  %79 = alloca i32, align 4
  %80 = alloca i32, align 4
  %81 = alloca i32, align 4
  %82 = alloca i32, align 4
  %83 = alloca %"class.std::__cxx11::basic_string", align 8
  %84 = alloca %"class.std::__cxx11::basic_string", align 8
  %85 = alloca %"class.std::__cxx11::basic_string", align 8
  %86 = alloca %"class.std::allocator", align 1
  %87 = alloca i32, align 4
  %88 = alloca [4096 x i8], align 16
  %89 = alloca [4096 x i8], align 16
  %90 = alloca i32, align 4
  %91 = alloca i32, align 4
  %92 = alloca i32, align 4
  %93 = alloca i32, align 4
  %94 = alloca i32, align 4
  %95 = alloca i32, align 4
  %96 = alloca i32, align 4
  %97 = alloca i32, align 4
  store i32 0, ptr %3, align 4
  store i32 %0, ptr %4, align 4, !tbaa !5
  store ptr %1, ptr %5, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %6) #12
  %98 = call i64 @clock() #12
  store i64 %98, ptr %6, align 8, !tbaa !11
  %99 = load i32, ptr %4, align 4, !tbaa !5
  %100 = icmp slt i32 %99, 4
  br i1 %100, label %101, label %103

101:                                              ; preds = %2
  %102 = call i32 (ptr, ...) @printf(ptr noundef @.str.10, ptr noundef @.str.11)
  call void @exit(i32 noundef 1) #13
  unreachable

103:                                              ; preds = %2
  call void @llvm.lifetime.start.p0(i64 1, ptr %7) #12
  %104 = load ptr, ptr %5, align 8, !tbaa !9
  %105 = getelementptr inbounds ptr, ptr %104, i64 1
  %106 = load ptr, ptr %105, align 8, !tbaa !9
  %107 = getelementptr inbounds i8, ptr %106, i64 0
  %108 = load i8, ptr %107, align 1, !tbaa !13
  store i8 %108, ptr %7, align 1, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 4, ptr %8) #12
  %109 = load ptr, ptr %5, align 8, !tbaa !9
  %110 = getelementptr inbounds ptr, ptr %109, i64 1
  %111 = load ptr, ptr %110, align 8, !tbaa !9
  %112 = getelementptr inbounds i8, ptr %111, i64 1
  %113 = call i32 @atoi(ptr noundef %112) #14
  store i32 %113, ptr %8, align 4, !tbaa !5
  %114 = load i32, ptr %8, align 4, !tbaa !5
  %115 = icmp slt i32 %114, 1
  br i1 %115, label %116, label %117

116:                                              ; preds = %103
  store i32 1, ptr %8, align 4, !tbaa !5
  br label %117

117:                                              ; preds = %116, %103
  call void @llvm.lifetime.start.p0(i64 4, ptr %9) #12
  %118 = load i32, ptr %4, align 4, !tbaa !5
  %119 = icmp sgt i32 %118, 4
  %120 = zext i1 %119 to i32
  store i32 %120, ptr %9, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %10) #12
  store i32 8, ptr %10, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 24, ptr %11) #12
  call void @_ZN7libzpaq5ArrayIhEC2Emi(ptr noundef nonnull align 8 dereferenceable(20) %11, i64 noundef 0, i32 noundef 0)
  call void @llvm.lifetime.start.p0(i64 24, ptr %12) #12
  invoke void @_ZN7libzpaq5ArrayIjEC2Emi(ptr noundef nonnull align 8 dereferenceable(20) %12, i64 noundef 0, i32 noundef 0)
          to label %121 unwind label %155

121:                                              ; preds = %117
  %122 = load i8, ptr %7, align 1, !tbaa !13
  %123 = sext i8 %122 to i32
  %124 = icmp eq i32 %123, 101
  br i1 %124, label %129, label %125

125:                                              ; preds = %121
  %126 = load i8, ptr %7, align 1, !tbaa !13
  %127 = sext i8 %126 to i32
  %128 = icmp eq i32 %127, 99
  br i1 %128, label %129, label %1443

129:                                              ; preds = %125, %121
  %130 = load i32, ptr %9, align 4, !tbaa !5
  %131 = icmp ne i32 %130, 0
  br i1 %131, label %132, label %258

132:                                              ; preds = %129
  %133 = load ptr, ptr %5, align 8, !tbaa !9
  %134 = getelementptr inbounds ptr, ptr %133, i64 4
  %135 = load ptr, ptr %134, align 8, !tbaa !9
  invoke void @_Z7readrefRN7libzpaq5ArrayIhEEPKc(ptr noundef nonnull align 8 dereferenceable(20) %11, ptr noundef %135)
          to label %136 unwind label %159

136:                                              ; preds = %132
  %137 = load i8, ptr %7, align 1, !tbaa !13
  %138 = sext i8 %137 to i32
  %139 = icmp eq i32 %138, 99
  br i1 %139, label %144, label %140

140:                                              ; preds = %136
  %141 = load i8, ptr %7, align 1, !tbaa !13
  %142 = sext i8 %141 to i32
  %143 = icmp eq i32 %142, 101
  br i1 %143, label %144, label %257

144:                                              ; preds = %140, %136
  invoke void @_ZN7libzpaq5ArrayIjE6resizeEmi(ptr noundef nonnull align 8 dereferenceable(20) %12, i64 noundef 134217736, i32 noundef 0)
          to label %145 unwind label %159

145:                                              ; preds = %144
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #12
  store i32 0, ptr %15, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #12
  store i32 4096, ptr %16, align 4, !tbaa !5
  br label %146

146:                                              ; preds = %237, %145
  %147 = load i32, ptr %16, align 4, !tbaa !5
  %148 = invoke noundef i64 @_ZNK7libzpaq5ArrayIhE4sizeEv(ptr noundef nonnull align 8 dereferenceable(20) %11)
          to label %149 unwind label %163

149:                                              ; preds = %146
  %150 = trunc i64 %148 to i32
  %151 = sub nsw i32 %150, 4096
  %152 = sub nsw i32 %151, 8
  %153 = icmp sle i32 %147, %152
  br i1 %153, label %167, label %154

154:                                              ; preds = %149
  store i32 2, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #12
  br label %242

155:                                              ; preds = %117
  %156 = landingpad { ptr, i32 }
          cleanup
  %157 = extractvalue { ptr, i32 } %156, 0
  store ptr %157, ptr %13, align 8
  %158 = extractvalue { ptr, i32 } %156, 1
  store i32 %158, ptr %14, align 4
  br label %2258

159:                                              ; preds = %2248, %144, %132
  %160 = landingpad { ptr, i32 }
          cleanup
  %161 = extractvalue { ptr, i32 } %160, 0
  store ptr %161, ptr %13, align 8
  %162 = extractvalue { ptr, i32 } %160, 1
  store i32 %162, ptr %14, align 4
  br label %2257

163:                                              ; preds = %146
  %164 = landingpad { ptr, i32 }
          cleanup
  %165 = extractvalue { ptr, i32 } %164, 0
  store ptr %165, ptr %13, align 8
  %166 = extractvalue { ptr, i32 } %164, 1
  store i32 %166, ptr %14, align 4
  br label %241

167:                                              ; preds = %149
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #12
  store i64 0, ptr %18, align 8, !tbaa !14
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #12
  store i32 0, ptr %19, align 4, !tbaa !5
  br label %168

168:                                              ; preds = %184, %167
  %169 = load i32, ptr %19, align 4, !tbaa !5
  %170 = icmp slt i32 %169, 8
  br i1 %170, label %172, label %171

171:                                              ; preds = %168
  store i32 5, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #12
  br label %191

172:                                              ; preds = %168
  %173 = load i64, ptr %18, align 8, !tbaa !14
  %174 = shl i64 %173, 8
  %175 = load i32, ptr %16, align 4, !tbaa !5
  %176 = load i32, ptr %19, align 4, !tbaa !5
  %177 = add nsw i32 %175, %176
  %178 = sext i32 %177 to i64
  %179 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZN7libzpaq5ArrayIhEixEm(ptr noundef nonnull align 8 dereferenceable(20) %11, i64 noundef %178)
          to label %180 unwind label %187

180:                                              ; preds = %172
  %181 = load i8, ptr %179, align 1, !tbaa !13
  %182 = zext i8 %181 to i64
  %183 = or i64 %174, %182
  store i64 %183, ptr %18, align 8, !tbaa !14
  br label %184

184:                                              ; preds = %180
  %185 = load i32, ptr %19, align 4, !tbaa !5
  %186 = add nsw i32 %185, 1
  store i32 %186, ptr %19, align 4, !tbaa !5
  br label %168, !llvm.loop !16

187:                                              ; preds = %172
  %188 = landingpad { ptr, i32 }
          cleanup
  %189 = extractvalue { ptr, i32 } %188, 0
  store ptr %189, ptr %13, align 8
  %190 = extractvalue { ptr, i32 } %188, 1
  store i32 %190, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #12
  br label %240

191:                                              ; preds = %171
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #12
  %192 = load i64, ptr %18, align 8, !tbaa !14
  %193 = call noundef i32 @_Z4hashy(i64 noundef %192)
  store i32 %193, ptr %20, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #12
  %194 = load i32, ptr %20, align 4, !tbaa !5
  %195 = and i32 %194, 134217727
  store i32 %195, ptr %21, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #12
  store i32 0, ptr %22, align 4, !tbaa !5
  br label %196

196:                                              ; preds = %211, %191
  %197 = load i32, ptr %22, align 4, !tbaa !5
  %198 = icmp slt i32 %197, 8
  br i1 %198, label %199, label %208

199:                                              ; preds = %196
  %200 = load i32, ptr %21, align 4, !tbaa !5
  %201 = load i32, ptr %22, align 4, !tbaa !5
  %202 = add i32 %200, %201
  %203 = zext i32 %202 to i64
  %204 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN7libzpaq5ArrayIjEixEm(ptr noundef nonnull align 8 dereferenceable(20) %12, i64 noundef %203)
          to label %205 unwind label %214

205:                                              ; preds = %199
  %206 = load i32, ptr %204, align 4, !tbaa !5
  %207 = icmp ne i32 %206, 0
  br label %208

208:                                              ; preds = %205, %196
  %209 = phi i1 [ false, %196 ], [ %207, %205 ]
  br i1 %209, label %210, label %218

210:                                              ; preds = %208
  br label %211

211:                                              ; preds = %210
  %212 = load i32, ptr %22, align 4, !tbaa !5
  %213 = add nsw i32 %212, 1
  store i32 %213, ptr %22, align 4, !tbaa !5
  br label %196, !llvm.loop !18

214:                                              ; preds = %224, %199
  %215 = landingpad { ptr, i32 }
          cleanup
  %216 = extractvalue { ptr, i32 } %215, 0
  store ptr %216, ptr %13, align 8
  %217 = extractvalue { ptr, i32 } %215, 1
  store i32 %217, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #12
  br label %240

218:                                              ; preds = %208
  %219 = load i32, ptr %22, align 4, !tbaa !5
  %220 = icmp eq i32 %219, 8
  br i1 %220, label %221, label %224

221:                                              ; preds = %218
  %222 = load i32, ptr %15, align 4, !tbaa !5
  %223 = add nsw i32 %222, 1
  store i32 %223, ptr %15, align 4, !tbaa !5
  br label %236

224:                                              ; preds = %218
  %225 = load i32, ptr %20, align 4, !tbaa !5
  %226 = and i32 %225, -134217728
  %227 = load i32, ptr %16, align 4, !tbaa !5
  %228 = ashr i32 %227, 3
  %229 = add i32 %226, %228
  %230 = load i32, ptr %21, align 4, !tbaa !5
  %231 = load i32, ptr %22, align 4, !tbaa !5
  %232 = add i32 %230, %231
  %233 = zext i32 %232 to i64
  %234 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN7libzpaq5ArrayIjEixEm(ptr noundef nonnull align 8 dereferenceable(20) %12, i64 noundef %233)
          to label %235 unwind label %214

235:                                              ; preds = %224
  store i32 %229, ptr %234, align 4, !tbaa !5
  br label %236

236:                                              ; preds = %235, %221
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #12
  br label %237

237:                                              ; preds = %236
  %238 = load i32, ptr %16, align 4, !tbaa !5
  %239 = add nsw i32 %238, 8
  store i32 %239, ptr %16, align 4, !tbaa !5
  br label %146, !llvm.loop !19

240:                                              ; preds = %214, %187
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #12
  br label %241

241:                                              ; preds = %240, %163
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #12
  br label %256

242:                                              ; preds = %154
  %243 = load ptr, ptr %5, align 8, !tbaa !9
  %244 = getelementptr inbounds ptr, ptr %243, i64 4
  %245 = load ptr, ptr %244, align 8, !tbaa !9
  %246 = load i32, ptr %15, align 4, !tbaa !5
  %247 = invoke noundef i64 @_ZNK7libzpaq5ArrayIhE4sizeEv(ptr noundef nonnull align 8 dereferenceable(20) %11)
          to label %248 unwind label %252

248:                                              ; preds = %242
  %249 = udiv i64 %247, 8
  %250 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.12, ptr noundef %245, i32 noundef %246, i64 noundef %249)
          to label %251 unwind label %252

251:                                              ; preds = %248
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #12
  br label %257

252:                                              ; preds = %248, %242
  %253 = landingpad { ptr, i32 }
          cleanup
  %254 = extractvalue { ptr, i32 } %253, 0
  store ptr %254, ptr %13, align 8
  %255 = extractvalue { ptr, i32 } %253, 1
  store i32 %255, ptr %14, align 4
  br label %256

256:                                              ; preds = %252, %241
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #12
  br label %2257

257:                                              ; preds = %251, %140
  br label %258

258:                                              ; preds = %257, %129
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #12
  call void @llvm.lifetime.start.p0(i64 32, ptr %24) #12
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #12
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #12
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #12
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #12
  call void @llvm.lifetime.start.p0(i64 4, ptr %29) #12
  call void @llvm.lifetime.start.p0(i64 4, ptr %30) #12
  %259 = load ptr, ptr %5, align 8, !tbaa !9
  %260 = getelementptr inbounds ptr, ptr %259, i64 2
  %261 = load ptr, ptr %260, align 8, !tbaa !9
  %262 = invoke noalias ptr @fopen(ptr noundef %261, ptr noundef @.str.2)
          to label %263 unwind label %271

263:                                              ; preds = %258
  store ptr %262, ptr %23, align 8, !tbaa !9
  %264 = load ptr, ptr %23, align 8, !tbaa !9
  %265 = icmp ne ptr %264, null
  br i1 %265, label %275, label %266

266:                                              ; preds = %263
  %267 = load ptr, ptr %5, align 8, !tbaa !9
  %268 = getelementptr inbounds ptr, ptr %267, i64 2
  %269 = load ptr, ptr %268, align 8, !tbaa !9
  invoke void @perror(ptr noundef %269)
          to label %270 unwind label %271

270:                                              ; preds = %266
  call void @exit(i32 noundef 1) #13
  unreachable

271:                                              ; preds = %386, %380, %378, %369, %330, %266, %258
  %272 = landingpad { ptr, i32 }
          cleanup
  %273 = extractvalue { ptr, i32 } %272, 0
  store ptr %273, ptr %13, align 8
  %274 = extractvalue { ptr, i32 } %272, 1
  store i32 %274, ptr %14, align 4
  br label %1442

275:                                              ; preds = %263
  store i32 0, ptr %26, align 4, !tbaa !5
  br label %276

276:                                              ; preds = %325, %275
  %277 = load i32, ptr %26, align 4, !tbaa !5
  %278 = load i32, ptr %9, align 4, !tbaa !5
  %279 = add nsw i32 3, %278
  %280 = icmp slt i32 %277, %279
  br i1 %280, label %281, label %329

281:                                              ; preds = %276
  call void @llvm.lifetime.start.p0(i64 32, ptr %31) #12
  call void @llvm.lifetime.start.p0(i64 32, ptr %32) #12
  call void @llvm.lifetime.start.p0(i64 32, ptr %33) #12
  %282 = load ptr, ptr %5, align 8, !tbaa !9
  %283 = getelementptr inbounds ptr, ptr %282, i64 3
  %284 = load ptr, ptr %283, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr %34) #12
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %34) #12
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %33, ptr noundef %284, ptr noundef nonnull align 1 dereferenceable(1) %34)
          to label %285 unwind label %306

285:                                              ; preds = %281
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %32, ptr noundef nonnull align 8 dereferenceable(32) %33, ptr noundef @.str.13)
          to label %286 unwind label %310

286:                                              ; preds = %285
  %287 = load i32, ptr %26, align 4, !tbaa !5
  %288 = sext i32 %287 to i64
  %289 = getelementptr inbounds [5 x i8], ptr @.str.14, i64 0, i64 %288
  %290 = load i8, ptr %289, align 1, !tbaa !13
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_S5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %31, ptr noundef nonnull align 8 dereferenceable(32) %32, i8 noundef signext %290)
          to label %291 unwind label %314

291:                                              ; preds = %286
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %32) #12
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %33) #12
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %34) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %34) #12
  call void @llvm.lifetime.end.p0(i64 32, ptr %33) #12
  call void @llvm.lifetime.end.p0(i64 32, ptr %32) #12
  %292 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %31) #12
  %293 = invoke noalias ptr @fopen(ptr noundef %292, ptr noundef @.str.3)
          to label %294 unwind label %320

294:                                              ; preds = %291
  %295 = load i32, ptr %26, align 4, !tbaa !5
  %296 = sext i32 %295 to i64
  %297 = getelementptr inbounds [4 x ptr], ptr %24, i64 0, i64 %296
  store ptr %293, ptr %297, align 8, !tbaa !9
  %298 = load i32, ptr %26, align 4, !tbaa !5
  %299 = sext i32 %298 to i64
  %300 = getelementptr inbounds [4 x ptr], ptr %24, i64 0, i64 %299
  %301 = load ptr, ptr %300, align 8, !tbaa !9
  %302 = icmp ne ptr %301, null
  br i1 %302, label %324, label %303

303:                                              ; preds = %294
  %304 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %31) #12
  invoke void @perror(ptr noundef %304)
          to label %305 unwind label %320

305:                                              ; preds = %303
  call void @exit(i32 noundef 1) #13
  unreachable

306:                                              ; preds = %281
  %307 = landingpad { ptr, i32 }
          cleanup
  %308 = extractvalue { ptr, i32 } %307, 0
  store ptr %308, ptr %13, align 8
  %309 = extractvalue { ptr, i32 } %307, 1
  store i32 %309, ptr %14, align 4
  br label %319

310:                                              ; preds = %285
  %311 = landingpad { ptr, i32 }
          cleanup
  %312 = extractvalue { ptr, i32 } %311, 0
  store ptr %312, ptr %13, align 8
  %313 = extractvalue { ptr, i32 } %311, 1
  store i32 %313, ptr %14, align 4
  br label %318

314:                                              ; preds = %286
  %315 = landingpad { ptr, i32 }
          cleanup
  %316 = extractvalue { ptr, i32 } %315, 0
  store ptr %316, ptr %13, align 8
  %317 = extractvalue { ptr, i32 } %315, 1
  store i32 %317, ptr %14, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %32) #12
  br label %318

318:                                              ; preds = %314, %310
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %33) #12
  br label %319

319:                                              ; preds = %318, %306
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %34) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %34) #12
  call void @llvm.lifetime.end.p0(i64 32, ptr %33) #12
  call void @llvm.lifetime.end.p0(i64 32, ptr %32) #12
  br label %328

320:                                              ; preds = %303, %291
  %321 = landingpad { ptr, i32 }
          cleanup
  %322 = extractvalue { ptr, i32 } %321, 0
  store ptr %322, ptr %13, align 8
  %323 = extractvalue { ptr, i32 } %321, 1
  store i32 %323, ptr %14, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %31) #12
  br label %328

324:                                              ; preds = %294
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %31) #12
  call void @llvm.lifetime.end.p0(i64 32, ptr %31) #12
  br label %325

325:                                              ; preds = %324
  %326 = load i32, ptr %26, align 4, !tbaa !5
  %327 = add nsw i32 %326, 1
  store i32 %327, ptr %26, align 4, !tbaa !5
  br label %276, !llvm.loop !20

328:                                              ; preds = %320, %319
  call void @llvm.lifetime.end.p0(i64 32, ptr %31) #12
  br label %1442

329:                                              ; preds = %276
  store i32 0, ptr %25, align 4, !tbaa !5
  store i32 0, ptr %27, align 4, !tbaa !5
  store i32 0, ptr %26, align 4, !tbaa !5
  br label %330

330:                                              ; preds = %359, %329
  %331 = load ptr, ptr %23, align 8, !tbaa !9
  %332 = invoke i32 @getc(ptr noundef %331)
          to label %333 unwind label %271

333:                                              ; preds = %330
  store i32 %332, ptr %30, align 4, !tbaa !5
  %334 = icmp ne i32 %332, -1
  br i1 %334, label %335, label %339

335:                                              ; preds = %333
  %336 = load i32, ptr %25, align 4, !tbaa !5
  %337 = icmp ne i32 %336, 0
  %338 = xor i1 %337, true
  br label %339

339:                                              ; preds = %335, %333
  %340 = phi i1 [ false, %333 ], [ %338, %335 ]
  br i1 %340, label %341, label %362

341:                                              ; preds = %339
  %342 = load i32, ptr %30, align 4, !tbaa !5
  %343 = icmp eq i32 %342, 10
  br i1 %343, label %344, label %352

344:                                              ; preds = %341
  %345 = load i32, ptr %27, align 4, !tbaa !5
  %346 = icmp ne i32 %345, 0
  br i1 %346, label %347, label %352

347:                                              ; preds = %344
  %348 = load i32, ptr %26, align 4, !tbaa !5
  %349 = load i32, ptr %27, align 4, !tbaa !5
  %350 = sub nsw i32 %348, %349
  %351 = sub nsw i32 %350, 1
  store i32 %351, ptr %25, align 4, !tbaa !5
  br label %358

352:                                              ; preds = %344, %341
  %353 = load i32, ptr %30, align 4, !tbaa !5
  %354 = icmp eq i32 %353, 10
  br i1 %354, label %355, label %357

355:                                              ; preds = %352
  %356 = load i32, ptr %26, align 4, !tbaa !5
  store i32 %356, ptr %27, align 4, !tbaa !5
  br label %357

357:                                              ; preds = %355, %352
  br label %358

358:                                              ; preds = %357, %347
  br label %359

359:                                              ; preds = %358
  %360 = load i32, ptr %26, align 4, !tbaa !5
  %361 = add nsw i32 %360, 1
  store i32 %361, ptr %26, align 4, !tbaa !5
  br label %330, !llvm.loop !21

362:                                              ; preds = %339
  %363 = load i32, ptr %25, align 4, !tbaa !5
  %364 = icmp slt i32 %363, 1
  br i1 %364, label %368, label %365

365:                                              ; preds = %362
  %366 = load i32, ptr %25, align 4, !tbaa !5
  %367 = icmp sge i32 %366, 4096
  br i1 %367, label %368, label %369

368:                                              ; preds = %365, %362
  call void @_ZN7libzpaq5errorEPKc(ptr noundef @.str.15)
  br label %369

369:                                              ; preds = %368, %365
  %370 = load ptr, ptr %5, align 8, !tbaa !9
  %371 = getelementptr inbounds ptr, ptr %370, i64 2
  %372 = load ptr, ptr %371, align 8, !tbaa !9
  %373 = load ptr, ptr %5, align 8, !tbaa !9
  %374 = getelementptr inbounds ptr, ptr %373, i64 3
  %375 = load ptr, ptr %374, align 8, !tbaa !9
  %376 = load i32, ptr %25, align 4, !tbaa !5
  %377 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.16, ptr noundef %372, ptr noundef %375, i32 noundef %376)
          to label %378 unwind label %271

378:                                              ; preds = %369
  %379 = load ptr, ptr %23, align 8, !tbaa !9
  invoke void @rewind(ptr noundef %379)
          to label %380 unwind label %271

380:                                              ; preds = %378
  %381 = load i32, ptr %25, align 4, !tbaa !5
  %382 = ashr i32 %381, 8
  %383 = getelementptr inbounds [4 x ptr], ptr %24, i64 0, i64 0
  %384 = load ptr, ptr %383, align 16, !tbaa !9
  %385 = invoke i32 @putc(i32 noundef %382, ptr noundef %384)
          to label %386 unwind label %271

386:                                              ; preds = %380
  %387 = load i32, ptr %25, align 4, !tbaa !5
  %388 = and i32 %387, 255
  %389 = getelementptr inbounds [4 x ptr], ptr %24, i64 0, i64 0
  %390 = load ptr, ptr %389, align 16, !tbaa !9
  %391 = invoke i32 @putc(i32 noundef %388, ptr noundef %390)
          to label %392 unwind label %271

392:                                              ; preds = %386
  call void @llvm.lifetime.start.p0(i64 4, ptr %35) #12
  store i32 0, ptr %35, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4096, ptr %36) #12
  call void @llvm.memset.p0.i64(ptr align 16 %36, i8 0, i64 4096, i1 false)
  call void @llvm.lifetime.start.p0(i64 4096, ptr %37) #12
  call void @llvm.memset.p0.i64(ptr align 16 %37, i8 0, i64 4096, i1 false)
  call void @llvm.lifetime.start.p0(i64 16396, ptr %38) #12
  call void @llvm.memset.p0.i64(ptr align 16 %38, i8 0, i64 16396, i1 false)
  call void @llvm.lifetime.start.p0(i64 4, ptr %39) #12
  store i32 0, ptr %39, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %40) #12
  store i32 0, ptr %40, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %41) #12
  store i32 0, ptr %41, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %42) #12
  store i8 0, ptr %42, align 1, !tbaa !22
  store i32 0, ptr %41, align 4, !tbaa !5
  br label %393

393:                                              ; preds = %1256, %392
  br i1 true, label %394, label %1260

394:                                              ; preds = %393
  store i32 0, ptr %29, align 4, !tbaa !5
  store i32 0, ptr %28, align 4, !tbaa !5
  store i32 0, ptr %27, align 4, !tbaa !5
  store i32 0, ptr %26, align 4, !tbaa !5
  br label %395

395:                                              ; preds = %500, %394
  %396 = load ptr, ptr %23, align 8, !tbaa !9
  %397 = invoke i32 @getc(ptr noundef %396)
          to label %398 unwind label %409

398:                                              ; preds = %395
  store i32 %397, ptr %30, align 4, !tbaa !5
  %399 = icmp ne i32 %397, -1
  br i1 %399, label %400, label %403

400:                                              ; preds = %398
  %401 = load i32, ptr %30, align 4, !tbaa !5
  %402 = icmp ne i32 %401, 10
  br label %403

403:                                              ; preds = %400, %398
  %404 = phi i1 [ false, %398 ], [ %402, %400 ]
  br i1 %404, label %405, label %503

405:                                              ; preds = %403
  %406 = load i32, ptr %26, align 4, !tbaa !5
  %407 = icmp sge i32 %406, 4096
  br i1 %407, label %408, label %413

408:                                              ; preds = %405
  call void @_ZN7libzpaq5errorEPKc(ptr noundef @.str.17)
  br label %413

409:                                              ; preds = %1315, %1308, %1298, %1289, %1285, %1284, %1281, %1271, %1260, %556, %551, %538, %526, %520, %511, %395
  %410 = landingpad { ptr, i32 }
          cleanup
  %411 = extractvalue { ptr, i32 } %410, 0
  store ptr %411, ptr %13, align 8
  %412 = extractvalue { ptr, i32 } %410, 1
  store i32 %412, ptr %14, align 4
  br label %1441

413:                                              ; preds = %408, %405
  %414 = load i32, ptr %30, align 4, !tbaa !5
  %415 = load i32, ptr %26, align 4, !tbaa !5
  %416 = sext i32 %415 to i64
  %417 = getelementptr inbounds [4096 x i8], ptr %36, i64 0, i64 %416
  %418 = load i8, ptr %417, align 1, !tbaa !13
  %419 = zext i8 %418 to i32
  %420 = icmp ne i32 %414, %419
  br i1 %420, label %421, label %476

421:                                              ; preds = %413
  %422 = load i32, ptr %30, align 4, !tbaa !5
  %423 = call i32 @isdigit(i32 noundef %422) #14
  %424 = icmp ne i32 %423, 0
  br i1 %424, label %425, label %476

425:                                              ; preds = %421
  %426 = load i32, ptr %26, align 4, !tbaa !5
  %427 = sext i32 %426 to i64
  %428 = getelementptr inbounds [4096 x i8], ptr %36, i64 0, i64 %427
  %429 = load i8, ptr %428, align 1, !tbaa !13
  %430 = zext i8 %429 to i32
  %431 = call i32 @isdigit(i32 noundef %430) #14
  %432 = icmp ne i32 %431, 0
  br i1 %432, label %433, label %476

433:                                              ; preds = %425
  %434 = load i32, ptr %27, align 4, !tbaa !5
  %435 = icmp slt i32 %434, 254
  br i1 %435, label %436, label %476

436:                                              ; preds = %433
  %437 = load i32, ptr %26, align 4, !tbaa !5
  %438 = icmp slt i32 %437, 254
  br i1 %438, label %439, label %476

439:                                              ; preds = %436
  %440 = load i32, ptr %26, align 4, !tbaa !5
  %441 = load i32, ptr %29, align 4, !tbaa !5
  %442 = icmp eq i32 %440, %441
  br i1 %442, label %443, label %476

443:                                              ; preds = %439
  %444 = load i32, ptr %27, align 4, !tbaa !5
  %445 = icmp ne i32 %444, 0
  br i1 %445, label %446, label %450

446:                                              ; preds = %443
  %447 = load i32, ptr %27, align 4, !tbaa !5
  %448 = load i32, ptr %26, align 4, !tbaa !5
  %449 = icmp eq i32 %447, %448
  br i1 %449, label %450, label %476

450:                                              ; preds = %446, %443
  call void @llvm.lifetime.start.p0(i64 4, ptr %43) #12
  %451 = load i32, ptr %28, align 4, !tbaa !5
  %452 = mul nsw i32 %451, 10
  %453 = load i32, ptr %30, align 4, !tbaa !5
  %454 = add nsw i32 %452, %453
  %455 = load i32, ptr %26, align 4, !tbaa !5
  %456 = sext i32 %455 to i64
  %457 = getelementptr inbounds [4096 x i8], ptr %36, i64 0, i64 %456
  %458 = load i8, ptr %457, align 1, !tbaa !13
  %459 = zext i8 %458 to i32
  %460 = sub nsw i32 %454, %459
  store i32 %460, ptr %43, align 4, !tbaa !5
  %461 = load i32, ptr %43, align 4, !tbaa !5
  %462 = icmp sgt i32 %461, 0
  br i1 %462, label %463, label %475

463:                                              ; preds = %450
  %464 = load i32, ptr %43, align 4, !tbaa !5
  %465 = icmp slt i32 %464, 254
  br i1 %465, label %466, label %475

466:                                              ; preds = %463
  %467 = load i32, ptr %30, align 4, !tbaa !5
  %468 = trunc i32 %467 to i8
  %469 = load i32, ptr %26, align 4, !tbaa !5
  %470 = sext i32 %469 to i64
  %471 = getelementptr inbounds [4096 x i8], ptr %36, i64 0, i64 %470
  store i8 %468, ptr %471, align 1, !tbaa !13
  %472 = load i32, ptr %43, align 4, !tbaa !5
  store i32 %472, ptr %28, align 4, !tbaa !5
  %473 = load i32, ptr %26, align 4, !tbaa !5
  %474 = add nsw i32 %473, 1
  store i32 %474, ptr %27, align 4, !tbaa !5
  br label %475

475:                                              ; preds = %466, %463, %450
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #12
  br label %476

476:                                              ; preds = %475, %446, %439, %436, %433, %425, %421, %413
  %477 = load i32, ptr %30, align 4, !tbaa !5
  %478 = load i32, ptr %26, align 4, !tbaa !5
  %479 = sext i32 %478 to i64
  %480 = getelementptr inbounds [4096 x i8], ptr %36, i64 0, i64 %479
  %481 = load i8, ptr %480, align 1, !tbaa !13
  %482 = zext i8 %481 to i32
  %483 = icmp eq i32 %477, %482
  br i1 %483, label %484, label %494

484:                                              ; preds = %476
  %485 = load i32, ptr %26, align 4, !tbaa !5
  %486 = load i32, ptr %29, align 4, !tbaa !5
  %487 = icmp eq i32 %485, %486
  br i1 %487, label %488, label %494

488:                                              ; preds = %484
  %489 = load i32, ptr %29, align 4, !tbaa !5
  %490 = icmp slt i32 %489, 254
  br i1 %490, label %491, label %494

491:                                              ; preds = %488
  %492 = load i32, ptr %29, align 4, !tbaa !5
  %493 = add nsw i32 %492, 1
  store i32 %493, ptr %29, align 4, !tbaa !5
  br label %494

494:                                              ; preds = %491, %488, %484, %476
  %495 = load i32, ptr %30, align 4, !tbaa !5
  %496 = trunc i32 %495 to i8
  %497 = load i32, ptr %26, align 4, !tbaa !5
  %498 = sext i32 %497 to i64
  %499 = getelementptr inbounds [4096 x i8], ptr %36, i64 0, i64 %498
  store i8 %496, ptr %499, align 1, !tbaa !13
  br label %500

500:                                              ; preds = %494
  %501 = load i32, ptr %26, align 4, !tbaa !5
  %502 = add nsw i32 %501, 1
  store i32 %502, ptr %26, align 4, !tbaa !5
  br label %395, !llvm.loop !24

503:                                              ; preds = %403
  %504 = load i32, ptr %30, align 4, !tbaa !5
  %505 = icmp eq i32 %504, -1
  br i1 %505, label %506, label %511

506:                                              ; preds = %503
  %507 = load i32, ptr %26, align 4, !tbaa !5
  %508 = icmp ne i32 %507, 0
  br i1 %508, label %509, label %510

509:                                              ; preds = %506
  call void @_ZN7libzpaq5errorEPKc(ptr noundef @.str.18)
  br label %510

510:                                              ; preds = %509, %506
  br label %1260

511:                                              ; preds = %503
  %512 = load i32, ptr %27, align 4, !tbaa !5
  %513 = load i32, ptr %27, align 4, !tbaa !5
  %514 = icmp eq i32 %513, 0
  %515 = zext i1 %514 to i32
  %516 = add nsw i32 %512, %515
  %517 = getelementptr inbounds [4 x ptr], ptr %24, i64 0, i64 0
  %518 = load ptr, ptr %517, align 16, !tbaa !9
  %519 = invoke i32 @putc(i32 noundef %516, ptr noundef %518)
          to label %520 unwind label %409

520:                                              ; preds = %511
  %521 = load i32, ptr %28, align 4, !tbaa !5
  %522 = add nsw i32 %521, 1
  %523 = getelementptr inbounds [4 x ptr], ptr %24, i64 0, i64 0
  %524 = load ptr, ptr %523, align 16, !tbaa !9
  %525 = invoke i32 @putc(i32 noundef %522, ptr noundef %524)
          to label %526 unwind label %409

526:                                              ; preds = %520
  %527 = load i32, ptr %29, align 4, !tbaa !5
  %528 = add nsw i32 %527, 1
  %529 = getelementptr inbounds [4 x ptr], ptr %24, i64 0, i64 0
  %530 = load ptr, ptr %529, align 16, !tbaa !9
  %531 = invoke i32 @putc(i32 noundef %528, ptr noundef %530)
          to label %532 unwind label %409

532:                                              ; preds = %526
  %533 = load i32, ptr %29, align 4, !tbaa !5
  store i32 %533, ptr %27, align 4, !tbaa !5
  br label %534

534:                                              ; preds = %548, %532
  %535 = load i32, ptr %27, align 4, !tbaa !5
  %536 = load i32, ptr %26, align 4, !tbaa !5
  %537 = icmp slt i32 %535, %536
  br i1 %537, label %538, label %551

538:                                              ; preds = %534
  %539 = load i32, ptr %27, align 4, !tbaa !5
  %540 = sext i32 %539 to i64
  %541 = getelementptr inbounds [4096 x i8], ptr %36, i64 0, i64 %540
  %542 = load i8, ptr %541, align 1, !tbaa !13
  %543 = zext i8 %542 to i32
  %544 = getelementptr inbounds [4 x ptr], ptr %24, i64 0, i64 0
  %545 = load ptr, ptr %544, align 16, !tbaa !9
  %546 = invoke i32 @putc(i32 noundef %543, ptr noundef %545)
          to label %547 unwind label %409

547:                                              ; preds = %538
  br label %548

548:                                              ; preds = %547
  %549 = load i32, ptr %27, align 4, !tbaa !5
  %550 = add nsw i32 %549, 1
  store i32 %550, ptr %27, align 4, !tbaa !5
  br label %534, !llvm.loop !25

551:                                              ; preds = %534
  %552 = getelementptr inbounds [4 x ptr], ptr %24, i64 0, i64 0
  %553 = load ptr, ptr %552, align 16, !tbaa !9
  %554 = invoke i32 @putc(i32 noundef 0, ptr noundef %553)
          to label %555 unwind label %409

555:                                              ; preds = %551
  store i32 0, ptr %26, align 4, !tbaa !5
  store i32 0, ptr %29, align 4, !tbaa !5
  br label %556

556:                                              ; preds = %604, %555
  %557 = load ptr, ptr %23, align 8, !tbaa !9
  %558 = invoke i32 @getc(ptr noundef %557)
          to label %559 unwind label %409

559:                                              ; preds = %556
  store i32 %558, ptr %30, align 4, !tbaa !5
  %560 = icmp ne i32 %558, -1
  br i1 %560, label %561, label %564

561:                                              ; preds = %559
  %562 = load i32, ptr %30, align 4, !tbaa !5
  %563 = icmp ne i32 %562, 10
  br label %564

564:                                              ; preds = %561, %559
  %565 = phi i1 [ false, %559 ], [ %563, %561 ]
  br i1 %565, label %566, label %607

566:                                              ; preds = %564
  %567 = load i32, ptr %30, align 4, !tbaa !5
  %568 = icmp eq i32 %567, -1
  br i1 %568, label %569, label %570

569:                                              ; preds = %566
  call void @_ZN7libzpaq5errorEPKc(ptr noundef @.str.19)
  br label %570

570:                                              ; preds = %569, %566
  %571 = load i32, ptr %30, align 4, !tbaa !5
  %572 = icmp ne i32 %571, 78
  br i1 %572, label %573, label %603

573:                                              ; preds = %570
  %574 = load i32, ptr %30, align 4, !tbaa !5
  %575 = icmp eq i32 %574, 65
  %576 = zext i1 %575 to i32
  %577 = load i32, ptr %30, align 4, !tbaa !5
  %578 = icmp eq i32 %577, 67
  %579 = zext i1 %578 to i32
  %580 = mul nsw i32 %579, 2
  %581 = add nsw i32 %576, %580
  %582 = load i32, ptr %30, align 4, !tbaa !5
  %583 = icmp eq i32 %582, 71
  %584 = zext i1 %583 to i32
  %585 = mul nsw i32 %584, 3
  %586 = add nsw i32 %581, %585
  %587 = load i32, ptr %30, align 4, !tbaa !5
  %588 = icmp eq i32 %587, 84
  %589 = zext i1 %588 to i32
  %590 = mul nsw i32 %589, 4
  %591 = add nsw i32 %586, %590
  store i32 %591, ptr %27, align 4, !tbaa !5
  %592 = load i32, ptr %27, align 4, !tbaa !5
  %593 = icmp ne i32 %592, 0
  br i1 %593, label %595, label %594

594:                                              ; preds = %573
  call void @_ZN7libzpaq5errorEPKc(ptr noundef @.str.20)
  br label %595

595:                                              ; preds = %594, %573
  %596 = load i32, ptr %27, align 4, !tbaa !5
  %597 = sub nsw i32 %596, 1
  %598 = trunc i32 %597 to i8
  %599 = load i32, ptr %29, align 4, !tbaa !5
  %600 = add nsw i32 %599, 1
  store i32 %600, ptr %29, align 4, !tbaa !5
  %601 = sext i32 %599 to i64
  %602 = getelementptr inbounds [4096 x i8], ptr %37, i64 0, i64 %601
  store i8 %598, ptr %602, align 1, !tbaa !13
  br label %603

603:                                              ; preds = %595, %570
  br label %604

604:                                              ; preds = %603
  %605 = load i32, ptr %26, align 4, !tbaa !5
  %606 = add nsw i32 %605, 1
  store i32 %606, ptr %26, align 4, !tbaa !5
  br label %556, !llvm.loop !26

607:                                              ; preds = %564
  %608 = load i32, ptr %26, align 4, !tbaa !5
  %609 = load i32, ptr %25, align 4, !tbaa !5
  %610 = icmp ne i32 %608, %609
  br i1 %610, label %611, label %612

611:                                              ; preds = %607
  call void @_ZN7libzpaq5errorEPKc(ptr noundef @.str.21)
  br label %612

612:                                              ; preds = %611, %607
  call void @llvm.lifetime.start.p0(i64 4, ptr %44) #12
  store i32 0, ptr %44, align 4, !tbaa !5
  %613 = load i32, ptr %9, align 4, !tbaa !5
  %614 = icmp ne i32 %613, 0
  br i1 %614, label %615, label %935

615:                                              ; preds = %612
  call void @llvm.lifetime.start.p0(i64 8, ptr %45) #12
  store i64 0, ptr %45, align 8, !tbaa !14
  call void @llvm.lifetime.start.p0(i64 4, ptr %46) #12
  store i32 0, ptr %46, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %47) #12
  store i32 1, ptr %47, align 4, !tbaa !5
  store i32 0, ptr %27, align 4, !tbaa !5
  br label %616

616:                                              ; preds = %712, %615
  %617 = load i32, ptr %27, align 4, !tbaa !5
  %618 = load i32, ptr %29, align 4, !tbaa !5
  %619 = icmp slt i32 %617, %618
  br i1 %619, label %620, label %715

620:                                              ; preds = %616
  %621 = load i64, ptr %45, align 8, !tbaa !14
  %622 = mul i64 %621, 4
  %623 = load i32, ptr %27, align 4, !tbaa !5
  %624 = sext i32 %623 to i64
  %625 = getelementptr inbounds [4096 x i8], ptr %37, i64 0, i64 %624
  %626 = load i8, ptr %625, align 1, !tbaa !13
  %627 = zext i8 %626 to i64
  %628 = add i64 %622, %627
  store i64 %628, ptr %45, align 8, !tbaa !14
  %629 = load i32, ptr %27, align 4, !tbaa !5
  %630 = icmp sge i32 %629, 31
  br i1 %630, label %631, label %711

631:                                              ; preds = %620
  call void @llvm.lifetime.start.p0(i64 4, ptr %48) #12
  %632 = load i64, ptr %45, align 8, !tbaa !14
  %633 = call noundef i32 @_Z4hashy(i64 noundef %632)
  store i32 %633, ptr %48, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %49) #12
  %634 = load i32, ptr %48, align 4, !tbaa !5
  %635 = and i32 %634, 134217727
  store i32 %635, ptr %49, align 4, !tbaa !5
  store i32 0, ptr %28, align 4, !tbaa !5
  br label %636

636:                                              ; preds = %705, %631
  %637 = load i32, ptr %28, align 4, !tbaa !5
  %638 = icmp slt i32 %637, 8
  br i1 %638, label %639, label %648

639:                                              ; preds = %636
  %640 = load i32, ptr %49, align 4, !tbaa !5
  %641 = load i32, ptr %28, align 4, !tbaa !5
  %642 = add i32 %640, %641
  %643 = zext i32 %642 to i64
  %644 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN7libzpaq5ArrayIjEixEm(ptr noundef nonnull align 8 dereferenceable(20) %12, i64 noundef %643)
          to label %645 unwind label %691

645:                                              ; preds = %639
  %646 = load i32, ptr %644, align 4, !tbaa !5
  %647 = icmp ne i32 %646, 0
  br label %648

648:                                              ; preds = %645, %636
  %649 = phi i1 [ false, %636 ], [ %647, %645 ]
  br i1 %649, label %650, label %709

650:                                              ; preds = %648
  call void @llvm.lifetime.start.p0(i64 4, ptr %50) #12
  store i32 0, ptr %50, align 4, !tbaa !5
  %651 = load i32, ptr %49, align 4, !tbaa !5
  %652 = load i32, ptr %28, align 4, !tbaa !5
  %653 = add i32 %651, %652
  %654 = zext i32 %653 to i64
  %655 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN7libzpaq5ArrayIjEixEm(ptr noundef nonnull align 8 dereferenceable(20) %12, i64 noundef %654)
          to label %656 unwind label %695

656:                                              ; preds = %650
  %657 = load i32, ptr %655, align 4, !tbaa !5
  %658 = load i32, ptr %48, align 4, !tbaa !5
  %659 = xor i32 %657, %658
  %660 = icmp ult i32 %659, 134217728
  br i1 %660, label %661, label %704

661:                                              ; preds = %656
  call void @llvm.lifetime.start.p0(i64 4, ptr %51) #12
  %662 = load i32, ptr %49, align 4, !tbaa !5
  %663 = load i32, ptr %28, align 4, !tbaa !5
  %664 = add i32 %662, %663
  %665 = zext i32 %664 to i64
  %666 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN7libzpaq5ArrayIjEixEm(ptr noundef nonnull align 8 dereferenceable(20) %12, i64 noundef %665)
          to label %667 unwind label %699

667:                                              ; preds = %661
  %668 = load i32, ptr %666, align 4, !tbaa !5
  %669 = and i32 %668, 134217727
  %670 = mul i32 %669, 32
  %671 = add i32 %670, 31
  %672 = load i32, ptr %27, align 4, !tbaa !5
  %673 = sub i32 %671, %672
  store i32 %673, ptr %51, align 4, !tbaa !5
  %674 = load i32, ptr %25, align 4, !tbaa !5
  %675 = add nsw i32 %674, 1
  %676 = sext i32 %675 to i64
  %677 = getelementptr inbounds [4099 x i32], ptr %38, i64 0, i64 %676
  %678 = load i32, ptr %677, align 4, !tbaa !5
  %679 = add nsw i32 %678, 1
  store i32 %679, ptr %677, align 4, !tbaa !5
  %680 = load i32, ptr %51, align 4, !tbaa !5
  %681 = getelementptr inbounds [4096 x i8], ptr %37, i64 0, i64 0
  %682 = load i32, ptr %29, align 4, !tbaa !5
  %683 = invoke noundef i32 @_Z6rmatchRN7libzpaq5ArrayIhEEjPhii(ptr noundef nonnull align 8 dereferenceable(20) %11, i32 noundef %680, ptr noundef %681, i32 noundef %682, i32 noundef 1)
          to label %684 unwind label %699

684:                                              ; preds = %667
  store i32 %683, ptr %50, align 4, !tbaa !5
  %685 = load i32, ptr %50, align 4, !tbaa !5
  %686 = load i32, ptr %44, align 4, !tbaa !5
  %687 = icmp sgt i32 %685, %686
  br i1 %687, label %688, label %703

688:                                              ; preds = %684
  %689 = load i32, ptr %50, align 4, !tbaa !5
  store i32 %689, ptr %44, align 4, !tbaa !5
  %690 = load i32, ptr %51, align 4, !tbaa !5
  store i32 %690, ptr %46, align 4, !tbaa !5
  br label %703

691:                                              ; preds = %639
  %692 = landingpad { ptr, i32 }
          cleanup
  %693 = extractvalue { ptr, i32 } %692, 0
  store ptr %693, ptr %13, align 8
  %694 = extractvalue { ptr, i32 } %692, 1
  store i32 %694, ptr %14, align 4
  br label %710

695:                                              ; preds = %650
  %696 = landingpad { ptr, i32 }
          cleanup
  %697 = extractvalue { ptr, i32 } %696, 0
  store ptr %697, ptr %13, align 8
  %698 = extractvalue { ptr, i32 } %696, 1
  store i32 %698, ptr %14, align 4
  br label %708

699:                                              ; preds = %667, %661
  %700 = landingpad { ptr, i32 }
          cleanup
  %701 = extractvalue { ptr, i32 } %700, 0
  store ptr %701, ptr %13, align 8
  %702 = extractvalue { ptr, i32 } %700, 1
  store i32 %702, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #12
  br label %708

703:                                              ; preds = %688, %684
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #12
  br label %704

704:                                              ; preds = %703, %656
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #12
  br label %705

705:                                              ; preds = %704
  %706 = load i32, ptr %28, align 4, !tbaa !5
  %707 = add nsw i32 %706, 1
  store i32 %707, ptr %28, align 4, !tbaa !5
  br label %636, !llvm.loop !27

708:                                              ; preds = %699, %695
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #12
  br label %710

709:                                              ; preds = %648
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #12
  br label %711

710:                                              ; preds = %708, %691
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #12
  br label %934

711:                                              ; preds = %709, %620
  br label %712

712:                                              ; preds = %711
  %713 = load i32, ptr %27, align 4, !tbaa !5
  %714 = add nsw i32 %713, 1
  store i32 %714, ptr %27, align 4, !tbaa !5
  br label %616, !llvm.loop !28

715:                                              ; preds = %616
  store i64 0, ptr %45, align 8, !tbaa !14
  %716 = load i32, ptr %29, align 4, !tbaa !5
  %717 = sub nsw i32 %716, 1
  store i32 %717, ptr %27, align 4, !tbaa !5
  br label %718

718:                                              ; preds = %816, %715
  %719 = load i32, ptr %27, align 4, !tbaa !5
  %720 = icmp sge i32 %719, 0
  br i1 %720, label %721, label %819

721:                                              ; preds = %718
  %722 = load i64, ptr %45, align 8, !tbaa !14
  %723 = mul i64 %722, 4
  %724 = add i64 %723, 3
  %725 = load i32, ptr %27, align 4, !tbaa !5
  %726 = sext i32 %725 to i64
  %727 = getelementptr inbounds [4096 x i8], ptr %37, i64 0, i64 %726
  %728 = load i8, ptr %727, align 1, !tbaa !13
  %729 = zext i8 %728 to i64
  %730 = sub i64 %724, %729
  store i64 %730, ptr %45, align 8, !tbaa !14
  %731 = load i32, ptr %27, align 4, !tbaa !5
  %732 = load i32, ptr %29, align 4, !tbaa !5
  %733 = sub nsw i32 %732, 32
  %734 = icmp sle i32 %731, %733
  br i1 %734, label %735, label %815

735:                                              ; preds = %721
  call void @llvm.lifetime.start.p0(i64 4, ptr %52) #12
  %736 = load i64, ptr %45, align 8, !tbaa !14
  %737 = call noundef i32 @_Z4hashy(i64 noundef %736)
  store i32 %737, ptr %52, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %53) #12
  %738 = load i32, ptr %52, align 4, !tbaa !5
  %739 = and i32 %738, 134217727
  store i32 %739, ptr %53, align 4, !tbaa !5
  store i32 0, ptr %28, align 4, !tbaa !5
  br label %740

740:                                              ; preds = %809, %735
  %741 = load i32, ptr %28, align 4, !tbaa !5
  %742 = icmp slt i32 %741, 8
  br i1 %742, label %743, label %752

743:                                              ; preds = %740
  %744 = load i32, ptr %53, align 4, !tbaa !5
  %745 = load i32, ptr %28, align 4, !tbaa !5
  %746 = add i32 %744, %745
  %747 = zext i32 %746 to i64
  %748 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN7libzpaq5ArrayIjEixEm(ptr noundef nonnull align 8 dereferenceable(20) %12, i64 noundef %747)
          to label %749 unwind label %795

749:                                              ; preds = %743
  %750 = load i32, ptr %748, align 4, !tbaa !5
  %751 = icmp ne i32 %750, 0
  br label %752

752:                                              ; preds = %749, %740
  %753 = phi i1 [ false, %740 ], [ %751, %749 ]
  br i1 %753, label %754, label %813

754:                                              ; preds = %752
  call void @llvm.lifetime.start.p0(i64 4, ptr %54) #12
  store i32 0, ptr %54, align 4, !tbaa !5
  %755 = load i32, ptr %53, align 4, !tbaa !5
  %756 = load i32, ptr %28, align 4, !tbaa !5
  %757 = add i32 %755, %756
  %758 = zext i32 %757 to i64
  %759 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN7libzpaq5ArrayIjEixEm(ptr noundef nonnull align 8 dereferenceable(20) %12, i64 noundef %758)
          to label %760 unwind label %799

760:                                              ; preds = %754
  %761 = load i32, ptr %759, align 4, !tbaa !5
  %762 = load i32, ptr %52, align 4, !tbaa !5
  %763 = xor i32 %761, %762
  %764 = icmp ult i32 %763, 134217728
  br i1 %764, label %765, label %808

765:                                              ; preds = %760
  call void @llvm.lifetime.start.p0(i64 4, ptr %55) #12
  %766 = load i32, ptr %53, align 4, !tbaa !5
  %767 = load i32, ptr %28, align 4, !tbaa !5
  %768 = add i32 %766, %767
  %769 = zext i32 %768 to i64
  %770 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN7libzpaq5ArrayIjEixEm(ptr noundef nonnull align 8 dereferenceable(20) %12, i64 noundef %769)
          to label %771 unwind label %803

771:                                              ; preds = %765
  %772 = load i32, ptr %770, align 4, !tbaa !5
  %773 = and i32 %772, 134217727
  %774 = mul i32 %773, 32
  %775 = add i32 %774, 31
  %776 = load i32, ptr %27, align 4, !tbaa !5
  %777 = add i32 %775, %776
  store i32 %777, ptr %55, align 4, !tbaa !5
  %778 = load i32, ptr %25, align 4, !tbaa !5
  %779 = add nsw i32 %778, 2
  %780 = sext i32 %779 to i64
  %781 = getelementptr inbounds [4099 x i32], ptr %38, i64 0, i64 %780
  %782 = load i32, ptr %781, align 4, !tbaa !5
  %783 = add nsw i32 %782, 1
  store i32 %783, ptr %781, align 4, !tbaa !5
  %784 = load i32, ptr %55, align 4, !tbaa !5
  %785 = getelementptr inbounds [4096 x i8], ptr %37, i64 0, i64 0
  %786 = load i32, ptr %29, align 4, !tbaa !5
  %787 = invoke noundef i32 @_Z6rmatchRN7libzpaq5ArrayIhEEjPhii(ptr noundef nonnull align 8 dereferenceable(20) %11, i32 noundef %784, ptr noundef %785, i32 noundef %786, i32 noundef -1)
          to label %788 unwind label %803

788:                                              ; preds = %771
  store i32 %787, ptr %54, align 4, !tbaa !5
  %789 = load i32, ptr %54, align 4, !tbaa !5
  %790 = load i32, ptr %44, align 4, !tbaa !5
  %791 = icmp sgt i32 %789, %790
  br i1 %791, label %792, label %807

792:                                              ; preds = %788
  %793 = load i32, ptr %54, align 4, !tbaa !5
  store i32 %793, ptr %44, align 4, !tbaa !5
  %794 = load i32, ptr %55, align 4, !tbaa !5
  store i32 %794, ptr %46, align 4, !tbaa !5
  store i32 -1, ptr %47, align 4, !tbaa !5
  br label %807

795:                                              ; preds = %743
  %796 = landingpad { ptr, i32 }
          cleanup
  %797 = extractvalue { ptr, i32 } %796, 0
  store ptr %797, ptr %13, align 8
  %798 = extractvalue { ptr, i32 } %796, 1
  store i32 %798, ptr %14, align 4
  br label %814

799:                                              ; preds = %754
  %800 = landingpad { ptr, i32 }
          cleanup
  %801 = extractvalue { ptr, i32 } %800, 0
  store ptr %801, ptr %13, align 8
  %802 = extractvalue { ptr, i32 } %800, 1
  store i32 %802, ptr %14, align 4
  br label %812

803:                                              ; preds = %771, %765
  %804 = landingpad { ptr, i32 }
          cleanup
  %805 = extractvalue { ptr, i32 } %804, 0
  store ptr %805, ptr %13, align 8
  %806 = extractvalue { ptr, i32 } %804, 1
  store i32 %806, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #12
  br label %812

807:                                              ; preds = %792, %788
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #12
  br label %808

808:                                              ; preds = %807, %760
  call void @llvm.lifetime.end.p0(i64 4, ptr %54) #12
  br label %809

809:                                              ; preds = %808
  %810 = load i32, ptr %28, align 4, !tbaa !5
  %811 = add nsw i32 %810, 1
  store i32 %811, ptr %28, align 4, !tbaa !5
  br label %740, !llvm.loop !29

812:                                              ; preds = %803, %799
  call void @llvm.lifetime.end.p0(i64 4, ptr %54) #12
  br label %814

813:                                              ; preds = %752
  call void @llvm.lifetime.end.p0(i64 4, ptr %53) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #12
  br label %815

814:                                              ; preds = %812, %795
  call void @llvm.lifetime.end.p0(i64 4, ptr %53) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #12
  br label %934

815:                                              ; preds = %813, %721
  br label %816

816:                                              ; preds = %815
  %817 = load i32, ptr %27, align 4, !tbaa !5
  %818 = add nsw i32 %817, -1
  store i32 %818, ptr %27, align 4, !tbaa !5
  br label %718, !llvm.loop !30

819:                                              ; preds = %718
  %820 = load i32, ptr %44, align 4, !tbaa !5
  %821 = ashr i32 %820, 24
  %822 = and i32 %821, 127
  %823 = sext i32 %822 to i64
  %824 = getelementptr inbounds [4099 x i32], ptr %38, i64 0, i64 %823
  %825 = load i32, ptr %824, align 4, !tbaa !5
  %826 = add nsw i32 %825, 1
  store i32 %826, ptr %824, align 4, !tbaa !5
  %827 = load i32, ptr %44, align 4, !tbaa !5
  %828 = ashr i32 %827, 24
  %829 = and i32 %828, 127
  %830 = load i32, ptr %39, align 4, !tbaa !5
  %831 = add nsw i32 %830, %829
  store i32 %831, ptr %39, align 4, !tbaa !5
  %832 = load i32, ptr %44, align 4, !tbaa !5
  %833 = load i32, ptr %44, align 4, !tbaa !5
  %834 = shl i32 %833, 8
  %835 = xor i32 %832, %834
  %836 = icmp sgt i32 %835, 16777215
  %837 = zext i1 %836 to i32
  %838 = load i32, ptr %39, align 4, !tbaa !5
  %839 = sub nsw i32 %838, %837
  store i32 %839, ptr %39, align 4, !tbaa !5
  %840 = load i32, ptr %44, align 4, !tbaa !5
  %841 = shl i32 %840, 8
  %842 = load i32, ptr %44, align 4, !tbaa !5
  %843 = shl i32 %842, 16
  %844 = xor i32 %841, %843
  %845 = icmp sgt i32 %844, 16777215
  %846 = zext i1 %845 to i32
  %847 = load i32, ptr %39, align 4, !tbaa !5
  %848 = sub nsw i32 %847, %846
  store i32 %848, ptr %39, align 4, !tbaa !5
  %849 = load i32, ptr %44, align 4, !tbaa !5
  %850 = shl i32 %849, 16
  %851 = load i32, ptr %44, align 4, !tbaa !5
  %852 = shl i32 %851, 24
  %853 = xor i32 %850, %852
  %854 = icmp sgt i32 %853, 16777215
  %855 = zext i1 %854 to i32
  %856 = load i32, ptr %39, align 4, !tbaa !5
  %857 = sub nsw i32 %856, %855
  store i32 %857, ptr %39, align 4, !tbaa !5
  %858 = load i32, ptr %29, align 4, !tbaa !5
  %859 = load i32, ptr %40, align 4, !tbaa !5
  %860 = add nsw i32 %859, %858
  store i32 %860, ptr %40, align 4, !tbaa !5
  %861 = load i32, ptr %44, align 4, !tbaa !5
  %862 = ashr i32 %861, 23
  %863 = load i32, ptr %29, align 4, !tbaa !5
  %864 = icmp sge i32 %862, %863
  %865 = zext i1 %864 to i8
  store i8 %865, ptr %42, align 1, !tbaa !22
  %866 = load i8, ptr %42, align 1, !tbaa !22, !range !31, !noundef !32
  %867 = trunc i8 %866 to i1
  br i1 %867, label %877, label %868

868:                                              ; preds = %819
  %869 = getelementptr inbounds [4 x ptr], ptr %24, i64 0, i64 3
  %870 = load ptr, ptr %869, align 8, !tbaa !9
  %871 = invoke i32 @putc(i32 noundef 0, ptr noundef %870)
          to label %872 unwind label %873

872:                                              ; preds = %868
  br label %933

873:                                              ; preds = %927, %921, %915, %909, %902, %895, %888, %877, %868
  %874 = landingpad { ptr, i32 }
          cleanup
  %875 = extractvalue { ptr, i32 } %874, 0
  store ptr %875, ptr %13, align 8
  %876 = extractvalue { ptr, i32 } %874, 1
  store i32 %876, ptr %14, align 4
  br label %934

877:                                              ; preds = %819
  %878 = load i32, ptr %44, align 4, !tbaa !5
  %879 = add nsw i32 1, %878
  %880 = load i32, ptr %47, align 4, !tbaa !5
  %881 = icmp slt i32 %880, 0
  %882 = zext i1 %881 to i32
  %883 = mul nsw i32 128, %882
  %884 = add nsw i32 %879, %883
  %885 = getelementptr inbounds [4 x ptr], ptr %24, i64 0, i64 3
  %886 = load ptr, ptr %885, align 8, !tbaa !9
  %887 = invoke i32 @putc(i32 noundef %884, ptr noundef %886)
          to label %888 unwind label %873

888:                                              ; preds = %877
  %889 = load i32, ptr %44, align 4, !tbaa !5
  %890 = ashr i32 %889, 8
  %891 = add nsw i32 1, %890
  %892 = getelementptr inbounds [4 x ptr], ptr %24, i64 0, i64 3
  %893 = load ptr, ptr %892, align 8, !tbaa !9
  %894 = invoke i32 @putc(i32 noundef %891, ptr noundef %893)
          to label %895 unwind label %873

895:                                              ; preds = %888
  %896 = load i32, ptr %44, align 4, !tbaa !5
  %897 = ashr i32 %896, 16
  %898 = add nsw i32 1, %897
  %899 = getelementptr inbounds [4 x ptr], ptr %24, i64 0, i64 3
  %900 = load ptr, ptr %899, align 8, !tbaa !9
  %901 = invoke i32 @putc(i32 noundef %898, ptr noundef %900)
          to label %902 unwind label %873

902:                                              ; preds = %895
  %903 = load i32, ptr %44, align 4, !tbaa !5
  %904 = ashr i32 %903, 24
  %905 = add nsw i32 1, %904
  %906 = getelementptr inbounds [4 x ptr], ptr %24, i64 0, i64 3
  %907 = load ptr, ptr %906, align 8, !tbaa !9
  %908 = invoke i32 @putc(i32 noundef %905, ptr noundef %907)
          to label %909 unwind label %873

909:                                              ; preds = %902
  %910 = load i32, ptr %46, align 4, !tbaa !5
  %911 = lshr i32 %910, 24
  %912 = getelementptr inbounds [4 x ptr], ptr %24, i64 0, i64 3
  %913 = load ptr, ptr %912, align 8, !tbaa !9
  %914 = invoke i32 @putc(i32 noundef %911, ptr noundef %913)
          to label %915 unwind label %873

915:                                              ; preds = %909
  %916 = load i32, ptr %46, align 4, !tbaa !5
  %917 = lshr i32 %916, 16
  %918 = getelementptr inbounds [4 x ptr], ptr %24, i64 0, i64 3
  %919 = load ptr, ptr %918, align 8, !tbaa !9
  %920 = invoke i32 @putc(i32 noundef %917, ptr noundef %919)
          to label %921 unwind label %873

921:                                              ; preds = %915
  %922 = load i32, ptr %46, align 4, !tbaa !5
  %923 = lshr i32 %922, 8
  %924 = getelementptr inbounds [4 x ptr], ptr %24, i64 0, i64 3
  %925 = load ptr, ptr %924, align 8, !tbaa !9
  %926 = invoke i32 @putc(i32 noundef %923, ptr noundef %925)
          to label %927 unwind label %873

927:                                              ; preds = %921
  %928 = load i32, ptr %46, align 4, !tbaa !5
  %929 = getelementptr inbounds [4 x ptr], ptr %24, i64 0, i64 3
  %930 = load ptr, ptr %929, align 8, !tbaa !9
  %931 = invoke i32 @putc(i32 noundef %928, ptr noundef %930)
          to label %932 unwind label %873

932:                                              ; preds = %927
  br label %933

933:                                              ; preds = %932, %872
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #12
  br label %935

934:                                              ; preds = %873, %814, %710
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #12
  br label %1259

935:                                              ; preds = %933, %612
  store i32 0, ptr %26, align 4, !tbaa !5
  br label %936

936:                                              ; preds = %996, %935
  %937 = load i32, ptr %26, align 4, !tbaa !5
  %938 = load i32, ptr %29, align 4, !tbaa !5
  %939 = icmp slt i32 %937, %938
  br i1 %939, label %940, label %999

940:                                              ; preds = %936
  %941 = load i8, ptr %42, align 1, !tbaa !22, !range !31, !noundef !32
  %942 = trunc i8 %941 to i1
  br i1 %942, label %943, label %966

943:                                              ; preds = %940
  %944 = load i32, ptr %26, align 4, !tbaa !5
  %945 = load i32, ptr %44, align 4, !tbaa !5
  %946 = ashr i32 %945, 24
  %947 = and i32 %946, 255
  %948 = icmp sge i32 %944, %947
  br i1 %948, label %966, label %949

949:                                              ; preds = %943
  %950 = load i32, ptr %26, align 4, !tbaa !5
  %951 = load i32, ptr %44, align 4, !tbaa !5
  %952 = ashr i32 %951, 16
  %953 = and i32 %952, 255
  %954 = icmp eq i32 %950, %953
  br i1 %954, label %966, label %955

955:                                              ; preds = %949
  %956 = load i32, ptr %26, align 4, !tbaa !5
  %957 = load i32, ptr %44, align 4, !tbaa !5
  %958 = ashr i32 %957, 8
  %959 = and i32 %958, 255
  %960 = icmp eq i32 %956, %959
  br i1 %960, label %966, label %961

961:                                              ; preds = %955
  %962 = load i32, ptr %26, align 4, !tbaa !5
  %963 = load i32, ptr %44, align 4, !tbaa !5
  %964 = and i32 %963, 255
  %965 = icmp eq i32 %962, %964
  br i1 %965, label %966, label %995

966:                                              ; preds = %961, %955, %949, %943, %940
  %967 = load i32, ptr %26, align 4, !tbaa !5
  %968 = sext i32 %967 to i64
  %969 = getelementptr inbounds [4096 x i8], ptr %37, i64 0, i64 %968
  %970 = load i8, ptr %969, align 1, !tbaa !13
  %971 = zext i8 %970 to i64
  %972 = getelementptr inbounds [5 x i8], ptr @.str.22, i64 0, i64 %971
  %973 = load i8, ptr %972, align 1, !tbaa !13
  %974 = sext i8 %973 to i32
  store i32 %974, ptr %27, align 4, !tbaa !5
  %975 = load i32, ptr %35, align 4, !tbaa !5
  %976 = mul nsw i32 %975, 4
  %977 = load i32, ptr %27, align 4, !tbaa !5
  %978 = add nsw i32 %976, %977
  %979 = icmp sgt i32 %978, 255
  br i1 %979, label %980, label %990

980:                                              ; preds = %966
  %981 = load i32, ptr %35, align 4, !tbaa !5
  %982 = getelementptr inbounds [4 x ptr], ptr %24, i64 0, i64 1
  %983 = load ptr, ptr %982, align 8, !tbaa !9
  %984 = invoke i32 @putc(i32 noundef %981, ptr noundef %983)
          to label %985 unwind label %986

985:                                              ; preds = %980
  store i32 0, ptr %35, align 4, !tbaa !5
  br label %990

986:                                              ; preds = %1246, %1227, %1203, %1191, %1169, %1153, %1137, %1121, %1012, %1005, %999, %980
  %987 = landingpad { ptr, i32 }
          cleanup
  %988 = extractvalue { ptr, i32 } %987, 0
  store ptr %988, ptr %13, align 8
  %989 = extractvalue { ptr, i32 } %987, 1
  store i32 %989, ptr %14, align 4
  br label %1259

990:                                              ; preds = %985, %966
  %991 = load i32, ptr %35, align 4, !tbaa !5
  %992 = mul nsw i32 %991, 4
  %993 = load i32, ptr %27, align 4, !tbaa !5
  %994 = add nsw i32 %992, %993
  store i32 %994, ptr %35, align 4, !tbaa !5
  br label %995

995:                                              ; preds = %990, %961
  br label %996

996:                                              ; preds = %995
  %997 = load i32, ptr %26, align 4, !tbaa !5
  %998 = add nsw i32 %997, 1
  store i32 %998, ptr %26, align 4, !tbaa !5
  br label %936, !llvm.loop !33

999:                                              ; preds = %936
  %1000 = load ptr, ptr %23, align 8, !tbaa !9
  %1001 = invoke i32 @getc(ptr noundef %1000)
          to label %1002 unwind label %986

1002:                                             ; preds = %999
  %1003 = icmp ne i32 %1001, 43
  br i1 %1003, label %1004, label %1005

1004:                                             ; preds = %1002
  call void @_ZN7libzpaq5errorEPKc(ptr noundef @.str.23)
  br label %1005

1005:                                             ; preds = %1004, %1002
  %1006 = load ptr, ptr %23, align 8, !tbaa !9
  %1007 = invoke i32 @getc(ptr noundef %1006)
          to label %1008 unwind label %986

1008:                                             ; preds = %1005
  %1009 = icmp ne i32 %1007, 10
  br i1 %1009, label %1010, label %1011

1010:                                             ; preds = %1008
  call void @_ZN7libzpaq5errorEPKc(ptr noundef @.str.24)
  br label %1011

1011:                                             ; preds = %1010, %1008
  store i32 0, ptr %29, align 4, !tbaa !5
  store i32 0, ptr %28, align 4, !tbaa !5
  store i32 0, ptr %27, align 4, !tbaa !5
  store i32 0, ptr %26, align 4, !tbaa !5
  br label %1012

1012:                                             ; preds = %1241, %1011
  %1013 = load ptr, ptr %23, align 8, !tbaa !9
  %1014 = invoke i32 @getc(ptr noundef %1013)
          to label %1015 unwind label %986

1015:                                             ; preds = %1012
  store i32 %1014, ptr %30, align 4, !tbaa !5
  %1016 = icmp ne i32 %1014, -1
  br i1 %1016, label %1017, label %1246

1017:                                             ; preds = %1015
  %1018 = load i32, ptr %30, align 4, !tbaa !5
  %1019 = icmp ne i32 %1018, 10
  br i1 %1019, label %1020, label %1027

1020:                                             ; preds = %1017
  %1021 = load i32, ptr %30, align 4, !tbaa !5
  %1022 = icmp slt i32 %1021, 33
  br i1 %1022, label %1026, label %1023

1023:                                             ; preds = %1020
  %1024 = load i32, ptr %30, align 4, !tbaa !5
  %1025 = icmp sgt i32 %1024, 104
  br i1 %1025, label %1026, label %1027

1026:                                             ; preds = %1023, %1020
  call void @_ZN7libzpaq5errorEPKc(ptr noundef @.str.25)
  br label %1027

1027:                                             ; preds = %1026, %1023, %1017
  %1028 = load i32, ptr %8, align 4, !tbaa !5
  %1029 = icmp sgt i32 %1028, 1
  br i1 %1029, label %1030, label %1040

1030:                                             ; preds = %1027
  %1031 = load i32, ptr %30, align 4, !tbaa !5
  %1032 = icmp sgt i32 %1031, 35
  br i1 %1032, label %1033, label %1040

1033:                                             ; preds = %1030
  %1034 = load i32, ptr %30, align 4, !tbaa !5
  %1035 = sub nsw i32 %1034, 35
  %1036 = load i32, ptr %8, align 4, !tbaa !5
  %1037 = srem i32 %1035, %1036
  %1038 = load i32, ptr %30, align 4, !tbaa !5
  %1039 = sub nsw i32 %1038, %1037
  store i32 %1039, ptr %30, align 4, !tbaa !5
  br label %1040

1040:                                             ; preds = %1033, %1030, %1027
  %1041 = load i32, ptr %30, align 4, !tbaa !5
  %1042 = icmp eq i32 %1041, 35
  br i1 %1042, label %1043, label %1052

1043:                                             ; preds = %1040
  %1044 = load i32, ptr %29, align 4, !tbaa !5
  %1045 = icmp eq i32 %1044, 0
  br i1 %1045, label %1049, label %1046

1046:                                             ; preds = %1043
  %1047 = load i32, ptr %27, align 4, !tbaa !5
  %1048 = icmp eq i32 %1047, 35
  br i1 %1048, label %1049, label %1052

1049:                                             ; preds = %1046, %1043
  %1050 = load i32, ptr %29, align 4, !tbaa !5
  %1051 = add nsw i32 %1050, 1
  store i32 %1051, ptr %29, align 4, !tbaa !5
  br label %1240

1052:                                             ; preds = %1046, %1040
  %1053 = load i32, ptr %29, align 4, !tbaa !5
  %1054 = icmp eq i32 %1053, 0
  br i1 %1054, label %1055, label %1064

1055:                                             ; preds = %1052
  %1056 = load i32, ptr %30, align 4, !tbaa !5
  %1057 = icmp sge i32 %1056, 64
  br i1 %1057, label %1058, label %1064

1058:                                             ; preds = %1055
  %1059 = load i32, ptr %30, align 4, !tbaa !5
  %1060 = icmp sle i32 %1059, 71
  br i1 %1060, label %1061, label %1064

1061:                                             ; preds = %1058
  %1062 = load i32, ptr %29, align 4, !tbaa !5
  %1063 = add nsw i32 %1062, 1
  store i32 %1063, ptr %29, align 4, !tbaa !5
  br label %1239

1064:                                             ; preds = %1058, %1055, %1052
  %1065 = load i32, ptr %29, align 4, !tbaa !5
  %1066 = icmp eq i32 %1065, 1
  br i1 %1066, label %1067, label %1082

1067:                                             ; preds = %1064
  %1068 = load i32, ptr %30, align 4, !tbaa !5
  %1069 = icmp sge i32 %1068, 68
  br i1 %1069, label %1070, label %1082

1070:                                             ; preds = %1067
  %1071 = load i32, ptr %30, align 4, !tbaa !5
  %1072 = icmp sle i32 %1071, 71
  br i1 %1072, label %1073, label %1082

1073:                                             ; preds = %1070
  %1074 = load i32, ptr %27, align 4, !tbaa !5
  %1075 = icmp sge i32 %1074, 68
  br i1 %1075, label %1076, label %1082

1076:                                             ; preds = %1073
  %1077 = load i32, ptr %27, align 4, !tbaa !5
  %1078 = icmp sle i32 %1077, 71
  br i1 %1078, label %1079, label %1082

1079:                                             ; preds = %1076
  %1080 = load i32, ptr %29, align 4, !tbaa !5
  %1081 = add nsw i32 %1080, 1
  store i32 %1081, ptr %29, align 4, !tbaa !5
  br label %1238

1082:                                             ; preds = %1076, %1073, %1070, %1067, %1064
  %1083 = load i32, ptr %29, align 4, !tbaa !5
  %1084 = icmp sge i32 %1083, 2
  br i1 %1084, label %1085, label %1100

1085:                                             ; preds = %1082
  %1086 = load i32, ptr %29, align 4, !tbaa !5
  %1087 = icmp slt i32 %1086, 55
  br i1 %1087, label %1088, label %1100

1088:                                             ; preds = %1085
  %1089 = load i32, ptr %28, align 4, !tbaa !5
  %1090 = icmp eq i32 %1089, 71
  br i1 %1090, label %1091, label %1100

1091:                                             ; preds = %1088
  %1092 = load i32, ptr %27, align 4, !tbaa !5
  %1093 = icmp eq i32 %1092, 71
  br i1 %1093, label %1094, label %1100

1094:                                             ; preds = %1091
  %1095 = load i32, ptr %30, align 4, !tbaa !5
  %1096 = icmp eq i32 %1095, 71
  br i1 %1096, label %1097, label %1100

1097:                                             ; preds = %1094
  %1098 = load i32, ptr %29, align 4, !tbaa !5
  %1099 = add nsw i32 %1098, 1
  store i32 %1099, ptr %29, align 4, !tbaa !5
  br label %1237

1100:                                             ; preds = %1094, %1091, %1088, %1085, %1082
  %1101 = load i32, ptr %30, align 4, !tbaa !5
  %1102 = icmp eq i32 %1101, 10
  br i1 %1102, label %1103, label %1110

1103:                                             ; preds = %1100
  %1104 = load i32, ptr %29, align 4, !tbaa !5
  %1105 = icmp eq i32 %1104, 0
  br i1 %1105, label %1109, label %1106

1106:                                             ; preds = %1103
  %1107 = load i32, ptr %27, align 4, !tbaa !5
  %1108 = icmp eq i32 %1107, 35
  br i1 %1108, label %1109, label %1110

1109:                                             ; preds = %1106, %1103
  br label %1246

1110:                                             ; preds = %1106, %1100
  %1111 = load i32, ptr %29, align 4, !tbaa !5
  %1112 = add nsw i32 %1111, 1
  store i32 %1112, ptr %29, align 4, !tbaa !5
  br label %1113

1113:                                             ; preds = %1125, %1110
  %1114 = load i32, ptr %29, align 4, !tbaa !5
  %1115 = icmp sgt i32 %1114, 1
  br i1 %1115, label %1116, label %1119

1116:                                             ; preds = %1113
  %1117 = load i32, ptr %27, align 4, !tbaa !5
  %1118 = icmp eq i32 %1117, 35
  br label %1119

1119:                                             ; preds = %1116, %1113
  %1120 = phi i1 [ false, %1113 ], [ %1118, %1116 ]
  br i1 %1120, label %1121, label %1128

1121:                                             ; preds = %1119
  %1122 = getelementptr inbounds [4 x ptr], ptr %24, i64 0, i64 2
  %1123 = load ptr, ptr %1122, align 16, !tbaa !9
  %1124 = invoke i32 @putc(i32 noundef 3, ptr noundef %1123)
          to label %1125 unwind label %986

1125:                                             ; preds = %1121
  %1126 = load i32, ptr %29, align 4, !tbaa !5
  %1127 = add nsw i32 %1126, -1
  store i32 %1127, ptr %29, align 4, !tbaa !5
  br label %1113, !llvm.loop !34

1128:                                             ; preds = %1119
  %1129 = load i32, ptr %29, align 4, !tbaa !5
  %1130 = icmp sgt i32 %1129, 3
  br i1 %1130, label %1131, label %1144

1131:                                             ; preds = %1128
  %1132 = load i32, ptr %27, align 4, !tbaa !5
  %1133 = icmp eq i32 %1132, 71
  br i1 %1133, label %1134, label %1144

1134:                                             ; preds = %1131
  %1135 = load i32, ptr %28, align 4, !tbaa !5
  %1136 = icmp eq i32 %1135, 71
  br i1 %1136, label %1137, label %1144

1137:                                             ; preds = %1134
  %1138 = load i32, ptr %29, align 4, !tbaa !5
  %1139 = add nsw i32 199, %1138
  %1140 = getelementptr inbounds [4 x ptr], ptr %24, i64 0, i64 2
  %1141 = load ptr, ptr %1140, align 16, !tbaa !9
  %1142 = invoke i32 @putc(i32 noundef %1139, ptr noundef %1141)
          to label %1143 unwind label %986

1143:                                             ; preds = %1137
  store i32 1, ptr %29, align 4, !tbaa !5
  br label %1144

1144:                                             ; preds = %1143, %1134, %1131, %1128
  %1145 = load i32, ptr %29, align 4, !tbaa !5
  %1146 = icmp eq i32 %1145, 3
  br i1 %1146, label %1147, label %1182

1147:                                             ; preds = %1144
  %1148 = load i32, ptr %30, align 4, !tbaa !5
  %1149 = icmp sge i32 %1148, 68
  br i1 %1149, label %1150, label %1169

1150:                                             ; preds = %1147
  %1151 = load i32, ptr %30, align 4, !tbaa !5
  %1152 = icmp sle i32 %1151, 71
  br i1 %1152, label %1153, label %1169

1153:                                             ; preds = %1150
  %1154 = load i32, ptr %28, align 4, !tbaa !5
  %1155 = sub nsw i32 %1154, 68
  %1156 = add nsw i32 137, %1155
  %1157 = load i32, ptr %27, align 4, !tbaa !5
  %1158 = sub nsw i32 %1157, 68
  %1159 = mul nsw i32 4, %1158
  %1160 = add nsw i32 %1156, %1159
  %1161 = load i32, ptr %30, align 4, !tbaa !5
  %1162 = sub nsw i32 %1161, 68
  %1163 = mul nsw i32 16, %1162
  %1164 = add nsw i32 %1160, %1163
  %1165 = getelementptr inbounds [4 x ptr], ptr %24, i64 0, i64 2
  %1166 = load ptr, ptr %1165, align 16, !tbaa !9
  %1167 = invoke i32 @putc(i32 noundef %1164, ptr noundef %1166)
          to label %1168 unwind label %986

1168:                                             ; preds = %1153
  store i32 0, ptr %29, align 4, !tbaa !5
  br label %1181

1169:                                             ; preds = %1150, %1147
  %1170 = load i32, ptr %28, align 4, !tbaa !5
  %1171 = sub nsw i32 %1170, 64
  %1172 = add nsw i32 73, %1171
  %1173 = load i32, ptr %27, align 4, !tbaa !5
  %1174 = sub nsw i32 %1173, 64
  %1175 = mul nsw i32 8, %1174
  %1176 = add nsw i32 %1172, %1175
  %1177 = getelementptr inbounds [4 x ptr], ptr %24, i64 0, i64 2
  %1178 = load ptr, ptr %1177, align 16, !tbaa !9
  %1179 = invoke i32 @putc(i32 noundef %1176, ptr noundef %1178)
          to label %1180 unwind label %986

1180:                                             ; preds = %1169
  store i32 1, ptr %29, align 4, !tbaa !5
  br label %1181

1181:                                             ; preds = %1180, %1168
  br label %1182

1182:                                             ; preds = %1181, %1144
  %1183 = load i32, ptr %29, align 4, !tbaa !5
  %1184 = icmp eq i32 %1183, 2
  br i1 %1184, label %1185, label %1211

1185:                                             ; preds = %1182
  %1186 = load i32, ptr %30, align 4, !tbaa !5
  %1187 = icmp sge i32 %1186, 64
  br i1 %1187, label %1188, label %1203

1188:                                             ; preds = %1185
  %1189 = load i32, ptr %30, align 4, !tbaa !5
  %1190 = icmp sle i32 %1189, 71
  br i1 %1190, label %1191, label %1203

1191:                                             ; preds = %1188
  %1192 = load i32, ptr %27, align 4, !tbaa !5
  %1193 = sub nsw i32 %1192, 64
  %1194 = add nsw i32 73, %1193
  %1195 = load i32, ptr %30, align 4, !tbaa !5
  %1196 = sub nsw i32 %1195, 64
  %1197 = mul nsw i32 8, %1196
  %1198 = add nsw i32 %1194, %1197
  %1199 = getelementptr inbounds [4 x ptr], ptr %24, i64 0, i64 2
  %1200 = load ptr, ptr %1199, align 16, !tbaa !9
  %1201 = invoke i32 @putc(i32 noundef %1198, ptr noundef %1200)
          to label %1202 unwind label %986

1202:                                             ; preds = %1191
  store i32 0, ptr %29, align 4, !tbaa !5
  br label %1210

1203:                                             ; preds = %1188, %1185
  %1204 = load i32, ptr %27, align 4, !tbaa !5
  %1205 = sub nsw i32 %1204, 32
  %1206 = getelementptr inbounds [4 x ptr], ptr %24, i64 0, i64 2
  %1207 = load ptr, ptr %1206, align 16, !tbaa !9
  %1208 = invoke i32 @putc(i32 noundef %1205, ptr noundef %1207)
          to label %1209 unwind label %986

1209:                                             ; preds = %1203
  store i32 1, ptr %29, align 4, !tbaa !5
  br label %1210

1210:                                             ; preds = %1209, %1202
  br label %1211

1211:                                             ; preds = %1210, %1182
  %1212 = load i32, ptr %29, align 4, !tbaa !5
  %1213 = icmp eq i32 %1212, 1
  br i1 %1213, label %1214, label %1235

1214:                                             ; preds = %1211
  %1215 = load i32, ptr %30, align 4, !tbaa !5
  %1216 = icmp eq i32 %1215, 10
  br i1 %1216, label %1217, label %1218

1217:                                             ; preds = %1214
  br label %1246

1218:                                             ; preds = %1214
  %1219 = load i32, ptr %30, align 4, !tbaa !5
  %1220 = icmp ne i32 %1219, 35
  br i1 %1220, label %1221, label %1234

1221:                                             ; preds = %1218
  %1222 = load i32, ptr %30, align 4, !tbaa !5
  %1223 = icmp slt i32 %1222, 64
  br i1 %1223, label %1227, label %1224

1224:                                             ; preds = %1221
  %1225 = load i32, ptr %30, align 4, !tbaa !5
  %1226 = icmp sgt i32 %1225, 71
  br i1 %1226, label %1227, label %1234

1227:                                             ; preds = %1224, %1221
  %1228 = load i32, ptr %30, align 4, !tbaa !5
  %1229 = sub nsw i32 %1228, 32
  %1230 = getelementptr inbounds [4 x ptr], ptr %24, i64 0, i64 2
  %1231 = load ptr, ptr %1230, align 16, !tbaa !9
  %1232 = invoke i32 @putc(i32 noundef %1229, ptr noundef %1231)
          to label %1233 unwind label %986

1233:                                             ; preds = %1227
  store i32 0, ptr %29, align 4, !tbaa !5
  br label %1234

1234:                                             ; preds = %1233, %1224, %1218
  br label %1235

1235:                                             ; preds = %1234, %1211
  br label %1236

1236:                                             ; preds = %1235
  br label %1237

1237:                                             ; preds = %1236, %1097
  br label %1238

1238:                                             ; preds = %1237, %1079
  br label %1239

1239:                                             ; preds = %1238, %1061
  br label %1240

1240:                                             ; preds = %1239, %1049
  br label %1241

1241:                                             ; preds = %1240
  %1242 = load i32, ptr %26, align 4, !tbaa !5
  %1243 = add nsw i32 %1242, 1
  store i32 %1243, ptr %26, align 4, !tbaa !5
  %1244 = load i32, ptr %27, align 4, !tbaa !5
  store i32 %1244, ptr %28, align 4, !tbaa !5
  %1245 = load i32, ptr %30, align 4, !tbaa !5
  store i32 %1245, ptr %27, align 4, !tbaa !5
  br label %1012, !llvm.loop !35

1246:                                             ; preds = %1217, %1109, %1015
  %1247 = getelementptr inbounds [4 x ptr], ptr %24, i64 0, i64 2
  %1248 = load ptr, ptr %1247, align 16, !tbaa !9
  %1249 = invoke i32 @putc(i32 noundef 0, ptr noundef %1248)
          to label %1250 unwind label %986

1250:                                             ; preds = %1246
  %1251 = load i32, ptr %26, align 4, !tbaa !5
  %1252 = load i32, ptr %25, align 4, !tbaa !5
  %1253 = icmp ne i32 %1251, %1252
  br i1 %1253, label %1254, label %1255

1254:                                             ; preds = %1250
  call void @_ZN7libzpaq5errorEPKc(ptr noundef @.str.26)
  br label %1255

1255:                                             ; preds = %1254, %1250
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #12
  br label %1256

1256:                                             ; preds = %1255
  %1257 = load i32, ptr %41, align 4, !tbaa !5
  %1258 = add nsw i32 %1257, 1
  store i32 %1258, ptr %41, align 4, !tbaa !5
  br label %393, !llvm.loop !36

1259:                                             ; preds = %986, %934
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #12
  br label %1441

1260:                                             ; preds = %510, %393
  %1261 = load i32, ptr %35, align 4, !tbaa !5
  %1262 = getelementptr inbounds [4 x ptr], ptr %24, i64 0, i64 1
  %1263 = load ptr, ptr %1262, align 8, !tbaa !9
  %1264 = invoke i32 @putc(i32 noundef %1261, ptr noundef %1263)
          to label %1265 unwind label %409

1265:                                             ; preds = %1260
  %1266 = load i32, ptr %9, align 4, !tbaa !5
  %1267 = add nsw i32 2, %1266
  store i32 %1267, ptr %26, align 4, !tbaa !5
  br label %1268

1268:                                             ; preds = %1278, %1265
  %1269 = load i32, ptr %26, align 4, !tbaa !5
  %1270 = icmp sge i32 %1269, 0
  br i1 %1270, label %1271, label %1281

1271:                                             ; preds = %1268
  %1272 = load i32, ptr %26, align 4, !tbaa !5
  %1273 = sext i32 %1272 to i64
  %1274 = getelementptr inbounds [4 x ptr], ptr %24, i64 0, i64 %1273
  %1275 = load ptr, ptr %1274, align 8, !tbaa !9
  %1276 = invoke i32 @fclose(ptr noundef %1275)
          to label %1277 unwind label %409

1277:                                             ; preds = %1271
  br label %1278

1278:                                             ; preds = %1277
  %1279 = load i32, ptr %26, align 4, !tbaa !5
  %1280 = add nsw i32 %1279, -1
  store i32 %1280, ptr %26, align 4, !tbaa !5
  br label %1268, !llvm.loop !37

1281:                                             ; preds = %1268
  %1282 = load ptr, ptr %23, align 8, !tbaa !9
  %1283 = invoke i32 @fclose(ptr noundef %1282)
          to label %1284 unwind label %409

1284:                                             ; preds = %1281
  invoke void @_ZN7libzpaq5ArrayIjE6resizeEmi(ptr noundef nonnull align 8 dereferenceable(20) %12, i64 noundef 0, i32 noundef 0)
          to label %1285 unwind label %409

1285:                                             ; preds = %1284
  invoke void @_ZN7libzpaq5ArrayIhE6resizeEmi(ptr noundef nonnull align 8 dereferenceable(20) %11, i64 noundef 0, i32 noundef 0)
          to label %1286 unwind label %409

1286:                                             ; preds = %1285
  %1287 = load i32, ptr %40, align 4, !tbaa !5
  %1288 = icmp sgt i32 %1287, 0
  br i1 %1288, label %1289, label %1326

1289:                                             ; preds = %1286
  %1290 = load i32, ptr %25, align 4, !tbaa !5
  %1291 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.27, i32 noundef %1290)
          to label %1292 unwind label %409

1292:                                             ; preds = %1289
  store i32 0, ptr %26, align 4, !tbaa !5
  br label %1293

1293:                                             ; preds = %1312, %1292
  %1294 = load i32, ptr %26, align 4, !tbaa !5
  %1295 = load i32, ptr %25, align 4, !tbaa !5
  %1296 = add nsw i32 %1295, 2
  %1297 = icmp sle i32 %1294, %1296
  br i1 %1297, label %1298, label %1315

1298:                                             ; preds = %1293
  %1299 = load i32, ptr %26, align 4, !tbaa !5
  %1300 = sext i32 %1299 to i64
  %1301 = getelementptr inbounds [4099 x i32], ptr %38, i64 0, i64 %1300
  %1302 = load i32, ptr %1301, align 4, !tbaa !5
  %1303 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.28, i32 noundef %1302)
          to label %1304 unwind label %409

1304:                                             ; preds = %1298
  %1305 = load i32, ptr %26, align 4, !tbaa !5
  %1306 = srem i32 %1305, 10
  %1307 = icmp eq i32 %1306, 0
  br i1 %1307, label %1308, label %1311

1308:                                             ; preds = %1304
  %1309 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.29)
          to label %1310 unwind label %409

1310:                                             ; preds = %1308
  br label %1311

1311:                                             ; preds = %1310, %1304
  br label %1312

1312:                                             ; preds = %1311
  %1313 = load i32, ptr %26, align 4, !tbaa !5
  %1314 = add nsw i32 %1313, 1
  store i32 %1314, ptr %26, align 4, !tbaa !5
  br label %1293, !llvm.loop !38

1315:                                             ; preds = %1293
  %1316 = load i32, ptr %39, align 4, !tbaa !5
  %1317 = load i32, ptr %40, align 4, !tbaa !5
  %1318 = load i32, ptr %39, align 4, !tbaa !5
  %1319 = sitofp i32 %1318 to double
  %1320 = fmul double %1319, 1.000000e+02
  %1321 = load i32, ptr %40, align 4, !tbaa !5
  %1322 = sitofp i32 %1321 to double
  %1323 = fdiv double %1320, %1322
  %1324 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.30, i32 noundef %1316, i32 noundef %1317, double noundef %1323)
          to label %1325 unwind label %409

1325:                                             ; preds = %1315
  br label %1326

1326:                                             ; preds = %1325, %1286
  %1327 = load i8, ptr %7, align 1, !tbaa !13
  %1328 = sext i8 %1327 to i32
  %1329 = icmp eq i32 %1328, 99
  br i1 %1329, label %1330, label %1440

1330:                                             ; preds = %1326
  call void @llvm.lifetime.start.p0(i64 32, ptr %56) #12
  call void @llvm.lifetime.start.p0(i64 56, ptr %57) #12
  %1331 = call i32 @pthread_attr_init(ptr noundef %57) #12
  %1332 = call i32 @pthread_attr_setdetachstate(ptr noundef %57, i32 noundef 0) #12
  call void @llvm.lifetime.start.p0(i64 288, ptr %58) #12
  %1333 = getelementptr inbounds [4 x %struct.Job], ptr %58, i32 0, i32 0
  %1334 = getelementptr inbounds %struct.Job, ptr %1333, i64 4
  br label %1335

1335:                                             ; preds = %1335, %1330
  %1336 = phi ptr [ %1333, %1330 ], [ %1337, %1335 ]
  call void @_ZN3JobC2Ev(ptr noundef nonnull align 8 dereferenceable(72) %1336) #12
  %1337 = getelementptr inbounds %struct.Job, ptr %1336, i64 1
  %1338 = icmp eq ptr %1337, %1334
  br i1 %1338, label %1339, label %1335

1339:                                             ; preds = %1335
  store i32 0, ptr %26, align 4, !tbaa !5
  br label %1340

1340:                                             ; preds = %1383, %1339
  %1341 = load i32, ptr %26, align 4, !tbaa !5
  %1342 = load i32, ptr %9, align 4, !tbaa !5
  %1343 = add nsw i32 3, %1342
  %1344 = icmp slt i32 %1341, %1343
  br i1 %1344, label %1345, label %1404

1345:                                             ; preds = %1340
  %1346 = load i32, ptr %26, align 4, !tbaa !5
  %1347 = load i32, ptr %26, align 4, !tbaa !5
  %1348 = sext i32 %1347 to i64
  %1349 = getelementptr inbounds [4 x %struct.Job], ptr %58, i64 0, i64 %1348
  %1350 = getelementptr inbounds %struct.Job, ptr %1349, i32 0, i32 0
  store i32 %1346, ptr %1350, align 8, !tbaa !39
  call void @llvm.lifetime.start.p0(i64 32, ptr %59) #12
  call void @llvm.lifetime.start.p0(i64 32, ptr %60) #12
  call void @llvm.lifetime.start.p0(i64 32, ptr %61) #12
  %1351 = load ptr, ptr %5, align 8, !tbaa !9
  %1352 = getelementptr inbounds ptr, ptr %1351, i64 3
  %1353 = load ptr, ptr %1352, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr %62) #12
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %62) #12
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %61, ptr noundef %1353, ptr noundef nonnull align 1 dereferenceable(1) %62)
          to label %1354 unwind label %1386

1354:                                             ; preds = %1345
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %60, ptr noundef nonnull align 8 dereferenceable(32) %61, ptr noundef @.str.13)
          to label %1355 unwind label %1390

1355:                                             ; preds = %1354
  %1356 = load i32, ptr %26, align 4, !tbaa !5
  %1357 = sext i32 %1356 to i64
  %1358 = getelementptr inbounds [5 x i8], ptr @.str.14, i64 0, i64 %1357
  %1359 = load i8, ptr %1358, align 1, !tbaa !13
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_S5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %59, ptr noundef nonnull align 8 dereferenceable(32) %60, i8 noundef signext %1359)
          to label %1360 unwind label %1394

1360:                                             ; preds = %1355
  %1361 = load i32, ptr %26, align 4, !tbaa !5
  %1362 = sext i32 %1361 to i64
  %1363 = getelementptr inbounds [4 x %struct.Job], ptr %58, i64 0, i64 %1362
  %1364 = getelementptr inbounds %struct.Job, ptr %1363, i32 0, i32 1
  %1365 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(32) %1364, ptr noundef nonnull align 8 dereferenceable(32) %59) #12
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %59) #12
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %60) #12
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %61) #12
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %62) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %62) #12
  call void @llvm.lifetime.end.p0(i64 32, ptr %61) #12
  call void @llvm.lifetime.end.p0(i64 32, ptr %60) #12
  call void @llvm.lifetime.end.p0(i64 32, ptr %59) #12
  call void @llvm.lifetime.start.p0(i64 32, ptr %63) #12
  %1366 = load i32, ptr %26, align 4, !tbaa !5
  %1367 = sext i32 %1366 to i64
  %1368 = getelementptr inbounds [4 x %struct.Job], ptr %58, i64 0, i64 %1367
  %1369 = getelementptr inbounds %struct.Job, ptr %1368, i32 0, i32 1
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EERKS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %63, ptr noundef nonnull align 8 dereferenceable(32) %1369, ptr noundef @.str.31)
          to label %1370 unwind label %1400

1370:                                             ; preds = %1360
  %1371 = load i32, ptr %26, align 4, !tbaa !5
  %1372 = sext i32 %1371 to i64
  %1373 = getelementptr inbounds [4 x %struct.Job], ptr %58, i64 0, i64 %1372
  %1374 = getelementptr inbounds %struct.Job, ptr %1373, i32 0, i32 2
  %1375 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(32) %1374, ptr noundef nonnull align 8 dereferenceable(32) %63) #12
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %63) #12
  call void @llvm.lifetime.end.p0(i64 32, ptr %63) #12
  %1376 = load i32, ptr %26, align 4, !tbaa !5
  %1377 = sext i32 %1376 to i64
  %1378 = getelementptr inbounds [4 x i64], ptr %56, i64 0, i64 %1377
  %1379 = load i32, ptr %26, align 4, !tbaa !5
  %1380 = sext i32 %1379 to i64
  %1381 = getelementptr inbounds [4 x %struct.Job], ptr %58, i64 0, i64 %1380
  %1382 = call i32 @pthread_create(ptr noundef %1378, ptr noundef %57, ptr noundef @_Z8compressPv, ptr noundef %1381) #12
  br label %1383

1383:                                             ; preds = %1370
  %1384 = load i32, ptr %26, align 4, !tbaa !5
  %1385 = add nsw i32 %1384, 1
  store i32 %1385, ptr %26, align 4, !tbaa !5
  br label %1340, !llvm.loop !43

1386:                                             ; preds = %1345
  %1387 = landingpad { ptr, i32 }
          cleanup
  %1388 = extractvalue { ptr, i32 } %1387, 0
  store ptr %1388, ptr %13, align 8
  %1389 = extractvalue { ptr, i32 } %1387, 1
  store i32 %1389, ptr %14, align 4
  br label %1399

1390:                                             ; preds = %1354
  %1391 = landingpad { ptr, i32 }
          cleanup
  %1392 = extractvalue { ptr, i32 } %1391, 0
  store ptr %1392, ptr %13, align 8
  %1393 = extractvalue { ptr, i32 } %1391, 1
  store i32 %1393, ptr %14, align 4
  br label %1398

1394:                                             ; preds = %1355
  %1395 = landingpad { ptr, i32 }
          cleanup
  %1396 = extractvalue { ptr, i32 } %1395, 0
  store ptr %1396, ptr %13, align 8
  %1397 = extractvalue { ptr, i32 } %1395, 1
  store i32 %1397, ptr %14, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %60) #12
  br label %1398

1398:                                             ; preds = %1394, %1390
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %61) #12
  br label %1399

1399:                                             ; preds = %1398, %1386
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %62) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %62) #12
  call void @llvm.lifetime.end.p0(i64 32, ptr %61) #12
  call void @llvm.lifetime.end.p0(i64 32, ptr %60) #12
  call void @llvm.lifetime.end.p0(i64 32, ptr %59) #12
  br label %1432

1400:                                             ; preds = %1360
  %1401 = landingpad { ptr, i32 }
          cleanup
  %1402 = extractvalue { ptr, i32 } %1401, 0
  store ptr %1402, ptr %13, align 8
  %1403 = extractvalue { ptr, i32 } %1401, 1
  store i32 %1403, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %63) #12
  br label %1432

1404:                                             ; preds = %1340
  store i32 0, ptr %26, align 4, !tbaa !5
  br label %1405

1405:                                             ; preds = %1417, %1404
  %1406 = load i32, ptr %26, align 4, !tbaa !5
  %1407 = load i32, ptr %9, align 4, !tbaa !5
  %1408 = add nsw i32 3, %1407
  %1409 = icmp slt i32 %1406, %1408
  br i1 %1409, label %1410, label %1424

1410:                                             ; preds = %1405
  call void @llvm.lifetime.start.p0(i64 8, ptr %64) #12
  %1411 = load i32, ptr %26, align 4, !tbaa !5
  %1412 = sext i32 %1411 to i64
  %1413 = getelementptr inbounds [4 x i64], ptr %56, i64 0, i64 %1412
  %1414 = load i64, ptr %1413, align 8, !tbaa !11
  %1415 = invoke i32 @pthread_join(i64 noundef %1414, ptr noundef %64)
          to label %1416 unwind label %1420

1416:                                             ; preds = %1410
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #12
  br label %1417

1417:                                             ; preds = %1416
  %1418 = load i32, ptr %26, align 4, !tbaa !5
  %1419 = add nsw i32 %1418, 1
  store i32 %1419, ptr %26, align 4, !tbaa !5
  br label %1405, !llvm.loop !44

1420:                                             ; preds = %1410
  %1421 = landingpad { ptr, i32 }
          cleanup
  %1422 = extractvalue { ptr, i32 } %1421, 0
  store ptr %1422, ptr %13, align 8
  %1423 = extractvalue { ptr, i32 } %1421, 1
  store i32 %1423, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #12
  br label %1432

1424:                                             ; preds = %1405
  %1425 = getelementptr inbounds [4 x %struct.Job], ptr %58, i32 0, i32 0
  %1426 = getelementptr inbounds %struct.Job, ptr %1425, i64 4
  br label %1427

1427:                                             ; preds = %1427, %1424
  %1428 = phi ptr [ %1426, %1424 ], [ %1429, %1427 ]
  %1429 = getelementptr inbounds %struct.Job, ptr %1428, i64 -1
  call void @_ZN3JobD2Ev(ptr noundef nonnull align 8 dereferenceable(72) %1429) #12
  %1430 = icmp eq ptr %1429, %1425
  br i1 %1430, label %1431, label %1427

1431:                                             ; preds = %1427
  call void @llvm.lifetime.end.p0(i64 288, ptr %58) #12
  call void @llvm.lifetime.end.p0(i64 56, ptr %57) #12
  call void @llvm.lifetime.end.p0(i64 32, ptr %56) #12
  br label %1440

1432:                                             ; preds = %1420, %1400, %1399
  %1433 = getelementptr inbounds [4 x %struct.Job], ptr %58, i32 0, i32 0
  %1434 = getelementptr inbounds %struct.Job, ptr %1433, i64 4
  br label %1435

1435:                                             ; preds = %1435, %1432
  %1436 = phi ptr [ %1434, %1432 ], [ %1437, %1435 ]
  %1437 = getelementptr inbounds %struct.Job, ptr %1436, i64 -1
  call void @_ZN3JobD2Ev(ptr noundef nonnull align 8 dereferenceable(72) %1437) #12
  %1438 = icmp eq ptr %1437, %1433
  br i1 %1438, label %1439, label %1435

1439:                                             ; preds = %1435
  call void @llvm.lifetime.end.p0(i64 288, ptr %58) #12
  call void @llvm.lifetime.end.p0(i64 56, ptr %57) #12
  call void @llvm.lifetime.end.p0(i64 32, ptr %56) #12
  br label %1441

1440:                                             ; preds = %1431, %1326
  call void @llvm.lifetime.end.p0(i64 1, ptr %42) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #12
  call void @llvm.lifetime.end.p0(i64 16396, ptr %38) #12
  call void @llvm.lifetime.end.p0(i64 4096, ptr %37) #12
  call void @llvm.lifetime.end.p0(i64 4096, ptr %36) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #12
  call void @llvm.lifetime.end.p0(i64 32, ptr %24) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #12
  br label %2248

1441:                                             ; preds = %1439, %1259, %409
  call void @llvm.lifetime.end.p0(i64 1, ptr %42) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #12
  call void @llvm.lifetime.end.p0(i64 16396, ptr %38) #12
  call void @llvm.lifetime.end.p0(i64 4096, ptr %37) #12
  call void @llvm.lifetime.end.p0(i64 4096, ptr %36) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #12
  br label %1442

1442:                                             ; preds = %1441, %328, %271
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #12
  call void @llvm.lifetime.end.p0(i64 32, ptr %24) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #12
  br label %2257

1443:                                             ; preds = %125
  %1444 = load i8, ptr %7, align 1, !tbaa !13
  %1445 = sext i8 %1444 to i32
  %1446 = icmp eq i32 %1445, 100
  br i1 %1446, label %1451, label %1447

1447:                                             ; preds = %1443
  %1448 = load i8, ptr %7, align 1, !tbaa !13
  %1449 = sext i8 %1448 to i32
  %1450 = icmp eq i32 %1449, 102
  br i1 %1450, label %1451, label %2247

1451:                                             ; preds = %1447, %1443
  call void @llvm.lifetime.start.p0(i64 288, ptr %65) #12
  %1452 = getelementptr inbounds [4 x %struct.Job], ptr %65, i32 0, i32 0
  %1453 = getelementptr inbounds %struct.Job, ptr %1452, i64 4
  br label %1454

1454:                                             ; preds = %1454, %1451
  %1455 = phi ptr [ %1452, %1451 ], [ %1456, %1454 ]
  call void @_ZN3JobC2Ev(ptr noundef nonnull align 8 dereferenceable(72) %1455) #12
  %1456 = getelementptr inbounds %struct.Job, ptr %1455, i64 1
  %1457 = icmp eq ptr %1456, %1453
  br i1 %1457, label %1458, label %1454

1458:                                             ; preds = %1454
  %1459 = load i8, ptr %7, align 1, !tbaa !13
  %1460 = sext i8 %1459 to i32
  %1461 = icmp eq i32 %1460, 100
  br i1 %1461, label %1462, label %1554

1462:                                             ; preds = %1458
  call void @llvm.lifetime.start.p0(i64 32, ptr %66) #12
  call void @llvm.lifetime.start.p0(i64 56, ptr %67) #12
  %1463 = call i32 @pthread_attr_init(ptr noundef %67) #12
  %1464 = call i32 @pthread_attr_setdetachstate(ptr noundef %67, i32 noundef 0) #12
  call void @llvm.lifetime.start.p0(i64 4, ptr %68) #12
  store i32 0, ptr %68, align 4, !tbaa !5
  br label %1465

1465:                                             ; preds = %1509, %1462
  %1466 = load i32, ptr %68, align 4, !tbaa !5
  %1467 = load i32, ptr %9, align 4, !tbaa !5
  %1468 = add nsw i32 3, %1467
  %1469 = icmp slt i32 %1466, %1468
  br i1 %1469, label %1471, label %1470

1470:                                             ; preds = %1465
  store i32 61, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %68) #12
  br label %1531

1471:                                             ; preds = %1465
  %1472 = load i32, ptr %68, align 4, !tbaa !5
  %1473 = load i32, ptr %68, align 4, !tbaa !5
  %1474 = sext i32 %1473 to i64
  %1475 = getelementptr inbounds [4 x %struct.Job], ptr %65, i64 0, i64 %1474
  %1476 = getelementptr inbounds %struct.Job, ptr %1475, i32 0, i32 0
  store i32 %1472, ptr %1476, align 8, !tbaa !39
  call void @llvm.lifetime.start.p0(i64 32, ptr %69) #12
  call void @llvm.lifetime.start.p0(i64 32, ptr %70) #12
  call void @llvm.lifetime.start.p0(i64 32, ptr %71) #12
  %1477 = load ptr, ptr %5, align 8, !tbaa !9
  %1478 = getelementptr inbounds ptr, ptr %1477, i64 2
  %1479 = load ptr, ptr %1478, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr %72) #12
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %72) #12
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %71, ptr noundef %1479, ptr noundef nonnull align 1 dereferenceable(1) %72)
          to label %1480 unwind label %1512

1480:                                             ; preds = %1471
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %70, ptr noundef nonnull align 8 dereferenceable(32) %71, ptr noundef @.str.13)
          to label %1481 unwind label %1516

1481:                                             ; preds = %1480
  %1482 = load i32, ptr %68, align 4, !tbaa !5
  %1483 = sext i32 %1482 to i64
  %1484 = getelementptr inbounds [5 x i8], ptr @.str.14, i64 0, i64 %1483
  %1485 = load i8, ptr %1484, align 1, !tbaa !13
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_S5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %69, ptr noundef nonnull align 8 dereferenceable(32) %70, i8 noundef signext %1485)
          to label %1486 unwind label %1520

1486:                                             ; preds = %1481
  %1487 = load i32, ptr %68, align 4, !tbaa !5
  %1488 = sext i32 %1487 to i64
  %1489 = getelementptr inbounds [4 x %struct.Job], ptr %65, i64 0, i64 %1488
  %1490 = getelementptr inbounds %struct.Job, ptr %1489, i32 0, i32 2
  %1491 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(32) %1490, ptr noundef nonnull align 8 dereferenceable(32) %69) #12
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %69) #12
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %70) #12
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %71) #12
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %72) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %72) #12
  call void @llvm.lifetime.end.p0(i64 32, ptr %71) #12
  call void @llvm.lifetime.end.p0(i64 32, ptr %70) #12
  call void @llvm.lifetime.end.p0(i64 32, ptr %69) #12
  call void @llvm.lifetime.start.p0(i64 32, ptr %73) #12
  %1492 = load i32, ptr %68, align 4, !tbaa !5
  %1493 = sext i32 %1492 to i64
  %1494 = getelementptr inbounds [4 x %struct.Job], ptr %65, i64 0, i64 %1493
  %1495 = getelementptr inbounds %struct.Job, ptr %1494, i32 0, i32 2
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EERKS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %73, ptr noundef nonnull align 8 dereferenceable(32) %1495, ptr noundef @.str.31)
          to label %1496 unwind label %1526

1496:                                             ; preds = %1486
  %1497 = load i32, ptr %68, align 4, !tbaa !5
  %1498 = sext i32 %1497 to i64
  %1499 = getelementptr inbounds [4 x %struct.Job], ptr %65, i64 0, i64 %1498
  %1500 = getelementptr inbounds %struct.Job, ptr %1499, i32 0, i32 1
  %1501 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(32) %1500, ptr noundef nonnull align 8 dereferenceable(32) %73) #12
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %73) #12
  call void @llvm.lifetime.end.p0(i64 32, ptr %73) #12
  %1502 = load i32, ptr %68, align 4, !tbaa !5
  %1503 = sext i32 %1502 to i64
  %1504 = getelementptr inbounds [4 x i64], ptr %66, i64 0, i64 %1503
  %1505 = load i32, ptr %68, align 4, !tbaa !5
  %1506 = sext i32 %1505 to i64
  %1507 = getelementptr inbounds [4 x %struct.Job], ptr %65, i64 0, i64 %1506
  %1508 = call i32 @pthread_create(ptr noundef %1504, ptr noundef %67, ptr noundef @_Z10decompressPv, ptr noundef %1507) #12
  br label %1509

1509:                                             ; preds = %1496
  %1510 = load i32, ptr %68, align 4, !tbaa !5
  %1511 = add nsw i32 %1510, 1
  store i32 %1511, ptr %68, align 4, !tbaa !5
  br label %1465, !llvm.loop !45

1512:                                             ; preds = %1471
  %1513 = landingpad { ptr, i32 }
          cleanup
  %1514 = extractvalue { ptr, i32 } %1513, 0
  store ptr %1514, ptr %13, align 8
  %1515 = extractvalue { ptr, i32 } %1513, 1
  store i32 %1515, ptr %14, align 4
  br label %1525

1516:                                             ; preds = %1480
  %1517 = landingpad { ptr, i32 }
          cleanup
  %1518 = extractvalue { ptr, i32 } %1517, 0
  store ptr %1518, ptr %13, align 8
  %1519 = extractvalue { ptr, i32 } %1517, 1
  store i32 %1519, ptr %14, align 4
  br label %1524

1520:                                             ; preds = %1481
  %1521 = landingpad { ptr, i32 }
          cleanup
  %1522 = extractvalue { ptr, i32 } %1521, 0
  store ptr %1522, ptr %13, align 8
  %1523 = extractvalue { ptr, i32 } %1521, 1
  store i32 %1523, ptr %14, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %70) #12
  br label %1524

1524:                                             ; preds = %1520, %1516
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %71) #12
  br label %1525

1525:                                             ; preds = %1524, %1512
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %72) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %72) #12
  call void @llvm.lifetime.end.p0(i64 32, ptr %71) #12
  call void @llvm.lifetime.end.p0(i64 32, ptr %70) #12
  call void @llvm.lifetime.end.p0(i64 32, ptr %69) #12
  br label %1530

1526:                                             ; preds = %1486
  %1527 = landingpad { ptr, i32 }
          cleanup
  %1528 = extractvalue { ptr, i32 } %1527, 0
  store ptr %1528, ptr %13, align 8
  %1529 = extractvalue { ptr, i32 } %1527, 1
  store i32 %1529, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %73) #12
  br label %1530

1530:                                             ; preds = %1526, %1525
  call void @llvm.lifetime.end.p0(i64 4, ptr %68) #12
  br label %1553

1531:                                             ; preds = %1470
  call void @llvm.lifetime.start.p0(i64 4, ptr %74) #12
  store i32 0, ptr %74, align 4, !tbaa !5
  br label %1532

1532:                                             ; preds = %1545, %1531
  %1533 = load i32, ptr %74, align 4, !tbaa !5
  %1534 = load i32, ptr %9, align 4, !tbaa !5
  %1535 = add nsw i32 3, %1534
  %1536 = icmp slt i32 %1533, %1535
  br i1 %1536, label %1538, label %1537

1537:                                             ; preds = %1532
  store i32 64, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %74) #12
  br label %1552

1538:                                             ; preds = %1532
  call void @llvm.lifetime.start.p0(i64 8, ptr %75) #12
  %1539 = load i32, ptr %74, align 4, !tbaa !5
  %1540 = sext i32 %1539 to i64
  %1541 = getelementptr inbounds [4 x i64], ptr %66, i64 0, i64 %1540
  %1542 = load i64, ptr %1541, align 8, !tbaa !11
  %1543 = invoke i32 @pthread_join(i64 noundef %1542, ptr noundef %75)
          to label %1544 unwind label %1548

1544:                                             ; preds = %1538
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #12
  br label %1545

1545:                                             ; preds = %1544
  %1546 = load i32, ptr %74, align 4, !tbaa !5
  %1547 = add nsw i32 %1546, 1
  store i32 %1547, ptr %74, align 4, !tbaa !5
  br label %1532, !llvm.loop !46

1548:                                             ; preds = %1538
  %1549 = landingpad { ptr, i32 }
          cleanup
  %1550 = extractvalue { ptr, i32 } %1549, 0
  store ptr %1550, ptr %13, align 8
  %1551 = extractvalue { ptr, i32 } %1549, 1
  store i32 %1551, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %74) #12
  br label %1553

1552:                                             ; preds = %1537
  call void @llvm.lifetime.end.p0(i64 56, ptr %67) #12
  call void @llvm.lifetime.end.p0(i64 32, ptr %66) #12
  br label %1554

1553:                                             ; preds = %1548, %1530
  call void @llvm.lifetime.end.p0(i64 56, ptr %67) #12
  call void @llvm.lifetime.end.p0(i64 32, ptr %66) #12
  br label %2239

1554:                                             ; preds = %1552, %1458
  %1555 = load i32, ptr %9, align 4, !tbaa !5
  %1556 = icmp ne i32 %1555, 0
  br i1 %1556, label %1557, label %1566

1557:                                             ; preds = %1554
  %1558 = load ptr, ptr %5, align 8, !tbaa !9
  %1559 = getelementptr inbounds ptr, ptr %1558, i64 4
  %1560 = load ptr, ptr %1559, align 8, !tbaa !9
  invoke void @_Z7readrefRN7libzpaq5ArrayIhEEPKc(ptr noundef nonnull align 8 dereferenceable(20) %11, ptr noundef %1560)
          to label %1561 unwind label %1562

1561:                                             ; preds = %1557
  br label %1566

1562:                                             ; preds = %1557
  %1563 = landingpad { ptr, i32 }
          cleanup
  %1564 = extractvalue { ptr, i32 } %1563, 0
  store ptr %1564, ptr %13, align 8
  %1565 = extractvalue { ptr, i32 } %1563, 1
  store i32 %1565, ptr %14, align 4
  br label %2239

1566:                                             ; preds = %1561, %1554
  call void @llvm.lifetime.start.p0(i64 32, ptr %76) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr %77) #12
  call void @llvm.lifetime.start.p0(i64 4, ptr %78) #12
  call void @llvm.lifetime.start.p0(i64 4, ptr %79) #12
  call void @llvm.lifetime.start.p0(i64 4, ptr %80) #12
  call void @llvm.lifetime.start.p0(i64 4, ptr %81) #12
  call void @llvm.lifetime.start.p0(i64 4, ptr %82) #12
  store i32 0, ptr %78, align 4, !tbaa !5
  br label %1567

1567:                                             ; preds = %1616, %1566
  %1568 = load i32, ptr %78, align 4, !tbaa !5
  %1569 = load i32, ptr %9, align 4, !tbaa !5
  %1570 = add nsw i32 3, %1569
  %1571 = icmp slt i32 %1568, %1570
  br i1 %1571, label %1572, label %1620

1572:                                             ; preds = %1567
  call void @llvm.lifetime.start.p0(i64 32, ptr %83) #12
  call void @llvm.lifetime.start.p0(i64 32, ptr %84) #12
  call void @llvm.lifetime.start.p0(i64 32, ptr %85) #12
  %1573 = load ptr, ptr %5, align 8, !tbaa !9
  %1574 = getelementptr inbounds ptr, ptr %1573, i64 2
  %1575 = load ptr, ptr %1574, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr %86) #12
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %86) #12
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %85, ptr noundef %1575, ptr noundef nonnull align 1 dereferenceable(1) %86)
          to label %1576 unwind label %1597

1576:                                             ; preds = %1572
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %84, ptr noundef nonnull align 8 dereferenceable(32) %85, ptr noundef @.str.13)
          to label %1577 unwind label %1601

1577:                                             ; preds = %1576
  %1578 = load i32, ptr %78, align 4, !tbaa !5
  %1579 = sext i32 %1578 to i64
  %1580 = getelementptr inbounds [5 x i8], ptr @.str.14, i64 0, i64 %1579
  %1581 = load i8, ptr %1580, align 1, !tbaa !13
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_S5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %83, ptr noundef nonnull align 8 dereferenceable(32) %84, i8 noundef signext %1581)
          to label %1582 unwind label %1605

1582:                                             ; preds = %1577
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %84) #12
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %85) #12
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %86) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %86) #12
  call void @llvm.lifetime.end.p0(i64 32, ptr %85) #12
  call void @llvm.lifetime.end.p0(i64 32, ptr %84) #12
  %1583 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %83) #12
  %1584 = invoke noalias ptr @fopen(ptr noundef %1583, ptr noundef @.str.2)
          to label %1585 unwind label %1611

1585:                                             ; preds = %1582
  %1586 = load i32, ptr %78, align 4, !tbaa !5
  %1587 = sext i32 %1586 to i64
  %1588 = getelementptr inbounds [4 x ptr], ptr %76, i64 0, i64 %1587
  store ptr %1584, ptr %1588, align 8, !tbaa !9
  %1589 = load i32, ptr %78, align 4, !tbaa !5
  %1590 = sext i32 %1589 to i64
  %1591 = getelementptr inbounds [4 x ptr], ptr %76, i64 0, i64 %1590
  %1592 = load ptr, ptr %1591, align 8, !tbaa !9
  %1593 = icmp ne ptr %1592, null
  br i1 %1593, label %1615, label %1594

1594:                                             ; preds = %1585
  %1595 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %83) #12
  invoke void @perror(ptr noundef %1595)
          to label %1596 unwind label %1611

1596:                                             ; preds = %1594
  call void @exit(i32 noundef 1) #13
  unreachable

1597:                                             ; preds = %1572
  %1598 = landingpad { ptr, i32 }
          cleanup
  %1599 = extractvalue { ptr, i32 } %1598, 0
  store ptr %1599, ptr %13, align 8
  %1600 = extractvalue { ptr, i32 } %1598, 1
  store i32 %1600, ptr %14, align 4
  br label %1610

1601:                                             ; preds = %1576
  %1602 = landingpad { ptr, i32 }
          cleanup
  %1603 = extractvalue { ptr, i32 } %1602, 0
  store ptr %1603, ptr %13, align 8
  %1604 = extractvalue { ptr, i32 } %1602, 1
  store i32 %1604, ptr %14, align 4
  br label %1609

1605:                                             ; preds = %1577
  %1606 = landingpad { ptr, i32 }
          cleanup
  %1607 = extractvalue { ptr, i32 } %1606, 0
  store ptr %1607, ptr %13, align 8
  %1608 = extractvalue { ptr, i32 } %1606, 1
  store i32 %1608, ptr %14, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %84) #12
  br label %1609

1609:                                             ; preds = %1605, %1601
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %85) #12
  br label %1610

1610:                                             ; preds = %1609, %1597
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %86) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %86) #12
  call void @llvm.lifetime.end.p0(i64 32, ptr %85) #12
  call void @llvm.lifetime.end.p0(i64 32, ptr %84) #12
  br label %1619

1611:                                             ; preds = %1594, %1582
  %1612 = landingpad { ptr, i32 }
          cleanup
  %1613 = extractvalue { ptr, i32 } %1612, 0
  store ptr %1613, ptr %13, align 8
  %1614 = extractvalue { ptr, i32 } %1612, 1
  store i32 %1614, ptr %14, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %83) #12
  br label %1619

1615:                                             ; preds = %1585
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %83) #12
  call void @llvm.lifetime.end.p0(i64 32, ptr %83) #12
  br label %1616

1616:                                             ; preds = %1615
  %1617 = load i32, ptr %78, align 4, !tbaa !5
  %1618 = add nsw i32 %1617, 1
  store i32 %1618, ptr %78, align 4, !tbaa !5
  br label %1567, !llvm.loop !47

1619:                                             ; preds = %1611, %1610
  call void @llvm.lifetime.end.p0(i64 32, ptr %83) #12
  br label %2238

1620:                                             ; preds = %1567
  %1621 = load ptr, ptr %5, align 8, !tbaa !9
  %1622 = getelementptr inbounds ptr, ptr %1621, i64 3
  %1623 = load ptr, ptr %1622, align 8, !tbaa !9
  %1624 = invoke noalias ptr @fopen(ptr noundef %1623, ptr noundef @.str.3)
          to label %1625 unwind label %1633

1625:                                             ; preds = %1620
  store ptr %1624, ptr %77, align 8, !tbaa !9
  %1626 = load ptr, ptr %77, align 8, !tbaa !9
  %1627 = icmp ne ptr %1626, null
  br i1 %1627, label %1637, label %1628

1628:                                             ; preds = %1625
  %1629 = load ptr, ptr %5, align 8, !tbaa !9
  %1630 = getelementptr inbounds ptr, ptr %1629, i64 3
  %1631 = load ptr, ptr %1630, align 8, !tbaa !9
  invoke void @perror(ptr noundef %1631)
          to label %1632 unwind label %1633

1632:                                             ; preds = %1628
  call void @exit(i32 noundef 1) #13
  unreachable

1633:                                             ; preds = %1647, %1641, %1637, %1628, %1620
  %1634 = landingpad { ptr, i32 }
          cleanup
  %1635 = extractvalue { ptr, i32 } %1634, 0
  store ptr %1635, ptr %13, align 8
  %1636 = extractvalue { ptr, i32 } %1634, 1
  store i32 %1636, ptr %14, align 4
  br label %2238

1637:                                             ; preds = %1625
  %1638 = getelementptr inbounds [4 x ptr], ptr %76, i64 0, i64 0
  %1639 = load ptr, ptr %1638, align 16, !tbaa !9
  %1640 = invoke i32 @getc(ptr noundef %1639)
          to label %1641 unwind label %1633

1641:                                             ; preds = %1637
  store i32 %1640, ptr %82, align 4, !tbaa !5
  %1642 = load i32, ptr %82, align 4, !tbaa !5
  %1643 = mul nsw i32 %1642, 256
  %1644 = getelementptr inbounds [4 x ptr], ptr %76, i64 0, i64 0
  %1645 = load ptr, ptr %1644, align 16, !tbaa !9
  %1646 = invoke i32 @getc(ptr noundef %1645)
          to label %1647 unwind label %1633

1647:                                             ; preds = %1641
  %1648 = add nsw i32 %1643, %1646
  store i32 %1648, ptr %82, align 4, !tbaa !5
  %1649 = load ptr, ptr %5, align 8, !tbaa !9
  %1650 = getelementptr inbounds ptr, ptr %1649, i64 2
  %1651 = load ptr, ptr %1650, align 8, !tbaa !9
  %1652 = load ptr, ptr %5, align 8, !tbaa !9
  %1653 = getelementptr inbounds ptr, ptr %1652, i64 3
  %1654 = load ptr, ptr %1653, align 8, !tbaa !9
  %1655 = load i32, ptr %82, align 4, !tbaa !5
  %1656 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.32, ptr noundef %1651, ptr noundef %1654, i32 noundef %1655)
          to label %1657 unwind label %1633

1657:                                             ; preds = %1647
  %1658 = load i32, ptr %82, align 4, !tbaa !5
  %1659 = icmp slt i32 %1658, 1
  br i1 %1659, label %1663, label %1660

1660:                                             ; preds = %1657
  %1661 = load i32, ptr %82, align 4, !tbaa !5
  %1662 = icmp sge i32 %1661, 4096
  br i1 %1662, label %1663, label %1664

1663:                                             ; preds = %1660, %1657
  call void @_ZN7libzpaq5errorEPKc(ptr noundef @.str.33)
  br label %1664

1664:                                             ; preds = %1663, %1660
  call void @llvm.lifetime.start.p0(i64 4, ptr %87) #12
  store i32 0, ptr %87, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4096, ptr %88) #12
  call void @llvm.memset.p0.i64(ptr align 16 %88, i8 0, i64 4096, i1 false)
  call void @llvm.lifetime.start.p0(i64 4096, ptr %89) #12
  call void @llvm.memset.p0.i64(ptr align 16 %89, i8 0, i64 4096, i1 false)
  br label %1665

1665:                                             ; preds = %2182, %1664
  br label %1666

1666:                                             ; preds = %1665
  %1667 = getelementptr inbounds [4 x ptr], ptr %76, i64 0, i64 0
  %1668 = load ptr, ptr %1667, align 16, !tbaa !9
  %1669 = invoke i32 @getc(ptr noundef %1668)
          to label %1670 unwind label %1675

1670:                                             ; preds = %1666
  %1671 = sub nsw i32 %1669, 1
  store i32 %1671, ptr %79, align 4, !tbaa !5
  %1672 = load i32, ptr %79, align 4, !tbaa !5
  %1673 = icmp eq i32 %1672, -2
  br i1 %1673, label %1674, label %1679

1674:                                             ; preds = %1670
  br label %2183

1675:                                             ; preds = %2224, %2192, %2183, %1789, %1785, %1773, %1703, %1683, %1679, %1666
  %1676 = landingpad { ptr, i32 }
          cleanup
  %1677 = extractvalue { ptr, i32 } %1676, 0
  store ptr %1677, ptr %13, align 8
  %1678 = extractvalue { ptr, i32 } %1676, 1
  store i32 %1678, ptr %14, align 4
  br label %2237

1679:                                             ; preds = %1670
  %1680 = getelementptr inbounds [4 x ptr], ptr %76, i64 0, i64 0
  %1681 = load ptr, ptr %1680, align 16, !tbaa !9
  %1682 = invoke i32 @getc(ptr noundef %1681)
          to label %1683 unwind label %1675

1683:                                             ; preds = %1679
  %1684 = sub nsw i32 %1682, 1
  store i32 %1684, ptr %80, align 4, !tbaa !5
  %1685 = getelementptr inbounds [4 x ptr], ptr %76, i64 0, i64 0
  %1686 = load ptr, ptr %1685, align 16, !tbaa !9
  %1687 = invoke i32 @getc(ptr noundef %1686)
          to label %1688 unwind label %1675

1688:                                             ; preds = %1683
  %1689 = sub nsw i32 %1687, 1
  store i32 %1689, ptr %78, align 4, !tbaa !5
  %1690 = load i32, ptr %79, align 4, !tbaa !5
  %1691 = icmp slt i32 %1690, 0
  br i1 %1691, label %1698, label %1692

1692:                                             ; preds = %1688
  %1693 = load i32, ptr %80, align 4, !tbaa !5
  %1694 = icmp slt i32 %1693, 0
  br i1 %1694, label %1698, label %1695

1695:                                             ; preds = %1692
  %1696 = load i32, ptr %78, align 4, !tbaa !5
  %1697 = icmp slt i32 %1696, 0
  br i1 %1697, label %1698, label %1699

1698:                                             ; preds = %1695, %1692, %1688
  call void @_ZN7libzpaq5errorEPKc(ptr noundef @.str.34)
  br label %1699

1699:                                             ; preds = %1698, %1695
  br label %1700

1700:                                             ; preds = %1720, %1699
  %1701 = load i32, ptr %78, align 4, !tbaa !5
  %1702 = icmp slt i32 %1701, 4096
  br i1 %1702, label %1703, label %1712

1703:                                             ; preds = %1700
  %1704 = getelementptr inbounds [4 x ptr], ptr %76, i64 0, i64 0
  %1705 = load ptr, ptr %1704, align 16, !tbaa !9
  %1706 = invoke i32 @getc(ptr noundef %1705)
          to label %1707 unwind label %1675

1707:                                             ; preds = %1703
  store i32 %1706, ptr %81, align 4, !tbaa !5
  %1708 = icmp ne i32 %1706, -1
  br i1 %1708, label %1709, label %1712

1709:                                             ; preds = %1707
  %1710 = load i32, ptr %81, align 4, !tbaa !5
  %1711 = icmp ne i32 %1710, 0
  br label %1712

1712:                                             ; preds = %1709, %1707, %1700
  %1713 = phi i1 [ false, %1707 ], [ false, %1700 ], [ %1711, %1709 ]
  br i1 %1713, label %1714, label %1723

1714:                                             ; preds = %1712
  %1715 = load i32, ptr %81, align 4, !tbaa !5
  %1716 = trunc i32 %1715 to i8
  %1717 = load i32, ptr %78, align 4, !tbaa !5
  %1718 = sext i32 %1717 to i64
  %1719 = getelementptr inbounds [4096 x i8], ptr %88, i64 0, i64 %1718
  store i8 %1716, ptr %1719, align 1, !tbaa !13
  br label %1720

1720:                                             ; preds = %1714
  %1721 = load i32, ptr %78, align 4, !tbaa !5
  %1722 = add nsw i32 %1721, 1
  store i32 %1722, ptr %78, align 4, !tbaa !5
  br label %1700, !llvm.loop !48

1723:                                             ; preds = %1712
  br label %1724

1724:                                             ; preds = %1763, %1723
  %1725 = load i32, ptr %80, align 4, !tbaa !5
  %1726 = icmp ne i32 %1725, 0
  br i1 %1726, label %1727, label %1730

1727:                                             ; preds = %1724
  %1728 = load i32, ptr %79, align 4, !tbaa !5
  %1729 = icmp sge i32 %1728, 0
  br label %1730

1730:                                             ; preds = %1727, %1724
  %1731 = phi i1 [ false, %1724 ], [ %1729, %1727 ]
  br i1 %1731, label %1732, label %1768

1732:                                             ; preds = %1730
  call void @llvm.lifetime.start.p0(i64 4, ptr %90) #12
  %1733 = load i32, ptr %80, align 4, !tbaa !5
  %1734 = srem i32 %1733, 10
  store i32 %1734, ptr %90, align 4, !tbaa !5
  %1735 = load i32, ptr %90, align 4, !tbaa !5
  %1736 = load i32, ptr %79, align 4, !tbaa !5
  %1737 = sext i32 %1736 to i64
  %1738 = getelementptr inbounds [4096 x i8], ptr %88, i64 0, i64 %1737
  %1739 = load i8, ptr %1738, align 1, !tbaa !13
  %1740 = zext i8 %1739 to i32
  %1741 = add nsw i32 %1740, %1735
  %1742 = trunc i32 %1741 to i8
  store i8 %1742, ptr %1738, align 1, !tbaa !13
  %1743 = load i32, ptr %90, align 4, !tbaa !5
  %1744 = load i32, ptr %80, align 4, !tbaa !5
  %1745 = sub nsw i32 %1744, %1743
  store i32 %1745, ptr %80, align 4, !tbaa !5
  %1746 = load i32, ptr %79, align 4, !tbaa !5
  %1747 = sext i32 %1746 to i64
  %1748 = getelementptr inbounds [4096 x i8], ptr %88, i64 0, i64 %1747
  %1749 = load i8, ptr %1748, align 1, !tbaa !13
  %1750 = zext i8 %1749 to i32
  %1751 = icmp sgt i32 %1750, 57
  br i1 %1751, label %1752, label %1762

1752:                                             ; preds = %1732
  %1753 = load i32, ptr %79, align 4, !tbaa !5
  %1754 = sext i32 %1753 to i64
  %1755 = getelementptr inbounds [4096 x i8], ptr %88, i64 0, i64 %1754
  %1756 = load i8, ptr %1755, align 1, !tbaa !13
  %1757 = zext i8 %1756 to i32
  %1758 = sub nsw i32 %1757, 10
  %1759 = trunc i32 %1758 to i8
  store i8 %1759, ptr %1755, align 1, !tbaa !13
  %1760 = load i32, ptr %80, align 4, !tbaa !5
  %1761 = add nsw i32 %1760, 10
  store i32 %1761, ptr %80, align 4, !tbaa !5
  br label %1762

1762:                                             ; preds = %1752, %1732
  call void @llvm.lifetime.end.p0(i64 4, ptr %90) #12
  br label %1763

1763:                                             ; preds = %1762
  %1764 = load i32, ptr %79, align 4, !tbaa !5
  %1765 = add nsw i32 %1764, -1
  store i32 %1765, ptr %79, align 4, !tbaa !5
  %1766 = load i32, ptr %80, align 4, !tbaa !5
  %1767 = sdiv i32 %1766, 10
  store i32 %1767, ptr %80, align 4, !tbaa !5
  br label %1724, !llvm.loop !49

1768:                                             ; preds = %1730
  store i32 0, ptr %79, align 4, !tbaa !5
  br label %1769

1769:                                             ; preds = %1782, %1768
  %1770 = load i32, ptr %79, align 4, !tbaa !5
  %1771 = load i32, ptr %78, align 4, !tbaa !5
  %1772 = icmp slt i32 %1770, %1771
  br i1 %1772, label %1773, label %1785

1773:                                             ; preds = %1769
  %1774 = load i32, ptr %79, align 4, !tbaa !5
  %1775 = sext i32 %1774 to i64
  %1776 = getelementptr inbounds [4096 x i8], ptr %88, i64 0, i64 %1775
  %1777 = load i8, ptr %1776, align 1, !tbaa !13
  %1778 = zext i8 %1777 to i32
  %1779 = load ptr, ptr %77, align 8, !tbaa !9
  %1780 = invoke i32 @putc(i32 noundef %1778, ptr noundef %1779)
          to label %1781 unwind label %1675

1781:                                             ; preds = %1773
  br label %1782

1782:                                             ; preds = %1781
  %1783 = load i32, ptr %79, align 4, !tbaa !5
  %1784 = add nsw i32 %1783, 1
  store i32 %1784, ptr %79, align 4, !tbaa !5
  br label %1769, !llvm.loop !50

1785:                                             ; preds = %1769
  %1786 = load ptr, ptr %77, align 8, !tbaa !9
  %1787 = invoke i32 @putc(i32 noundef 10, ptr noundef %1786)
          to label %1788 unwind label %1675

1788:                                             ; preds = %1785
  store i32 0, ptr %78, align 4, !tbaa !5
  br label %1789

1789:                                             ; preds = %1933, %1788
  %1790 = getelementptr inbounds [4 x ptr], ptr %76, i64 0, i64 2
  %1791 = load ptr, ptr %1790, align 16, !tbaa !9
  %1792 = invoke i32 @getc(ptr noundef %1791)
          to label %1793 unwind label %1675

1793:                                             ; preds = %1789
  store i32 %1792, ptr %81, align 4, !tbaa !5
  %1794 = load i32, ptr %81, align 4, !tbaa !5
  %1795 = icmp eq i32 %1794, -1
  br i1 %1795, label %1796, label %1797

1796:                                             ; preds = %1793
  call void @_ZN7libzpaq5errorEPKc(ptr noundef @.str.35)
  br label %1797

1797:                                             ; preds = %1796, %1793
  %1798 = load i32, ptr %78, align 4, !tbaa !5
  %1799 = load i32, ptr %82, align 4, !tbaa !5
  %1800 = icmp sgt i32 %1798, %1799
  br i1 %1800, label %1801, label %1802

1801:                                             ; preds = %1797
  call void @_ZN7libzpaq5errorEPKc(ptr noundef @.str.36)
  br label %1802

1802:                                             ; preds = %1801, %1797
  %1803 = load i32, ptr %81, align 4, !tbaa !5
  %1804 = icmp eq i32 %1803, 0
  br i1 %1804, label %1805, label %1818

1805:                                             ; preds = %1802
  br label %1806

1806:                                             ; preds = %1814, %1805
  %1807 = load i32, ptr %78, align 4, !tbaa !5
  %1808 = load i32, ptr %82, align 4, !tbaa !5
  %1809 = icmp slt i32 %1807, %1808
  br i1 %1809, label %1810, label %1817

1810:                                             ; preds = %1806
  %1811 = load i32, ptr %78, align 4, !tbaa !5
  %1812 = sext i32 %1811 to i64
  %1813 = getelementptr inbounds [4096 x i8], ptr %89, i64 0, i64 %1812
  store i8 35, ptr %1813, align 1, !tbaa !13
  br label %1814

1814:                                             ; preds = %1810
  %1815 = load i32, ptr %78, align 4, !tbaa !5
  %1816 = add nsw i32 %1815, 1
  store i32 %1816, ptr %78, align 4, !tbaa !5
  br label %1806, !llvm.loop !51

1817:                                             ; preds = %1806
  br label %1934

1818:                                             ; preds = %1802
  %1819 = load i32, ptr %81, align 4, !tbaa !5
  %1820 = icmp sge i32 %1819, 201
  br i1 %1820, label %1821, label %1839

1821:                                             ; preds = %1818
  %1822 = load i32, ptr %78, align 4, !tbaa !5
  %1823 = load i32, ptr %81, align 4, !tbaa !5
  %1824 = add nsw i32 %1822, %1823
  %1825 = sub nsw i32 %1824, 200
  %1826 = load i32, ptr %82, align 4, !tbaa !5
  %1827 = icmp sle i32 %1825, %1826
  br i1 %1827, label %1828, label %1839

1828:                                             ; preds = %1821
  br label %1829

1829:                                             ; preds = %1833, %1828
  %1830 = load i32, ptr %81, align 4, !tbaa !5
  %1831 = add nsw i32 %1830, -1
  store i32 %1831, ptr %81, align 4, !tbaa !5
  %1832 = icmp sgt i32 %1830, 200
  br i1 %1832, label %1833, label %1838

1833:                                             ; preds = %1829
  %1834 = load i32, ptr %78, align 4, !tbaa !5
  %1835 = add nsw i32 %1834, 1
  store i32 %1835, ptr %78, align 4, !tbaa !5
  %1836 = sext i32 %1834 to i64
  %1837 = getelementptr inbounds [4096 x i8], ptr %89, i64 0, i64 %1836
  store i8 71, ptr %1837, align 1, !tbaa !13
  br label %1829, !llvm.loop !52

1838:                                             ; preds = %1829
  br label %1932

1839:                                             ; preds = %1821, %1818
  %1840 = load i32, ptr %81, align 4, !tbaa !5
  %1841 = icmp sge i32 %1840, 137
  br i1 %1841, label %1842, label %1879

1842:                                             ; preds = %1839
  %1843 = load i32, ptr %81, align 4, !tbaa !5
  %1844 = icmp sle i32 %1843, 200
  br i1 %1844, label %1845, label %1879

1845:                                             ; preds = %1842
  %1846 = load i32, ptr %78, align 4, !tbaa !5
  %1847 = load i32, ptr %82, align 4, !tbaa !5
  %1848 = sub nsw i32 %1847, 2
  %1849 = icmp slt i32 %1846, %1848
  br i1 %1849, label %1850, label %1879

1850:                                             ; preds = %1845
  %1851 = load i32, ptr %81, align 4, !tbaa !5
  %1852 = sub nsw i32 %1851, 137
  store i32 %1852, ptr %81, align 4, !tbaa !5
  %1853 = load i32, ptr %81, align 4, !tbaa !5
  %1854 = and i32 %1853, 3
  %1855 = add nsw i32 %1854, 68
  %1856 = trunc i32 %1855 to i8
  %1857 = load i32, ptr %78, align 4, !tbaa !5
  %1858 = add nsw i32 %1857, 1
  store i32 %1858, ptr %78, align 4, !tbaa !5
  %1859 = sext i32 %1857 to i64
  %1860 = getelementptr inbounds [4096 x i8], ptr %89, i64 0, i64 %1859
  store i8 %1856, ptr %1860, align 1, !tbaa !13
  %1861 = load i32, ptr %81, align 4, !tbaa !5
  %1862 = ashr i32 %1861, 2
  %1863 = and i32 %1862, 3
  %1864 = add nsw i32 %1863, 68
  %1865 = trunc i32 %1864 to i8
  %1866 = load i32, ptr %78, align 4, !tbaa !5
  %1867 = add nsw i32 %1866, 1
  store i32 %1867, ptr %78, align 4, !tbaa !5
  %1868 = sext i32 %1866 to i64
  %1869 = getelementptr inbounds [4096 x i8], ptr %89, i64 0, i64 %1868
  store i8 %1865, ptr %1869, align 1, !tbaa !13
  %1870 = load i32, ptr %81, align 4, !tbaa !5
  %1871 = ashr i32 %1870, 4
  %1872 = and i32 %1871, 3
  %1873 = add nsw i32 %1872, 68
  %1874 = trunc i32 %1873 to i8
  %1875 = load i32, ptr %78, align 4, !tbaa !5
  %1876 = add nsw i32 %1875, 1
  store i32 %1876, ptr %78, align 4, !tbaa !5
  %1877 = sext i32 %1875 to i64
  %1878 = getelementptr inbounds [4096 x i8], ptr %89, i64 0, i64 %1877
  store i8 %1874, ptr %1878, align 1, !tbaa !13
  br label %1931

1879:                                             ; preds = %1845, %1842, %1839
  %1880 = load i32, ptr %81, align 4, !tbaa !5
  %1881 = icmp sge i32 %1880, 73
  br i1 %1881, label %1882, label %1910

1882:                                             ; preds = %1879
  %1883 = load i32, ptr %81, align 4, !tbaa !5
  %1884 = icmp sle i32 %1883, 136
  br i1 %1884, label %1885, label %1910

1885:                                             ; preds = %1882
  %1886 = load i32, ptr %78, align 4, !tbaa !5
  %1887 = load i32, ptr %82, align 4, !tbaa !5
  %1888 = sub nsw i32 %1887, 1
  %1889 = icmp slt i32 %1886, %1888
  br i1 %1889, label %1890, label %1910

1890:                                             ; preds = %1885
  %1891 = load i32, ptr %81, align 4, !tbaa !5
  %1892 = sub nsw i32 %1891, 73
  store i32 %1892, ptr %81, align 4, !tbaa !5
  %1893 = load i32, ptr %81, align 4, !tbaa !5
  %1894 = and i32 %1893, 7
  %1895 = add nsw i32 %1894, 64
  %1896 = trunc i32 %1895 to i8
  %1897 = load i32, ptr %78, align 4, !tbaa !5
  %1898 = add nsw i32 %1897, 1
  store i32 %1898, ptr %78, align 4, !tbaa !5
  %1899 = sext i32 %1897 to i64
  %1900 = getelementptr inbounds [4096 x i8], ptr %89, i64 0, i64 %1899
  store i8 %1896, ptr %1900, align 1, !tbaa !13
  %1901 = load i32, ptr %81, align 4, !tbaa !5
  %1902 = ashr i32 %1901, 3
  %1903 = and i32 %1902, 7
  %1904 = add nsw i32 %1903, 64
  %1905 = trunc i32 %1904 to i8
  %1906 = load i32, ptr %78, align 4, !tbaa !5
  %1907 = add nsw i32 %1906, 1
  store i32 %1907, ptr %78, align 4, !tbaa !5
  %1908 = sext i32 %1906 to i64
  %1909 = getelementptr inbounds [4096 x i8], ptr %89, i64 0, i64 %1908
  store i8 %1905, ptr %1909, align 1, !tbaa !13
  br label %1930

1910:                                             ; preds = %1885, %1882, %1879
  %1911 = load i32, ptr %81, align 4, !tbaa !5
  %1912 = icmp sge i32 %1911, 1
  br i1 %1912, label %1913, label %1928

1913:                                             ; preds = %1910
  %1914 = load i32, ptr %81, align 4, !tbaa !5
  %1915 = icmp sle i32 %1914, 72
  br i1 %1915, label %1916, label %1928

1916:                                             ; preds = %1913
  %1917 = load i32, ptr %78, align 4, !tbaa !5
  %1918 = load i32, ptr %82, align 4, !tbaa !5
  %1919 = icmp slt i32 %1917, %1918
  br i1 %1919, label %1920, label %1928

1920:                                             ; preds = %1916
  %1921 = load i32, ptr %81, align 4, !tbaa !5
  %1922 = add nsw i32 %1921, 32
  %1923 = trunc i32 %1922 to i8
  %1924 = load i32, ptr %78, align 4, !tbaa !5
  %1925 = add nsw i32 %1924, 1
  store i32 %1925, ptr %78, align 4, !tbaa !5
  %1926 = sext i32 %1924 to i64
  %1927 = getelementptr inbounds [4096 x i8], ptr %89, i64 0, i64 %1926
  store i8 %1923, ptr %1927, align 1, !tbaa !13
  br label %1929

1928:                                             ; preds = %1916, %1913, %1910
  call void @_ZN7libzpaq5errorEPKc(ptr noundef @.str.37)
  br label %1929

1929:                                             ; preds = %1928, %1920
  br label %1930

1930:                                             ; preds = %1929, %1890
  br label %1931

1931:                                             ; preds = %1930, %1850
  br label %1932

1932:                                             ; preds = %1931, %1838
  br label %1933

1933:                                             ; preds = %1932
  br label %1789, !llvm.loop !53

1934:                                             ; preds = %1817
  %1935 = load i32, ptr %78, align 4, !tbaa !5
  %1936 = load i32, ptr %82, align 4, !tbaa !5
  %1937 = icmp ne i32 %1935, %1936
  br i1 %1937, label %1938, label %1939

1938:                                             ; preds = %1934
  call void @_ZN7libzpaq5errorEPKc(ptr noundef @.str.38)
  br label %1939

1939:                                             ; preds = %1938, %1934
  call void @llvm.lifetime.start.p0(i64 4, ptr %91) #12
  store i32 0, ptr %91, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %92) #12
  store i32 0, ptr %92, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %93) #12
  store i32 0, ptr %93, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %94) #12
  store i32 0, ptr %94, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %95) #12
  store i32 0, ptr %95, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %96) #12
  store i32 0, ptr %96, align 4, !tbaa !5
  %1940 = load i32, ptr %9, align 4, !tbaa !5
  %1941 = icmp ne i32 %1940, 0
  br i1 %1941, label %1942, label %2008

1942:                                             ; preds = %1939
  %1943 = getelementptr inbounds [4 x ptr], ptr %76, i64 0, i64 3
  %1944 = load ptr, ptr %1943, align 8, !tbaa !9
  %1945 = invoke i32 @getc(ptr noundef %1944)
          to label %1946 unwind label %1950

1946:                                             ; preds = %1942
  store i32 %1945, ptr %93, align 4, !tbaa !5
  %1947 = load i32, ptr %93, align 4, !tbaa !5
  %1948 = icmp eq i32 %1947, -1
  br i1 %1948, label %1949, label %1954

1949:                                             ; preds = %1946
  call void @_ZN7libzpaq5errorEPKc(ptr noundef @.str.39)
  br label %1954

1950:                                             ; preds = %2179, %2167, %2159, %2156, %2153, %2134, %2088, %2073, %2051, %2043, %2020, %1998, %1991, %1985, %1980, %1975, %1970, %1964, %1942
  %1951 = landingpad { ptr, i32 }
          cleanup
  %1952 = extractvalue { ptr, i32 } %1951, 0
  store ptr %1952, ptr %13, align 8
  %1953 = extractvalue { ptr, i32 } %1951, 1
  store i32 %1953, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %96) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %95) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %94) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %93) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %92) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %91) #12
  br label %2237

1954:                                             ; preds = %1949, %1946
  %1955 = load i32, ptr %93, align 4, !tbaa !5
  %1956 = icmp ne i32 %1955, 0
  br i1 %1956, label %1957, label %2007

1957:                                             ; preds = %1954
  %1958 = load i32, ptr %93, align 4, !tbaa !5
  %1959 = icmp sge i32 %1958, 128
  br i1 %1959, label %1960, label %1963

1960:                                             ; preds = %1957
  %1961 = load i32, ptr %93, align 4, !tbaa !5
  %1962 = sub nsw i32 %1961, 128
  store i32 %1962, ptr %93, align 4, !tbaa !5
  store i32 -1, ptr %92, align 4, !tbaa !5
  br label %1964

1963:                                             ; preds = %1957
  store i32 1, ptr %92, align 4, !tbaa !5
  br label %1964

1964:                                             ; preds = %1963, %1960
  %1965 = load i32, ptr %93, align 4, !tbaa !5
  %1966 = add nsw i32 %1965, -1
  store i32 %1966, ptr %93, align 4, !tbaa !5
  %1967 = getelementptr inbounds [4 x ptr], ptr %76, i64 0, i64 3
  %1968 = load ptr, ptr %1967, align 8, !tbaa !9
  %1969 = invoke i32 @getc(ptr noundef %1968)
          to label %1970 unwind label %1950

1970:                                             ; preds = %1964
  %1971 = sub nsw i32 %1969, 1
  store i32 %1971, ptr %94, align 4, !tbaa !5
  %1972 = getelementptr inbounds [4 x ptr], ptr %76, i64 0, i64 3
  %1973 = load ptr, ptr %1972, align 8, !tbaa !9
  %1974 = invoke i32 @getc(ptr noundef %1973)
          to label %1975 unwind label %1950

1975:                                             ; preds = %1970
  %1976 = sub nsw i32 %1974, 1
  store i32 %1976, ptr %95, align 4, !tbaa !5
  %1977 = getelementptr inbounds [4 x ptr], ptr %76, i64 0, i64 3
  %1978 = load ptr, ptr %1977, align 8, !tbaa !9
  %1979 = invoke i32 @getc(ptr noundef %1978)
          to label %1980 unwind label %1950

1980:                                             ; preds = %1975
  %1981 = sub nsw i32 %1979, 1
  store i32 %1981, ptr %96, align 4, !tbaa !5
  %1982 = getelementptr inbounds [4 x ptr], ptr %76, i64 0, i64 3
  %1983 = load ptr, ptr %1982, align 8, !tbaa !9
  %1984 = invoke i32 @getc(ptr noundef %1983)
          to label %1985 unwind label %1950

1985:                                             ; preds = %1980
  store i32 %1984, ptr %91, align 4, !tbaa !5
  %1986 = load i32, ptr %91, align 4, !tbaa !5
  %1987 = mul i32 %1986, 256
  %1988 = getelementptr inbounds [4 x ptr], ptr %76, i64 0, i64 3
  %1989 = load ptr, ptr %1988, align 8, !tbaa !9
  %1990 = invoke i32 @getc(ptr noundef %1989)
          to label %1991 unwind label %1950

1991:                                             ; preds = %1985
  %1992 = add i32 %1987, %1990
  store i32 %1992, ptr %91, align 4, !tbaa !5
  %1993 = load i32, ptr %91, align 4, !tbaa !5
  %1994 = mul i32 %1993, 256
  %1995 = getelementptr inbounds [4 x ptr], ptr %76, i64 0, i64 3
  %1996 = load ptr, ptr %1995, align 8, !tbaa !9
  %1997 = invoke i32 @getc(ptr noundef %1996)
          to label %1998 unwind label %1950

1998:                                             ; preds = %1991
  %1999 = add i32 %1994, %1997
  store i32 %1999, ptr %91, align 4, !tbaa !5
  %2000 = load i32, ptr %91, align 4, !tbaa !5
  %2001 = mul i32 %2000, 256
  %2002 = getelementptr inbounds [4 x ptr], ptr %76, i64 0, i64 3
  %2003 = load ptr, ptr %2002, align 8, !tbaa !9
  %2004 = invoke i32 @getc(ptr noundef %2003)
          to label %2005 unwind label %1950

2005:                                             ; preds = %1998
  %2006 = add i32 %2001, %2004
  store i32 %2006, ptr %91, align 4, !tbaa !5
  br label %2007

2007:                                             ; preds = %2005, %1954
  br label %2008

2008:                                             ; preds = %2007, %1939
  store i32 0, ptr %80, align 4, !tbaa !5
  store i32 0, ptr %78, align 4, !tbaa !5
  br label %2009

2009:                                             ; preds = %2150, %2008
  %2010 = load i32, ptr %78, align 4, !tbaa !5
  %2011 = load i32, ptr %82, align 4, !tbaa !5
  %2012 = icmp slt i32 %2010, %2011
  br i1 %2012, label %2013, label %2153

2013:                                             ; preds = %2009
  %2014 = load i32, ptr %78, align 4, !tbaa !5
  %2015 = sext i32 %2014 to i64
  %2016 = getelementptr inbounds [4096 x i8], ptr %89, i64 0, i64 %2015
  %2017 = load i8, ptr %2016, align 1, !tbaa !13
  %2018 = zext i8 %2017 to i32
  %2019 = icmp eq i32 %2018, 33
  br i1 %2019, label %2020, label %2024

2020:                                             ; preds = %2013
  %2021 = load ptr, ptr %77, align 8, !tbaa !9
  %2022 = invoke i32 @putc(i32 noundef 78, ptr noundef %2021)
          to label %2023 unwind label %1950

2023:                                             ; preds = %2020
  br label %2149

2024:                                             ; preds = %2013
  %2025 = load i32, ptr %92, align 4, !tbaa !5
  %2026 = icmp ne i32 %2025, 0
  br i1 %2026, label %2027, label %2084

2027:                                             ; preds = %2024
  %2028 = load i32, ptr %80, align 4, !tbaa !5
  %2029 = load i32, ptr %93, align 4, !tbaa !5
  %2030 = icmp ne i32 %2028, %2029
  br i1 %2030, label %2031, label %2084

2031:                                             ; preds = %2027
  %2032 = load i32, ptr %80, align 4, !tbaa !5
  %2033 = load i32, ptr %94, align 4, !tbaa !5
  %2034 = icmp ne i32 %2032, %2033
  br i1 %2034, label %2035, label %2084

2035:                                             ; preds = %2031
  %2036 = load i32, ptr %80, align 4, !tbaa !5
  %2037 = load i32, ptr %95, align 4, !tbaa !5
  %2038 = icmp ne i32 %2036, %2037
  br i1 %2038, label %2039, label %2084

2039:                                             ; preds = %2035
  %2040 = load i32, ptr %80, align 4, !tbaa !5
  %2041 = load i32, ptr %96, align 4, !tbaa !5
  %2042 = icmp slt i32 %2040, %2041
  br i1 %2042, label %2043, label %2084

2043:                                             ; preds = %2039
  %2044 = load i32, ptr %91, align 4, !tbaa !5
  %2045 = udiv i32 %2044, 4
  %2046 = zext i32 %2045 to i64
  %2047 = invoke noundef i64 @_ZNK7libzpaq5ArrayIhE4sizeEv(ptr noundef nonnull align 8 dereferenceable(20) %11)
          to label %2048 unwind label %1950

2048:                                             ; preds = %2043
  %2049 = icmp uge i64 %2046, %2047
  br i1 %2049, label %2050, label %2051

2050:                                             ; preds = %2048
  call void @_ZN7libzpaq5errorEPKc(ptr noundef @.str.40)
  br label %2051

2051:                                             ; preds = %2050, %2048
  %2052 = load i32, ptr %91, align 4, !tbaa !5
  %2053 = udiv i32 %2052, 4
  %2054 = zext i32 %2053 to i64
  %2055 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZN7libzpaq5ArrayIhEixEm(ptr noundef nonnull align 8 dereferenceable(20) %11, i64 noundef %2054)
          to label %2056 unwind label %1950

2056:                                             ; preds = %2051
  %2057 = load i8, ptr %2055, align 1, !tbaa !13
  %2058 = zext i8 %2057 to i32
  %2059 = load i32, ptr %91, align 4, !tbaa !5
  %2060 = urem i32 %2059, 4
  %2061 = mul i32 %2060, 2
  %2062 = sub i32 6, %2061
  %2063 = ashr i32 %2058, %2062
  %2064 = and i32 %2063, 3
  store i32 %2064, ptr %79, align 4, !tbaa !5
  %2065 = load i32, ptr %92, align 4, !tbaa !5
  %2066 = load i32, ptr %91, align 4, !tbaa !5
  %2067 = add i32 %2066, %2065
  store i32 %2067, ptr %91, align 4, !tbaa !5
  %2068 = load i32, ptr %92, align 4, !tbaa !5
  %2069 = icmp slt i32 %2068, 0
  br i1 %2069, label %2070, label %2073

2070:                                             ; preds = %2056
  %2071 = load i32, ptr %79, align 4, !tbaa !5
  %2072 = sub nsw i32 3, %2071
  store i32 %2072, ptr %79, align 4, !tbaa !5
  br label %2073

2073:                                             ; preds = %2070, %2056
  %2074 = load i32, ptr %79, align 4, !tbaa !5
  %2075 = sext i32 %2074 to i64
  %2076 = getelementptr inbounds [5 x i8], ptr @.str.41, i64 0, i64 %2075
  %2077 = load i8, ptr %2076, align 1, !tbaa !13
  %2078 = sext i8 %2077 to i32
  %2079 = load ptr, ptr %77, align 8, !tbaa !9
  %2080 = invoke i32 @putc(i32 noundef %2078, ptr noundef %2079)
          to label %2081 unwind label %1950

2081:                                             ; preds = %2073
  %2082 = load i32, ptr %80, align 4, !tbaa !5
  %2083 = add nsw i32 %2082, 1
  store i32 %2083, ptr %80, align 4, !tbaa !5
  br label %2148

2084:                                             ; preds = %2039, %2035, %2031, %2027, %2024
  br label %2085

2085:                                             ; preds = %2096, %2084
  %2086 = load i32, ptr %87, align 4, !tbaa !5
  %2087 = icmp eq i32 %2086, 0
  br i1 %2087, label %2088, label %2097

2088:                                             ; preds = %2085
  %2089 = getelementptr inbounds [4 x ptr], ptr %76, i64 0, i64 1
  %2090 = load ptr, ptr %2089, align 8, !tbaa !9
  %2091 = invoke i32 @getc(ptr noundef %2090)
          to label %2092 unwind label %1950

2092:                                             ; preds = %2088
  store i32 %2091, ptr %87, align 4, !tbaa !5
  %2093 = load i32, ptr %87, align 4, !tbaa !5
  %2094 = icmp eq i32 %2093, -1
  br i1 %2094, label %2095, label %2096

2095:                                             ; preds = %2092
  call void @_ZN7libzpaq5errorEPKc(ptr noundef @.str.42)
  br label %2096

2096:                                             ; preds = %2095, %2092
  br label %2085, !llvm.loop !54

2097:                                             ; preds = %2085
  %2098 = load i32, ptr %87, align 4, !tbaa !5
  %2099 = icmp sgt i32 %2098, 84
  br i1 %2099, label %2100, label %2108

2100:                                             ; preds = %2097
  %2101 = load i32, ptr %87, align 4, !tbaa !5
  %2102 = sub nsw i32 %2101, 21
  %2103 = ashr i32 %2102, 6
  store i32 %2103, ptr %79, align 4, !tbaa !5
  %2104 = load i32, ptr %79, align 4, !tbaa !5
  %2105 = mul nsw i32 %2104, 64
  %2106 = load i32, ptr %87, align 4, !tbaa !5
  %2107 = sub nsw i32 %2106, %2105
  store i32 %2107, ptr %87, align 4, !tbaa !5
  br label %2134

2108:                                             ; preds = %2097
  %2109 = load i32, ptr %87, align 4, !tbaa !5
  %2110 = icmp sgt i32 %2109, 20
  br i1 %2110, label %2111, label %2119

2111:                                             ; preds = %2108
  %2112 = load i32, ptr %87, align 4, !tbaa !5
  %2113 = sub nsw i32 %2112, 5
  %2114 = ashr i32 %2113, 4
  store i32 %2114, ptr %79, align 4, !tbaa !5
  %2115 = load i32, ptr %79, align 4, !tbaa !5
  %2116 = mul nsw i32 %2115, 16
  %2117 = load i32, ptr %87, align 4, !tbaa !5
  %2118 = sub nsw i32 %2117, %2116
  store i32 %2118, ptr %87, align 4, !tbaa !5
  br label %2133

2119:                                             ; preds = %2108
  %2120 = load i32, ptr %87, align 4, !tbaa !5
  %2121 = icmp sgt i32 %2120, 4
  br i1 %2121, label %2122, label %2130

2122:                                             ; preds = %2119
  %2123 = load i32, ptr %87, align 4, !tbaa !5
  %2124 = sub nsw i32 %2123, 1
  %2125 = ashr i32 %2124, 2
  store i32 %2125, ptr %79, align 4, !tbaa !5
  %2126 = load i32, ptr %79, align 4, !tbaa !5
  %2127 = mul nsw i32 %2126, 4
  %2128 = load i32, ptr %87, align 4, !tbaa !5
  %2129 = sub nsw i32 %2128, %2127
  store i32 %2129, ptr %87, align 4, !tbaa !5
  br label %2132

2130:                                             ; preds = %2119
  %2131 = load i32, ptr %87, align 4, !tbaa !5
  store i32 %2131, ptr %79, align 4, !tbaa !5
  store i32 0, ptr %87, align 4, !tbaa !5
  br label %2132

2132:                                             ; preds = %2130, %2122
  br label %2133

2133:                                             ; preds = %2132, %2111
  br label %2134

2134:                                             ; preds = %2133, %2100
  %2135 = load i32, ptr %79, align 4, !tbaa !5
  %2136 = sext i32 %2135 to i64
  %2137 = getelementptr inbounds [6 x i8], ptr @.str.43, i64 0, i64 %2136
  %2138 = load i8, ptr %2137, align 1, !tbaa !13
  %2139 = sext i8 %2138 to i32
  %2140 = load ptr, ptr %77, align 8, !tbaa !9
  %2141 = invoke i32 @putc(i32 noundef %2139, ptr noundef %2140)
          to label %2142 unwind label %1950

2142:                                             ; preds = %2134
  %2143 = load i32, ptr %80, align 4, !tbaa !5
  %2144 = add nsw i32 %2143, 1
  store i32 %2144, ptr %80, align 4, !tbaa !5
  %2145 = load i32, ptr %92, align 4, !tbaa !5
  %2146 = load i32, ptr %91, align 4, !tbaa !5
  %2147 = add i32 %2146, %2145
  store i32 %2147, ptr %91, align 4, !tbaa !5
  br label %2148

2148:                                             ; preds = %2142, %2081
  br label %2149

2149:                                             ; preds = %2148, %2023
  br label %2150

2150:                                             ; preds = %2149
  %2151 = load i32, ptr %78, align 4, !tbaa !5
  %2152 = add nsw i32 %2151, 1
  store i32 %2152, ptr %78, align 4, !tbaa !5
  br label %2009, !llvm.loop !55

2153:                                             ; preds = %2009
  %2154 = load ptr, ptr %77, align 8, !tbaa !9
  %2155 = invoke i32 @putc(i32 noundef 10, ptr noundef %2154)
          to label %2156 unwind label %1950

2156:                                             ; preds = %2153
  %2157 = load ptr, ptr %77, align 8, !tbaa !9
  %2158 = invoke i32 @putc(i32 noundef 43, ptr noundef %2157)
          to label %2159 unwind label %1950

2159:                                             ; preds = %2156
  %2160 = load ptr, ptr %77, align 8, !tbaa !9
  %2161 = invoke i32 @putc(i32 noundef 10, ptr noundef %2160)
          to label %2162 unwind label %1950

2162:                                             ; preds = %2159
  store i32 0, ptr %78, align 4, !tbaa !5
  br label %2163

2163:                                             ; preds = %2176, %2162
  %2164 = load i32, ptr %78, align 4, !tbaa !5
  %2165 = load i32, ptr %82, align 4, !tbaa !5
  %2166 = icmp slt i32 %2164, %2165
  br i1 %2166, label %2167, label %2179

2167:                                             ; preds = %2163
  %2168 = load i32, ptr %78, align 4, !tbaa !5
  %2169 = sext i32 %2168 to i64
  %2170 = getelementptr inbounds [4096 x i8], ptr %89, i64 0, i64 %2169
  %2171 = load i8, ptr %2170, align 1, !tbaa !13
  %2172 = zext i8 %2171 to i32
  %2173 = load ptr, ptr %77, align 8, !tbaa !9
  %2174 = invoke i32 @putc(i32 noundef %2172, ptr noundef %2173)
          to label %2175 unwind label %1950

2175:                                             ; preds = %2167
  br label %2176

2176:                                             ; preds = %2175
  %2177 = load i32, ptr %78, align 4, !tbaa !5
  %2178 = add nsw i32 %2177, 1
  store i32 %2178, ptr %78, align 4, !tbaa !5
  br label %2163, !llvm.loop !56

2179:                                             ; preds = %2163
  %2180 = load ptr, ptr %77, align 8, !tbaa !9
  %2181 = invoke i32 @putc(i32 noundef 10, ptr noundef %2180)
          to label %2182 unwind label %1950

2182:                                             ; preds = %2179
  call void @llvm.lifetime.end.p0(i64 4, ptr %96) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %95) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %94) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %93) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %92) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %91) #12
  br label %1665, !llvm.loop !57

2183:                                             ; preds = %1674
  %2184 = load ptr, ptr %77, align 8, !tbaa !9
  %2185 = invoke i32 @fclose(ptr noundef %2184)
          to label %2186 unwind label %1675

2186:                                             ; preds = %2183
  %2187 = load i32, ptr %9, align 4, !tbaa !5
  %2188 = add nsw i32 2, %2187
  store i32 %2188, ptr %78, align 4, !tbaa !5
  br label %2189

2189:                                             ; preds = %2199, %2186
  %2190 = load i32, ptr %78, align 4, !tbaa !5
  %2191 = icmp sge i32 %2190, 0
  br i1 %2191, label %2192, label %2202

2192:                                             ; preds = %2189
  %2193 = load i32, ptr %78, align 4, !tbaa !5
  %2194 = sext i32 %2193 to i64
  %2195 = getelementptr inbounds [4 x ptr], ptr %76, i64 0, i64 %2194
  %2196 = load ptr, ptr %2195, align 8, !tbaa !9
  %2197 = invoke i32 @fclose(ptr noundef %2196)
          to label %2198 unwind label %1675

2198:                                             ; preds = %2192
  br label %2199

2199:                                             ; preds = %2198
  %2200 = load i32, ptr %78, align 4, !tbaa !5
  %2201 = add nsw i32 %2200, -1
  store i32 %2201, ptr %78, align 4, !tbaa !5
  br label %2189, !llvm.loop !58

2202:                                             ; preds = %2189
  %2203 = load i8, ptr %7, align 1, !tbaa !13
  %2204 = sext i8 %2203 to i32
  %2205 = icmp eq i32 %2204, 100
  br i1 %2205, label %2206, label %2224

2206:                                             ; preds = %2202
  call void @llvm.lifetime.start.p0(i64 4, ptr %97) #12
  store i32 0, ptr %97, align 4, !tbaa !5
  br label %2207

2207:                                             ; preds = %2220, %2206
  %2208 = load i32, ptr %97, align 4, !tbaa !5
  %2209 = load i32, ptr %9, align 4, !tbaa !5
  %2210 = add nsw i32 3, %2209
  %2211 = icmp slt i32 %2208, %2210
  br i1 %2211, label %2213, label %2212

2212:                                             ; preds = %2207
  store i32 99, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %97) #12
  br label %2223

2213:                                             ; preds = %2207
  %2214 = load i32, ptr %97, align 4, !tbaa !5
  %2215 = sext i32 %2214 to i64
  %2216 = getelementptr inbounds [4 x %struct.Job], ptr %65, i64 0, i64 %2215
  %2217 = getelementptr inbounds %struct.Job, ptr %2216, i32 0, i32 2
  %2218 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %2217) #12
  %2219 = call i32 @remove(ptr noundef %2218) #12
  br label %2220

2220:                                             ; preds = %2213
  %2221 = load i32, ptr %97, align 4, !tbaa !5
  %2222 = add nsw i32 %2221, 1
  store i32 %2222, ptr %97, align 4, !tbaa !5
  br label %2207, !llvm.loop !59

2223:                                             ; preds = %2212
  br label %2224

2224:                                             ; preds = %2223, %2202
  %2225 = load ptr, ptr %5, align 8, !tbaa !9
  %2226 = getelementptr inbounds ptr, ptr %2225, i64 3
  %2227 = load ptr, ptr %2226, align 8, !tbaa !9
  %2228 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.44, ptr noundef %2227)
          to label %2229 unwind label %1675

2229:                                             ; preds = %2224
  call void @llvm.lifetime.end.p0(i64 4096, ptr %89) #12
  call void @llvm.lifetime.end.p0(i64 4096, ptr %88) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %87) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %82) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %81) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %80) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %79) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %78) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %77) #12
  call void @llvm.lifetime.end.p0(i64 32, ptr %76) #12
  %2230 = getelementptr inbounds [4 x %struct.Job], ptr %65, i32 0, i32 0
  %2231 = getelementptr inbounds %struct.Job, ptr %2230, i64 4
  br label %2232

2232:                                             ; preds = %2232, %2229
  %2233 = phi ptr [ %2231, %2229 ], [ %2234, %2232 ]
  %2234 = getelementptr inbounds %struct.Job, ptr %2233, i64 -1
  call void @_ZN3JobD2Ev(ptr noundef nonnull align 8 dereferenceable(72) %2234) #12
  %2235 = icmp eq ptr %2234, %2230
  br i1 %2235, label %2236, label %2232

2236:                                             ; preds = %2232
  call void @llvm.lifetime.end.p0(i64 288, ptr %65) #12
  br label %2247

2237:                                             ; preds = %1950, %1675
  call void @llvm.lifetime.end.p0(i64 4096, ptr %89) #12
  call void @llvm.lifetime.end.p0(i64 4096, ptr %88) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %87) #12
  br label %2238

2238:                                             ; preds = %2237, %1633, %1619
  call void @llvm.lifetime.end.p0(i64 4, ptr %82) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %81) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %80) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %79) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %78) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %77) #12
  call void @llvm.lifetime.end.p0(i64 32, ptr %76) #12
  br label %2239

2239:                                             ; preds = %2238, %1562, %1553
  %2240 = getelementptr inbounds [4 x %struct.Job], ptr %65, i32 0, i32 0
  %2241 = getelementptr inbounds %struct.Job, ptr %2240, i64 4
  br label %2242

2242:                                             ; preds = %2242, %2239
  %2243 = phi ptr [ %2241, %2239 ], [ %2244, %2242 ]
  %2244 = getelementptr inbounds %struct.Job, ptr %2243, i64 -1
  call void @_ZN3JobD2Ev(ptr noundef nonnull align 8 dereferenceable(72) %2244) #12
  %2245 = icmp eq ptr %2244, %2240
  br i1 %2245, label %2246, label %2242

2246:                                             ; preds = %2242
  call void @llvm.lifetime.end.p0(i64 288, ptr %65) #12
  br label %2257

2247:                                             ; preds = %2236, %1447
  br label %2248

2248:                                             ; preds = %2247, %1440
  %2249 = call i64 @clock() #12
  %2250 = load i64, ptr %6, align 8, !tbaa !11
  %2251 = sub nsw i64 %2249, %2250
  %2252 = sitofp i64 %2251 to double
  %2253 = fdiv double %2252, 1.000000e+06
  %2254 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.45, double noundef %2253)
          to label %2255 unwind label %159

2255:                                             ; preds = %2248
  store i32 0, ptr %3, align 4
  store i32 1, ptr %17, align 4
  call void @_ZN7libzpaq5ArrayIjED2Ev(ptr noundef nonnull align 8 dereferenceable(20) %12) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr %12) #12
  call void @_ZN7libzpaq5ArrayIhED2Ev(ptr noundef nonnull align 8 dereferenceable(20) %11) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr %11) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %8) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %7) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %6) #12
  %2256 = load i32, ptr %3, align 4
  ret i32 %2256

2257:                                             ; preds = %2246, %1442, %256, %159
  call void @_ZN7libzpaq5ArrayIjED2Ev(ptr noundef nonnull align 8 dereferenceable(20) %12) #12
  br label %2258

2258:                                             ; preds = %2257, %155
  call void @llvm.lifetime.end.p0(i64 24, ptr %12) #12
  call void @_ZN7libzpaq5ArrayIhED2Ev(ptr noundef nonnull align 8 dereferenceable(20) %11) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr %11) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %8) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %7) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %6) #12
  br label %2259

2259:                                             ; preds = %2258
  %2260 = load ptr, ptr %13, align 8
  %2261 = load i32, ptr %14, align 4
  %2262 = insertvalue { ptr, i32 } poison, ptr %2260, 0
  %2263 = insertvalue { ptr, i32 } %2262, i32 %2261, 1
  resume { ptr, i32 } %2263
}

; Function Attrs: nounwind
declare i64 @clock() #5

; Function Attrs: inlinehint mustprogress nounwind willreturn memory(read) uwtable
declare i32 @atoi(ptr noundef nonnull) #7

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7libzpaq5ArrayIhEC2Emi(ptr noundef nonnull align 8 dereferenceable(20), i64 noundef, i32 noundef) unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7libzpaq5ArrayIjEC2Emi(ptr noundef nonnull align 8 dereferenceable(20), i64 noundef, i32 noundef) unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7libzpaq5ArrayIjE6resizeEmi(ptr noundef nonnull align 8 dereferenceable(20), i64 noundef, i32 noundef) #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZNK7libzpaq5ArrayIhE4sizeEv(ptr noundef nonnull align 8 dereferenceable(20)) #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZN7libzpaq5ArrayIjEixEm(ptr noundef nonnull align 8 dereferenceable(20), i64 noundef) #0 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_S5_(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(32), i8 noundef signext) #8

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(32), ptr noundef) #8

; Function Attrs: mustprogress nounwind uwtable
declare void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef, ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #0 align 2

declare i32 @getc(ptr noundef) #4

declare i32 @putc(i32 noundef, ptr noundef) #4

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

; Function Attrs: nounwind willreturn memory(read)
declare i32 @isdigit(i32 noundef) #10

; Function Attrs: nounwind
declare i32 @pthread_attr_init(ptr noundef) #5

; Function Attrs: nounwind
declare i32 @pthread_attr_setdetachstate(ptr noundef, i32 noundef) #5

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN3JobC2Ev(ptr noundef nonnull align 8 dereferenceable(72)) unnamed_addr #11 align 2

; Function Attrs: mustprogress nounwind uwtable
declare noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(32)) #0 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EERKS8_PKS5_(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(32), ptr noundef) #8

; Function Attrs: nounwind
declare i32 @pthread_create(ptr noundef, ptr noundef, ptr noundef, ptr noundef) #5

declare i32 @pthread_join(i64 noundef, ptr noundef) #4

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN3JobD2Ev(ptr noundef nonnull align 8 dereferenceable(72)) unnamed_addr #11 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN7libzpaq5ArrayIjED2Ev(ptr noundef nonnull align 8 dereferenceable(20)) unnamed_addr #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN7libzpaq5ArrayIhED2Ev(ptr noundef nonnull align 8 dereferenceable(20)) unnamed_addr #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #0 align 2

attributes #0 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { noreturn nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #4 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { mustprogress norecurse 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 #7 = { inlinehint mustprogress nounwind willreturn memory(read) 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 #8 = { inlinehint mustprogress 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 #9 = { nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #10 = { nounwind willreturn memory(read) "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 #11 = { inlinehint mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #12 = { nounwind }
attributes #13 = { noreturn nounwind }
attributes #14 = { nounwind willreturn memory(read) }

!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 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"any pointer", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"long", !7, i64 0}
!13 = !{!7, !7, i64 0}
!14 = !{!15, !15, i64 0}
!15 = !{!"long long", !7, i64 0}
!16 = distinct !{!16, !17}
!17 = !{!"llvm.loop.mustprogress"}
!18 = distinct !{!18, !17}
!19 = distinct !{!19, !17}
!20 = distinct !{!20, !17}
!21 = distinct !{!21, !17}
!22 = !{!23, !23, i64 0}
!23 = !{!"bool", !7, i64 0}
!24 = distinct !{!24, !17}
!25 = distinct !{!25, !17}
!26 = distinct !{!26, !17}
!27 = distinct !{!27, !17}
!28 = distinct !{!28, !17}
!29 = distinct !{!29, !17}
!30 = distinct !{!30, !17}
!31 = !{i8 0, i8 2}
!32 = !{}
!33 = distinct !{!33, !17}
!34 = distinct !{!34, !17}
!35 = distinct !{!35, !17}
!36 = distinct !{!36, !17}
!37 = distinct !{!37, !17}
!38 = distinct !{!38, !17}
!39 = !{!40, !6, i64 0}
!40 = !{!"_ZTS3Job", !6, i64 0, !41, i64 8, !41, i64 40}
!41 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !42, i64 0, !12, i64 8, !7, i64 16}
!42 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !10, i64 0}
!43 = distinct !{!43, !17}
!44 = distinct !{!44, !17}
!45 = distinct !{!45, !17}
!46 = distinct !{!46, !17}
!47 = distinct !{!47, !17}
!48 = distinct !{!48, !17}
!49 = distinct !{!49, !17}
!50 = distinct !{!50, !17}
!51 = distinct !{!51, !17}
!52 = distinct !{!52, !17}
!53 = distinct !{!53, !17}
!54 = distinct !{!54, !17}
!55 = distinct !{!55, !17}
!56 = distinct !{!56, !17}
!57 = distinct !{!57, !17}
!58 = distinct !{!58, !17}
!59 = distinct !{!59, !17}


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

%"class.libzpaq::Array" = type <{ ptr, i64, i32, [4 x i8] }>
%"class.libzpaq::Array.0" = type <{ ptr, i64, i32, [4 x i8] }>
%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"class.std::allocator" = type { i8 }
%union.pthread_attr_t = type { i64, [48 x i8] }
%struct.Job = type { i32, %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string" }

@.str.2 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [557 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [35 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.33 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.34 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.35 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.36 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.37 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.38 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.39 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.40 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.41 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.42 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.43 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.44 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.45 = external hidden unnamed_addr constant [15 x i8], align 1

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN7libzpaq5errorEPKc(ptr noundef) local_unnamed_addr #0

; Function Attrs: noreturn nounwind
declare void @exit(i32 noundef) local_unnamed_addr #1

; Function Attrs: mustprogress uwtable
declare dso_local noundef ptr @_Z8compressPv(ptr noundef) #2

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

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

; Function Attrs: mustprogress nounwind uwtable
declare noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #0 align 2

; Function Attrs: nofree nounwind
declare noalias noundef ptr @fopen(ptr nocapture noundef readonly, ptr nocapture noundef readonly) local_unnamed_addr #4

declare i32 @__gxx_personality_v0(...)

; Function Attrs: nofree nounwind
declare void @perror(ptr nocapture noundef readonly) local_unnamed_addr #4

; Function Attrs: nofree nounwind
declare noundef i32 @fclose(ptr nocapture noundef) local_unnamed_addr #4

; Function Attrs: nofree nounwind
declare noundef i32 @remove(ptr nocapture noundef readonly) local_unnamed_addr #4

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef ptr @_Z10decompressPv(ptr noundef) #2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_Z4hashy(i64 noundef) local_unnamed_addr #0

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_Z6rmatchRN7libzpaq5ArrayIhEEjPhii(ptr noundef nonnull align 8 dereferenceable(20), i32 noundef, ptr noundef, i32 noundef, i32 noundef) local_unnamed_addr #2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZN7libzpaq5ArrayIhEixEm(ptr noundef nonnull align 8 dereferenceable(20), i64 noundef) local_unnamed_addr #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z7readrefRN7libzpaq5ArrayIhEEPKc(ptr noundef nonnull align 8 dereferenceable(20), ptr noundef) local_unnamed_addr #2

; Function Attrs: nofree nounwind
declare void @rewind(ptr nocapture noundef) local_unnamed_addr #4

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7libzpaq5ArrayIhE6resizeEmi(ptr noundef nonnull align 8 dereferenceable(20), i64 noundef, i32 noundef) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress norecurse uwtable
define dso_local noundef i32 @main(i32 noundef %0, ptr nocapture noundef readonly %1) local_unnamed_addr #5 personality ptr @__gxx_personality_v0 {
  %3 = alloca %"class.libzpaq::Array", align 8
  %4 = alloca %"class.libzpaq::Array.0", align 8
  %5 = alloca [4 x ptr], align 16
  %6 = alloca %"class.std::__cxx11::basic_string", align 8
  %7 = alloca %"class.std::__cxx11::basic_string", align 8
  %8 = alloca %"class.std::__cxx11::basic_string", align 8
  %9 = alloca %"class.std::allocator", align 1
  %10 = alloca [4096 x i8], align 16
  %11 = alloca [4096 x i8], align 16
  %12 = alloca [4099 x i32], align 16
  %13 = alloca [4 x i64], align 16
  %14 = alloca %union.pthread_attr_t, align 8
  %15 = alloca [4 x %struct.Job], align 16
  %16 = alloca %"class.std::__cxx11::basic_string", align 8
  %17 = alloca %"class.std::__cxx11::basic_string", align 8
  %18 = alloca %"class.std::__cxx11::basic_string", align 8
  %19 = alloca %"class.std::allocator", align 1
  %20 = alloca %"class.std::__cxx11::basic_string", align 8
  %21 = alloca ptr, align 8
  %22 = alloca [4 x %struct.Job], align 16
  %23 = alloca [4 x i64], align 16
  %24 = alloca %union.pthread_attr_t, align 8
  %25 = alloca %"class.std::__cxx11::basic_string", align 8
  %26 = alloca %"class.std::__cxx11::basic_string", align 8
  %27 = alloca %"class.std::__cxx11::basic_string", align 8
  %28 = alloca %"class.std::allocator", align 1
  %29 = alloca %"class.std::__cxx11::basic_string", align 8
  %30 = alloca ptr, align 8
  %31 = alloca [4 x ptr], align 16
  %32 = alloca %"class.std::__cxx11::basic_string", align 8
  %33 = alloca %"class.std::__cxx11::basic_string", align 8
  %34 = alloca %"class.std::__cxx11::basic_string", align 8
  %35 = alloca %"class.std::allocator", align 1
  %36 = alloca [4096 x i8], align 16
  %37 = alloca [4096 x i8], align 16
  %38 = tail call i64 @clock() #13
  %39 = icmp slt i32 %0, 4
  br i1 %39, label %40, label %42

40:                                               ; preds = %2
  %41 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.10, ptr noundef nonnull @.str.11)
  tail call void @exit(i32 noundef 1) #14
  unreachable

42:                                               ; preds = %2
  %43 = getelementptr inbounds i8, ptr %1, i64 8
  %44 = load ptr, ptr %43, align 8, !tbaa !5
  %45 = load i8, ptr %44, align 1, !tbaa !9
  %46 = getelementptr inbounds i8, ptr %44, i64 1
  %47 = tail call i32 @atoi(ptr nocapture noundef %46) #15
  %spec.store.select = tail call i32 @llvm.smax.i32(i32 %47, i32 1)
  %.not779 = icmp eq i32 %0, 4
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %3) #13
  call void @_ZN7libzpaq5ArrayIhEC2Emi(ptr noundef nonnull align 8 dereferenceable(20) %3, i64 noundef 0, i32 noundef 0)
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %4) #13
  invoke void @_ZN7libzpaq5ArrayIjEC2Emi(ptr noundef nonnull align 8 dereferenceable(20) %4, i64 noundef 0, i32 noundef 0)
          to label %48 unwind label %112

48:                                               ; preds = %42
  %49 = icmp eq i8 %45, 99
  switch i8 %45, label %880 [
    i8 101, label %50
    i8 99, label %50
  ]

50:                                               ; preds = %48, %48
  br i1 %.not779, label %157, label %51

51:                                               ; preds = %50
  %52 = getelementptr inbounds i8, ptr %1, i64 32
  %53 = load ptr, ptr %52, align 8, !tbaa !5
  invoke void @_Z7readrefRN7libzpaq5ArrayIhEEPKc(ptr noundef nonnull align 8 dereferenceable(20) %3, ptr noundef %53)
          to label %54 unwind label %114

54:                                               ; preds = %51
  switch i8 %45, label %157 [
    i8 101, label %55
    i8 99, label %55
  ]

55:                                               ; preds = %54, %54
  invoke void @_ZN7libzpaq5ArrayIjE6resizeEmi(ptr noundef nonnull align 8 dereferenceable(20) %4, i64 noundef 134217736, i32 noundef 0)
          to label %.preheader873 unwind label %114

.preheader873:                                    ; preds = %55
  %56 = call noundef i64 @_ZNK7libzpaq5ArrayIhE4sizeEv(ptr noundef nonnull align 8 dereferenceable(20) %3)
  %57 = trunc i64 %56 to i32
  %.not758913 = icmp slt i32 %57, 8200
  br i1 %.not758913, label %._crit_edge, label %.preheader872

.preheader872:                                    ; preds = %.preheader873, %152
  %indvars.iv = phi i64 [ %indvars.iv.next, %152 ], [ 4096, %.preheader873 ]
  %.0627915 = phi i32 [ %.1628, %152 ], [ 0, %.preheader873 ]
  %58 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZN7libzpaq5ArrayIhEixEm(ptr noundef nonnull align 8 dereferenceable(20) %3, i64 noundef %indvars.iv)
  %59 = load i8, ptr %58, align 1, !tbaa !9
  %60 = zext i8 %59 to i64
  %61 = or disjoint i64 %indvars.iv, 1
  %62 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZN7libzpaq5ArrayIhEixEm(ptr noundef nonnull align 8 dereferenceable(20) %3, i64 noundef %61)
  %63 = load i8, ptr %62, align 1, !tbaa !9
  %64 = zext i8 %63 to i64
  %65 = shl nuw nsw i64 %60, 16
  %66 = shl nuw nsw i64 %64, 8
  %67 = or disjoint i64 %65, %66
  %68 = or disjoint i64 %indvars.iv, 2
  %69 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZN7libzpaq5ArrayIhEixEm(ptr noundef nonnull align 8 dereferenceable(20) %3, i64 noundef %68)
  %70 = load i8, ptr %69, align 1, !tbaa !9
  %71 = zext i8 %70 to i64
  %72 = or disjoint i64 %67, %71
  %73 = or disjoint i64 %indvars.iv, 3
  %74 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZN7libzpaq5ArrayIhEixEm(ptr noundef nonnull align 8 dereferenceable(20) %3, i64 noundef %73)
  %75 = load i8, ptr %74, align 1, !tbaa !9
  %76 = zext i8 %75 to i64
  %77 = shl nuw nsw i64 %72, 16
  %78 = shl nuw nsw i64 %76, 8
  %79 = or disjoint i64 %77, %78
  %80 = or disjoint i64 %indvars.iv, 4
  %81 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZN7libzpaq5ArrayIhEixEm(ptr noundef nonnull align 8 dereferenceable(20) %3, i64 noundef %80)
  %82 = load i8, ptr %81, align 1, !tbaa !9
  %83 = zext i8 %82 to i64
  %84 = or disjoint i64 %79, %83
  %85 = or disjoint i64 %indvars.iv, 5
  %86 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZN7libzpaq5ArrayIhEixEm(ptr noundef nonnull align 8 dereferenceable(20) %3, i64 noundef %85)
  %87 = load i8, ptr %86, align 1, !tbaa !9
  %88 = zext i8 %87 to i64
  %89 = shl nuw nsw i64 %84, 16
  %90 = shl nuw nsw i64 %88, 8
  %91 = or disjoint i64 %89, %90
  %92 = or disjoint i64 %indvars.iv, 6
  %93 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZN7libzpaq5ArrayIhEixEm(ptr noundef nonnull align 8 dereferenceable(20) %3, i64 noundef %92)
  %94 = load i8, ptr %93, align 1, !tbaa !9
  %95 = zext i8 %94 to i64
  %96 = or disjoint i64 %91, %95
  %97 = shl nuw i64 %96, 8
  %98 = or disjoint i64 %indvars.iv, 7
  %99 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZN7libzpaq5ArrayIhEixEm(ptr noundef nonnull align 8 dereferenceable(20) %3, i64 noundef %98)
  %100 = load i8, ptr %99, align 1, !tbaa !9
  %101 = zext i8 %100 to i64
  %102 = or disjoint i64 %97, %101
  %103 = call noundef i32 @_Z4hashy(i64 noundef %102)
  %104 = and i32 %103, 134217727
  %105 = zext nneg i32 %104 to i64
  %106 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN7libzpaq5ArrayIjEixEm(ptr noundef nonnull align 8 dereferenceable(20) %4, i64 noundef %105)
  %107 = load i32, ptr %106, align 4, !tbaa !10
  %.not802 = icmp eq i32 %107, 0
  br i1 %.not802, label %.critedge.thread, label %116

._crit_edge:                                      ; preds = %152, %.preheader873
  %.0627.lcssa = phi i32 [ 0, %.preheader873 ], [ %.1628, %152 ]
  %108 = load ptr, ptr %52, align 8, !tbaa !5
  %109 = call noundef i64 @_ZNK7libzpaq5ArrayIhE4sizeEv(ptr noundef nonnull align 8 dereferenceable(20) %3)
  %110 = lshr i64 %109, 3
  %111 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.12, ptr noundef %108, i32 noundef %.0627.lcssa, i64 noundef %110)
  br label %157

112:                                              ; preds = %42
  %113 = landingpad { ptr, i32 }
          cleanup
  br label %1218

114:                                              ; preds = %55, %51
  %115 = landingpad { ptr, i32 }
          cleanup
  br label %1217

116:                                              ; preds = %.preheader872
  %117 = add nuw nsw i64 %105, 1
  %118 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN7libzpaq5ArrayIjEixEm(ptr noundef nonnull align 8 dereferenceable(20) %4, i64 noundef %117)
  %119 = load i32, ptr %118, align 4, !tbaa !10
  %.not802.1 = icmp eq i32 %119, 0
  br i1 %.not802.1, label %.critedge.thread, label %120

120:                                              ; preds = %116
  %121 = add nuw nsw i64 %105, 2
  %122 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN7libzpaq5ArrayIjEixEm(ptr noundef nonnull align 8 dereferenceable(20) %4, i64 noundef %121)
  %123 = load i32, ptr %122, align 4, !tbaa !10
  %.not802.2 = icmp eq i32 %123, 0
  br i1 %.not802.2, label %.critedge.thread, label %124

124:                                              ; preds = %120
  %125 = add nuw nsw i64 %105, 3
  %126 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN7libzpaq5ArrayIjEixEm(ptr noundef nonnull align 8 dereferenceable(20) %4, i64 noundef %125)
  %127 = load i32, ptr %126, align 4, !tbaa !10
  %.not802.3 = icmp eq i32 %127, 0
  br i1 %.not802.3, label %.critedge.thread, label %128

128:                                              ; preds = %124
  %129 = add nuw nsw i64 %105, 4
  %130 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN7libzpaq5ArrayIjEixEm(ptr noundef nonnull align 8 dereferenceable(20) %4, i64 noundef %129)
  %131 = load i32, ptr %130, align 4, !tbaa !10
  %.not802.4 = icmp eq i32 %131, 0
  br i1 %.not802.4, label %.critedge.thread, label %132

132:                                              ; preds = %128
  %133 = add nuw nsw i64 %105, 5
  %134 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN7libzpaq5ArrayIjEixEm(ptr noundef nonnull align 8 dereferenceable(20) %4, i64 noundef %133)
  %135 = load i32, ptr %134, align 4, !tbaa !10
  %.not802.5 = icmp eq i32 %135, 0
  br i1 %.not802.5, label %.critedge.thread, label %136

136:                                              ; preds = %132
  %137 = add nuw nsw i64 %105, 6
  %138 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN7libzpaq5ArrayIjEixEm(ptr noundef nonnull align 8 dereferenceable(20) %4, i64 noundef %137)
  %139 = load i32, ptr %138, align 4, !tbaa !10
  %.not802.6 = icmp eq i32 %139, 0
  br i1 %.not802.6, label %.critedge.thread, label %140

140:                                              ; preds = %136
  %141 = add nuw nsw i64 %105, 7
  %142 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN7libzpaq5ArrayIjEixEm(ptr noundef nonnull align 8 dereferenceable(20) %4, i64 noundef %141)
  %143 = load i32, ptr %142, align 4, !tbaa !10
  %.not802.7 = icmp eq i32 %143, 0
  br i1 %.not802.7, label %.critedge.thread, label %.critedge

.critedge:                                        ; preds = %140
  %144 = add nsw i32 %.0627915, 1
  br label %152

.critedge.thread:                                 ; preds = %.preheader872, %116, %120, %124, %128, %132, %136, %140
  %.0709912.lcssa.wide = phi i32 [ 0, %.preheader872 ], [ 1, %116 ], [ 2, %120 ], [ 3, %124 ], [ 4, %128 ], [ 5, %132 ], [ 6, %136 ], [ 7, %140 ]
  %145 = and i32 %103, -134217728
  %146 = trunc nuw nsw i64 %indvars.iv to i32
  %147 = lshr exact i32 %146, 3
  %148 = add i32 %145, %147
  %149 = add nuw nsw i32 %.0709912.lcssa.wide, %104
  %150 = zext nneg i32 %149 to i64
  %151 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN7libzpaq5ArrayIjEixEm(ptr noundef nonnull align 8 dereferenceable(20) %4, i64 noundef %150)
  store i32 %148, ptr %151, align 4, !tbaa !10
  br label %152

152:                                              ; preds = %.critedge.thread, %.critedge
  %.1628 = phi i32 [ %144, %.critedge ], [ %.0627915, %.critedge.thread ]
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 8
  %153 = call noundef i64 @_ZNK7libzpaq5ArrayIhE4sizeEv(ptr noundef nonnull align 8 dereferenceable(20) %3)
  %154 = trunc i64 %153 to i32
  %155 = add nsw i32 %154, -4104
  %156 = trunc nuw i64 %indvars.iv.next to i32
  %.not758 = icmp slt i32 %155, %156
  br i1 %.not758, label %._crit_edge, label %.preheader872, !llvm.loop !12

157:                                              ; preds = %54, %._crit_edge, %50
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %5) #13
  %158 = getelementptr inbounds i8, ptr %1, i64 16
  %159 = load ptr, ptr %158, align 8, !tbaa !5
  %160 = call noalias ptr @fopen(ptr noundef %159, ptr noundef nonnull @.str.2)
  %.not759 = icmp eq ptr %160, null
  br i1 %.not759, label %162, label %.preheader871

.preheader871:                                    ; preds = %157
  %wide.trip.count = select i1 %.not779, i64 3, i64 4
  %161 = getelementptr inbounds i8, ptr %1, i64 24
  br label %165

162:                                              ; preds = %157
  %163 = load ptr, ptr %158, align 8, !tbaa !5
  call void @perror(ptr noundef %163) #16
  call void @exit(i32 noundef 1) #14
  unreachable

.preheader870:                                    ; preds = %185
  %164 = call i32 @getc(ptr noundef nonnull %160)
  %.not1016 = icmp eq i32 %164, -1
  br i1 %.not1016, label %._crit_edge920.thread, label %.lr.ph

165:                                              ; preds = %.preheader871, %185
  %indvars.iv1038 = phi i64 [ 0, %.preheader871 ], [ %indvars.iv.next1039, %185 ]
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %6) #13
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %7) #13
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %8) #13
  %166 = load ptr, ptr %161, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %9) #13
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %9) #13
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %8, ptr noundef %166, ptr noundef nonnull align 1 dereferenceable(1) %9)
          to label %167 unwind label %177

167:                                              ; preds = %165
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %7, ptr noundef nonnull align 8 dereferenceable(32) %8, ptr noundef nonnull @.str.13)
          to label %168 unwind label %179

168:                                              ; preds = %167
  %169 = getelementptr inbounds [5 x i8], ptr @.str.14, i64 0, i64 %indvars.iv1038
  %170 = load i8, ptr %169, align 1, !tbaa !9
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_S5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %6, ptr noundef nonnull align 8 dereferenceable(32) %7, i8 noundef signext %170)
          to label %171 unwind label %181

171:                                              ; preds = %168
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %7) #13
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %8) #13
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %9) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %9) #13
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %8) #13
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %7) #13
  %172 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %6) #13
  %173 = call noalias ptr @fopen(ptr noundef %172, ptr noundef nonnull @.str.3)
  %174 = getelementptr inbounds [4 x ptr], ptr %5, i64 0, i64 %indvars.iv1038
  store ptr %173, ptr %174, align 8, !tbaa !5
  %.not801 = icmp eq ptr %173, null
  br i1 %.not801, label %175, label %185

175:                                              ; preds = %171
  %176 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %6) #13
  call void @perror(ptr noundef %176) #16
  call void @exit(i32 noundef 1) #14
  unreachable

177:                                              ; preds = %165
  %178 = landingpad { ptr, i32 }
          cleanup
  br label %184

179:                                              ; preds = %167
  %180 = landingpad { ptr, i32 }
          cleanup
  br label %183

181:                                              ; preds = %168
  %182 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %7) #13
  br label %183

183:                                              ; preds = %181, %179
  %.pn795 = phi { ptr, i32 } [ %182, %181 ], [ %180, %179 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %8) #13
  br label %184

184:                                              ; preds = %183, %177
  %.pn795.pn = phi { ptr, i32 } [ %.pn795, %183 ], [ %178, %177 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %9) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %9) #13
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %8) #13
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %7) #13
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %6) #13
  br label %879

185:                                              ; preds = %171
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %6) #13
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %6) #13
  %indvars.iv.next1039 = add nuw nsw i64 %indvars.iv1038, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next1039, %wide.trip.count
  br i1 %exitcond.not, label %.preheader870, label %165, !llvm.loop !14

.lr.ph:                                           ; preds = %.preheader870, %.lr.ph
  %186 = phi i32 [ %192, %.lr.ph ], [ %164, %.preheader870 ]
  %.0688919 = phi i32 [ %.1689, %.lr.ph ], [ 0, %.preheader870 ]
  %.1698918 = phi i32 [ %191, %.lr.ph ], [ 0, %.preheader870 ]
  %187 = icmp eq i32 %186, 10
  %188 = icmp ne i32 %.0688919, 0
  %or.cond7 = select i1 %187, i1 %188, i1 false
  %189 = xor i32 %.0688919, -1
  %190 = add i32 %.1698918, %189
  %.1708 = select i1 %or.cond7, i32 %190, i32 0
  %spec.select = select i1 %188, i32 %.0688919, i32 %.1698918
  %.1689 = select i1 %187, i32 %spec.select, i32 %.0688919
  %191 = add nuw nsw i32 %.1698918, 1
  %192 = call i32 @getc(ptr noundef nonnull %160)
  %193 = icmp ne i32 %192, -1
  %.not760 = icmp eq i32 %.1708, 0
  %194 = select i1 %193, i1 %.not760, i1 false
  br i1 %194, label %.lr.ph, label %._crit_edge920, !llvm.loop !15

._crit_edge920:                                   ; preds = %.lr.ph
  %195 = add i32 %.1708, -4096
  %or.cond9 = icmp ult i32 %195, -4095
  br i1 %or.cond9, label %._crit_edge920.thread, label %196

._crit_edge920.thread:                            ; preds = %.preheader870, %._crit_edge920
  %.0707.lcssa1148 = phi i32 [ %.1708, %._crit_edge920 ], [ 0, %.preheader870 ]
  call void @_ZN7libzpaq5errorEPKc(ptr noundef nonnull @.str.15)
  br label %196

196:                                              ; preds = %._crit_edge920, %._crit_edge920.thread
  %.0707.lcssa1147 = phi i32 [ %.1708, %._crit_edge920 ], [ %.0707.lcssa1148, %._crit_edge920.thread ]
  %197 = load ptr, ptr %158, align 8, !tbaa !5
  %198 = load ptr, ptr %161, align 8, !tbaa !5
  %199 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.16, ptr noundef %197, ptr noundef %198, i32 noundef %.0707.lcssa1147)
  call void @rewind(ptr noundef nonnull %160)
  %200 = ashr i32 %.0707.lcssa1147, 8
  %201 = load ptr, ptr %5, align 16, !tbaa !5
  %202 = call i32 @putc(i32 noundef %200, ptr noundef %201)
  %203 = and i32 %.0707.lcssa1147, 255
  %204 = call i32 @putc(i32 noundef %203, ptr noundef %201)
  call void @llvm.lifetime.start.p0(i64 4096, ptr nonnull %10) #13
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(4096) %10, i8 0, i64 4096, i1 false)
  call void @llvm.lifetime.start.p0(i64 4096, ptr nonnull %11) #13
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(4096) %11, i8 0, i64 4096, i1 false)
  call void @llvm.lifetime.start.p0(i64 16396, ptr nonnull %12) #13
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(16396) %12, i8 0, i64 16396, i1 false)
  %205 = add nsw i32 %.0707.lcssa1147, 1
  %206 = sext i32 %205 to i64
  %207 = getelementptr inbounds [4099 x i32], ptr %12, i64 0, i64 %206
  %208 = add i32 %.0707.lcssa1147, 2
  %209 = sext i32 %208 to i64
  %210 = getelementptr inbounds [4099 x i32], ptr %12, i64 0, i64 %209
  %211 = getelementptr inbounds i8, ptr %5, i64 24
  %212 = load ptr, ptr %211, align 8
  %213 = getelementptr inbounds i8, ptr %5, i64 8
  %214 = load ptr, ptr %213, align 8
  %215 = icmp sgt i32 %47, 1
  %216 = getelementptr inbounds i8, ptr %5, i64 16
  %217 = load ptr, ptr %216, align 16
  br label %218

218:                                              ; preds = %.backedge, %196
  %.0667 = phi i32 [ 0, %196 ], [ %.1668.lcssa, %.backedge ]
  %.0665 = phi i32 [ 0, %196 ], [ %.16661163, %.backedge ]
  %.0663 = phi i32 [ 0, %196 ], [ %.16641165, %.backedge ]
  %.0660 = phi i1 [ false, %196 ], [ %.16611167, %.backedge ]
  br label %219

219:                                              ; preds = %252, %218
  %indvars.iv1047 = phi i32 [ %indvars.iv.next1048, %252 ], [ 0, %218 ]
  %indvars.iv1041 = phi i64 [ %indvars.iv.next1042, %252 ], [ 0, %218 ]
  %.2690 = phi i32 [ %.46921152, %252 ], [ 0, %218 ]
  %.0682 = phi i32 [ %.26841154, %252 ], [ 0, %218 ]
  %.0672 = phi i32 [ %.1673, %252 ], [ 0, %218 ]
  %220 = call i32 @getc(ptr noundef nonnull %160)
  switch i32 %220, label %221 [
    i32 -1, label %254
    i32 10, label %256
  ]

221:                                              ; preds = %219
  %222 = icmp ugt i64 %indvars.iv1041, 4095
  br i1 %222, label %223, label %226

223:                                              ; preds = %221
  call void @_ZN7libzpaq5errorEPKc(ptr noundef nonnull @.str.17)
  br label %226

224:                                              ; preds = %816, %814
  %225 = landingpad { ptr, i32 }
          cleanup
  br label %878

226:                                              ; preds = %223, %221
  %227 = getelementptr inbounds [4096 x i8], ptr %10, i64 0, i64 %indvars.iv1041
  %228 = load i8, ptr %227, align 1, !tbaa !9
  %229 = zext i8 %228 to i32
  %.not791 = icmp ne i32 %220, %229
  %isdigittmp = add i32 %220, -48
  %isdigit = icmp ult i32 %isdigittmp, 10
  %or.cond = and i1 %isdigit, %.not791
  br i1 %or.cond, label %230, label %245

230:                                              ; preds = %226
  %isdigittmp792 = add nsw i32 %229, -48
  %isdigit793 = icmp ult i32 %isdigittmp792, 10
  %231 = icmp slt i32 %.2690, 254
  %or.cond11 = select i1 %isdigit793, i1 %231, i1 false
  %232 = icmp ult i64 %indvars.iv1041, 254
  %or.cond13 = select i1 %or.cond11, i1 %232, i1 false
  %233 = zext i32 %.0672 to i64
  %234 = icmp eq i64 %indvars.iv1041, %233
  %or.cond803 = select i1 %or.cond13, i1 %234, i1 false
  br i1 %or.cond803, label %235, label %245

235:                                              ; preds = %230
  %.not794 = icmp eq i32 %.2690, 0
  %236 = zext i32 %.2690 to i64
  %237 = icmp eq i64 %indvars.iv1041, %236
  %or.cond804 = select i1 %.not794, i1 true, i1 %237
  br i1 %or.cond804, label %238, label %245

238:                                              ; preds = %235
  %239 = mul nuw nsw i32 %.0682, 10
  %240 = add nsw i32 %220, %239
  %241 = sub i32 %240, %229
  %242 = add i32 %241, -1
  %or.cond15 = icmp ult i32 %242, 253
  br i1 %or.cond15, label %.thread, label %245

.thread:                                          ; preds = %238
  %243 = trunc nuw i64 %indvars.iv1041 to i32
  %244 = add nuw nsw i32 %243, 1
  br label %247

245:                                              ; preds = %238, %235, %230, %226
  %246 = icmp eq i32 %220, %229
  br i1 %246, label %247, label %252

247:                                              ; preds = %.thread, %245
  %.26841155 = phi i32 [ %241, %.thread ], [ %.0682, %245 ]
  %.46921153 = phi i32 [ %244, %.thread ], [ %.2690, %245 ]
  %248 = zext i32 %.0672 to i64
  %249 = icmp eq i64 %indvars.iv1041, %248
  %250 = icmp slt i32 %.0672, 254
  %or.cond17 = and i1 %249, %250
  %251 = zext i1 %or.cond17 to i32
  %spec.select805 = add nsw i32 %.0672, %251
  br label %252

252:                                              ; preds = %247, %245
  %.26841154 = phi i32 [ %.0682, %245 ], [ %.26841155, %247 ]
  %.46921152 = phi i32 [ %.2690, %245 ], [ %.46921153, %247 ]
  %.1673 = phi i32 [ %.0672, %245 ], [ %spec.select805, %247 ]
  %253 = trunc i32 %220 to i8
  store i8 %253, ptr %227, align 1, !tbaa !9
  %indvars.iv.next1042 = add nuw nsw i64 %indvars.iv1041, 1
  %indvars.iv.next1048 = add nuw i32 %indvars.iv1047, 1
  br label %219, !llvm.loop !16

254:                                              ; preds = %219
  %.not778 = icmp eq i64 %indvars.iv1041, 0
  br i1 %.not778, label %807, label %255

255:                                              ; preds = %254
  call void @_ZN7libzpaq5errorEPKc(ptr noundef nonnull @.str.18)
  br label %807

256:                                              ; preds = %219
  %257 = trunc nuw nsw i64 %indvars.iv1041 to i32
  %258 = call i32 @llvm.umax.i32(i32 %.2690, i32 1)
  %259 = call i32 @putc(i32 noundef %258, ptr noundef %201)
  %260 = add nuw nsw i32 %.0682, 1
  %261 = call i32 @putc(i32 noundef %260, ptr noundef %201)
  %262 = add nsw i32 %.0672, 1
  %263 = call i32 @putc(i32 noundef %262, ptr noundef %201)
  %264 = icmp slt i32 %.0672, %257
  br i1 %264, label %.lr.ph924.preheader, label %._crit_edge925

.lr.ph924.preheader:                              ; preds = %256
  %265 = sext i32 %.0672 to i64
  br label %.lr.ph924

.lr.ph924:                                        ; preds = %.lr.ph924.preheader, %.lr.ph924
  %indvars.iv1044 = phi i64 [ %265, %.lr.ph924.preheader ], [ %indvars.iv.next1045, %.lr.ph924 ]
  %266 = getelementptr inbounds [4096 x i8], ptr %10, i64 0, i64 %indvars.iv1044
  %267 = load i8, ptr %266, align 1, !tbaa !9
  %268 = zext i8 %267 to i32
  %269 = call i32 @putc(i32 noundef %268, ptr noundef %201)
  %indvars.iv.next1045 = add nsw i64 %indvars.iv1044, 1
  %lftr.wideiv = trunc i64 %indvars.iv.next1045 to i32
  %exitcond1050.not = icmp eq i32 %indvars.iv1047, %lftr.wideiv
  br i1 %exitcond1050.not, label %._crit_edge925, label %.lr.ph924, !llvm.loop !17

._crit_edge925:                                   ; preds = %.lr.ph924, %256
  %270 = call i32 @putc(i32 noundef 0, ptr noundef %201)
  br label %271

271:                                              ; preds = %292, %._crit_edge925
  %.3700 = phi i32 [ 0, %._crit_edge925 ], [ %293, %292 ]
  %.2674 = phi i32 [ 0, %._crit_edge925 ], [ %.3675, %292 ]
  %272 = call i32 @getc(ptr noundef nonnull %160)
  switch i32 %272, label %273 [
    i32 -1, label %294
    i32 10, label %294
    i32 78, label %292
  ]

273:                                              ; preds = %271
  %274 = icmp eq i32 %272, 65
  %275 = zext i1 %274 to i32
  %276 = icmp eq i32 %272, 67
  %277 = select i1 %276, i32 2, i32 0
  %278 = or disjoint i32 %277, %275
  %279 = icmp eq i32 %272, 71
  %280 = select i1 %279, i32 3, i32 0
  %281 = add nuw nsw i32 %278, %280
  %282 = icmp eq i32 %272, 84
  %283 = select i1 %282, i32 4, i32 0
  %284 = add nuw nsw i32 %281, %283
  %.not777 = icmp eq i32 %284, 0
  br i1 %.not777, label %285, label %286

285:                                              ; preds = %273
  call void @_ZN7libzpaq5errorEPKc(ptr noundef nonnull @.str.20)
  br label %286

286:                                              ; preds = %285, %273
  %287 = trunc nuw nsw i32 %284 to i8
  %288 = add nsw i8 %287, -1
  %289 = add nsw i32 %.2674, 1
  %290 = sext i32 %.2674 to i64
  %291 = getelementptr inbounds [4096 x i8], ptr %11, i64 0, i64 %290
  store i8 %288, ptr %291, align 1, !tbaa !9
  br label %292

292:                                              ; preds = %271, %286
  %.3675 = phi i32 [ %289, %286 ], [ %.2674, %271 ]
  %293 = add nuw nsw i32 %.3700, 1
  br label %271, !llvm.loop !18

294:                                              ; preds = %271, %271
  %.not761 = icmp eq i32 %.3700, %.0707.lcssa1147
  br i1 %.not761, label %296, label %295

295:                                              ; preds = %294
  call void @_ZN7libzpaq5errorEPKc(ptr noundef nonnull @.str.21)
  br label %296

296:                                              ; preds = %295, %294
  br i1 %.not779, label %687, label %.preheader869

.preheader869:                                    ; preds = %296
  %297 = icmp sgt i32 %.2674, 0
  br i1 %297, label %.lr.ph933.preheader, label %._crit_edge948

.lr.ph933.preheader:                              ; preds = %.preheader869
  %wide.trip.count1058 = zext nneg i32 %.2674 to i64
  br label %.lr.ph933

.preheader868:                                    ; preds = %.critedge19
  br i1 %297, label %.lr.ph947, label %._crit_edge948

.lr.ph947:                                        ; preds = %.preheader868
  %298 = add nsw i32 %.2674, -31
  %299 = zext nneg i32 %.2674 to i64
  %300 = sext i32 %298 to i64
  br label %471

.lr.ph933:                                        ; preds = %.lr.ph933.preheader, %.critedge19
  %indvars.iv1055 = phi i64 [ 0, %.lr.ph933.preheader ], [ %indvars.iv.next1056, %.critedge19 ]
  %.0636932 = phi i32 [ 0, %.lr.ph933.preheader ], [ %.4640, %.critedge19 ]
  %.0646931 = phi i64 [ 0, %.lr.ph933.preheader ], [ %305, %.critedge19 ]
  %.0648930 = phi i32 [ 0, %.lr.ph933.preheader ], [ %.4652, %.critedge19 ]
  %301 = shl i64 %.0646931, 2
  %302 = getelementptr inbounds [4096 x i8], ptr %11, i64 0, i64 %indvars.iv1055
  %303 = load i8, ptr %302, align 1, !tbaa !9
  %304 = zext i8 %303 to i64
  %305 = add i64 %301, %304
  %306 = icmp ugt i64 %indvars.iv1055, 30
  br i1 %306, label %307, label %.critedge19

307:                                              ; preds = %.lr.ph933
  %308 = call noundef i32 @_Z4hashy(i64 noundef %305)
  %309 = and i32 %308, 134217727
  %310 = zext nneg i32 %309 to i64
  %311 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN7libzpaq5ArrayIjEixEm(ptr noundef nonnull align 8 dereferenceable(20) %4, i64 noundef %310)
  %312 = load i32, ptr %311, align 4, !tbaa !10
  %.not773 = icmp eq i32 %312, 0
  br i1 %.not773, label %.critedge19, label %313

313:                                              ; preds = %307
  %314 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN7libzpaq5ArrayIjEixEm(ptr noundef nonnull align 8 dereferenceable(20) %4, i64 noundef %310)
  %315 = load i32, ptr %314, align 4, !tbaa !10
  %316 = xor i32 %315, %308
  %317 = icmp ult i32 %316, 134217728
  br i1 %317, label %318, label %331

318:                                              ; preds = %313
  %319 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN7libzpaq5ArrayIjEixEm(ptr noundef nonnull align 8 dereferenceable(20) %4, i64 noundef %310)
  %320 = load i32, ptr %319, align 4, !tbaa !10
  %321 = shl i32 %320, 5
  %322 = trunc nuw nsw i64 %indvars.iv1055 to i32
  %reass.sub = sub i32 %321, %322
  %323 = add i32 %reass.sub, 31
  %324 = load i32, ptr %207, align 4, !tbaa !10
  %325 = add nsw i32 %324, 1
  store i32 %325, ptr %207, align 4, !tbaa !10
  %326 = invoke noundef i32 @_Z6rmatchRN7libzpaq5ArrayIhEEjPhii(ptr noundef nonnull align 8 dereferenceable(20) %3, i32 noundef %323, ptr noundef nonnull %11, i32 noundef %.2674, i32 noundef 1)
          to label %327 unwind label %329

327:                                              ; preds = %318
  %328 = icmp sgt i32 %326, %.0648930
  %spec.select806 = call i32 @llvm.smax.i32(i32 %326, i32 %.0648930)
  %spec.select807 = select i1 %328, i32 %323, i32 %.0636932
  br label %331

329:                                              ; preds = %460, %440, %420, %400, %380, %360, %340, %318
  %330 = landingpad { ptr, i32 }
          cleanup
  br label %878

331:                                              ; preds = %327, %313
  %.3651 = phi i32 [ %spec.select806, %327 ], [ %.0648930, %313 ]
  %.3639 = phi i32 [ %spec.select807, %327 ], [ %.0636932, %313 ]
  %332 = add nuw nsw i64 %310, 1
  %333 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN7libzpaq5ArrayIjEixEm(ptr noundef nonnull align 8 dereferenceable(20) %4, i64 noundef %332)
  %334 = load i32, ptr %333, align 4, !tbaa !10
  %.not773.1 = icmp eq i32 %334, 0
  br i1 %.not773.1, label %.critedge19, label %335

335:                                              ; preds = %331
  %336 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN7libzpaq5ArrayIjEixEm(ptr noundef nonnull align 8 dereferenceable(20) %4, i64 noundef %332)
  %337 = load i32, ptr %336, align 4, !tbaa !10
  %338 = xor i32 %337, %308
  %339 = icmp ult i32 %338, 134217728
  br i1 %339, label %340, label %351

340:                                              ; preds = %335
  %341 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN7libzpaq5ArrayIjEixEm(ptr noundef nonnull align 8 dereferenceable(20) %4, i64 noundef %332)
  %342 = load i32, ptr %341, align 4, !tbaa !10
  %343 = shl i32 %342, 5
  %344 = trunc nuw nsw i64 %indvars.iv1055 to i32
  %reass.sub.1 = sub i32 %343, %344
  %345 = add i32 %reass.sub.1, 31
  %346 = load i32, ptr %207, align 4, !tbaa !10
  %347 = add nsw i32 %346, 1
  store i32 %347, ptr %207, align 4, !tbaa !10
  %348 = invoke noundef i32 @_Z6rmatchRN7libzpaq5ArrayIhEEjPhii(ptr noundef nonnull align 8 dereferenceable(20) %3, i32 noundef %345, ptr noundef nonnull %11, i32 noundef %.2674, i32 noundef 1)
          to label %349 unwind label %329

349:                                              ; preds = %340
  %350 = icmp sgt i32 %348, %.3651
  %spec.select806.1 = call i32 @llvm.smax.i32(i32 %348, i32 %.3651)
  %spec.select807.1 = select i1 %350, i32 %345, i32 %.3639
  br label %351

351:                                              ; preds = %349, %335
  %.3651.1 = phi i32 [ %spec.select806.1, %349 ], [ %.3651, %335 ]
  %.3639.1 = phi i32 [ %spec.select807.1, %349 ], [ %.3639, %335 ]
  %352 = add nuw nsw i64 %310, 2
  %353 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN7libzpaq5ArrayIjEixEm(ptr noundef nonnull align 8 dereferenceable(20) %4, i64 noundef %352)
  %354 = load i32, ptr %353, align 4, !tbaa !10
  %.not773.2 = icmp eq i32 %354, 0
  br i1 %.not773.2, label %.critedge19, label %355

355:                                              ; preds = %351
  %356 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN7libzpaq5ArrayIjEixEm(ptr noundef nonnull align 8 dereferenceable(20) %4, i64 noundef %352)
  %357 = load i32, ptr %356, align 4, !tbaa !10
  %358 = xor i32 %357, %308
  %359 = icmp ult i32 %358, 134217728
  br i1 %359, label %360, label %371

360:                                              ; preds = %355
  %361 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN7libzpaq5ArrayIjEixEm(ptr noundef nonnull align 8 dereferenceable(20) %4, i64 noundef %352)
  %362 = load i32, ptr %361, align 4, !tbaa !10
  %363 = shl i32 %362, 5
  %364 = trunc nuw nsw i64 %indvars.iv1055 to i32
  %reass.sub.2 = sub i32 %363, %364
  %365 = add i32 %reass.sub.2, 31
  %366 = load i32, ptr %207, align 4, !tbaa !10
  %367 = add nsw i32 %366, 1
  store i32 %367, ptr %207, align 4, !tbaa !10
  %368 = invoke noundef i32 @_Z6rmatchRN7libzpaq5ArrayIhEEjPhii(ptr noundef nonnull align 8 dereferenceable(20) %3, i32 noundef %365, ptr noundef nonnull %11, i32 noundef %.2674, i32 noundef 1)
          to label %369 unwind label %329

369:                                              ; preds = %360
  %370 = icmp sgt i32 %368, %.3651.1
  %spec.select806.2 = call i32 @llvm.smax.i32(i32 %368, i32 %.3651.1)
  %spec.select807.2 = select i1 %370, i32 %365, i32 %.3639.1
  br label %371

371:                                              ; preds = %369, %355
  %.3651.2 = phi i32 [ %spec.select806.2, %369 ], [ %.3651.1, %355 ]
  %.3639.2 = phi i32 [ %spec.select807.2, %369 ], [ %.3639.1, %355 ]
  %372 = add nuw nsw i64 %310, 3
  %373 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN7libzpaq5ArrayIjEixEm(ptr noundef nonnull align 8 dereferenceable(20) %4, i64 noundef %372)
  %374 = load i32, ptr %373, align 4, !tbaa !10
  %.not773.3 = icmp eq i32 %374, 0
  br i1 %.not773.3, label %.critedge19, label %375

375:                                              ; preds = %371
  %376 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN7libzpaq5ArrayIjEixEm(ptr noundef nonnull align 8 dereferenceable(20) %4, i64 noundef %372)
  %377 = load i32, ptr %376, align 4, !tbaa !10
  %378 = xor i32 %377, %308
  %379 = icmp ult i32 %378, 134217728
  br i1 %379, label %380, label %391

380:                                              ; preds = %375
  %381 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN7libzpaq5ArrayIjEixEm(ptr noundef nonnull align 8 dereferenceable(20) %4, i64 noundef %372)
  %382 = load i32, ptr %381, align 4, !tbaa !10
  %383 = shl i32 %382, 5
  %384 = trunc nuw nsw i64 %indvars.iv1055 to i32
  %reass.sub.3 = sub i32 %383, %384
  %385 = add i32 %reass.sub.3, 31
  %386 = load i32, ptr %207, align 4, !tbaa !10
  %387 = add nsw i32 %386, 1
  store i32 %387, ptr %207, align 4, !tbaa !10
  %388 = invoke noundef i32 @_Z6rmatchRN7libzpaq5ArrayIhEEjPhii(ptr noundef nonnull align 8 dereferenceable(20) %3, i32 noundef %385, ptr noundef nonnull %11, i32 noundef %.2674, i32 noundef 1)
          to label %389 unwind label %329

389:                                              ; preds = %380
  %390 = icmp sgt i32 %388, %.3651.2
  %spec.select806.3 = call i32 @llvm.smax.i32(i32 %388, i32 %.3651.2)
  %spec.select807.3 = select i1 %390, i32 %385, i32 %.3639.2
  br label %391

391:                                              ; preds = %389, %375
  %.3651.3 = phi i32 [ %spec.select806.3, %389 ], [ %.3651.2, %375 ]
  %.3639.3 = phi i32 [ %spec.select807.3, %389 ], [ %.3639.2, %375 ]
  %392 = add nuw nsw i64 %310, 4
  %393 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN7libzpaq5ArrayIjEixEm(ptr noundef nonnull align 8 dereferenceable(20) %4, i64 noundef %392)
  %394 = load i32, ptr %393, align 4, !tbaa !10
  %.not773.4 = icmp eq i32 %394, 0
  br i1 %.not773.4, label %.critedge19, label %395

395:                                              ; preds = %391
  %396 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN7libzpaq5ArrayIjEixEm(ptr noundef nonnull align 8 dereferenceable(20) %4, i64 noundef %392)
  %397 = load i32, ptr %396, align 4, !tbaa !10
  %398 = xor i32 %397, %308
  %399 = icmp ult i32 %398, 134217728
  br i1 %399, label %400, label %411

400:                                              ; preds = %395
  %401 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN7libzpaq5ArrayIjEixEm(ptr noundef nonnull align 8 dereferenceable(20) %4, i64 noundef %392)
  %402 = load i32, ptr %401, align 4, !tbaa !10
  %403 = shl i32 %402, 5
  %404 = trunc nuw nsw i64 %indvars.iv1055 to i32
  %reass.sub.4 = sub i32 %403, %404
  %405 = add i32 %reass.sub.4, 31
  %406 = load i32, ptr %207, align 4, !tbaa !10
  %407 = add nsw i32 %406, 1
  store i32 %407, ptr %207, align 4, !tbaa !10
  %408 = invoke noundef i32 @_Z6rmatchRN7libzpaq5ArrayIhEEjPhii(ptr noundef nonnull align 8 dereferenceable(20) %3, i32 noundef %405, ptr noundef nonnull %11, i32 noundef %.2674, i32 noundef 1)
          to label %409 unwind label %329

409:                                              ; preds = %400
  %410 = icmp sgt i32 %408, %.3651.3
  %spec.select806.4 = call i32 @llvm.smax.i32(i32 %408, i32 %.3651.3)
  %spec.select807.4 = select i1 %410, i32 %405, i32 %.3639.3
  br label %411

411:                                              ; preds = %409, %395
  %.3651.4 = phi i32 [ %spec.select806.4, %409 ], [ %.3651.3, %395 ]
  %.3639.4 = phi i32 [ %spec.select807.4, %409 ], [ %.3639.3, %395 ]
  %412 = add nuw nsw i64 %310, 5
  %413 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN7libzpaq5ArrayIjEixEm(ptr noundef nonnull align 8 dereferenceable(20) %4, i64 noundef %412)
  %414 = load i32, ptr %413, align 4, !tbaa !10
  %.not773.5 = icmp eq i32 %414, 0
  br i1 %.not773.5, label %.critedge19, label %415

415:                                              ; preds = %411
  %416 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN7libzpaq5ArrayIjEixEm(ptr noundef nonnull align 8 dereferenceable(20) %4, i64 noundef %412)
  %417 = load i32, ptr %416, align 4, !tbaa !10
  %418 = xor i32 %417, %308
  %419 = icmp ult i32 %418, 134217728
  br i1 %419, label %420, label %431

420:                                              ; preds = %415
  %421 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN7libzpaq5ArrayIjEixEm(ptr noundef nonnull align 8 dereferenceable(20) %4, i64 noundef %412)
  %422 = load i32, ptr %421, align 4, !tbaa !10
  %423 = shl i32 %422, 5
  %424 = trunc nuw nsw i64 %indvars.iv1055 to i32
  %reass.sub.5 = sub i32 %423, %424
  %425 = add i32 %reass.sub.5, 31
  %426 = load i32, ptr %207, align 4, !tbaa !10
  %427 = add nsw i32 %426, 1
  store i32 %427, ptr %207, align 4, !tbaa !10
  %428 = invoke noundef i32 @_Z6rmatchRN7libzpaq5ArrayIhEEjPhii(ptr noundef nonnull align 8 dereferenceable(20) %3, i32 noundef %425, ptr noundef nonnull %11, i32 noundef %.2674, i32 noundef 1)
          to label %429 unwind label %329

429:                                              ; preds = %420
  %430 = icmp sgt i32 %428, %.3651.4
  %spec.select806.5 = call i32 @llvm.smax.i32(i32 %428, i32 %.3651.4)
  %spec.select807.5 = select i1 %430, i32 %425, i32 %.3639.4
  br label %431

431:                                              ; preds = %429, %415
  %.3651.5 = phi i32 [ %spec.select806.5, %429 ], [ %.3651.4, %415 ]
  %.3639.5 = phi i32 [ %spec.select807.5, %429 ], [ %.3639.4, %415 ]
  %432 = add nuw nsw i64 %310, 6
  %433 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN7libzpaq5ArrayIjEixEm(ptr noundef nonnull align 8 dereferenceable(20) %4, i64 noundef %432)
  %434 = load i32, ptr %433, align 4, !tbaa !10
  %.not773.6 = icmp eq i32 %434, 0
  br i1 %.not773.6, label %.critedge19, label %435

435:                                              ; preds = %431
  %436 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN7libzpaq5ArrayIjEixEm(ptr noundef nonnull align 8 dereferenceable(20) %4, i64 noundef %432)
  %437 = load i32, ptr %436, align 4, !tbaa !10
  %438 = xor i32 %437, %308
  %439 = icmp ult i32 %438, 134217728
  br i1 %439, label %440, label %451

440:                                              ; preds = %435
  %441 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN7libzpaq5ArrayIjEixEm(ptr noundef nonnull align 8 dereferenceable(20) %4, i64 noundef %432)
  %442 = load i32, ptr %441, align 4, !tbaa !10
  %443 = shl i32 %442, 5
  %444 = trunc nuw nsw i64 %indvars.iv1055 to i32
  %reass.sub.6 = sub i32 %443, %444
  %445 = add i32 %reass.sub.6, 31
  %446 = load i32, ptr %207, align 4, !tbaa !10
  %447 = add nsw i32 %446, 1
  store i32 %447, ptr %207, align 4, !tbaa !10
  %448 = invoke noundef i32 @_Z6rmatchRN7libzpaq5ArrayIhEEjPhii(ptr noundef nonnull align 8 dereferenceable(20) %3, i32 noundef %445, ptr noundef nonnull %11, i32 noundef %.2674, i32 noundef 1)
          to label %449 unwind label %329

449:                                              ; preds = %440
  %450 = icmp sgt i32 %448, %.3651.5
  %spec.select806.6 = call i32 @llvm.smax.i32(i32 %448, i32 %.3651.5)
  %spec.select807.6 = select i1 %450, i32 %445, i32 %.3639.5
  br label %451

451:                                              ; preds = %449, %435
  %.3651.6 = phi i32 [ %spec.select806.6, %449 ], [ %.3651.5, %435 ]
  %.3639.6 = phi i32 [ %spec.select807.6, %449 ], [ %.3639.5, %435 ]
  %452 = add nuw nsw i64 %310, 7
  %453 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN7libzpaq5ArrayIjEixEm(ptr noundef nonnull align 8 dereferenceable(20) %4, i64 noundef %452)
  %454 = load i32, ptr %453, align 4, !tbaa !10
  %.not773.7 = icmp eq i32 %454, 0
  br i1 %.not773.7, label %.critedge19, label %455

455:                                              ; preds = %451
  %456 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN7libzpaq5ArrayIjEixEm(ptr noundef nonnull align 8 dereferenceable(20) %4, i64 noundef %452)
  %457 = load i32, ptr %456, align 4, !tbaa !10
  %458 = xor i32 %457, %308
  %459 = icmp ult i32 %458, 134217728
  br i1 %459, label %460, label %.critedge19

460:                                              ; preds = %455
  %461 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN7libzpaq5ArrayIjEixEm(ptr noundef nonnull align 8 dereferenceable(20) %4, i64 noundef %452)
  %462 = load i32, ptr %461, align 4, !tbaa !10
  %463 = shl i32 %462, 5
  %464 = trunc nuw nsw i64 %indvars.iv1055 to i32
  %reass.sub.7 = sub i32 %463, %464
  %465 = add i32 %reass.sub.7, 31
  %466 = load i32, ptr %207, align 4, !tbaa !10
  %467 = add nsw i32 %466, 1
  store i32 %467, ptr %207, align 4, !tbaa !10
  %468 = invoke noundef i32 @_Z6rmatchRN7libzpaq5ArrayIhEEjPhii(ptr noundef nonnull align 8 dereferenceable(20) %3, i32 noundef %465, ptr noundef nonnull %11, i32 noundef %.2674, i32 noundef 1)
          to label %469 unwind label %329

469:                                              ; preds = %460
  %470 = icmp sgt i32 %468, %.3651.6
  %spec.select806.7 = call i32 @llvm.smax.i32(i32 %468, i32 %.3651.6)
  %spec.select807.7 = select i1 %470, i32 %465, i32 %.3639.6
  br label %.critedge19

.critedge19:                                      ; preds = %307, %331, %351, %371, %391, %411, %431, %451, %469, %455, %.lr.ph933
  %.4652 = phi i32 [ %.0648930, %.lr.ph933 ], [ %.0648930, %307 ], [ %.3651, %331 ], [ %.3651.1, %351 ], [ %.3651.2, %371 ], [ %.3651.3, %391 ], [ %.3651.4, %411 ], [ %.3651.5, %431 ], [ %.3651.6, %451 ], [ %spec.select806.7, %469 ], [ %.3651.6, %455 ]
  %.4640 = phi i32 [ %.0636932, %.lr.ph933 ], [ %.0636932, %307 ], [ %.3639, %331 ], [ %.3639.1, %351 ], [ %.3639.2, %371 ], [ %.3639.3, %391 ], [ %.3639.4, %411 ], [ %.3639.5, %431 ], [ %.3639.6, %451 ], [ %spec.select807.7, %469 ], [ %.3639.6, %455 ]
  %indvars.iv.next1056 = add nuw nsw i64 %indvars.iv1055, 1
  %exitcond1059.not = icmp eq i64 %indvars.iv.next1056, %wide.trip.count1058
  br i1 %exitcond1059.not, label %.preheader868, label %.lr.ph933, !llvm.loop !19

471:                                              ; preds = %.lr.ph947, %.critedge21
  %indvars.iv1064 = phi i64 [ %299, %.lr.ph947 ], [ %indvars.iv.next1065, %.critedge21 ]
  %.0631945 = phi i32 [ 1, %.lr.ph947 ], [ %.4635, %.critedge21 ]
  %.5641944 = phi i32 [ %.4640, %.lr.ph947 ], [ %.9645, %.critedge21 ]
  %.1647943 = phi i64 [ 0, %.lr.ph947 ], [ %477, %.critedge21 ]
  %.5653942 = phi i32 [ %.4652, %.lr.ph947 ], [ %.9657, %.critedge21 ]
  %indvars.iv.next1065 = add nsw i64 %indvars.iv1064, -1
  %472 = shl i64 %.1647943, 2
  %473 = or disjoint i64 %472, 3
  %474 = getelementptr inbounds [4096 x i8], ptr %11, i64 0, i64 %indvars.iv.next1065
  %475 = load i8, ptr %474, align 1, !tbaa !9
  %476 = zext i8 %475 to i64
  %477 = sub i64 %473, %476
  %.not771 = icmp sgt i64 %indvars.iv1064, %300
  br i1 %.not771, label %.critedge21, label %478

478:                                              ; preds = %471
  %479 = call noundef i32 @_Z4hashy(i64 noundef %477)
  %480 = and i32 %479, 134217727
  %481 = add nuw nsw i64 %indvars.iv1064, 30
  %482 = zext nneg i32 %480 to i64
  %483 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN7libzpaq5ArrayIjEixEm(ptr noundef nonnull align 8 dereferenceable(20) %4, i64 noundef %482)
  %484 = load i32, ptr %483, align 4, !tbaa !10
  %.not772 = icmp eq i32 %484, 0
  br i1 %.not772, label %.critedge21, label %485

485:                                              ; preds = %478
  %486 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN7libzpaq5ArrayIjEixEm(ptr noundef nonnull align 8 dereferenceable(20) %4, i64 noundef %482)
  %487 = load i32, ptr %486, align 4, !tbaa !10
  %488 = xor i32 %487, %479
  %489 = icmp ult i32 %488, 134217728
  br i1 %489, label %490, label %503

490:                                              ; preds = %485
  %491 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN7libzpaq5ArrayIjEixEm(ptr noundef nonnull align 8 dereferenceable(20) %4, i64 noundef %482)
  %492 = load i32, ptr %491, align 4, !tbaa !10
  %493 = shl i32 %492, 5
  %494 = trunc nuw i64 %481 to i32
  %495 = add i32 %493, %494
  %496 = load i32, ptr %210, align 4, !tbaa !10
  %497 = add nsw i32 %496, 1
  store i32 %497, ptr %210, align 4, !tbaa !10
  %498 = invoke noundef i32 @_Z6rmatchRN7libzpaq5ArrayIhEEjPhii(ptr noundef nonnull align 8 dereferenceable(20) %3, i32 noundef %495, ptr noundef nonnull %11, i32 noundef %.2674, i32 noundef -1)
          to label %499 unwind label %501

499:                                              ; preds = %490
  %500 = icmp sgt i32 %498, %.5653942
  %.7655 = call i32 @llvm.smax.i32(i32 %498, i32 %.5653942)
  %.7643 = select i1 %500, i32 %495, i32 %.5641944
  %.2633 = select i1 %500, i32 -1, i32 %.0631945
  br label %503

501:                                              ; preds = %632, %612, %592, %572, %552, %532, %512, %490
  %502 = landingpad { ptr, i32 }
          cleanup
  br label %878

503:                                              ; preds = %499, %485
  %.8656 = phi i32 [ %.7655, %499 ], [ %.5653942, %485 ]
  %.8644 = phi i32 [ %.7643, %499 ], [ %.5641944, %485 ]
  %.3634 = phi i32 [ %.2633, %499 ], [ %.0631945, %485 ]
  %504 = add nuw nsw i64 %482, 1
  %505 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN7libzpaq5ArrayIjEixEm(ptr noundef nonnull align 8 dereferenceable(20) %4, i64 noundef %504)
  %506 = load i32, ptr %505, align 4, !tbaa !10
  %.not772.1 = icmp eq i32 %506, 0
  br i1 %.not772.1, label %.critedge21, label %507

507:                                              ; preds = %503
  %508 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN7libzpaq5ArrayIjEixEm(ptr noundef nonnull align 8 dereferenceable(20) %4, i64 noundef %504)
  %509 = load i32, ptr %508, align 4, !tbaa !10
  %510 = xor i32 %509, %479
  %511 = icmp ult i32 %510, 134217728
  br i1 %511, label %512, label %523

512:                                              ; preds = %507
  %513 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN7libzpaq5ArrayIjEixEm(ptr noundef nonnull align 8 dereferenceable(20) %4, i64 noundef %504)
  %514 = load i32, ptr %513, align 4, !tbaa !10
  %515 = shl i32 %514, 5
  %516 = trunc nuw i64 %481 to i32
  %517 = add i32 %515, %516
  %518 = load i32, ptr %210, align 4, !tbaa !10
  %519 = add nsw i32 %518, 1
  store i32 %519, ptr %210, align 4, !tbaa !10
  %520 = invoke noundef i32 @_Z6rmatchRN7libzpaq5ArrayIhEEjPhii(ptr noundef nonnull align 8 dereferenceable(20) %3, i32 noundef %517, ptr noundef nonnull %11, i32 noundef %.2674, i32 noundef -1)
          to label %521 unwind label %501

521:                                              ; preds = %512
  %522 = icmp sgt i32 %520, %.8656
  %.7655.1 = call i32 @llvm.smax.i32(i32 %520, i32 %.8656)
  %.7643.1 = select i1 %522, i32 %517, i32 %.8644
  %.2633.1 = select i1 %522, i32 -1, i32 %.3634
  br label %523

523:                                              ; preds = %521, %507
  %.8656.1 = phi i32 [ %.7655.1, %521 ], [ %.8656, %507 ]
  %.8644.1 = phi i32 [ %.7643.1, %521 ], [ %.8644, %507 ]
  %.3634.1 = phi i32 [ %.2633.1, %521 ], [ %.3634, %507 ]
  %524 = add nuw nsw i64 %482, 2
  %525 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN7libzpaq5ArrayIjEixEm(ptr noundef nonnull align 8 dereferenceable(20) %4, i64 noundef %524)
  %526 = load i32, ptr %525, align 4, !tbaa !10
  %.not772.2 = icmp eq i32 %526, 0
  br i1 %.not772.2, label %.critedge21, label %527

527:                                              ; preds = %523
  %528 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN7libzpaq5ArrayIjEixEm(ptr noundef nonnull align 8 dereferenceable(20) %4, i64 noundef %524)
  %529 = load i32, ptr %528, align 4, !tbaa !10
  %530 = xor i32 %529, %479
  %531 = icmp ult i32 %530, 134217728
  br i1 %531, label %532, label %543

532:                                              ; preds = %527
  %533 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN7libzpaq5ArrayIjEixEm(ptr noundef nonnull align 8 dereferenceable(20) %4, i64 noundef %524)
  %534 = load i32, ptr %533, align 4, !tbaa !10
  %535 = shl i32 %534, 5
  %536 = trunc nuw i64 %481 to i32
  %537 = add i32 %535, %536
  %538 = load i32, ptr %210, align 4, !tbaa !10
  %539 = add nsw i32 %538, 1
  store i32 %539, ptr %210, align 4, !tbaa !10
  %540 = invoke noundef i32 @_Z6rmatchRN7libzpaq5ArrayIhEEjPhii(ptr noundef nonnull align 8 dereferenceable(20) %3, i32 noundef %537, ptr noundef nonnull %11, i32 noundef %.2674, i32 noundef -1)
          to label %541 unwind label %501

541:                                              ; preds = %532
  %542 = icmp sgt i32 %540, %.8656.1
  %.7655.2 = call i32 @llvm.smax.i32(i32 %540, i32 %.8656.1)
  %.7643.2 = select i1 %542, i32 %537, i32 %.8644.1
  %.2633.2 = select i1 %542, i32 -1, i32 %.3634.1
  br label %543

543:                                              ; preds = %541, %527
  %.8656.2 = phi i32 [ %.7655.2, %541 ], [ %.8656.1, %527 ]
  %.8644.2 = phi i32 [ %.7643.2, %541 ], [ %.8644.1, %527 ]
  %.3634.2 = phi i32 [ %.2633.2, %541 ], [ %.3634.1, %527 ]
  %544 = add nuw nsw i64 %482, 3
  %545 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN7libzpaq5ArrayIjEixEm(ptr noundef nonnull align 8 dereferenceable(20) %4, i64 noundef %544)
  %546 = load i32, ptr %545, align 4, !tbaa !10
  %.not772.3 = icmp eq i32 %546, 0
  br i1 %.not772.3, label %.critedge21, label %547

547:                                              ; preds = %543
  %548 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN7libzpaq5ArrayIjEixEm(ptr noundef nonnull align 8 dereferenceable(20) %4, i64 noundef %544)
  %549 = load i32, ptr %548, align 4, !tbaa !10
  %550 = xor i32 %549, %479
  %551 = icmp ult i32 %550, 134217728
  br i1 %551, label %552, label %563

552:                                              ; preds = %547
  %553 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN7libzpaq5ArrayIjEixEm(ptr noundef nonnull align 8 dereferenceable(20) %4, i64 noundef %544)
  %554 = load i32, ptr %553, align 4, !tbaa !10
  %555 = shl i32 %554, 5
  %556 = trunc nuw i64 %481 to i32
  %557 = add i32 %555, %556
  %558 = load i32, ptr %210, align 4, !tbaa !10
  %559 = add nsw i32 %558, 1
  store i32 %559, ptr %210, align 4, !tbaa !10
  %560 = invoke noundef i32 @_Z6rmatchRN7libzpaq5ArrayIhEEjPhii(ptr noundef nonnull align 8 dereferenceable(20) %3, i32 noundef %557, ptr noundef nonnull %11, i32 noundef %.2674, i32 noundef -1)
          to label %561 unwind label %501

561:                                              ; preds = %552
  %562 = icmp sgt i32 %560, %.8656.2
  %.7655.3 = call i32 @llvm.smax.i32(i32 %560, i32 %.8656.2)
  %.7643.3 = select i1 %562, i32 %557, i32 %.8644.2
  %.2633.3 = select i1 %562, i32 -1, i32 %.3634.2
  br label %563

563:                                              ; preds = %561, %547
  %.8656.3 = phi i32 [ %.7655.3, %561 ], [ %.8656.2, %547 ]
  %.8644.3 = phi i32 [ %.7643.3, %561 ], [ %.8644.2, %547 ]
  %.3634.3 = phi i32 [ %.2633.3, %561 ], [ %.3634.2, %547 ]
  %564 = add nuw nsw i64 %482, 4
  %565 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN7libzpaq5ArrayIjEixEm(ptr noundef nonnull align 8 dereferenceable(20) %4, i64 noundef %564)
  %566 = load i32, ptr %565, align 4, !tbaa !10
  %.not772.4 = icmp eq i32 %566, 0
  br i1 %.not772.4, label %.critedge21, label %567

567:                                              ; preds = %563
  %568 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN7libzpaq5ArrayIjEixEm(ptr noundef nonnull align 8 dereferenceable(20) %4, i64 noundef %564)
  %569 = load i32, ptr %568, align 4, !tbaa !10
  %570 = xor i32 %569, %479
  %571 = icmp ult i32 %570, 134217728
  br i1 %571, label %572, label %583

572:                                              ; preds = %567
  %573 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN7libzpaq5ArrayIjEixEm(ptr noundef nonnull align 8 dereferenceable(20) %4, i64 noundef %564)
  %574 = load i32, ptr %573, align 4, !tbaa !10
  %575 = shl i32 %574, 5
  %576 = trunc nuw i64 %481 to i32
  %577 = add i32 %575, %576
  %578 = load i32, ptr %210, align 4, !tbaa !10
  %579 = add nsw i32 %578, 1
  store i32 %579, ptr %210, align 4, !tbaa !10
  %580 = invoke noundef i32 @_Z6rmatchRN7libzpaq5ArrayIhEEjPhii(ptr noundef nonnull align 8 dereferenceable(20) %3, i32 noundef %577, ptr noundef nonnull %11, i32 noundef %.2674, i32 noundef -1)
          to label %581 unwind label %501

581:                                              ; preds = %572
  %582 = icmp sgt i32 %580, %.8656.3
  %.7655.4 = call i32 @llvm.smax.i32(i32 %580, i32 %.8656.3)
  %.7643.4 = select i1 %582, i32 %577, i32 %.8644.3
  %.2633.4 = select i1 %582, i32 -1, i32 %.3634.3
  br label %583

583:                                              ; preds = %581, %567
  %.8656.4 = phi i32 [ %.7655.4, %581 ], [ %.8656.3, %567 ]
  %.8644.4 = phi i32 [ %.7643.4, %581 ], [ %.8644.3, %567 ]
  %.3634.4 = phi i32 [ %.2633.4, %581 ], [ %.3634.3, %567 ]
  %584 = add nuw nsw i64 %482, 5
  %585 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN7libzpaq5ArrayIjEixEm(ptr noundef nonnull align 8 dereferenceable(20) %4, i64 noundef %584)
  %586 = load i32, ptr %585, align 4, !tbaa !10
  %.not772.5 = icmp eq i32 %586, 0
  br i1 %.not772.5, label %.critedge21, label %587

587:                                              ; preds = %583
  %588 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN7libzpaq5ArrayIjEixEm(ptr noundef nonnull align 8 dereferenceable(20) %4, i64 noundef %584)
  %589 = load i32, ptr %588, align 4, !tbaa !10
  %590 = xor i32 %589, %479
  %591 = icmp ult i32 %590, 134217728
  br i1 %591, label %592, label %603

592:                                              ; preds = %587
  %593 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN7libzpaq5ArrayIjEixEm(ptr noundef nonnull align 8 dereferenceable(20) %4, i64 noundef %584)
  %594 = load i32, ptr %593, align 4, !tbaa !10
  %595 = shl i32 %594, 5
  %596 = trunc nuw i64 %481 to i32
  %597 = add i32 %595, %596
  %598 = load i32, ptr %210, align 4, !tbaa !10
  %599 = add nsw i32 %598, 1
  store i32 %599, ptr %210, align 4, !tbaa !10
  %600 = invoke noundef i32 @_Z6rmatchRN7libzpaq5ArrayIhEEjPhii(ptr noundef nonnull align 8 dereferenceable(20) %3, i32 noundef %597, ptr noundef nonnull %11, i32 noundef %.2674, i32 noundef -1)
          to label %601 unwind label %501

601:                                              ; preds = %592
  %602 = icmp sgt i32 %600, %.8656.4
  %.7655.5 = call i32 @llvm.smax.i32(i32 %600, i32 %.8656.4)
  %.7643.5 = select i1 %602, i32 %597, i32 %.8644.4
  %.2633.5 = select i1 %602, i32 -1, i32 %.3634.4
  br label %603

603:                                              ; preds = %601, %587
  %.8656.5 = phi i32 [ %.7655.5, %601 ], [ %.8656.4, %587 ]
  %.8644.5 = phi i32 [ %.7643.5, %601 ], [ %.8644.4, %587 ]
  %.3634.5 = phi i32 [ %.2633.5, %601 ], [ %.3634.4, %587 ]
  %604 = add nuw nsw i64 %482, 6
  %605 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN7libzpaq5ArrayIjEixEm(ptr noundef nonnull align 8 dereferenceable(20) %4, i64 noundef %604)
  %606 = load i32, ptr %605, align 4, !tbaa !10
  %.not772.6 = icmp eq i32 %606, 0
  br i1 %.not772.6, label %.critedge21, label %607

607:                                              ; preds = %603
  %608 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN7libzpaq5ArrayIjEixEm(ptr noundef nonnull align 8 dereferenceable(20) %4, i64 noundef %604)
  %609 = load i32, ptr %608, align 4, !tbaa !10
  %610 = xor i32 %609, %479
  %611 = icmp ult i32 %610, 134217728
  br i1 %611, label %612, label %623

612:                                              ; preds = %607
  %613 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN7libzpaq5ArrayIjEixEm(ptr noundef nonnull align 8 dereferenceable(20) %4, i64 noundef %604)
  %614 = load i32, ptr %613, align 4, !tbaa !10
  %615 = shl i32 %614, 5
  %616 = trunc nuw i64 %481 to i32
  %617 = add i32 %615, %616
  %618 = load i32, ptr %210, align 4, !tbaa !10
  %619 = add nsw i32 %618, 1
  store i32 %619, ptr %210, align 4, !tbaa !10
  %620 = invoke noundef i32 @_Z6rmatchRN7libzpaq5ArrayIhEEjPhii(ptr noundef nonnull align 8 dereferenceable(20) %3, i32 noundef %617, ptr noundef nonnull %11, i32 noundef %.2674, i32 noundef -1)
          to label %621 unwind label %501

621:                                              ; preds = %612
  %622 = icmp sgt i32 %620, %.8656.5
  %.7655.6 = call i32 @llvm.smax.i32(i32 %620, i32 %.8656.5)
  %.7643.6 = select i1 %622, i32 %617, i32 %.8644.5
  %.2633.6 = select i1 %622, i32 -1, i32 %.3634.5
  br label %623

623:                                              ; preds = %621, %607
  %.8656.6 = phi i32 [ %.7655.6, %621 ], [ %.8656.5, %607 ]
  %.8644.6 = phi i32 [ %.7643.6, %621 ], [ %.8644.5, %607 ]
  %.3634.6 = phi i32 [ %.2633.6, %621 ], [ %.3634.5, %607 ]
  %624 = add nuw nsw i64 %482, 7
  %625 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN7libzpaq5ArrayIjEixEm(ptr noundef nonnull align 8 dereferenceable(20) %4, i64 noundef %624)
  %626 = load i32, ptr %625, align 4, !tbaa !10
  %.not772.7 = icmp eq i32 %626, 0
  br i1 %.not772.7, label %.critedge21, label %627

627:                                              ; preds = %623
  %628 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN7libzpaq5ArrayIjEixEm(ptr noundef nonnull align 8 dereferenceable(20) %4, i64 noundef %624)
  %629 = load i32, ptr %628, align 4, !tbaa !10
  %630 = xor i32 %629, %479
  %631 = icmp ult i32 %630, 134217728
  br i1 %631, label %632, label %.critedge21

632:                                              ; preds = %627
  %633 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN7libzpaq5ArrayIjEixEm(ptr noundef nonnull align 8 dereferenceable(20) %4, i64 noundef %624)
  %634 = load i32, ptr %633, align 4, !tbaa !10
  %635 = shl i32 %634, 5
  %636 = trunc nuw i64 %481 to i32
  %637 = add i32 %635, %636
  %638 = load i32, ptr %210, align 4, !tbaa !10
  %639 = add nsw i32 %638, 1
  store i32 %639, ptr %210, align 4, !tbaa !10
  %640 = invoke noundef i32 @_Z6rmatchRN7libzpaq5ArrayIhEEjPhii(ptr noundef nonnull align 8 dereferenceable(20) %3, i32 noundef %637, ptr noundef nonnull %11, i32 noundef %.2674, i32 noundef -1)
          to label %641 unwind label %501

641:                                              ; preds = %632
  %642 = icmp sgt i32 %640, %.8656.6
  %.7655.7 = call i32 @llvm.smax.i32(i32 %640, i32 %.8656.6)
  %.7643.7 = select i1 %642, i32 %637, i32 %.8644.6
  %.2633.7 = select i1 %642, i32 -1, i32 %.3634.6
  br label %.critedge21

.critedge21:                                      ; preds = %478, %503, %523, %543, %563, %583, %603, %623, %641, %627, %471
  %.9657 = phi i32 [ %.5653942, %471 ], [ %.5653942, %478 ], [ %.8656, %503 ], [ %.8656.1, %523 ], [ %.8656.2, %543 ], [ %.8656.3, %563 ], [ %.8656.4, %583 ], [ %.8656.5, %603 ], [ %.8656.6, %623 ], [ %.7655.7, %641 ], [ %.8656.6, %627 ]
  %.9645 = phi i32 [ %.5641944, %471 ], [ %.5641944, %478 ], [ %.8644, %503 ], [ %.8644.1, %523 ], [ %.8644.2, %543 ], [ %.8644.3, %563 ], [ %.8644.4, %583 ], [ %.8644.5, %603 ], [ %.8644.6, %623 ], [ %.7643.7, %641 ], [ %.8644.6, %627 ]
  %.4635 = phi i32 [ %.0631945, %471 ], [ %.0631945, %478 ], [ %.3634, %503 ], [ %.3634.1, %523 ], [ %.3634.2, %543 ], [ %.3634.3, %563 ], [ %.3634.4, %583 ], [ %.3634.5, %603 ], [ %.3634.6, %623 ], [ %.2633.7, %641 ], [ %.3634.6, %627 ]
  %643 = icmp ugt i64 %indvars.iv1064, 1
  br i1 %643, label %471, label %._crit_edge948, !llvm.loop !20

._crit_edge948:                                   ; preds = %.critedge21, %.preheader869, %.preheader868
  %.5653.lcssa = phi i32 [ %.4652, %.preheader868 ], [ 0, %.preheader869 ], [ %.9657, %.critedge21 ]
  %.5641.lcssa = phi i32 [ %.4640, %.preheader868 ], [ 0, %.preheader869 ], [ %.9645, %.critedge21 ]
  %.0631.lcssa = phi i32 [ 1, %.preheader868 ], [ 1, %.preheader869 ], [ %.4635, %.critedge21 ]
  %644 = lshr i32 %.5653.lcssa, 24
  %645 = and i32 %644, 127
  %646 = zext nneg i32 %645 to i64
  %647 = getelementptr inbounds [4099 x i32], ptr %12, i64 0, i64 %646
  %648 = load i32, ptr %647, align 4, !tbaa !10
  %649 = add nsw i32 %648, 1
  store i32 %649, ptr %647, align 4, !tbaa !10
  %650 = add nsw i32 %645, %.0665
  %651 = shl i32 %.5653.lcssa, 8
  %652 = xor i32 %651, %.5653.lcssa
  %653 = icmp sgt i32 %652, 16777215
  %.neg = sext i1 %653 to i32
  %654 = add i32 %650, %.neg
  %655 = shl i32 %.5653.lcssa, 16
  %656 = xor i32 %651, %655
  %657 = icmp sgt i32 %656, 16777215
  %.neg762 = sext i1 %657 to i32
  %658 = add i32 %654, %.neg762
  %659 = shl i32 %.5653.lcssa, 24
  %660 = xor i32 %655, %659
  %661 = icmp sgt i32 %660, 16777215
  %.neg763 = sext i1 %661 to i32
  %662 = add i32 %658, %.neg763
  %663 = add nsw i32 %.2674, %.0663
  %664 = lshr i32 %.5653.lcssa, 23
  %.not853 = icmp slt i32 %664, %.2674
  br i1 %.not853, label %.thread1158, label %666

.thread1158:                                      ; preds = %._crit_edge948
  %665 = call i32 @putc(i32 noundef 0, ptr noundef %212)
  br label %.lr.ph955

666:                                              ; preds = %._crit_edge948
  %667 = add nuw nsw i32 %.5653.lcssa, 1
  %668 = lshr i32 %.0631.lcssa, 24
  %669 = and i32 %668, 128
  %670 = add nuw nsw i32 %667, %669
  %671 = call i32 @putc(i32 noundef %670, ptr noundef %212)
  %672 = lshr i32 %.5653.lcssa, 8
  %673 = add nuw nsw i32 %672, 1
  %674 = call i32 @putc(i32 noundef %673, ptr noundef %212)
  %675 = lshr i32 %.5653.lcssa, 16
  %676 = add nuw nsw i32 %675, 1
  %677 = call i32 @putc(i32 noundef %676, ptr noundef %212)
  %678 = add nuw nsw i32 %644, 1
  %679 = call i32 @putc(i32 noundef %678, ptr noundef %212)
  %680 = lshr i32 %.5641.lcssa, 24
  %681 = call i32 @putc(i32 noundef %680, ptr noundef %212)
  %682 = lshr i32 %.5641.lcssa, 16
  %683 = call i32 @putc(i32 noundef %682, ptr noundef %212)
  %684 = lshr i32 %.5641.lcssa, 8
  %685 = call i32 @putc(i32 noundef %684, ptr noundef %212)
  %686 = call i32 @putc(i32 noundef %.5641.lcssa, ptr noundef %212)
  br label %687

687:                                              ; preds = %666, %296
  %.1666 = phi i32 [ %.0665, %296 ], [ %662, %666 ]
  %.1664 = phi i32 [ %.0663, %296 ], [ %663, %666 ]
  %.1661 = phi i1 [ %.0660, %296 ], [ true, %666 ]
  %.10658 = phi i32 [ 0, %296 ], [ %.5653.lcssa, %666 ]
  %688 = icmp sgt i32 %.2674, 0
  br i1 %688, label %.lr.ph955, label %._crit_edge956

.lr.ph955:                                        ; preds = %.thread1158, %687
  %.106581169 = phi i32 [ %.5653.lcssa, %.thread1158 ], [ %.10658, %687 ]
  %.16611168 = phi i1 [ false, %.thread1158 ], [ %.1661, %687 ]
  %.16641166 = phi i32 [ %663, %.thread1158 ], [ %.1664, %687 ]
  %.16661164 = phi i32 [ %662, %.thread1158 ], [ %.1666, %687 ]
  %689 = lshr i32 %.106581169, 24
  %690 = lshr i32 %.106581169, 16
  %691 = and i32 %690, 255
  %692 = lshr i32 %.106581169, 8
  %693 = and i32 %692, 255
  %694 = and i32 %.106581169, 255
  %695 = zext nneg i32 %694 to i64
  %696 = zext nneg i32 %689 to i64
  %697 = zext nneg i32 %693 to i64
  %698 = zext nneg i32 %691 to i64
  %wide.trip.count1070 = zext nneg i32 %.2674 to i64
  br label %699

699:                                              ; preds = %.lr.ph955, %720
  %indvars.iv1067 = phi i64 [ 0, %.lr.ph955 ], [ %indvars.iv.next1068, %720 ]
  %.1668953 = phi i32 [ %.0667, %.lr.ph955 ], [ %.3670, %720 ]
  %.not770 = icmp ult i64 %indvars.iv1067, %696
  %700 = icmp ne i64 %indvars.iv1067, %698
  %701 = and i1 %.not770, %700
  %or.cond1015.not = and i1 %701, %.16611168
  br i1 %or.cond1015.not, label %702, label %705

702:                                              ; preds = %699
  %703 = icmp eq i64 %indvars.iv1067, %697
  %704 = icmp eq i64 %indvars.iv1067, %695
  %or.cond810 = or i1 %703, %704
  br i1 %or.cond810, label %705, label %720

705:                                              ; preds = %702, %699
  %706 = getelementptr inbounds [4096 x i8], ptr %11, i64 0, i64 %indvars.iv1067
  %707 = load i8, ptr %706, align 1, !tbaa !9
  %708 = zext i8 %707 to i64
  %709 = getelementptr inbounds [5 x i8], ptr @.str.22, i64 0, i64 %708
  %710 = load i8, ptr %709, align 1, !tbaa !9
  %711 = sext i8 %710 to i32
  %712 = shl nsw i32 %.1668953, 2
  %713 = add nsw i32 %712, %711
  %714 = icmp sgt i32 %713, 255
  br i1 %714, label %715, label %717

715:                                              ; preds = %705
  %716 = call i32 @putc(i32 noundef %.1668953, ptr noundef %214)
  br label %717

717:                                              ; preds = %715, %705
  %.2669 = phi i32 [ 0, %715 ], [ %.1668953, %705 ]
  %718 = shl nsw i32 %.2669, 2
  %719 = add nsw i32 %718, %711
  br label %720

720:                                              ; preds = %702, %717
  %.3670 = phi i32 [ %719, %717 ], [ %.1668953, %702 ]
  %indvars.iv.next1068 = add nuw nsw i64 %indvars.iv1067, 1
  %exitcond1071.not = icmp eq i64 %indvars.iv.next1068, %wide.trip.count1070
  br i1 %exitcond1071.not, label %._crit_edge956, label %699, !llvm.loop !21

._crit_edge956:                                   ; preds = %720, %687
  %.16611167 = phi i1 [ %.1661, %687 ], [ %.16611168, %720 ]
  %.16641165 = phi i32 [ %.1664, %687 ], [ %.16641166, %720 ]
  %.16661163 = phi i32 [ %.1666, %687 ], [ %.16661164, %720 ]
  %.1668.lcssa = phi i32 [ %.0667, %687 ], [ %.3670, %720 ]
  %721 = call i32 @getc(ptr noundef nonnull %160)
  %.not764 = icmp eq i32 %721, 43
  br i1 %.not764, label %723, label %722

722:                                              ; preds = %._crit_edge956
  call void @_ZN7libzpaq5errorEPKc(ptr noundef nonnull @.str.23)
  br label %723

723:                                              ; preds = %722, %._crit_edge956
  %724 = call i32 @getc(ptr noundef nonnull %160)
  %.not765 = icmp eq i32 %724, 10
  br i1 %.not765, label %.preheader1220, label %725

725:                                              ; preds = %723
  call void @_ZN7libzpaq5errorEPKc(ptr noundef nonnull @.str.24)
  br label %.preheader1220

.preheader1220:                                   ; preds = %725, %723
  br label %726

726:                                              ; preds = %.preheader1220, %802
  %.5702 = phi i32 [ %803, %802 ], [ 0, %.preheader1220 ]
  %.8696 = phi i32 [ %.0671826, %802 ], [ 0, %.preheader1220 ]
  %.5687 = phi i32 [ %.8696.fr, %802 ], [ 0, %.preheader1220 ]
  %.4676 = phi i32 [ %.9681, %802 ], [ 0, %.preheader1220 ]
  %.8696.fr = freeze i32 %.8696
  %727 = call i32 @getc(ptr noundef nonnull %160)
  switch i32 %727, label %728 [
    i32 -1, label %804
    i32 10, label %.thread828
  ]

728:                                              ; preds = %726
  %729 = add i32 %727, -105
  %or.cond23 = icmp ult i32 %729, -72
  br i1 %or.cond23, label %730, label %731

730:                                              ; preds = %728
  call void @_ZN7libzpaq5errorEPKc(ptr noundef nonnull @.str.25)
  br label %731

731:                                              ; preds = %728, %730
  %732 = icmp sgt i32 %727, 35
  %or.cond25 = and i1 %215, %732
  br i1 %or.cond25, label %733, label %737

733:                                              ; preds = %731
  %734 = add nsw i32 %727, -35
  %735 = urem i32 %734, %spec.store.select
  %736 = sub nsw i32 %727, %735
  br label %737

737:                                              ; preds = %733, %731
  %.0671 = phi i32 [ %736, %733 ], [ %727, %731 ]
  %738 = icmp eq i32 %.0671, 35
  %739 = icmp eq i32 %.4676, 0
  br i1 %738, label %740, label %745

740:                                              ; preds = %737
  %741 = icmp eq i32 %.8696.fr, 35
  %or.cond27 = or i1 %741, %739
  br i1 %or.cond27, label %742, label %.thread828

742:                                              ; preds = %740
  %743 = add nsw i32 %.4676, 1
  br label %802

.thread828:                                       ; preds = %740, %726
  %.0671827.ph = phi i32 [ 35, %740 ], [ %727, %726 ]
  %744 = icmp eq i32 %.4676, 0
  br label %748

745:                                              ; preds = %737
  %746 = and i32 %.0671, -8
  %747 = icmp eq i32 %746, 64
  %or.cond31 = and i1 %739, %747
  br i1 %or.cond31, label %802, label %748

748:                                              ; preds = %.thread828, %745
  %749 = phi i1 [ false, %.thread828 ], [ %747, %745 ]
  %750 = phi i1 [ %744, %.thread828 ], [ %739, %745 ]
  %.0671827831 = phi i32 [ %.0671827.ph, %.thread828 ], [ %.0671, %745 ]
  %751 = icmp eq i32 %.4676, 1
  %752 = and i32 %.0671827831, -4
  %753 = icmp eq i32 %752, 68
  %754 = and i32 %.8696.fr, -4
  %755 = icmp eq i32 %754, 68
  %756 = and i1 %755, %751
  %or.cond39 = and i1 %756, %753
  br i1 %or.cond39, label %802, label %757

757:                                              ; preds = %748
  %758 = add i32 %.4676, -2
  %or.cond41 = icmp ult i32 %758, 53
  %759 = icmp eq i32 %.5687, 71
  %760 = icmp eq i32 %.8696.fr, 71
  %761 = icmp eq i32 %.0671827831, 71
  %762 = and i1 %or.cond41, %761
  %763 = and i1 %759, %762
  %or.cond47 = and i1 %760, %763
  br i1 %or.cond47, label %764, label %766

764:                                              ; preds = %757
  %765 = add nuw nsw i32 %.4676, 1
  br label %802

766:                                              ; preds = %757
  %767 = icmp eq i32 %.0671827831, 10
  %768 = icmp eq i32 %.8696.fr, 35
  %or.cond49 = or i1 %768, %750
  %or.cond811 = and i1 %or.cond49, %767
  br i1 %or.cond811, label %804, label %769

769:                                              ; preds = %766
  %770 = add i32 %.4676, 1
  %771 = icmp sgt i32 %.4676, 0
  %772 = and i1 %768, %771
  br i1 %772, label %.lr.ph960.split.preheader, label %._crit_edge961

.lr.ph960.split.preheader:                        ; preds = %769
  %smin = call i32 @llvm.smin.i32(i32 %770, i32 2)
  br label %.lr.ph960.split

.lr.ph960.split:                                  ; preds = %.lr.ph960.split.preheader, %.lr.ph960.split
  %.5677958 = phi i32 [ %774, %.lr.ph960.split ], [ %770, %.lr.ph960.split.preheader ]
  %773 = call i32 @putc(i32 noundef 3, ptr noundef %217)
  %774 = add nsw i32 %.5677958, -1
  %775 = icmp sgt i32 %.5677958, 2
  br i1 %775, label %.lr.ph960.split, label %._crit_edge961.loopexit, !llvm.loop !22

._crit_edge961.loopexit:                          ; preds = %.lr.ph960.split
  %776 = add i32 %smin, -1
  br label %._crit_edge961

._crit_edge961:                                   ; preds = %._crit_edge961.loopexit, %769
  %.5677.lcssa = phi i32 [ %770, %769 ], [ %776, %._crit_edge961.loopexit ]
  %777 = icmp sgt i32 %.5677.lcssa, 3
  %or.cond51 = and i1 %760, %777
  %or.cond53 = and i1 %759, %or.cond51
  br i1 %or.cond53, label %.thread832, label %779

.thread832:                                       ; preds = %._crit_edge961
  %778 = add nuw nsw i32 %.5677.lcssa, 199
  br label %.thread835.thread.sink.split

779:                                              ; preds = %._crit_edge961
  switch i32 %.5677.lcssa, label %802 [
    i32 3, label %780
    i32 2, label %791
    i32 1, label %.thread835.thread
  ]

780:                                              ; preds = %779
  br i1 %753, label %.thread835.thread851, label %787

.thread835.thread851:                             ; preds = %780
  %781 = shl i32 %.8696.fr, 2
  %782 = shl nuw nsw i32 %.0671827831, 4
  %783 = add i32 %781, -1291
  %784 = add i32 %783, %.5687
  %785 = add i32 %784, %782
  %786 = call i32 @putc(i32 noundef %785, ptr noundef %217)
  br label %802

787:                                              ; preds = %780
  %788 = shl i32 %.8696.fr, 3
  %789 = add i32 %788, -503
  %790 = add i32 %789, %.5687
  br label %.thread835.thread.sink.split

791:                                              ; preds = %779
  br i1 %749, label %.thread839, label %.thread837

.thread839:                                       ; preds = %791
  %792 = shl nuw nsw i32 %.0671827831, 3
  %793 = add i32 %.8696.fr, -503
  %794 = add i32 %793, %792
  %795 = call i32 @putc(i32 noundef %794, ptr noundef %217)
  br label %802

.thread837:                                       ; preds = %791
  %796 = add nsw i32 %.8696.fr, -32
  br label %.thread835.thread.sink.split

.thread835.thread.sink.split:                     ; preds = %.thread837, %.thread832, %787
  %.sink = phi i32 [ %790, %787 ], [ %778, %.thread832 ], [ %796, %.thread837 ]
  %797 = call i32 @putc(i32 noundef %.sink, ptr noundef %217)
  br label %.thread835.thread

.thread835.thread:                                ; preds = %.thread835.thread.sink.split, %779
  br i1 %767, label %804, label %798

798:                                              ; preds = %.thread835.thread
  switch i32 %.0671827831, label %799 [
    i32 71, label %802
    i32 70, label %802
    i32 69, label %802
    i32 68, label %802
    i32 67, label %802
    i32 66, label %802
    i32 65, label %802
    i32 64, label %802
    i32 35, label %802
  ]

799:                                              ; preds = %798
  %800 = add nsw i32 %.0671827831, -32
  %801 = call i32 @putc(i32 noundef %800, ptr noundef %217)
  br label %802

802:                                              ; preds = %779, %.thread835.thread851, %.thread839, %798, %798, %798, %798, %798, %798, %798, %798, %798, %748, %745, %742, %799, %764
  %.0671826 = phi i32 [ 35, %742 ], [ 71, %764 ], [ %.0671827831, %799 ], [ %.0671827831, %798 ], [ %.0671, %745 ], [ %.0671827831, %748 ], [ %.0671827831, %798 ], [ %.0671827831, %798 ], [ %.0671827831, %798 ], [ %.0671827831, %798 ], [ %.0671827831, %798 ], [ %.0671827831, %798 ], [ %.0671827831, %798 ], [ %.0671827831, %798 ], [ %.0671827831, %.thread839 ], [ %.0671827831, %.thread835.thread851 ], [ %.0671827831, %779 ]
  %.9681 = phi i32 [ %743, %742 ], [ %765, %764 ], [ 0, %799 ], [ 1, %798 ], [ 1, %745 ], [ 2, %748 ], [ 1, %798 ], [ 1, %798 ], [ 1, %798 ], [ 1, %798 ], [ 1, %798 ], [ 1, %798 ], [ 1, %798 ], [ 1, %798 ], [ 0, %.thread839 ], [ 0, %.thread835.thread851 ], [ %.5677.lcssa, %779 ]
  %803 = add nuw nsw i32 %.5702, 1
  br label %726, !llvm.loop !23

804:                                              ; preds = %766, %726, %.thread835.thread
  %805 = call i32 @putc(i32 noundef 0, ptr noundef %217)
  %.not769 = icmp eq i32 %.5702, %.0707.lcssa1147
  br i1 %.not769, label %.backedge, label %806

806:                                              ; preds = %804
  call void @_ZN7libzpaq5errorEPKc(ptr noundef nonnull @.str.26)
  br label %.backedge

.backedge:                                        ; preds = %806, %804
  br label %218, !llvm.loop !24

807:                                              ; preds = %254, %255
  %808 = call i32 @putc(i32 noundef %.0667, ptr noundef %214)
  %809 = select i1 %.not779, i64 2, i64 3
  br label %810

810:                                              ; preds = %807, %810
  %indvars.iv1072 = phi i64 [ %809, %807 ], [ %indvars.iv.next1073, %810 ]
  %811 = getelementptr inbounds [4 x ptr], ptr %5, i64 0, i64 %indvars.iv1072
  %812 = load ptr, ptr %811, align 8, !tbaa !5
  %813 = call i32 @fclose(ptr noundef %812)
  %indvars.iv.next1073 = add nsw i64 %indvars.iv1072, -1
  %.not1193 = icmp eq i64 %indvars.iv1072, 0
  br i1 %.not1193, label %814, label %810, !llvm.loop !25

814:                                              ; preds = %810
  %815 = call i32 @fclose(ptr noundef nonnull %160)
  invoke void @_ZN7libzpaq5ArrayIjE6resizeEmi(ptr noundef nonnull align 8 dereferenceable(20) %4, i64 noundef 0, i32 noundef 0)
          to label %816 unwind label %224

816:                                              ; preds = %814
  invoke void @_ZN7libzpaq5ArrayIhE6resizeEmi(ptr noundef nonnull align 8 dereferenceable(20) %3, i64 noundef 0, i32 noundef 0)
          to label %817 unwind label %224

817:                                              ; preds = %816
  %818 = icmp sgt i32 %.0663, 0
  br i1 %818, label %819, label %836

819:                                              ; preds = %817
  %820 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.27, i32 noundef %.0707.lcssa1147)
  %.not780964 = icmp slt i32 %.0707.lcssa1147, -2
  br i1 %.not780964, label %._crit_edge968, label %.lr.ph967.preheader

.lr.ph967.preheader:                              ; preds = %819
  %smax = call i32 @llvm.smax.i32(i32 %208, i32 0)
  %821 = add nuw i32 %smax, 1
  %wide.trip.count1078 = zext i32 %821 to i64
  br label %.lr.ph967

.lr.ph967:                                        ; preds = %.lr.ph967.preheader, %830
  %indvars.iv1075 = phi i64 [ 0, %.lr.ph967.preheader ], [ %indvars.iv.next1076, %830 ]
  %822 = getelementptr inbounds [4099 x i32], ptr %12, i64 0, i64 %indvars.iv1075
  %823 = load i32, ptr %822, align 4, !tbaa !10
  %824 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.28, i32 noundef %823)
  %825 = trunc nuw nsw i64 %indvars.iv1075 to i32
  %826 = urem i32 %825, 10
  %827 = icmp eq i32 %826, 0
  br i1 %827, label %828, label %830

828:                                              ; preds = %.lr.ph967
  %829 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.29)
  br label %830

830:                                              ; preds = %.lr.ph967, %828
  %indvars.iv.next1076 = add nuw nsw i64 %indvars.iv1075, 1
  %exitcond1079.not = icmp eq i64 %indvars.iv.next1076, %wide.trip.count1078
  br i1 %exitcond1079.not, label %._crit_edge968, label %.lr.ph967, !llvm.loop !26

._crit_edge968:                                   ; preds = %830, %819
  %831 = sitofp i32 %.0665 to double
  %832 = fmul double %831, 1.000000e+02
  %833 = uitofp nneg i32 %.0663 to double
  %834 = fdiv double %832, %833
  %835 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.30, i32 noundef %.0665, i32 noundef %.0663, double noundef %834)
  br label %836

836:                                              ; preds = %._crit_edge968, %817
  br i1 %49, label %.preheader867.preheader, label %877

.preheader867.preheader:                          ; preds = %836
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %13) #13
  call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %14) #13
  %837 = call i32 @pthread_attr_init(ptr noundef nonnull %14) #13
  %838 = call i32 @pthread_attr_setdetachstate(ptr noundef nonnull %14, i32 noundef 0) #13
  call void @llvm.lifetime.start.p0(i64 288, ptr nonnull %15) #13
  call void @_ZN3JobC2Ev(ptr noundef nonnull align 8 dereferenceable(72) %15) #13
  %.ptr783.1 = getelementptr inbounds i8, ptr %15, i64 72
  call void @_ZN3JobC2Ev(ptr noundef nonnull align 8 dereferenceable(72) %.ptr783.1) #13
  %.ptr783.2 = getelementptr inbounds i8, ptr %15, i64 144
  call void @_ZN3JobC2Ev(ptr noundef nonnull align 8 dereferenceable(72) %.ptr783.2) #13
  %.ptr783.3 = getelementptr inbounds i8, ptr %15, i64 216
  call void @_ZN3JobC2Ev(ptr noundef nonnull align 8 dereferenceable(72) %.ptr783.3) #13
  br label %.preheader867

.preheader867:                                    ; preds = %.preheader867.preheader, %849
  %indvars.iv1080 = phi i64 [ 0, %.preheader867.preheader ], [ %indvars.iv.next1081, %849 ]
  %839 = getelementptr inbounds [4 x %struct.Job], ptr %15, i64 0, i64 %indvars.iv1080
  %840 = trunc nuw nsw i64 %indvars.iv1080 to i32
  store i32 %840, ptr %839, align 8, !tbaa !27
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %16) #13
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %17) #13
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %18) #13
  %841 = load ptr, ptr %161, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %19) #13
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %19) #13
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %18, ptr noundef %841, ptr noundef nonnull align 1 dereferenceable(1) %19)
          to label %842 unwind label %854

842:                                              ; preds = %.preheader867
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %17, ptr noundef nonnull align 8 dereferenceable(32) %18, ptr noundef nonnull @.str.13)
          to label %843 unwind label %856

843:                                              ; preds = %842
  %844 = getelementptr inbounds [5 x i8], ptr @.str.14, i64 0, i64 %indvars.iv1080
  %845 = load i8, ptr %844, align 1, !tbaa !9
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_S5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %16, ptr noundef nonnull align 8 dereferenceable(32) %17, i8 noundef signext %845)
          to label %846 unwind label %858

846:                                              ; preds = %843
  %847 = getelementptr inbounds i8, ptr %839, i64 8
  %848 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(32) %847, ptr noundef nonnull align 8 dereferenceable(32) %16) #13
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %16) #13
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %17) #13
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #13
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %19) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %19) #13
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %18) #13
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %17) #13
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %16) #13
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %20) #13
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EERKS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %20, ptr noundef nonnull align 8 dereferenceable(32) %847, ptr noundef nonnull @.str.31)
          to label %849 unwind label %862

849:                                              ; preds = %846
  %850 = getelementptr inbounds i8, ptr %839, i64 40
  %851 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(32) %850, ptr noundef nonnull align 8 dereferenceable(32) %20) #13
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %20) #13
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %20) #13
  %852 = getelementptr inbounds [4 x i64], ptr %13, i64 0, i64 %indvars.iv1080
  %853 = call i32 @pthread_create(ptr noundef nonnull %852, ptr noundef nonnull %14, ptr noundef nonnull @_Z8compressPv, ptr noundef nonnull %839) #13
  %indvars.iv.next1081 = add nuw nsw i64 %indvars.iv1080, 1
  %exitcond1084.not = icmp eq i64 %indvars.iv.next1081, %wide.trip.count
  br i1 %exitcond1084.not, label %.preheader866, label %.preheader867, !llvm.loop !32

854:                                              ; preds = %.preheader867
  %855 = landingpad { ptr, i32 }
          cleanup
  br label %861

856:                                              ; preds = %842
  %857 = landingpad { ptr, i32 }
          cleanup
  br label %860

858:                                              ; preds = %843
  %859 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %17) #13
  br label %860

860:                                              ; preds = %858, %856
  %.pn785 = phi { ptr, i32 } [ %859, %858 ], [ %857, %856 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #13
  br label %861

861:                                              ; preds = %860, %854
  %.pn785.pn = phi { ptr, i32 } [ %.pn785, %860 ], [ %855, %854 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %19) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %19) #13
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %18) #13
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %17) #13
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %16) #13
  br label %873

862:                                              ; preds = %846
  %863 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %20) #13
  br label %873

.preheader866:                                    ; preds = %849, %867
  %indvars.iv1085 = phi i64 [ %indvars.iv.next1086, %867 ], [ 0, %849 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %21) #13
  %864 = getelementptr inbounds [4 x i64], ptr %13, i64 0, i64 %indvars.iv1085
  %865 = load i64, ptr %864, align 8, !tbaa !33
  %866 = invoke i32 @pthread_join(i64 noundef %865, ptr noundef nonnull %21)
          to label %867 unwind label %871

867:                                              ; preds = %.preheader866
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #13
  %indvars.iv.next1086 = add nuw nsw i64 %indvars.iv1085, 1
  %exitcond1089.not = icmp eq i64 %indvars.iv.next1086, %wide.trip.count
  br i1 %exitcond1089.not, label %.preheader865.preheader, label %.preheader866, !llvm.loop !34

.preheader865.preheader:                          ; preds = %867
  %868 = getelementptr inbounds i8, ptr %15, i64 216
  call void @_ZN3JobD2Ev(ptr noundef nonnull align 8 dereferenceable(72) %868) #13
  %869 = getelementptr inbounds i8, ptr %15, i64 144
  call void @_ZN3JobD2Ev(ptr noundef nonnull align 8 dereferenceable(72) %869) #13
  %870 = getelementptr inbounds i8, ptr %15, i64 72
  call void @_ZN3JobD2Ev(ptr noundef nonnull align 8 dereferenceable(72) %870) #13
  call void @_ZN3JobD2Ev(ptr noundef nonnull align 8 dereferenceable(72) %15) #13
  call void @llvm.lifetime.end.p0(i64 288, ptr nonnull %15) #13
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %14) #13
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %13) #13
  br label %877

871:                                              ; preds = %.preheader866
  %872 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #13
  br label %873

873:                                              ; preds = %871, %862, %861
  %.pn788 = phi { ptr, i32 } [ %863, %862 ], [ %.pn785.pn, %861 ], [ %872, %871 ]
  %874 = getelementptr inbounds i8, ptr %15, i64 216
  call void @_ZN3JobD2Ev(ptr noundef nonnull align 8 dereferenceable(72) %874) #13
  %875 = getelementptr inbounds i8, ptr %15, i64 144
  call void @_ZN3JobD2Ev(ptr noundef nonnull align 8 dereferenceable(72) %875) #13
  %876 = getelementptr inbounds i8, ptr %15, i64 72
  call void @_ZN3JobD2Ev(ptr noundef nonnull align 8 dereferenceable(72) %876) #13
  call void @_ZN3JobD2Ev(ptr noundef nonnull align 8 dereferenceable(72) %15) #13
  call void @llvm.lifetime.end.p0(i64 288, ptr nonnull %15) #13
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %14) #13
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %13) #13
  br label %878

877:                                              ; preds = %.preheader865.preheader, %836
  call void @llvm.lifetime.end.p0(i64 16396, ptr nonnull %12) #13
  call void @llvm.lifetime.end.p0(i64 4096, ptr nonnull %11) #13
  call void @llvm.lifetime.end.p0(i64 4096, ptr nonnull %10) #13
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5) #13
  br label %1211

878:                                              ; preds = %329, %501, %873, %224
  %.pn788.pn = phi { ptr, i32 } [ %.pn788, %873 ], [ %225, %224 ], [ %330, %329 ], [ %502, %501 ]
  call void @llvm.lifetime.end.p0(i64 16396, ptr nonnull %12) #13
  call void @llvm.lifetime.end.p0(i64 4096, ptr nonnull %11) #13
  call void @llvm.lifetime.end.p0(i64 4096, ptr nonnull %10) #13
  br label %879

879:                                              ; preds = %878, %184
  %.pn795.pn.pn = phi { ptr, i32 } [ %.pn795.pn, %184 ], [ %.pn788.pn, %878 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5) #13
  br label %1217

880:                                              ; preds = %48
  %881 = icmp eq i8 %45, 100
  switch i8 %45, label %1211 [
    i8 102, label %882
    i8 100, label %882
  ]

882:                                              ; preds = %880, %880
  call void @llvm.lifetime.start.p0(i64 288, ptr nonnull %22) #13
  call void @_ZN3JobC2Ev(ptr noundef nonnull align 8 dereferenceable(72) %22) #13
  %.ptr.1 = getelementptr inbounds i8, ptr %22, i64 72
  call void @_ZN3JobC2Ev(ptr noundef nonnull align 8 dereferenceable(72) %.ptr.1) #13
  %.ptr.2 = getelementptr inbounds i8, ptr %22, i64 144
  call void @_ZN3JobC2Ev(ptr noundef nonnull align 8 dereferenceable(72) %.ptr.2) #13
  %.ptr.3 = getelementptr inbounds i8, ptr %22, i64 216
  call void @_ZN3JobC2Ev(ptr noundef nonnull align 8 dereferenceable(72) %.ptr.3) #13
  br i1 %881, label %883, label %921

883:                                              ; preds = %882
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %23) #13
  call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %24) #13
  %884 = call i32 @pthread_attr_init(ptr noundef nonnull %24) #13
  %885 = call i32 @pthread_attr_setdetachstate(ptr noundef nonnull %24, i32 noundef 0) #13
  %wide.trip.count1094 = select i1 %.not779, i64 3, i64 4
  %886 = getelementptr inbounds i8, ptr %1, i64 16
  br label %887

887:                                              ; preds = %883, %898
  %indvars.iv1090 = phi i64 [ 0, %883 ], [ %indvars.iv.next1091, %898 ]
  %888 = getelementptr inbounds [4 x %struct.Job], ptr %22, i64 0, i64 %indvars.iv1090
  %889 = trunc nuw nsw i64 %indvars.iv1090 to i32
  store i32 %889, ptr %888, align 8, !tbaa !27
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %25) #13
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %26) #13
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %27) #13
  %890 = load ptr, ptr %886, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %28) #13
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %28) #13
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %27, ptr noundef %890, ptr noundef nonnull align 1 dereferenceable(1) %28)
          to label %891 unwind label %903

891:                                              ; preds = %887
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %26, ptr noundef nonnull align 8 dereferenceable(32) %27, ptr noundef nonnull @.str.13)
          to label %892 unwind label %905

892:                                              ; preds = %891
  %893 = getelementptr inbounds [5 x i8], ptr @.str.14, i64 0, i64 %indvars.iv1090
  %894 = load i8, ptr %893, align 1, !tbaa !9
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_S5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %25, ptr noundef nonnull align 8 dereferenceable(32) %26, i8 noundef signext %894)
          to label %895 unwind label %907

895:                                              ; preds = %892
  %896 = getelementptr inbounds i8, ptr %888, i64 40
  %897 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(32) %896, ptr noundef nonnull align 8 dereferenceable(32) %25) #13
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %25) #13
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %26) #13
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %27) #13
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %28) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %28) #13
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %27) #13
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %26) #13
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %25) #13
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %29) #13
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EERKS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %29, ptr noundef nonnull align 8 dereferenceable(32) %896, ptr noundef nonnull @.str.31)
          to label %898 unwind label %911

898:                                              ; preds = %895
  %899 = getelementptr inbounds i8, ptr %888, i64 8
  %900 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(32) %899, ptr noundef nonnull align 8 dereferenceable(32) %29) #13
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %29) #13
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %29) #13
  %901 = getelementptr inbounds [4 x i64], ptr %23, i64 0, i64 %indvars.iv1090
  %902 = call i32 @pthread_create(ptr noundef nonnull %901, ptr noundef nonnull %24, ptr noundef nonnull @_Z10decompressPv, ptr noundef nonnull %888) #13
  %indvars.iv.next1091 = add nuw nsw i64 %indvars.iv1090, 1
  %exitcond1095.not = icmp eq i64 %indvars.iv.next1091, %wide.trip.count1094
  br i1 %exitcond1095.not, label %.preheader864, label %887, !llvm.loop !35

903:                                              ; preds = %887
  %904 = landingpad { ptr, i32 }
          cleanup
  br label %910

905:                                              ; preds = %891
  %906 = landingpad { ptr, i32 }
          cleanup
  br label %909

907:                                              ; preds = %892
  %908 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %26) #13
  br label %909

909:                                              ; preds = %907, %905
  %.pn751 = phi { ptr, i32 } [ %908, %907 ], [ %906, %905 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %27) #13
  br label %910

910:                                              ; preds = %909, %903
  %.pn751.pn = phi { ptr, i32 } [ %.pn751, %909 ], [ %904, %903 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %28) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %28) #13
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %27) #13
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %26) #13
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %25) #13
  br label %920

911:                                              ; preds = %895
  %912 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %29) #13
  br label %920

913:                                              ; preds = %917
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %24) #13
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %23) #13
  br label %921

.preheader864:                                    ; preds = %898, %917
  %indvars.iv1096 = phi i64 [ %indvars.iv.next1097, %917 ], [ 0, %898 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %30) #13
  %914 = getelementptr inbounds [4 x i64], ptr %23, i64 0, i64 %indvars.iv1096
  %915 = load i64, ptr %914, align 8, !tbaa !33
  %916 = invoke i32 @pthread_join(i64 noundef %915, ptr noundef nonnull %30)
          to label %917 unwind label %918

917:                                              ; preds = %.preheader864
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %30) #13
  %indvars.iv.next1097 = add nuw nsw i64 %indvars.iv1096, 1
  %exitcond1100.not = icmp eq i64 %indvars.iv.next1097, %wide.trip.count1094
  br i1 %exitcond1100.not, label %913, label %.preheader864, !llvm.loop !36

918:                                              ; preds = %.preheader864
  %919 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %30) #13
  br label %920

920:                                              ; preds = %910, %911, %918
  %.pn754.pn = phi { ptr, i32 } [ %919, %918 ], [ %912, %911 ], [ %.pn751.pn, %910 ]
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %24) #13
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %23) #13
  br label %1207

921:                                              ; preds = %913, %882
  br i1 %.not779, label %927, label %922

922:                                              ; preds = %921
  %923 = getelementptr inbounds i8, ptr %1, i64 32
  %924 = load ptr, ptr %923, align 8, !tbaa !5
  invoke void @_Z7readrefRN7libzpaq5ArrayIhEEPKc(ptr noundef nonnull align 8 dereferenceable(20) %3, ptr noundef %924)
          to label %927 unwind label %925

925:                                              ; preds = %922
  %926 = landingpad { ptr, i32 }
          cleanup
  br label %1207

927:                                              ; preds = %922, %921
  %wide.trip.count1104 = phi i64 [ 4, %922 ], [ 3, %921 ]
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %31) #13
  %928 = getelementptr inbounds i8, ptr %1, i64 16
  br label %929

929:                                              ; preds = %927, %949
  %indvars.iv1101 = phi i64 [ 0, %927 ], [ %indvars.iv.next1102, %949 ]
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %32) #13
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %33) #13
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %34) #13
  %930 = load ptr, ptr %928, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %35) #13
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %35) #13
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %34, ptr noundef %930, ptr noundef nonnull align 1 dereferenceable(1) %35)
          to label %931 unwind label %941

931:                                              ; preds = %929
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %33, ptr noundef nonnull align 8 dereferenceable(32) %34, ptr noundef nonnull @.str.13)
          to label %932 unwind label %943

932:                                              ; preds = %931
  %933 = getelementptr inbounds [5 x i8], ptr @.str.14, i64 0, i64 %indvars.iv1101
  %934 = load i8, ptr %933, align 1, !tbaa !9
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_S5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %32, ptr noundef nonnull align 8 dereferenceable(32) %33, i8 noundef signext %934)
          to label %935 unwind label %945

935:                                              ; preds = %932
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %33) #13
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %34) #13
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %35) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %35) #13
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %34) #13
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %33) #13
  %936 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %32) #13
  %937 = call noalias ptr @fopen(ptr noundef %936, ptr noundef nonnull @.str.2)
  %938 = getelementptr inbounds [4 x ptr], ptr %31, i64 0, i64 %indvars.iv1101
  store ptr %937, ptr %938, align 8, !tbaa !5
  %.not750 = icmp eq ptr %937, null
  br i1 %.not750, label %939, label %949

939:                                              ; preds = %935
  %940 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %32) #13
  call void @perror(ptr noundef %940) #16
  call void @exit(i32 noundef 1) #14
  unreachable

941:                                              ; preds = %929
  %942 = landingpad { ptr, i32 }
          cleanup
  br label %948

943:                                              ; preds = %931
  %944 = landingpad { ptr, i32 }
          cleanup
  br label %947

945:                                              ; preds = %932
  %946 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %33) #13
  br label %947

947:                                              ; preds = %945, %943
  %.pn = phi { ptr, i32 } [ %946, %945 ], [ %944, %943 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %34) #13
  br label %948

948:                                              ; preds = %947, %941
  %.pn.pn = phi { ptr, i32 } [ %.pn, %947 ], [ %942, %941 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %35) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %35) #13
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %34) #13
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %33) #13
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %32) #13
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %31) #13
  br label %1207

949:                                              ; preds = %935
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %32) #13
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %32) #13
  %indvars.iv.next1102 = add nuw nsw i64 %indvars.iv1101, 1
  %exitcond1105.not = icmp eq i64 %indvars.iv.next1102, %wide.trip.count1104
  br i1 %exitcond1105.not, label %950, label %929, !llvm.loop !37

950:                                              ; preds = %949
  %951 = getelementptr inbounds i8, ptr %1, i64 24
  %952 = load ptr, ptr %951, align 8, !tbaa !5
  %953 = call noalias ptr @fopen(ptr noundef %952, ptr noundef nonnull @.str.3)
  %.not = icmp eq ptr %953, null
  br i1 %.not, label %954, label %956

954:                                              ; preds = %950
  %955 = load ptr, ptr %951, align 8, !tbaa !5
  call void @perror(ptr noundef %955) #16
  call void @exit(i32 noundef 1) #14
  unreachable

956:                                              ; preds = %950
  %957 = load ptr, ptr %31, align 16, !tbaa !5
  %958 = call i32 @getc(ptr noundef %957)
  %959 = shl i32 %958, 8
  %960 = call i32 @getc(ptr noundef %957)
  %961 = add i32 %959, %960
  %962 = load ptr, ptr %928, align 8, !tbaa !5
  %963 = load ptr, ptr %951, align 8, !tbaa !5
  %964 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.32, ptr noundef %962, ptr noundef %963, i32 noundef %961)
  %965 = add i32 %961, -4096
  %or.cond64 = icmp ult i32 %965, -4095
  br i1 %or.cond64, label %966, label %967

966:                                              ; preds = %956
  call void @_ZN7libzpaq5errorEPKc(ptr noundef nonnull @.str.33)
  br label %967

967:                                              ; preds = %956, %966
  call void @llvm.lifetime.start.p0(i64 4096, ptr nonnull %36) #13
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(4096) %36, i8 0, i64 4096, i1 false)
  call void @llvm.lifetime.start.p0(i64 4096, ptr nonnull %37) #13
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(4096) %37, i8 0, i64 4096, i1 false)
  %968 = call i32 @getc(ptr noundef %957)
  %969 = add nsw i32 %968, -1
  %970 = icmp eq i32 %969, -2
  br i1 %970, label %._crit_edge1012, label %.lr.ph1011

.lr.ph1011:                                       ; preds = %967
  %971 = getelementptr inbounds i8, ptr %31, i64 16
  %972 = load ptr, ptr %971, align 16
  %973 = add nsw i32 %961, -2
  %974 = add i32 %961, -1
  %975 = getelementptr inbounds i8, ptr %31, i64 24
  %976 = load ptr, ptr %975, align 8
  %977 = icmp sgt i32 %961, 0
  %978 = getelementptr inbounds i8, ptr %31, i64 8
  %979 = load ptr, ptr %978, align 8
  %wide.trip.count1130 = zext nneg i32 %961 to i64
  %wide.trip.count1135 = zext nneg i32 %961 to i64
  br label %980

980:                                              ; preds = %.lr.ph1011, %._crit_edge1008
  %981 = phi i32 [ %969, %.lr.ph1011 ], [ %1190, %._crit_edge1008 ]
  %982 = phi i32 [ %968, %.lr.ph1011 ], [ %1189, %._crit_edge1008 ]
  %.05821009 = phi i32 [ 0, %.lr.ph1011 ], [ %.1583.lcssa, %._crit_edge1008 ]
  %983 = call i32 @getc(ptr noundef %957)
  %984 = add nsw i32 %983, -1
  %985 = call i32 @getc(ptr noundef %957)
  %986 = add i32 %985, -1
  %987 = icmp slt i32 %982, 1
  %988 = icmp slt i32 %983, 1
  %or.cond66 = or i1 %987, %988
  %989 = icmp slt i32 %985, 1
  %or.cond68 = or i1 %or.cond66, %989
  br i1 %or.cond68, label %990, label %991

990:                                              ; preds = %980
  call void @_ZN7libzpaq5errorEPKc(ptr noundef nonnull @.str.34)
  br label %991

991:                                              ; preds = %980, %990
  %992 = icmp slt i32 %985, 4097
  br i1 %992, label %.lr.ph976.preheader, label %.critedge70

.lr.ph976.preheader:                              ; preds = %991
  %993 = sext i32 %986 to i64
  %smax1108 = call i32 @llvm.smax.i32(i32 %986, i32 4095)
  %994 = add nuw i32 %smax1108, 1
  br label %.lr.ph976

.lr.ph976:                                        ; preds = %.lr.ph976.preheader, %997
  %indvars.iv1106 = phi i64 [ %993, %.lr.ph976.preheader ], [ %indvars.iv.next1107, %997 ]
  %995 = call i32 @getc(ptr noundef %957)
  %996 = add i32 %995, -1
  %or.cond78 = icmp ult i32 %996, -2
  br i1 %or.cond78, label %997, label %.critedge70.loopexit.split.loop.exit

997:                                              ; preds = %.lr.ph976
  %998 = trunc i32 %995 to i8
  %999 = getelementptr inbounds [4096 x i8], ptr %36, i64 0, i64 %indvars.iv1106
  store i8 %998, ptr %999, align 1, !tbaa !9
  %indvars.iv.next1107 = add nsw i64 %indvars.iv1106, 1
  %1000 = icmp slt i64 %indvars.iv1106, 4095
  br i1 %1000, label %.lr.ph976, label %.critedge70, !llvm.loop !38

.critedge70.loopexit.split.loop.exit:             ; preds = %.lr.ph976
  %1001 = trunc nsw i64 %indvars.iv1106 to i32
  br label %.critedge70

.critedge70:                                      ; preds = %997, %.critedge70.loopexit.split.loop.exit, %991
  %.1595.lcssa = phi i32 [ %986, %991 ], [ %1001, %.critedge70.loopexit.split.loop.exit ], [ %994, %997 ]
  %1002 = icmp ne i32 %984, 0
  %1003 = icmp sgt i32 %981, -1
  %1004 = and i1 %1002, %1003
  br i1 %1004, label %.lr.ph982.preheader, label %.preheader863

.lr.ph982.preheader:                              ; preds = %.critedge70
  %1005 = zext nneg i32 %981 to i64
  br label %.lr.ph982

.preheader863:                                    ; preds = %1017, %.critedge70
  %1006 = icmp sgt i32 %.1595.lcssa, 0
  br i1 %1006, label %.lr.ph984.preheader, label %._crit_edge985

.lr.ph984.preheader:                              ; preds = %.preheader863
  %wide.trip.count1116 = zext nneg i32 %.1595.lcssa to i64
  br label %.lr.ph984

.lr.ph982:                                        ; preds = %.lr.ph982.preheader, %1017
  %indvars.iv1110 = phi i64 [ %1005, %.lr.ph982.preheader ], [ %indvars.iv.next1111, %1017 ]
  %.0586981 = phi i32 [ %984, %.lr.ph982.preheader ], [ %1018, %1017 ]
  %1007 = srem i32 %.0586981, 10
  %1008 = getelementptr inbounds [4096 x i8], ptr %36, i64 0, i64 %indvars.iv1110
  %1009 = load i8, ptr %1008, align 1, !tbaa !9
  %1010 = trunc nsw i32 %1007 to i8
  %1011 = add i8 %1009, %1010
  store i8 %1011, ptr %1008, align 1, !tbaa !9
  %1012 = sub nsw i32 %.0586981, %1007
  %1013 = icmp ugt i8 %1011, 57
  br i1 %1013, label %1014, label %1017

1014:                                             ; preds = %.lr.ph982
  %1015 = add i8 %1011, -10
  store i8 %1015, ptr %1008, align 1, !tbaa !9
  %1016 = add nsw i32 %1012, 10
  br label %1017

1017:                                             ; preds = %1014, %.lr.ph982
  %.1587 = phi i32 [ %1016, %1014 ], [ %1012, %.lr.ph982 ]
  %indvars.iv.next1111 = add nsw i64 %indvars.iv1110, -1
  %1018 = sdiv i32 %.1587, 10
  %1019 = add i32 %.1587, -10
  %1020 = icmp ult i32 %1019, -19
  %1021 = icmp sgt i64 %indvars.iv1110, 0
  %1022 = and i1 %1020, %1021
  br i1 %1022, label %.lr.ph982, label %.preheader863, !llvm.loop !39

.lr.ph984:                                        ; preds = %.lr.ph984.preheader, %.lr.ph984
  %indvars.iv1113 = phi i64 [ 0, %.lr.ph984.preheader ], [ %indvars.iv.next1114, %.lr.ph984 ]
  %1023 = getelementptr inbounds [4096 x i8], ptr %36, i64 0, i64 %indvars.iv1113
  %1024 = load i8, ptr %1023, align 1, !tbaa !9
  %1025 = zext i8 %1024 to i32
  %1026 = call i32 @putc(i32 noundef %1025, ptr noundef nonnull %953)
  %indvars.iv.next1114 = add nuw nsw i64 %indvars.iv1113, 1
  %exitcond1117.not = icmp eq i64 %indvars.iv.next1114, %wide.trip.count1116
  br i1 %exitcond1117.not, label %._crit_edge985, label %.lr.ph984, !llvm.loop !40

._crit_edge985:                                   ; preds = %.lr.ph984, %.preheader863
  %1027 = call i32 @putc(i32 noundef 10, ptr noundef nonnull %953)
  br label %.loopexit861.outer

.loopexit861.outer:                               ; preds = %.loopexit861.outer.backedge, %._crit_edge985
  %.2596.ph = phi i32 [ 0, %._crit_edge985 ], [ %.2596.ph.be, %.loopexit861.outer.backedge ]
  %1028 = icmp sgt i32 %.2596.ph, %961
  %1029 = icmp slt i32 %.2596.ph, %973
  %1030 = icmp slt i32 %.2596.ph, %974
  %1031 = icmp slt i32 %.2596.ph, %961
  %1032 = add i32 %.2596.ph, -200
  br label %.loopexit861

.loopexit861:                                     ; preds = %.loopexit861.outer, %.thread847
  %1033 = call i32 @getc(ptr noundef %972)
  %1034 = icmp eq i32 %1033, -1
  br i1 %1034, label %1035, label %1036

1035:                                             ; preds = %.loopexit861
  call void @_ZN7libzpaq5errorEPKc(ptr noundef nonnull @.str.35)
  br label %1036

1036:                                             ; preds = %1035, %.loopexit861
  br i1 %1028, label %1037, label %1038

1037:                                             ; preds = %1036
  call void @_ZN7libzpaq5errorEPKc(ptr noundef nonnull @.str.36)
  br label %1038

1038:                                             ; preds = %1037, %1036
  %1039 = icmp eq i32 %1033, 0
  br i1 %1039, label %.preheader862, label %1045

.preheader862:                                    ; preds = %1038
  %1040 = icmp slt i32 %.2596.ph, %961
  br i1 %1040, label %.lr.ph991.preheader, label %._crit_edge992

.lr.ph991.preheader:                              ; preds = %.preheader862
  %1041 = sext i32 %.2596.ph to i64
  %scevgep1121 = getelementptr i8, ptr %37, i64 %1041
  %1042 = sub i32 %974, %.2596.ph
  %1043 = zext i32 %1042 to i64
  %1044 = add nuw nsw i64 %1043, 1
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 1 dereferenceable(1) %scevgep1121, i8 35, i64 %1044, i1 false), !tbaa !9
  br label %._crit_edge992.thread

1045:                                             ; preds = %1038
  %1046 = icmp sgt i32 %1033, 200
  br i1 %1046, label %1047, label %1054

1047:                                             ; preds = %1045
  %1048 = add i32 %1032, %1033
  %.not739 = icmp sgt i32 %1048, %961
  br i1 %.not739, label %.thread847, label %.lr.ph988.preheader

.lr.ph988.preheader:                              ; preds = %1047
  %1049 = sext i32 %.2596.ph to i64
  %scevgep = getelementptr i8, ptr %37, i64 %1049
  %1050 = add nsw i32 %1033, -200
  %1051 = zext nneg i32 %1050 to i64
  call void @llvm.memset.p0.i64(ptr align 1 %scevgep, i8 71, i64 %1051, i1 false), !tbaa !9
  %1052 = add i32 %.2596.ph, %1033
  %1053 = add i32 %1052, -200
  br label %.loopexit861.outer.backedge

1054:                                             ; preds = %1045
  %1055 = add i32 %1033, -137
  %or.cond72 = icmp ult i32 %1055, 64
  %or.cond814 = select i1 %or.cond72, i1 %1029, i1 false
  br i1 %or.cond814, label %1056, label %1074

1056:                                             ; preds = %1054
  %1057 = trunc nuw i32 %1055 to i8
  %1058 = and i8 %1057, 3
  %1059 = or disjoint i8 %1058, 68
  %1060 = add nsw i32 %.2596.ph, 1
  %1061 = sext i32 %.2596.ph to i64
  %1062 = getelementptr inbounds [4096 x i8], ptr %37, i64 0, i64 %1061
  store i8 %1059, ptr %1062, align 1, !tbaa !9
  %1063 = lshr i8 %1057, 2
  %1064 = and i8 %1063, 3
  %1065 = or disjoint i8 %1064, 68
  %1066 = add nsw i32 %.2596.ph, 2
  %1067 = sext i32 %1060 to i64
  %1068 = getelementptr inbounds [4096 x i8], ptr %37, i64 0, i64 %1067
  store i8 %1065, ptr %1068, align 1, !tbaa !9
  %1069 = lshr i8 %1057, 4
  %1070 = or disjoint i8 %1069, 68
  %1071 = add nsw i32 %.2596.ph, 3
  %1072 = sext i32 %1066 to i64
  %1073 = getelementptr inbounds [4096 x i8], ptr %37, i64 0, i64 %1072
  store i8 %1070, ptr %1073, align 1, !tbaa !9
  br label %.loopexit861.outer.backedge

.loopexit861.outer.backedge:                      ; preds = %1056, %1076, %1089, %.lr.ph988.preheader
  %.2596.ph.be = phi i32 [ %1053, %.lr.ph988.preheader ], [ %1092, %1089 ], [ %1085, %1076 ], [ %1071, %1056 ]
  br label %.loopexit861.outer, !llvm.loop !41

1074:                                             ; preds = %1054
  %1075 = add i32 %1033, -73
  %or.cond74 = icmp ult i32 %1075, 64
  %or.cond816 = select i1 %or.cond74, i1 %1030, i1 false
  br i1 %or.cond816, label %1076, label %1088

1076:                                             ; preds = %1074
  %1077 = trunc nuw i32 %1075 to i8
  %1078 = and i8 %1077, 7
  %1079 = or disjoint i8 %1078, 64
  %1080 = add nsw i32 %.2596.ph, 1
  %1081 = sext i32 %.2596.ph to i64
  %1082 = getelementptr inbounds [4096 x i8], ptr %37, i64 0, i64 %1081
  store i8 %1079, ptr %1082, align 1, !tbaa !9
  %1083 = lshr i8 %1077, 3
  %1084 = or disjoint i8 %1083, 64
  %1085 = add nsw i32 %.2596.ph, 2
  %1086 = sext i32 %1080 to i64
  %1087 = getelementptr inbounds [4096 x i8], ptr %37, i64 0, i64 %1086
  store i8 %1084, ptr %1087, align 1, !tbaa !9
  br label %.loopexit861.outer.backedge

1088:                                             ; preds = %1074
  %or.cond76 = icmp ult i32 %1033, 73
  %or.cond817 = select i1 %or.cond76, i1 %1031, i1 false
  br i1 %or.cond817, label %1089, label %.thread847

1089:                                             ; preds = %1088
  %1090 = trunc nuw i32 %1033 to i8
  %1091 = add nuw nsw i8 %1090, 32
  %1092 = add nsw i32 %.2596.ph, 1
  %1093 = sext i32 %.2596.ph to i64
  %1094 = getelementptr inbounds [4096 x i8], ptr %37, i64 0, i64 %1093
  store i8 %1091, ptr %1094, align 1, !tbaa !9
  br label %.loopexit861.outer.backedge

.thread847:                                       ; preds = %1047, %1088
  call void @_ZN7libzpaq5errorEPKc(ptr noundef nonnull @.str.37)
  br label %.loopexit861, !llvm.loop !41

._crit_edge992:                                   ; preds = %.preheader862
  %.not740 = icmp eq i32 %.2596.ph, %961
  br i1 %.not740, label %._crit_edge992.thread, label %1095

1095:                                             ; preds = %._crit_edge992
  call void @_ZN7libzpaq5errorEPKc(ptr noundef nonnull @.str.38)
  br label %._crit_edge992.thread

._crit_edge992.thread:                            ; preds = %.lr.ph991.preheader, %1095, %._crit_edge992
  br i1 %.not779, label %1119, label %1096

1096:                                             ; preds = %._crit_edge992.thread
  %1097 = call i32 @getc(ptr noundef %976)
  switch i32 %1097, label %1099 [
    i32 -1, label %1098
    i32 0, label %1119
  ]

1098:                                             ; preds = %1096
  call void @_ZN7libzpaq5errorEPKc(ptr noundef nonnull @.str.39)
  br label %1099

1099:                                             ; preds = %1098, %1096
  %1100 = icmp sgt i32 %1097, 127
  %1101 = add nsw i32 %1097, -128
  %.0578 = select i1 %1100, i32 -1, i32 1
  %.0577 = select i1 %1100, i32 %1101, i32 %1097
  %1102 = add nsw i32 %.0577, -1
  %1103 = call i32 @getc(ptr noundef %976)
  %1104 = add nsw i32 %1103, -1
  %1105 = call i32 @getc(ptr noundef %976)
  %1106 = add nsw i32 %1105, -1
  %1107 = call i32 @getc(ptr noundef %976)
  %1108 = add nsw i32 %1107, -1
  %1109 = call i32 @getc(ptr noundef %976)
  %1110 = call i32 @getc(ptr noundef %976)
  %1111 = shl i32 %1109, 16
  %1112 = shl i32 %1110, 8
  %1113 = add i32 %1112, %1111
  %1114 = call i32 @getc(ptr noundef %976)
  %1115 = add i32 %1113, %1114
  %1116 = shl i32 %1115, 8
  %1117 = call i32 @getc(ptr noundef %976)
  %1118 = add i32 %1116, %1117
  br label %1119

1119:                                             ; preds = %1096, %1099, %._crit_edge992.thread
  %.0580 = phi i32 [ %1118, %1099 ], [ 0, %._crit_edge992.thread ], [ %1097, %1096 ]
  %.1579 = phi i32 [ %.0578, %1099 ], [ 0, %._crit_edge992.thread ], [ %1097, %1096 ]
  %.1 = phi i32 [ %1102, %1099 ], [ 0, %._crit_edge992.thread ], [ %1097, %1096 ]
  %.0576 = phi i32 [ %1104, %1099 ], [ 0, %._crit_edge992.thread ], [ %1097, %1096 ]
  %.0575 = phi i32 [ %1106, %1099 ], [ 0, %._crit_edge992.thread ], [ %1097, %1096 ]
  %.0574 = phi i32 [ %1108, %1099 ], [ 0, %._crit_edge992.thread ], [ %1097, %1096 ]
  br i1 %977, label %.lr.ph1002, label %._crit_edge1003

.lr.ph1002:                                       ; preds = %1119
  %.not742 = icmp ne i32 %.1579, 0
  %1120 = icmp slt i32 %.1579, 0
  br label %1121

1121:                                             ; preds = %.lr.ph1002, %1180
  %indvars.iv1127 = phi i64 [ 0, %.lr.ph1002 ], [ %indvars.iv.next1128, %1180 ]
  %.15811000 = phi i32 [ %.0580, %.lr.ph1002 ], [ %.2, %1180 ]
  %.1583999 = phi i32 [ %.05821009, %.lr.ph1002 ], [ %.4, %1180 ]
  %.2588998 = phi i32 [ 0, %.lr.ph1002 ], [ %.3589, %1180 ]
  %1122 = getelementptr inbounds [4096 x i8], ptr %37, i64 0, i64 %indvars.iv1127
  %1123 = load i8, ptr %1122, align 1, !tbaa !9
  %1124 = icmp eq i8 %1123, 33
  br i1 %1124, label %1125, label %1127

1125:                                             ; preds = %1121
  %1126 = call i32 @putc(i32 noundef 78, ptr noundef nonnull %953)
  br label %1180

1127:                                             ; preds = %1121
  %.not743 = icmp ne i32 %.2588998, %.1
  %or.cond818.not856 = select i1 %.not742, i1 %.not743, i1 false
  %.not744 = icmp ne i32 %.2588998, %.0576
  %or.cond819.not855 = select i1 %or.cond818.not856, i1 %.not744, i1 false
  %.not745 = icmp ne i32 %.2588998, %.0575
  %or.cond820.not854 = select i1 %or.cond819.not855, i1 %.not745, i1 false
  %1128 = icmp slt i32 %.2588998, %.0574
  %or.cond821 = select i1 %or.cond820.not854, i1 %1128, i1 false
  br i1 %or.cond821, label %1130, label %.preheader859

.preheader859:                                    ; preds = %1127
  %1129 = icmp eq i32 %.1583999, 0
  br i1 %1129, label %.lr.ph994, label %._crit_edge995

1130:                                             ; preds = %1127
  %1131 = lshr i32 %.15811000, 2
  %1132 = zext nneg i32 %1131 to i64
  %1133 = call noundef i64 @_ZNK7libzpaq5ArrayIhE4sizeEv(ptr noundef nonnull align 8 dereferenceable(20) %3)
  %.not746 = icmp ugt i64 %1133, %1132
  br i1 %.not746, label %1135, label %1134

1134:                                             ; preds = %1130
  call void @_ZN7libzpaq5errorEPKc(ptr noundef nonnull @.str.40)
  br label %1135

1135:                                             ; preds = %1134, %1130
  %1136 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZN7libzpaq5ArrayIhEixEm(ptr noundef nonnull align 8 dereferenceable(20) %3, i64 noundef %1132)
  %1137 = load i8, ptr %1136, align 1, !tbaa !9
  %1138 = zext i8 %1137 to i32
  %1139 = shl i32 %.15811000, 1
  %.not747 = and i32 %1139, 6
  %1140 = xor i32 %.not747, 6
  %1141 = lshr i32 %1138, %1140
  %1142 = and i32 %1141, 3
  %1143 = add i32 %.15811000, %.1579
  %1144 = xor i32 %1142, 3
  %spec.select822 = select i1 %1120, i32 %1144, i32 %1142
  %1145 = zext nneg i32 %spec.select822 to i64
  %1146 = getelementptr inbounds [5 x i8], ptr @.str.41, i64 0, i64 %1145
  %1147 = load i8, ptr %1146, align 1, !tbaa !9
  %1148 = sext i8 %1147 to i32
  %1149 = call i32 @putc(i32 noundef %1148, ptr noundef nonnull %953)
  %1150 = add nsw i32 %.2588998, 1
  br label %1180

.lr.ph994:                                        ; preds = %.preheader859, %.lr.ph994
  %1151 = call i32 @getc(ptr noundef %979)
  switch i32 %1151, label %._crit_edge995 [
    i32 -1, label %.thread1177
    i32 0, label %.lr.ph994
  ]

.thread1177:                                      ; preds = %.lr.ph994
  call void @_ZN7libzpaq5errorEPKc(ptr noundef nonnull @.str.42)
  br label %1172

._crit_edge995:                                   ; preds = %.lr.ph994, %.preheader859
  %.2584.lcssa = phi i32 [ %.1583999, %.preheader859 ], [ %1151, %.lr.ph994 ]
  %1152 = icmp sgt i32 %.2584.lcssa, 84
  br i1 %1152, label %1153, label %1158

1153:                                             ; preds = %._crit_edge995
  %1154 = add nsw i32 %.2584.lcssa, -21
  %1155 = lshr i32 %1154, 6
  %1156 = and i32 %1154, -64
  %1157 = sub nsw i32 %.2584.lcssa, %1156
  br label %1172

1158:                                             ; preds = %._crit_edge995
  %1159 = icmp sgt i32 %.2584.lcssa, 20
  br i1 %1159, label %1160, label %1165

1160:                                             ; preds = %1158
  %1161 = add nsw i32 %.2584.lcssa, -5
  %1162 = lshr i32 %1161, 4
  %1163 = and i32 %1161, -16
  %1164 = sub nsw i32 %.2584.lcssa, %1163
  br label %1172

1165:                                             ; preds = %1158
  %1166 = icmp sgt i32 %.2584.lcssa, 4
  br i1 %1166, label %1167, label %1172

1167:                                             ; preds = %1165
  %1168 = add nsw i32 %.2584.lcssa, -1
  %1169 = lshr i32 %1168, 2
  %1170 = and i32 %1168, -4
  %1171 = sub nsw i32 %.2584.lcssa, %1170
  br label %1172

1172:                                             ; preds = %.thread1177, %1165, %1160, %1167, %1153
  %.3593 = phi i32 [ %1155, %1153 ], [ %1162, %1160 ], [ %1169, %1167 ], [ %.2584.lcssa, %1165 ], [ -1, %.thread1177 ]
  %.3 = phi i32 [ %1157, %1153 ], [ %1164, %1160 ], [ %1171, %1167 ], [ 0, %1165 ], [ 0, %.thread1177 ]
  %1173 = sext i32 %.3593 to i64
  %1174 = getelementptr inbounds [6 x i8], ptr @.str.43, i64 0, i64 %1173
  %1175 = load i8, ptr %1174, align 1, !tbaa !9
  %1176 = sext i8 %1175 to i32
  %1177 = call i32 @putc(i32 noundef %1176, ptr noundef nonnull %953)
  %1178 = add nsw i32 %.2588998, 1
  %1179 = add i32 %.15811000, %.1579
  br label %1180

1180:                                             ; preds = %1125, %1172, %1135
  %.3589 = phi i32 [ %.2588998, %1125 ], [ %1150, %1135 ], [ %1178, %1172 ]
  %.4 = phi i32 [ %.1583999, %1125 ], [ %.1583999, %1135 ], [ %.3, %1172 ]
  %.2 = phi i32 [ %.15811000, %1125 ], [ %1143, %1135 ], [ %1179, %1172 ]
  %indvars.iv.next1128 = add nuw nsw i64 %indvars.iv1127, 1
  %exitcond1131.not = icmp eq i64 %indvars.iv.next1128, %wide.trip.count1130
  br i1 %exitcond1131.not, label %._crit_edge1003, label %1121, !llvm.loop !42

._crit_edge1003:                                  ; preds = %1180, %1119
  %.1583.lcssa = phi i32 [ %.05821009, %1119 ], [ %.4, %1180 ]
  %1181 = call i32 @putc(i32 noundef 10, ptr noundef nonnull %953)
  %1182 = call i32 @putc(i32 noundef 43, ptr noundef nonnull %953)
  %1183 = call i32 @putc(i32 noundef 10, ptr noundef nonnull %953)
  br i1 %977, label %.lr.ph1007, label %._crit_edge1008

.lr.ph1007:                                       ; preds = %._crit_edge1003, %.lr.ph1007
  %indvars.iv1132 = phi i64 [ %indvars.iv.next1133, %.lr.ph1007 ], [ 0, %._crit_edge1003 ]
  %1184 = getelementptr inbounds [4096 x i8], ptr %37, i64 0, i64 %indvars.iv1132
  %1185 = load i8, ptr %1184, align 1, !tbaa !9
  %1186 = zext i8 %1185 to i32
  %1187 = call i32 @putc(i32 noundef %1186, ptr noundef nonnull %953)
  %indvars.iv.next1133 = add nuw nsw i64 %indvars.iv1132, 1
  %exitcond1136.not = icmp eq i64 %indvars.iv.next1133, %wide.trip.count1135
  br i1 %exitcond1136.not, label %._crit_edge1008, label %.lr.ph1007, !llvm.loop !43

._crit_edge1008:                                  ; preds = %.lr.ph1007, %._crit_edge1003
  %1188 = call i32 @putc(i32 noundef 10, ptr noundef nonnull %953)
  %1189 = call i32 @getc(ptr noundef %957)
  %1190 = add nsw i32 %1189, -1
  %1191 = icmp eq i32 %1190, -2
  br i1 %1191, label %._crit_edge1012, label %980, !llvm.loop !44

._crit_edge1012:                                  ; preds = %._crit_edge1008, %967
  %1192 = call i32 @fclose(ptr noundef nonnull %953)
  %1193 = select i1 %.not779, i64 2, i64 3
  br label %1194

1194:                                             ; preds = %._crit_edge1012, %1194
  %indvars.iv1137 = phi i64 [ %1193, %._crit_edge1012 ], [ %indvars.iv.next1138, %1194 ]
  %1195 = getelementptr inbounds [4 x ptr], ptr %31, i64 0, i64 %indvars.iv1137
  %1196 = load ptr, ptr %1195, align 8, !tbaa !5
  %1197 = call i32 @fclose(ptr noundef %1196)
  %indvars.iv.next1138 = add nsw i64 %indvars.iv1137, -1
  %.not1194 = icmp eq i64 %indvars.iv1137, 0
  br i1 %.not1194, label %1198, label %1194, !llvm.loop !45

1198:                                             ; preds = %1194
  br i1 %881, label %.preheader, label %.loopexit

.preheader:                                       ; preds = %1198, %.preheader
  %indvars.iv1140 = phi i64 [ %indvars.iv.next1141, %.preheader ], [ 0, %1198 ]
  %1199 = getelementptr inbounds [4 x %struct.Job], ptr %22, i64 0, i64 %indvars.iv1140, i32 2
  %1200 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %1199) #13
  %1201 = call i32 @remove(ptr noundef %1200) #13
  %indvars.iv.next1141 = add nuw nsw i64 %indvars.iv1140, 1
  %exitcond1144.not = icmp eq i64 %indvars.iv.next1141, %wide.trip.count1104
  br i1 %exitcond1144.not, label %.loopexit, label %.preheader, !llvm.loop !46

.loopexit:                                        ; preds = %.preheader, %1198
  %1202 = load ptr, ptr %951, align 8, !tbaa !5
  %1203 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.44, ptr noundef %1202)
  call void @llvm.lifetime.end.p0(i64 4096, ptr nonnull %37) #13
  call void @llvm.lifetime.end.p0(i64 4096, ptr nonnull %36) #13
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %31) #13
  %1204 = getelementptr inbounds i8, ptr %22, i64 216
  call void @_ZN3JobD2Ev(ptr noundef nonnull align 8 dereferenceable(72) %1204) #13
  %1205 = getelementptr inbounds i8, ptr %22, i64 144
  call void @_ZN3JobD2Ev(ptr noundef nonnull align 8 dereferenceable(72) %1205) #13
  %1206 = getelementptr inbounds i8, ptr %22, i64 72
  call void @_ZN3JobD2Ev(ptr noundef nonnull align 8 dereferenceable(72) %1206) #13
  call void @_ZN3JobD2Ev(ptr noundef nonnull align 8 dereferenceable(72) %22) #13
  call void @llvm.lifetime.end.p0(i64 288, ptr nonnull %22) #13
  br label %1211

1207:                                             ; preds = %948, %925, %920
  %.pn754.pn.pn = phi { ptr, i32 } [ %.pn754.pn, %920 ], [ %.pn.pn, %948 ], [ %926, %925 ]
  %1208 = getelementptr inbounds i8, ptr %22, i64 216
  call void @_ZN3JobD2Ev(ptr noundef nonnull align 8 dereferenceable(72) %1208) #13
  %1209 = getelementptr inbounds i8, ptr %22, i64 144
  call void @_ZN3JobD2Ev(ptr noundef nonnull align 8 dereferenceable(72) %1209) #13
  %1210 = getelementptr inbounds i8, ptr %22, i64 72
  call void @_ZN3JobD2Ev(ptr noundef nonnull align 8 dereferenceable(72) %1210) #13
  call void @_ZN3JobD2Ev(ptr noundef nonnull align 8 dereferenceable(72) %22) #13
  call void @llvm.lifetime.end.p0(i64 288, ptr nonnull %22) #13
  br label %1217

1211:                                             ; preds = %880, %.loopexit, %877
  %1212 = call i64 @clock() #13
  %1213 = sub nsw i64 %1212, %38
  %1214 = sitofp i64 %1213 to double
  %1215 = fdiv double %1214, 1.000000e+06
  %1216 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.45, double noundef %1215)
  call void @_ZN7libzpaq5ArrayIjED2Ev(ptr noundef nonnull align 8 dereferenceable(20) %4) #13
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %4) #13
  call void @_ZN7libzpaq5ArrayIhED2Ev(ptr noundef nonnull align 8 dereferenceable(20) %3) #13
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %3) #13
  ret i32 0

1217:                                             ; preds = %1207, %879, %114
  %.pn795.pn.pn.pn = phi { ptr, i32 } [ %.pn795.pn.pn, %879 ], [ %115, %114 ], [ %.pn754.pn.pn, %1207 ]
  call void @_ZN7libzpaq5ArrayIjED2Ev(ptr noundef nonnull align 8 dereferenceable(20) %4) #13
  br label %1218

1218:                                             ; preds = %1217, %112
  %.pn795.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn795.pn.pn.pn, %1217 ], [ %113, %112 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %4) #13
  call void @_ZN7libzpaq5ArrayIhED2Ev(ptr noundef nonnull align 8 dereferenceable(20) %3) #13
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %3) #13
  resume { ptr, i32 } %.pn795.pn.pn.pn.pn
}

; Function Attrs: nounwind
declare i64 @clock() local_unnamed_addr #6

; Function Attrs: inlinehint mustprogress nofree nounwind willreturn memory(read) uwtable
declare i32 @atoi(ptr nocapture noundef nonnull) local_unnamed_addr #7

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7libzpaq5ArrayIhEC2Emi(ptr noundef nonnull align 8 dereferenceable(20), i64 noundef, i32 noundef) unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7libzpaq5ArrayIjEC2Emi(ptr noundef nonnull align 8 dereferenceable(20), i64 noundef, i32 noundef) unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7libzpaq5ArrayIjE6resizeEmi(ptr noundef nonnull align 8 dereferenceable(20), i64 noundef, i32 noundef) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZNK7libzpaq5ArrayIhE4sizeEv(ptr noundef nonnull align 8 dereferenceable(20)) local_unnamed_addr #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZN7libzpaq5ArrayIjEixEm(ptr noundef nonnull align 8 dereferenceable(20), i64 noundef) local_unnamed_addr #0 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_S5_(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(32), i8 noundef signext) local_unnamed_addr #8

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(32), ptr noundef) local_unnamed_addr #8

; Function Attrs: mustprogress nounwind uwtable
declare void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef, ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #0 align 2

; Function Attrs: nofree nounwind
declare noundef i32 @getc(ptr nocapture noundef) local_unnamed_addr #4

; Function Attrs: nofree nounwind
declare noundef i32 @putc(i32 noundef, ptr nocapture noundef) local_unnamed_addr #4

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

; Function Attrs: nounwind
declare i32 @pthread_attr_init(ptr noundef) local_unnamed_addr #6

; Function Attrs: nounwind
declare i32 @pthread_attr_setdetachstate(ptr noundef, i32 noundef) local_unnamed_addr #6

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN3JobC2Ev(ptr noundef nonnull align 8 dereferenceable(72)) unnamed_addr #10 align 2

; Function Attrs: mustprogress nounwind uwtable
declare noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #0 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EERKS8_PKS5_(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(32), ptr noundef) local_unnamed_addr #8

; Function Attrs: nounwind
declare i32 @pthread_create(ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #6

declare i32 @pthread_join(i64 noundef, ptr noundef) local_unnamed_addr #11

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN3JobD2Ev(ptr noundef nonnull align 8 dereferenceable(72)) unnamed_addr #10 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN7libzpaq5ArrayIjED2Ev(ptr noundef nonnull align 8 dereferenceable(20)) unnamed_addr #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN7libzpaq5ArrayIhED2Ev(ptr noundef nonnull align 8 dereferenceable(20)) unnamed_addr #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #0 align 2

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

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

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

attributes #0 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { noreturn nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #4 = { nofree nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { mustprogress norecurse uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #7 = { inlinehint mustprogress nofree nounwind willreturn memory(read) 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 #8 = { inlinehint mustprogress 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 #9 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #10 = { inlinehint mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #11 = { "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 #12 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #13 = { nounwind }
attributes #14 = { noreturn nounwind }
attributes #15 = { nounwind willreturn memory(read) }
attributes #16 = { cold }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!7, !7, i64 0}
!10 = !{!11, !11, i64 0}
!11 = !{!"int", !7, i64 0}
!12 = distinct !{!12, !13}
!13 = !{!"llvm.loop.mustprogress"}
!14 = distinct !{!14, !13}
!15 = distinct !{!15, !13}
!16 = distinct !{!16, !13}
!17 = distinct !{!17, !13}
!18 = distinct !{!18, !13}
!19 = distinct !{!19, !13}
!20 = distinct !{!20, !13}
!21 = distinct !{!21, !13}
!22 = distinct !{!22, !13}
!23 = distinct !{!23, !13}
!24 = distinct !{!24, !13}
!25 = distinct !{!25, !13}
!26 = distinct !{!26, !13}
!27 = !{!28, !11, i64 0}
!28 = !{!"_ZTS3Job", !11, i64 0, !29, i64 8, !29, i64 40}
!29 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !30, i64 0, !31, i64 8, !7, i64 16}
!30 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !6, i64 0}
!31 = !{!"long", !7, i64 0}
!32 = distinct !{!32, !13}
!33 = !{!31, !31, i64 0}
!34 = distinct !{!34, !13}
!35 = distinct !{!35, !13}
!36 = distinct !{!36, !13}
!37 = distinct !{!37, !13}
!38 = distinct !{!38, !13}
!39 = distinct !{!39, !13}
!40 = distinct !{!40, !13}
!41 = distinct !{!41, !13}
!42 = distinct !{!42, !13}
!43 = distinct !{!43, !13}
!44 = distinct !{!44, !13}
!45 = distinct !{!45, !13}
!46 = distinct !{!46, !13}


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