; LLVM IR from fhanau/Efficient-Compression-Tool :: src (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"

%"struct.std::atomic.12" = type { %"struct.std::__atomic_base.13" }
%"struct.std::__atomic_base.13" = type { i32 }
%struct.ECTOptions = type { i32, i32, i8, i8, i32, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i32, i32, i8 }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl" }
%"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl" = type { %"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl_data" }
%"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.14" = type { %"struct.std::_Vector_base.15" }
%"struct.std::_Vector_base.15" = type { %"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::filesystem::__cxx11::path" = type { %"class.std::__cxx11::basic_string", %"struct.std::filesystem::__cxx11::path::_List" }
%"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] }
%"struct.std::filesystem::__cxx11::path::_List" = type { %"class.std::unique_ptr" }
%"class.std::unique_ptr" = type { %"struct.std::__uniq_ptr_data" }
%"struct.std::__uniq_ptr_data" = type { %"class.std::__uniq_ptr_impl" }
%"class.std::__uniq_ptr_impl" = type { %"class.std::tuple" }
%"class.std::tuple" = type { %"struct.std::_Tuple_impl" }
%"struct.std::_Tuple_impl" = type { %"struct.std::_Head_base.6" }
%"struct.std::_Head_base.6" = type { ptr }
%"class.std::allocator" = type { i8 }
%"class.std::filesystem::__cxx11::recursive_directory_iterator" = type { %"class.std::__shared_ptr" }
%"class.std::__shared_ptr" = type { ptr, %"class.std::__shared_count" }
%"class.std::__shared_count" = type { ptr }
%"class.std::vector.7" = type { %"struct.std::_Vector_base.8" }
%"struct.std::_Vector_base.8" = type { %"struct.std::_Vector_base<std::filesystem::__cxx11::path, std::allocator<std::filesystem::__cxx11::path>>::_Vector_impl" }
%"struct.std::_Vector_base<std::filesystem::__cxx11::path, std::allocator<std::filesystem::__cxx11::path>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::filesystem::__cxx11::path, std::allocator<std::filesystem::__cxx11::path>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::filesystem::__cxx11::path, std::allocator<std::filesystem::__cxx11::path>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::allocator.9" = type { i8 }
%"class.std::filesystem::__cxx11::directory_iterator" = type { %"class.std::__shared_ptr.19" }
%"class.std::__shared_ptr.19" = type { ptr, %"class.std::__shared_count" }
%"class.std::vector.21" = type { %"struct.std::_Vector_base.22" }
%"struct.std::_Vector_base.22" = type { %"struct.std::_Vector_base<std::thread, std::allocator<std::thread>>::_Vector_impl" }
%"struct.std::_Vector_base<std::thread, std::allocator<std::thread>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::thread, std::allocator<std::thread>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::thread, std::allocator<std::thread>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.std::atomic" = type { %"struct.std::__atomic_base" }
%"struct.std::__atomic_base" = type { i64 }
%"class.__gnu_cxx::__normal_iterator" = type { ptr }
%"class.__gnu_cxx::__normal_iterator.26" = type { ptr }

@.str.22 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.33 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.34 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.35 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.36 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.37 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.38 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.39 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.40 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.41 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.42 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.43 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.44 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.45 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.46 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.47 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.48 = external hidden unnamed_addr constant [34 x i8], align 1

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_Z11fileHandlerPKcRK10ECTOptionsi(ptr noundef, ptr noundef nonnull align 4 dereferenceable(40), i32 noundef) #0

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

; Function Attrs: mustprogress nounwind uwtable
declare void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #2 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 #0 align 2

declare i32 @__gxx_personality_v0(...)

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_Z10zipHandlerSt6vectorIiSaIiEEPPKciRK10ECTOptions(ptr noundef, ptr noundef, i32 noundef, ptr noundef nonnull align 4 dereferenceable(40)) #0

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNSt10filesystem15is_regular_fileERKNS_7__cxx114pathE(ptr noundef nonnull align 8 dereferenceable(40)) #4

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt10filesystem7__cxx114pathC2IPKcS1_EERKT_NS1_6formatE(ptr noundef nonnull align 8 dereferenceable(40), ptr noundef nonnull align 8 dereferenceable(8), i8 noundef zeroext) unnamed_addr #0 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt10filesystem7__cxx1128recursive_directory_iteratorC2ERKNS0_4pathE(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(40)) unnamed_addr #0 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt10filesystem7__cxx1128recursive_directory_iteratorC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(16)) unnamed_addr #2 align 2

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

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

; Function Attrs: nounwind
declare void @_ZNSt10filesystem7__cxx1128recursive_directory_iteratorD1Ev(ptr noundef nonnull align 8 dereferenceable(16)) unnamed_addr #5

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(40) ptr @_ZNSt6vectorINSt10filesystem7__cxx114pathESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorINSt10filesystem7__cxx114pathESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #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 %"struct.std::atomic.12", align 4
  %7 = alloca %struct.ECTOptions, align 4
  %8 = alloca %"class.std::vector", align 8
  %9 = alloca i32, align 4
  %10 = alloca i32, align 4
  %11 = alloca i32, align 4
  %12 = alloca i32, align 4
  %13 = alloca ptr, align 8
  %14 = alloca i32, align 4
  %15 = alloca i32, align 4
  %16 = alloca %"class.std::vector", align 8
  %17 = alloca %"class.std::vector.14", align 8
  %18 = alloca i32, align 4
  %19 = alloca %"class.std::filesystem::__cxx11::path", align 8
  %20 = alloca %"class.std::__cxx11::basic_string", align 8
  %21 = alloca %"class.std::allocator", align 1
  %22 = alloca %"class.std::filesystem::__cxx11::path", align 8
  %23 = alloca %"class.std::filesystem::__cxx11::recursive_directory_iterator", align 8
  %24 = alloca %"class.std::filesystem::__cxx11::path", align 8
  %25 = alloca %"class.std::filesystem::__cxx11::recursive_directory_iterator", align 8
  %26 = alloca %"class.std::vector.7", align 8
  %27 = alloca %"class.std::filesystem::__cxx11::recursive_directory_iterator", align 8
  %28 = alloca %"class.std::filesystem::__cxx11::recursive_directory_iterator", align 8
  %29 = alloca %"class.std::allocator.9", align 1
  %30 = alloca i32, align 4
  %31 = alloca %"class.std::__cxx11::basic_string", align 8
  %32 = alloca %"class.std::filesystem::__cxx11::directory_iterator", align 8
  %33 = alloca %"class.std::filesystem::__cxx11::path", align 8
  %34 = alloca %"class.std::filesystem::__cxx11::directory_iterator", align 8
  %35 = alloca %"class.std::vector.7", align 8
  %36 = alloca %"class.std::filesystem::__cxx11::directory_iterator", align 8
  %37 = alloca %"class.std::filesystem::__cxx11::directory_iterator", align 8
  %38 = alloca %"class.std::allocator.9", align 1
  %39 = alloca i32, align 4
  %40 = alloca %"class.std::__cxx11::basic_string", align 8
  %41 = alloca %"class.std::vector.21", align 8
  %42 = alloca %"struct.std::atomic", align 8
  %43 = alloca i32, align 4
  %44 = alloca ptr, align 8
  %45 = alloca ptr, align 8
  %46 = alloca ptr, align 8
  %47 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %48 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %49 = alloca ptr, align 8
  %50 = alloca ptr, align 8
  %51 = alloca %"class.__gnu_cxx::__normal_iterator.26", align 8
  %52 = alloca %"class.__gnu_cxx::__normal_iterator.26", align 8
  %53 = alloca ptr, align 8
  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 4, ptr %6) #12
  call void @llvm.memset.p0.i64(ptr align 4 %6, i8 0, i64 4, i1 false)
  call void @llvm.lifetime.start.p0(i64 40, ptr %7) #12
  %54 = getelementptr inbounds %struct.ECTOptions, ptr %7, i32 0, i32 2
  store i8 0, ptr %54, align 4, !tbaa !11
  %55 = getelementptr inbounds %struct.ECTOptions, ptr %7, i32 0, i32 3
  store i8 0, ptr %55, align 1, !tbaa !14
  %56 = getelementptr inbounds %struct.ECTOptions, ptr %7, i32 0, i32 4
  store i32 0, ptr %56, align 4, !tbaa !15
  %57 = getelementptr inbounds %struct.ECTOptions, ptr %7, i32 0, i32 0
  store i32 3, ptr %57, align 4, !tbaa !16
  %58 = getelementptr inbounds %struct.ECTOptions, ptr %7, i32 0, i32 16
  store i8 0, ptr %58, align 1, !tbaa !17
  %59 = getelementptr inbounds %struct.ECTOptions, ptr %7, i32 0, i32 6
  store i8 1, ptr %59, align 1, !tbaa !18
  %60 = getelementptr inbounds %struct.ECTOptions, ptr %7, i32 0, i32 5
  store i8 1, ptr %60, align 4, !tbaa !19
  %61 = getelementptr inbounds %struct.ECTOptions, ptr %7, i32 0, i32 9
  store i8 0, ptr %61, align 4, !tbaa !20
  %62 = getelementptr inbounds %struct.ECTOptions, ptr %7, i32 0, i32 10
  store i8 0, ptr %62, align 1, !tbaa !21
  %63 = getelementptr inbounds %struct.ECTOptions, ptr %7, i32 0, i32 11
  store i8 0, ptr %63, align 2, !tbaa !22
  %64 = getelementptr inbounds %struct.ECTOptions, ptr %7, i32 0, i32 7
  store i8 1, ptr %64, align 2, !tbaa !23
  %65 = getelementptr inbounds %struct.ECTOptions, ptr %7, i32 0, i32 8
  store i8 0, ptr %65, align 1, !tbaa !24
  %66 = getelementptr inbounds %struct.ECTOptions, ptr %7, i32 0, i32 17
  store i32 0, ptr %66, align 4, !tbaa !25
  %67 = getelementptr inbounds %struct.ECTOptions, ptr %7, i32 0, i32 18
  store i32 0, ptr %67, align 4, !tbaa !26
  %68 = getelementptr inbounds %struct.ECTOptions, ptr %7, i32 0, i32 12
  store i8 0, ptr %68, align 1, !tbaa !27
  %69 = getelementptr inbounds %struct.ECTOptions, ptr %7, i32 0, i32 13
  store i8 0, ptr %69, align 4, !tbaa !28
  %70 = getelementptr inbounds %struct.ECTOptions, ptr %7, i32 0, i32 14
  store i8 0, ptr %70, align 1, !tbaa !29
  %71 = getelementptr inbounds %struct.ECTOptions, ptr %7, i32 0, i32 15
  store i8 0, ptr %71, align 2, !tbaa !30
  %72 = getelementptr inbounds %struct.ECTOptions, ptr %7, i32 0, i32 1
  store i32 0, ptr %72, align 4, !tbaa !31
  %73 = getelementptr inbounds %struct.ECTOptions, ptr %7, i32 0, i32 19
  store i8 0, ptr %73, align 4, !tbaa !32
  call void @llvm.lifetime.start.p0(i64 24, ptr %8) #12
  call void @_ZNSt6vectorIiSaIiEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %8) #12
  call void @llvm.lifetime.start.p0(i64 4, ptr %9) #12
  store i32 0, ptr %9, align 4, !tbaa !5
  %74 = load i32, ptr %4, align 4, !tbaa !5
  %75 = icmp sge i32 %74, 2
  br i1 %75, label %76, label %791

76:                                               ; preds = %2
  call void @llvm.lifetime.start.p0(i64 4, ptr %10) #12
  store i32 1, ptr %10, align 4, !tbaa !5
  br label %77

77:                                               ; preds = %484, %76
  %78 = load i32, ptr %10, align 4, !tbaa !5
  %79 = load i32, ptr %4, align 4, !tbaa !5
  %80 = icmp slt i32 %78, %79
  br i1 %80, label %82, label %81

81:                                               ; preds = %77
  store i32 2, ptr %11, align 4
  br label %487

82:                                               ; preds = %77
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #12
  %83 = load ptr, ptr %5, align 8, !tbaa !9
  %84 = load i32, ptr %10, align 4, !tbaa !5
  %85 = sext i32 %84 to i64
  %86 = getelementptr inbounds ptr, ptr %83, i64 %85
  %87 = load ptr, ptr %86, align 8, !tbaa !9
  %88 = call i64 @strnlen(ptr noundef %87, i64 noundef 64) #13
  %89 = trunc i64 %88 to i32
  store i32 %89, ptr %12, align 4, !tbaa !5
  %90 = load ptr, ptr %5, align 8, !tbaa !9
  %91 = load i32, ptr %10, align 4, !tbaa !5
  %92 = sext i32 %91 to i64
  %93 = getelementptr inbounds ptr, ptr %90, i64 %92
  %94 = load ptr, ptr %93, align 8, !tbaa !9
  %95 = call i32 @strncmp(ptr noundef %94, ptr noundef @.str.22, i64 noundef 1) #13
  %96 = icmp ne i32 %95, 0
  br i1 %96, label %97, label %105

97:                                               ; preds = %82
  invoke void @_ZNSt6vectorIiSaIiEE9push_backERKi(ptr noundef nonnull align 8 dereferenceable(24) %8, ptr noundef nonnull align 4 dereferenceable(4) %10)
          to label %98 unwind label %101

98:                                               ; preds = %97
  %99 = load i32, ptr %9, align 4, !tbaa !5
  %100 = add nsw i32 %99, 1
  store i32 %100, ptr %9, align 4, !tbaa !5
  br label %480

101:                                              ; preds = %450, %223, %97
  %102 = landingpad { ptr, i32 }
          cleanup
  %103 = extractvalue { ptr, i32 } %102, 0
  store ptr %103, ptr %13, align 8
  %104 = extractvalue { ptr, i32 } %102, 1
  store i32 %104, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #12
  br label %797

105:                                              ; preds = %82
  %106 = load ptr, ptr %5, align 8, !tbaa !9
  %107 = load i32, ptr %10, align 4, !tbaa !5
  %108 = sext i32 %107 to i64
  %109 = getelementptr inbounds ptr, ptr %106, i64 %108
  %110 = load ptr, ptr %109, align 8, !tbaa !9
  %111 = load i32, ptr %12, align 4, !tbaa !5
  %112 = sext i32 %111 to i64
  %113 = call i32 @strncmp(ptr noundef %110, ptr noundef @.str.23, i64 noundef %112) #13
  %114 = icmp eq i32 %113, 0
  br i1 %114, label %115, label %117

115:                                              ; preds = %105
  %116 = getelementptr inbounds %struct.ECTOptions, ptr %7, i32 0, i32 2
  store i8 1, ptr %116, align 4, !tbaa !11
  br label %479

117:                                              ; preds = %105
  %118 = load ptr, ptr %5, align 8, !tbaa !9
  %119 = load i32, ptr %10, align 4, !tbaa !5
  %120 = sext i32 %119 to i64
  %121 = getelementptr inbounds ptr, ptr %118, i64 %120
  %122 = load ptr, ptr %121, align 8, !tbaa !9
  %123 = load i32, ptr %12, align 4, !tbaa !5
  %124 = sext i32 %123 to i64
  %125 = call i32 @strncmp(ptr noundef %122, ptr noundef @.str.24, i64 noundef %124) #13
  %126 = icmp eq i32 %125, 0
  br i1 %126, label %127, label %129

127:                                              ; preds = %117
  %128 = getelementptr inbounds %struct.ECTOptions, ptr %7, i32 0, i32 3
  store i8 1, ptr %128, align 1, !tbaa !14
  br label %478

129:                                              ; preds = %117
  %130 = load ptr, ptr %5, align 8, !tbaa !9
  %131 = load i32, ptr %10, align 4, !tbaa !5
  %132 = sext i32 %131 to i64
  %133 = getelementptr inbounds ptr, ptr %130, i64 %132
  %134 = load ptr, ptr %133, align 8, !tbaa !9
  %135 = load i32, ptr %12, align 4, !tbaa !5
  %136 = sext i32 %135 to i64
  %137 = call i32 @strncmp(ptr noundef %134, ptr noundef @.str.25, i64 noundef %136) #13
  %138 = icmp eq i32 %137, 0
  br i1 %138, label %139, label %141

139:                                              ; preds = %129
  %140 = getelementptr inbounds %struct.ECTOptions, ptr %7, i32 0, i32 4
  store i32 2, ptr %140, align 4, !tbaa !15
  br label %477

141:                                              ; preds = %129
  %142 = load ptr, ptr %5, align 8, !tbaa !9
  %143 = load i32, ptr %10, align 4, !tbaa !5
  %144 = sext i32 %143 to i64
  %145 = getelementptr inbounds ptr, ptr %142, i64 %144
  %146 = load ptr, ptr %145, align 8, !tbaa !9
  %147 = load i32, ptr %12, align 4, !tbaa !5
  %148 = sext i32 %147 to i64
  %149 = call i32 @strncmp(ptr noundef %146, ptr noundef @.str.26, i64 noundef %148) #13
  %150 = icmp eq i32 %149, 0
  br i1 %150, label %151, label %153

151:                                              ; preds = %141
  %152 = getelementptr inbounds %struct.ECTOptions, ptr %7, i32 0, i32 4
  store i32 1, ptr %152, align 4, !tbaa !15
  br label %476

153:                                              ; preds = %141
  %154 = load ptr, ptr %5, align 8, !tbaa !9
  %155 = load i32, ptr %10, align 4, !tbaa !5
  %156 = sext i32 %155 to i64
  %157 = getelementptr inbounds ptr, ptr %154, i64 %156
  %158 = load ptr, ptr %157, align 8, !tbaa !9
  %159 = getelementptr inbounds i8, ptr %158, i64 0
  %160 = load i8, ptr %159, align 1, !tbaa !33
  %161 = sext i8 %160 to i32
  %162 = icmp eq i32 %161, 45
  br i1 %162, label %163, label %188

163:                                              ; preds = %153
  %164 = load ptr, ptr %5, align 8, !tbaa !9
  %165 = load i32, ptr %10, align 4, !tbaa !5
  %166 = sext i32 %165 to i64
  %167 = getelementptr inbounds ptr, ptr %164, i64 %166
  %168 = load ptr, ptr %167, align 8, !tbaa !9
  %169 = getelementptr inbounds i8, ptr %168, i64 1
  %170 = load i8, ptr %169, align 1, !tbaa !33
  %171 = sext i8 %170 to i32
  %172 = call i32 @isdigit(i32 noundef %171) #13
  %173 = icmp ne i32 %172, 0
  br i1 %173, label %174, label %188

174:                                              ; preds = %163
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #12
  %175 = load ptr, ptr %5, align 8, !tbaa !9
  %176 = load i32, ptr %10, align 4, !tbaa !5
  %177 = sext i32 %176 to i64
  %178 = getelementptr inbounds ptr, ptr %175, i64 %177
  %179 = load ptr, ptr %178, align 8, !tbaa !9
  %180 = getelementptr inbounds i8, ptr %179, i64 1
  %181 = call i32 @atoi(ptr noundef %180) #13
  store i32 %181, ptr %15, align 4, !tbaa !5
  %182 = load i32, ptr %15, align 4, !tbaa !5
  %183 = icmp ne i32 %182, 0
  br i1 %183, label %185, label %184

184:                                              ; preds = %174
  store i32 1, ptr %15, align 4, !tbaa !5
  br label %185

185:                                              ; preds = %184, %174
  %186 = load i32, ptr %15, align 4, !tbaa !5
  %187 = getelementptr inbounds %struct.ECTOptions, ptr %7, i32 0, i32 0
  store i32 %186, ptr %187, align 4, !tbaa !16
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #12
  br label %475

188:                                              ; preds = %163, %153
  %189 = load ptr, ptr %5, align 8, !tbaa !9
  %190 = load i32, ptr %10, align 4, !tbaa !5
  %191 = sext i32 %190 to i64
  %192 = getelementptr inbounds ptr, ptr %189, i64 %191
  %193 = load ptr, ptr %192, align 8, !tbaa !9
  %194 = load i32, ptr %12, align 4, !tbaa !5
  %195 = sext i32 %194 to i64
  %196 = call i32 @strncmp(ptr noundef %193, ptr noundef @.str.27, i64 noundef %195) #13
  %197 = icmp eq i32 %196, 0
  br i1 %197, label %198, label %200

198:                                              ; preds = %188
  %199 = getelementptr inbounds %struct.ECTOptions, ptr %7, i32 0, i32 10
  store i8 1, ptr %199, align 1, !tbaa !21
  br label %474

200:                                              ; preds = %188
  %201 = load ptr, ptr %5, align 8, !tbaa !9
  %202 = load i32, ptr %10, align 4, !tbaa !5
  %203 = sext i32 %202 to i64
  %204 = getelementptr inbounds ptr, ptr %201, i64 %203
  %205 = load ptr, ptr %204, align 8, !tbaa !9
  %206 = load i32, ptr %12, align 4, !tbaa !5
  %207 = sext i32 %206 to i64
  %208 = call i32 @strncmp(ptr noundef %205, ptr noundef @.str.28, i64 noundef %207) #13
  %209 = icmp eq i32 %208, 0
  br i1 %209, label %210, label %213

210:                                              ; preds = %200
  %211 = getelementptr inbounds %struct.ECTOptions, ptr %7, i32 0, i32 11
  store i8 1, ptr %211, align 2, !tbaa !22
  %212 = getelementptr inbounds %struct.ECTOptions, ptr %7, i32 0, i32 10
  store i8 1, ptr %212, align 1, !tbaa !21
  br label %473

213:                                              ; preds = %200
  %214 = load ptr, ptr %5, align 8, !tbaa !9
  %215 = load i32, ptr %10, align 4, !tbaa !5
  %216 = sext i32 %215 to i64
  %217 = getelementptr inbounds ptr, ptr %214, i64 %216
  %218 = load ptr, ptr %217, align 8, !tbaa !9
  %219 = load i32, ptr %12, align 4, !tbaa !5
  %220 = sext i32 %219 to i64
  %221 = call i32 @strncmp(ptr noundef %218, ptr noundef @.str.29, i64 noundef %220) #13
  %222 = icmp eq i32 %221, 0
  br i1 %222, label %223, label %225

223:                                              ; preds = %213
  invoke void @_ZL5Usagev()
          to label %224 unwind label %101

224:                                              ; preds = %223
  store i32 0, ptr %3, align 4
  store i32 1, ptr %11, align 4
  br label %481

225:                                              ; preds = %213
  %226 = load ptr, ptr %5, align 8, !tbaa !9
  %227 = load i32, ptr %10, align 4, !tbaa !5
  %228 = sext i32 %227 to i64
  %229 = getelementptr inbounds ptr, ptr %226, i64 %228
  %230 = load ptr, ptr %229, align 8, !tbaa !9
  %231 = load i32, ptr %12, align 4, !tbaa !5
  %232 = sext i32 %231 to i64
  %233 = call i32 @strncmp(ptr noundef %230, ptr noundef @.str.30, i64 noundef %232) #13
  %234 = icmp eq i32 %233, 0
  br i1 %234, label %235, label %237

235:                                              ; preds = %225
  %236 = getelementptr inbounds %struct.ECTOptions, ptr %7, i32 0, i32 7
  store i8 0, ptr %236, align 2, !tbaa !23
  br label %471

237:                                              ; preds = %225
  %238 = load ptr, ptr %5, align 8, !tbaa !9
  %239 = load i32, ptr %10, align 4, !tbaa !5
  %240 = sext i32 %239 to i64
  %241 = getelementptr inbounds ptr, ptr %238, i64 %240
  %242 = load ptr, ptr %241, align 8, !tbaa !9
  %243 = load i32, ptr %12, align 4, !tbaa !5
  %244 = sext i32 %243 to i64
  %245 = call i32 @strncmp(ptr noundef %242, ptr noundef @.str.31, i64 noundef %244) #13
  %246 = icmp eq i32 %245, 0
  br i1 %246, label %247, label %249

247:                                              ; preds = %237
  %248 = getelementptr inbounds %struct.ECTOptions, ptr %7, i32 0, i32 19
  store i8 1, ptr %248, align 4, !tbaa !32
  br label %470

249:                                              ; preds = %237
  %250 = load ptr, ptr %5, align 8, !tbaa !9
  %251 = load i32, ptr %10, align 4, !tbaa !5
  %252 = sext i32 %251 to i64
  %253 = getelementptr inbounds ptr, ptr %250, i64 %252
  %254 = load ptr, ptr %253, align 8, !tbaa !9
  %255 = call i32 @strcmp(ptr noundef %254, ptr noundef @.str.32) #13
  %256 = icmp eq i32 %255, 0
  br i1 %256, label %265, label %257

257:                                              ; preds = %249
  %258 = load ptr, ptr %5, align 8, !tbaa !9
  %259 = load i32, ptr %10, align 4, !tbaa !5
  %260 = sext i32 %259 to i64
  %261 = getelementptr inbounds ptr, ptr %258, i64 %260
  %262 = load ptr, ptr %261, align 8, !tbaa !9
  %263 = call i32 @strcmp(ptr noundef %262, ptr noundef @.str.33) #13
  %264 = icmp eq i32 %263, 0
  br i1 %264, label %265, label %267

265:                                              ; preds = %257, %249
  %266 = getelementptr inbounds %struct.ECTOptions, ptr %7, i32 0, i32 5
  store i8 0, ptr %266, align 4, !tbaa !19
  br label %469

267:                                              ; preds = %257
  %268 = load ptr, ptr %5, align 8, !tbaa !9
  %269 = load i32, ptr %10, align 4, !tbaa !5
  %270 = sext i32 %269 to i64
  %271 = getelementptr inbounds ptr, ptr %268, i64 %270
  %272 = load ptr, ptr %271, align 8, !tbaa !9
  %273 = call i32 @strcmp(ptr noundef %272, ptr noundef @.str.34) #13
  %274 = icmp eq i32 %273, 0
  br i1 %274, label %275, label %277

275:                                              ; preds = %267
  %276 = getelementptr inbounds %struct.ECTOptions, ptr %7, i32 0, i32 6
  store i8 0, ptr %276, align 1, !tbaa !18
  br label %468

277:                                              ; preds = %267
  %278 = load ptr, ptr %5, align 8, !tbaa !9
  %279 = load i32, ptr %10, align 4, !tbaa !5
  %280 = sext i32 %279 to i64
  %281 = getelementptr inbounds ptr, ptr %278, i64 %280
  %282 = load ptr, ptr %281, align 8, !tbaa !9
  %283 = load i32, ptr %12, align 4, !tbaa !5
  %284 = sext i32 %283 to i64
  %285 = call i32 @strncmp(ptr noundef %282, ptr noundef @.str.35, i64 noundef %284) #13
  %286 = icmp eq i32 %285, 0
  br i1 %286, label %287, label %289

287:                                              ; preds = %277
  %288 = getelementptr inbounds %struct.ECTOptions, ptr %7, i32 0, i32 16
  store i8 1, ptr %288, align 1, !tbaa !17
  br label %467

289:                                              ; preds = %277
  %290 = load ptr, ptr %5, align 8, !tbaa !9
  %291 = load i32, ptr %10, align 4, !tbaa !5
  %292 = sext i32 %291 to i64
  %293 = getelementptr inbounds ptr, ptr %290, i64 %292
  %294 = load ptr, ptr %293, align 8, !tbaa !9
  %295 = call i32 @strcmp(ptr noundef %294, ptr noundef @.str.36) #13
  %296 = icmp eq i32 %295, 0
  br i1 %296, label %297, label %299

297:                                              ; preds = %289
  %298 = getelementptr inbounds %struct.ECTOptions, ptr %7, i32 0, i32 8
  store i8 1, ptr %298, align 1, !tbaa !24
  br label %466

299:                                              ; preds = %289
  %300 = load ptr, ptr %5, align 8, !tbaa !9
  %301 = load i32, ptr %10, align 4, !tbaa !5
  %302 = sext i32 %301 to i64
  %303 = getelementptr inbounds ptr, ptr %300, i64 %302
  %304 = load ptr, ptr %303, align 8, !tbaa !9
  %305 = call i32 @strcmp(ptr noundef %304, ptr noundef @.str.37) #13
  %306 = icmp eq i32 %305, 0
  br i1 %306, label %307, label %309

307:                                              ; preds = %299
  %308 = getelementptr inbounds %struct.ECTOptions, ptr %7, i32 0, i32 12
  store i8 1, ptr %308, align 1, !tbaa !27
  br label %465

309:                                              ; preds = %299
  %310 = load ptr, ptr %5, align 8, !tbaa !9
  %311 = load i32, ptr %10, align 4, !tbaa !5
  %312 = sext i32 %311 to i64
  %313 = getelementptr inbounds ptr, ptr %310, i64 %312
  %314 = load ptr, ptr %313, align 8, !tbaa !9
  %315 = call i32 @strcmp(ptr noundef %314, ptr noundef @.str.38) #13
  %316 = icmp eq i32 %315, 0
  br i1 %316, label %317, label %319

317:                                              ; preds = %309
  %318 = getelementptr inbounds %struct.ECTOptions, ptr %7, i32 0, i32 13
  store i8 1, ptr %318, align 4, !tbaa !28
  br label %464

319:                                              ; preds = %309
  %320 = load ptr, ptr %5, align 8, !tbaa !9
  %321 = load i32, ptr %10, align 4, !tbaa !5
  %322 = sext i32 %321 to i64
  %323 = getelementptr inbounds ptr, ptr %320, i64 %322
  %324 = load ptr, ptr %323, align 8, !tbaa !9
  %325 = call i32 @strcmp(ptr noundef %324, ptr noundef @.str.39) #13
  %326 = icmp eq i32 %325, 0
  br i1 %326, label %327, label %330

327:                                              ; preds = %319
  %328 = getelementptr inbounds %struct.ECTOptions, ptr %7, i32 0, i32 13
  store i8 1, ptr %328, align 4, !tbaa !28
  %329 = getelementptr inbounds %struct.ECTOptions, ptr %7, i32 0, i32 14
  store i8 1, ptr %329, align 1, !tbaa !29
  br label %463

330:                                              ; preds = %319
  %331 = load ptr, ptr %5, align 8, !tbaa !9
  %332 = load i32, ptr %10, align 4, !tbaa !5
  %333 = sext i32 %332 to i64
  %334 = getelementptr inbounds ptr, ptr %331, i64 %333
  %335 = load ptr, ptr %334, align 8, !tbaa !9
  %336 = call i32 @strcmp(ptr noundef %335, ptr noundef @.str.40) #13
  %337 = icmp eq i32 %336, 0
  br i1 %337, label %338, label %340

338:                                              ; preds = %330
  %339 = getelementptr inbounds %struct.ECTOptions, ptr %7, i32 0, i32 15
  store i8 1, ptr %339, align 2, !tbaa !30
  br label %462

340:                                              ; preds = %330
  %341 = load ptr, ptr %5, align 8, !tbaa !9
  %342 = load i32, ptr %10, align 4, !tbaa !5
  %343 = sext i32 %342 to i64
  %344 = getelementptr inbounds ptr, ptr %341, i64 %343
  %345 = load ptr, ptr %344, align 8, !tbaa !9
  %346 = call i32 @strncmp(ptr noundef %345, ptr noundef @.str.41, i64 noundef 11) #13
  %347 = icmp eq i32 %346, 0
  br i1 %347, label %348, label %364

348:                                              ; preds = %340
  %349 = load ptr, ptr %5, align 8, !tbaa !9
  %350 = load i32, ptr %10, align 4, !tbaa !5
  %351 = sext i32 %350 to i64
  %352 = getelementptr inbounds ptr, ptr %349, i64 %351
  %353 = load ptr, ptr %352, align 8, !tbaa !9
  %354 = getelementptr inbounds i8, ptr %353, i64 11
  %355 = call i32 @atoi(ptr noundef %354) #13
  %356 = shl i32 %355, 8
  %357 = getelementptr inbounds %struct.ECTOptions, ptr %7, i32 0, i32 1
  store i32 %356, ptr %357, align 4, !tbaa !31
  %358 = getelementptr inbounds %struct.ECTOptions, ptr %7, i32 0, i32 1
  %359 = load i32, ptr %358, align 4, !tbaa !31
  %360 = icmp ugt i32 %359, 30720
  br i1 %360, label %361, label %363

361:                                              ; preds = %348
  %362 = getelementptr inbounds %struct.ECTOptions, ptr %7, i32 0, i32 1
  store i32 30720, ptr %362, align 4, !tbaa !31
  br label %363

363:                                              ; preds = %361, %348
  br label %461

364:                                              ; preds = %340
  %365 = load ptr, ptr %5, align 8, !tbaa !9
  %366 = load i32, ptr %10, align 4, !tbaa !5
  %367 = sext i32 %366 to i64
  %368 = getelementptr inbounds ptr, ptr %365, i64 %367
  %369 = load ptr, ptr %368, align 8, !tbaa !9
  %370 = call i32 @strncmp(ptr noundef %369, ptr noundef @.str.42, i64 noundef 12) #13
  %371 = icmp eq i32 %370, 0
  br i1 %371, label %372, label %402

372:                                              ; preds = %364
  %373 = load ptr, ptr %5, align 8, !tbaa !9
  %374 = load i32, ptr %10, align 4, !tbaa !5
  %375 = sext i32 %374 to i64
  %376 = getelementptr inbounds ptr, ptr %373, i64 %375
  %377 = load ptr, ptr %376, align 8, !tbaa !9
  %378 = call i32 @strncmp(ptr noundef %377, ptr noundef @.str.43, i64 noundef 13) #13
  %379 = icmp eq i32 %378, 0
  br i1 %379, label %380, label %389

380:                                              ; preds = %372
  %381 = load ptr, ptr %5, align 8, !tbaa !9
  %382 = load i32, ptr %10, align 4, !tbaa !5
  %383 = sext i32 %382 to i64
  %384 = getelementptr inbounds ptr, ptr %381, i64 %383
  %385 = load ptr, ptr %384, align 8, !tbaa !9
  %386 = getelementptr inbounds i8, ptr %385, i64 13
  %387 = call i32 @atoi(ptr noundef %386) #13
  %388 = getelementptr inbounds %struct.ECTOptions, ptr %7, i32 0, i32 17
  store i32 %387, ptr %388, align 4, !tbaa !25
  br label %401

389:                                              ; preds = %372
  %390 = load ptr, ptr %5, align 8, !tbaa !9
  %391 = load i32, ptr %10, align 4, !tbaa !5
  %392 = sext i32 %391 to i64
  %393 = getelementptr inbounds ptr, ptr %390, i64 %392
  %394 = load ptr, ptr %393, align 8, !tbaa !9
  %395 = call i32 @strcmp(ptr noundef %394, ptr noundef @.str.42) #13
  %396 = icmp eq i32 %395, 0
  br i1 %396, label %397, label %400

397:                                              ; preds = %389
  %398 = call noundef i32 @_ZNSt6thread20hardware_concurrencyEv() #12
  %399 = getelementptr inbounds %struct.ECTOptions, ptr %7, i32 0, i32 17
  store i32 %398, ptr %399, align 4, !tbaa !25
  br label %400

400:                                              ; preds = %397, %389
  br label %401

401:                                              ; preds = %400, %380
  br label %460

402:                                              ; preds = %364
  %403 = load ptr, ptr %5, align 8, !tbaa !9
  %404 = load i32, ptr %10, align 4, !tbaa !5
  %405 = sext i32 %404 to i64
  %406 = getelementptr inbounds ptr, ptr %403, i64 %405
  %407 = load ptr, ptr %406, align 8, !tbaa !9
  %408 = call i32 @strncmp(ptr noundef %407, ptr noundef @.str.44, i64 noundef 9) #13
  %409 = icmp eq i32 %408, 0
  br i1 %409, label %410, label %440

410:                                              ; preds = %402
  %411 = load ptr, ptr %5, align 8, !tbaa !9
  %412 = load i32, ptr %10, align 4, !tbaa !5
  %413 = sext i32 %412 to i64
  %414 = getelementptr inbounds ptr, ptr %411, i64 %413
  %415 = load ptr, ptr %414, align 8, !tbaa !9
  %416 = call i32 @strncmp(ptr noundef %415, ptr noundef @.str.45, i64 noundef 10) #13
  %417 = icmp eq i32 %416, 0
  br i1 %417, label %418, label %427

418:                                              ; preds = %410
  %419 = load ptr, ptr %5, align 8, !tbaa !9
  %420 = load i32, ptr %10, align 4, !tbaa !5
  %421 = sext i32 %420 to i64
  %422 = getelementptr inbounds ptr, ptr %419, i64 %421
  %423 = load ptr, ptr %422, align 8, !tbaa !9
  %424 = getelementptr inbounds i8, ptr %423, i64 10
  %425 = call i32 @atoi(ptr noundef %424) #13
  %426 = getelementptr inbounds %struct.ECTOptions, ptr %7, i32 0, i32 18
  store i32 %425, ptr %426, align 4, !tbaa !26
  br label %439

427:                                              ; preds = %410
  %428 = load ptr, ptr %5, align 8, !tbaa !9
  %429 = load i32, ptr %10, align 4, !tbaa !5
  %430 = sext i32 %429 to i64
  %431 = getelementptr inbounds ptr, ptr %428, i64 %430
  %432 = load ptr, ptr %431, align 8, !tbaa !9
  %433 = call i32 @strcmp(ptr noundef %432, ptr noundef @.str.44) #13
  %434 = icmp eq i32 %433, 0
  br i1 %434, label %435, label %438

435:                                              ; preds = %427
  %436 = call noundef i32 @_ZNSt6thread20hardware_concurrencyEv() #12
  %437 = getelementptr inbounds %struct.ECTOptions, ptr %7, i32 0, i32 18
  store i32 %436, ptr %437, align 4, !tbaa !26
  br label %438

438:                                              ; preds = %435, %427
  br label %439

439:                                              ; preds = %438, %418
  br label %459

440:                                              ; preds = %402
  %441 = load ptr, ptr %5, align 8, !tbaa !9
  %442 = load i32, ptr %10, align 4, !tbaa !5
  %443 = sext i32 %442 to i64
  %444 = getelementptr inbounds ptr, ptr %441, i64 %443
  %445 = load ptr, ptr %444, align 8, !tbaa !9
  %446 = call i32 @strcmp(ptr noundef %445, ptr noundef @.str.46) #13
  %447 = icmp eq i32 %446, 0
  br i1 %447, label %448, label %450

448:                                              ; preds = %440
  %449 = getelementptr inbounds %struct.ECTOptions, ptr %7, i32 0, i32 9
  store i8 1, ptr %449, align 4, !tbaa !20
  br label %458

450:                                              ; preds = %440
  %451 = load ptr, ptr %5, align 8, !tbaa !9
  %452 = load i32, ptr %10, align 4, !tbaa !5
  %453 = sext i32 %452 to i64
  %454 = getelementptr inbounds ptr, ptr %451, i64 %453
  %455 = load ptr, ptr %454, align 8, !tbaa !9
  %456 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.47, ptr noundef %455)
          to label %457 unwind label %101

457:                                              ; preds = %450
  store i32 0, ptr %3, align 4
  store i32 1, ptr %11, align 4
  br label %481

458:                                              ; preds = %448
  br label %459

459:                                              ; preds = %458, %439
  br label %460

460:                                              ; preds = %459, %401
  br label %461

461:                                              ; preds = %460, %363
  br label %462

462:                                              ; preds = %461, %338
  br label %463

463:                                              ; preds = %462, %327
  br label %464

464:                                              ; preds = %463, %317
  br label %465

465:                                              ; preds = %464, %307
  br label %466

466:                                              ; preds = %465, %297
  br label %467

467:                                              ; preds = %466, %287
  br label %468

468:                                              ; preds = %467, %275
  br label %469

469:                                              ; preds = %468, %265
  br label %470

470:                                              ; preds = %469, %247
  br label %471

471:                                              ; preds = %470, %235
  br label %472

472:                                              ; preds = %471
  br label %473

473:                                              ; preds = %472, %210
  br label %474

474:                                              ; preds = %473, %198
  br label %475

475:                                              ; preds = %474, %185
  br label %476

476:                                              ; preds = %475, %151
  br label %477

477:                                              ; preds = %476, %139
  br label %478

478:                                              ; preds = %477, %127
  br label %479

479:                                              ; preds = %478, %115
  br label %480

480:                                              ; preds = %479, %98
  store i32 0, ptr %11, align 4
  br label %481

481:                                              ; preds = %480, %457, %224
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #12
  %482 = load i32, ptr %11, align 4
  switch i32 %482, label %487 [
    i32 0, label %483
  ]

483:                                              ; preds = %481
  br label %484

484:                                              ; preds = %483
  %485 = load i32, ptr %10, align 4, !tbaa !5
  %486 = add nsw i32 %485, 1
  store i32 %486, ptr %10, align 4, !tbaa !5
  br label %77, !llvm.loop !34

487:                                              ; preds = %481, %81
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #12
  %488 = load i32, ptr %11, align 4
  switch i32 %488, label %795 [
    i32 2, label %489
  ]

489:                                              ; preds = %487
  %490 = getelementptr inbounds %struct.ECTOptions, ptr %7, i32 0, i32 4
  %491 = load i32, ptr %490, align 4, !tbaa !15
  %492 = icmp ugt i32 %491, 0
  br i1 %492, label %493, label %505

493:                                              ; preds = %489
  %494 = getelementptr inbounds %struct.ECTOptions, ptr %7, i32 0, i32 2
  %495 = load i8, ptr %494, align 4, !tbaa !11, !range !36, !noundef !37
  %496 = trunc i8 %495 to i1
  br i1 %496, label %504, label %497

497:                                              ; preds = %493
  %498 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.48)
          to label %499 unwind label %500

499:                                              ; preds = %497
  store i32 0, ptr %3, align 4
  store i32 1, ptr %11, align 4
  br label %795

500:                                              ; preds = %791, %788, %782, %518, %497
  %501 = landingpad { ptr, i32 }
          cleanup
  %502 = extractvalue { ptr, i32 } %501, 0
  store ptr %502, ptr %13, align 8
  %503 = extractvalue { ptr, i32 } %501, 1
  store i32 %503, ptr %14, align 4
  br label %797

504:                                              ; preds = %493
  br label %505

505:                                              ; preds = %504, %489
  %506 = getelementptr inbounds %struct.ECTOptions, ptr %7, i32 0, i32 12
  %507 = load i8, ptr %506, align 1, !tbaa !27, !range !36, !noundef !37
  %508 = trunc i8 %507 to i1
  br i1 %508, label %509, label %511

509:                                              ; preds = %505
  %510 = getelementptr inbounds %struct.ECTOptions, ptr %7, i32 0, i32 13
  store i8 0, ptr %510, align 4, !tbaa !28
  br label %511

511:                                              ; preds = %509, %505
  %512 = getelementptr inbounds %struct.ECTOptions, ptr %7, i32 0, i32 11
  %513 = load i8, ptr %512, align 2, !tbaa !22, !range !36, !noundef !37
  %514 = trunc i8 %513 to i1
  br i1 %514, label %515, label %529

515:                                              ; preds = %511
  %516 = load i32, ptr %9, align 4, !tbaa !5
  %517 = icmp ne i32 %516, 0
  br i1 %517, label %518, label %529

518:                                              ; preds = %515
  invoke void @_ZNSt6vectorIiSaIiEEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %16, ptr noundef nonnull align 8 dereferenceable(24) %8)
          to label %519 unwind label %500

519:                                              ; preds = %518
  %520 = load ptr, ptr %5, align 8, !tbaa !9
  %521 = load i32, ptr %9, align 4, !tbaa !5
  %522 = invoke noundef i32 @_Z10zipHandlerSt6vectorIiSaIiEEPPKciRK10ECTOptions(ptr noundef %16, ptr noundef %520, i32 noundef %521, ptr noundef nonnull align 4 dereferenceable(40) %7)
          to label %523 unwind label %525

523:                                              ; preds = %519
  %524 = call noundef i32 @_ZNSt13__atomic_baseIjEoREj(ptr noundef nonnull align 4 dereferenceable(4) %6, i32 noundef %522) #12
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %16) #12
  br label %779

525:                                              ; preds = %519
  %526 = landingpad { ptr, i32 }
          cleanup
  %527 = extractvalue { ptr, i32 } %526, 0
  store ptr %527, ptr %13, align 8
  %528 = extractvalue { ptr, i32 } %526, 1
  store i32 %528, ptr %14, align 4
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %16) #12
  br label %797

529:                                              ; preds = %515, %511
  call void @llvm.lifetime.start.p0(i64 24, ptr %17) #12
  call void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %17) #12
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #12
  store i32 0, ptr %18, align 4, !tbaa !5
  br label %530

530:                                              ; preds = %706, %529
  %531 = load i32, ptr %18, align 4, !tbaa !5
  %532 = load i32, ptr %9, align 4, !tbaa !5
  %533 = icmp slt i32 %531, %532
  br i1 %533, label %535, label %534

534:                                              ; preds = %530
  store i32 5, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #12
  br label %710

535:                                              ; preds = %530
  call void @llvm.lifetime.start.p0(i64 40, ptr %19) #12
  %536 = load ptr, ptr %5, align 8, !tbaa !9
  %537 = load i32, ptr %18, align 4, !tbaa !5
  %538 = sext i32 %537 to i64
  %539 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %8, i64 noundef %538) #12
  %540 = load i32, ptr %539, align 4, !tbaa !5
  %541 = sext i32 %540 to i64
  %542 = getelementptr inbounds ptr, ptr %536, i64 %541
  invoke void @_ZNSt10filesystem7__cxx114pathC2IPKcS1_EERKT_NS1_6formatE(ptr noundef nonnull align 8 dereferenceable(40) %19, ptr noundef nonnull align 8 dereferenceable(8) %542, i8 noundef zeroext 2)
          to label %543 unwind label %557

543:                                              ; preds = %535
  %544 = invoke noundef zeroext i1 @_ZNSt10filesystem15is_regular_fileERKNS_7__cxx114pathE(ptr noundef nonnull align 8 dereferenceable(40) %19)
          to label %545 unwind label %561

545:                                              ; preds = %543
  call void @_ZNSt10filesystem7__cxx114pathD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %19) #12
  call void @llvm.lifetime.end.p0(i64 40, ptr %19) #12
  br i1 %544, label %546, label %575

546:                                              ; preds = %545
  call void @llvm.lifetime.start.p0(i64 32, ptr %20) #12
  %547 = load ptr, ptr %5, align 8, !tbaa !9
  %548 = load i32, ptr %18, align 4, !tbaa !5
  %549 = sext i32 %548 to i64
  %550 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %8, i64 noundef %549) #12
  %551 = load i32, ptr %550, align 4, !tbaa !5
  %552 = sext i32 %551 to i64
  %553 = getelementptr inbounds ptr, ptr %547, i64 %552
  %554 = load ptr, ptr %553, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr %21) #12
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %21) #12
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %20, ptr noundef %554, ptr noundef nonnull align 1 dereferenceable(1) %21)
          to label %555 unwind label %566

555:                                              ; preds = %546
  invoke void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE9push_backEOS5_(ptr noundef nonnull align 8 dereferenceable(24) %17, ptr noundef nonnull align 8 dereferenceable(32) %20)
          to label %556 unwind label %570

556:                                              ; preds = %555
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %20) #12
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %21) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %21) #12
  call void @llvm.lifetime.end.p0(i64 32, ptr %20) #12
  br label %705

557:                                              ; preds = %535
  %558 = landingpad { ptr, i32 }
          cleanup
  %559 = extractvalue { ptr, i32 } %558, 0
  store ptr %559, ptr %13, align 8
  %560 = extractvalue { ptr, i32 } %558, 1
  store i32 %560, ptr %14, align 4
  br label %565

561:                                              ; preds = %543
  %562 = landingpad { ptr, i32 }
          cleanup
  %563 = extractvalue { ptr, i32 } %562, 0
  store ptr %563, ptr %13, align 8
  %564 = extractvalue { ptr, i32 } %562, 1
  store i32 %564, ptr %14, align 4
  call void @_ZNSt10filesystem7__cxx114pathD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %19) #12
  br label %565

565:                                              ; preds = %561, %557
  call void @llvm.lifetime.end.p0(i64 40, ptr %19) #12
  br label %709

566:                                              ; preds = %546
  %567 = landingpad { ptr, i32 }
          cleanup
  %568 = extractvalue { ptr, i32 } %567, 0
  store ptr %568, ptr %13, align 8
  %569 = extractvalue { ptr, i32 } %567, 1
  store i32 %569, ptr %14, align 4
  br label %574

570:                                              ; preds = %555
  %571 = landingpad { ptr, i32 }
          cleanup
  %572 = extractvalue { ptr, i32 } %571, 0
  store ptr %572, ptr %13, align 8
  %573 = extractvalue { ptr, i32 } %571, 1
  store i32 %573, ptr %14, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %20) #12
  br label %574

574:                                              ; preds = %570, %566
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %21) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %21) #12
  call void @llvm.lifetime.end.p0(i64 32, ptr %20) #12
  br label %709

575:                                              ; preds = %545
  call void @llvm.lifetime.start.p0(i64 40, ptr %22) #12
  %576 = load ptr, ptr %5, align 8, !tbaa !9
  %577 = load i32, ptr %18, align 4, !tbaa !5
  %578 = sext i32 %577 to i64
  %579 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %8, i64 noundef %578) #12
  %580 = load i32, ptr %579, align 4, !tbaa !5
  %581 = sext i32 %580 to i64
  %582 = getelementptr inbounds ptr, ptr %576, i64 %581
  invoke void @_ZNSt10filesystem7__cxx114pathC2IPKcS1_EERKT_NS1_6formatE(ptr noundef nonnull align 8 dereferenceable(40) %22, ptr noundef nonnull align 8 dereferenceable(8) %582, i8 noundef zeroext 2)
          to label %583 unwind label %607

583:                                              ; preds = %575
  %584 = invoke noundef zeroext i1 @_ZNSt10filesystem12is_directoryERKNS_7__cxx114pathE(ptr noundef nonnull align 8 dereferenceable(40) %22)
          to label %585 unwind label %611

585:                                              ; preds = %583
  call void @_ZNSt10filesystem7__cxx114pathD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %22) #12
  call void @llvm.lifetime.end.p0(i64 40, ptr %22) #12
  br i1 %584, label %586, label %702

586:                                              ; preds = %585
  %587 = getelementptr inbounds %struct.ECTOptions, ptr %7, i32 0, i32 16
  %588 = load i8, ptr %587, align 1, !tbaa !17, !range !36, !noundef !37
  %589 = trunc i8 %588 to i1
  br i1 %589, label %590, label %650

590:                                              ; preds = %586
  call void @llvm.lifetime.start.p0(i64 16, ptr %23) #12
  call void @llvm.lifetime.start.p0(i64 40, ptr %24) #12
  %591 = load ptr, ptr %5, align 8, !tbaa !9
  %592 = load i32, ptr %18, align 4, !tbaa !5
  %593 = sext i32 %592 to i64
  %594 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %8, i64 noundef %593) #12
  %595 = load i32, ptr %594, align 4, !tbaa !5
  %596 = sext i32 %595 to i64
  %597 = getelementptr inbounds ptr, ptr %591, i64 %596
  invoke void @_ZNSt10filesystem7__cxx114pathC2IPKcS1_EERKT_NS1_6formatE(ptr noundef nonnull align 8 dereferenceable(40) %24, ptr noundef nonnull align 8 dereferenceable(8) %597, i8 noundef zeroext 2)
          to label %598 unwind label %616

598:                                              ; preds = %590
  invoke void @_ZNSt10filesystem7__cxx1128recursive_directory_iteratorC2ERKNS0_4pathE(ptr noundef nonnull align 8 dereferenceable(16) %23, ptr noundef nonnull align 8 dereferenceable(40) %24)
          to label %599 unwind label %620

599:                                              ; preds = %598
  call void @_ZNSt10filesystem7__cxx114pathD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %24) #12
  call void @llvm.lifetime.end.p0(i64 40, ptr %24) #12
  call void @llvm.lifetime.start.p0(i64 16, ptr %25) #12
  call void @_ZNSt10filesystem7__cxx1128recursive_directory_iteratorC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %25) #12
  call void @llvm.lifetime.start.p0(i64 24, ptr %26) #12
  call void @_ZNSt10filesystem7__cxx1128recursive_directory_iteratorC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %27, ptr noundef nonnull align 8 dereferenceable(16) %23) #12
  call void @_ZNSt10filesystem7__cxx1128recursive_directory_iteratorC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %28, ptr noundef nonnull align 8 dereferenceable(16) %25) #12
  call void @llvm.lifetime.start.p0(i64 1, ptr %29) #12
  call void @_ZNSaINSt10filesystem7__cxx114pathEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %29) #12
  invoke void @_ZNSt6vectorINSt10filesystem7__cxx114pathESaIS2_EEC2INS1_28recursive_directory_iteratorEvEET_S7_RKS3_(ptr noundef nonnull align 8 dereferenceable(24) %26, ptr noundef %27, ptr noundef %28, ptr noundef nonnull align 1 dereferenceable(1) %29)
          to label %600 unwind label %625

600:                                              ; preds = %599
  call void @_ZNSt15__new_allocatorINSt10filesystem7__cxx114pathEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %29) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %29) #12
  call void @_ZNSt10filesystem7__cxx1128recursive_directory_iteratorD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %28) #12
  call void @_ZNSt10filesystem7__cxx1128recursive_directory_iteratorD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %27) #12
  call void @llvm.lifetime.start.p0(i64 4, ptr %30) #12
  store i32 0, ptr %30, align 4, !tbaa !5
  br label %601

601:                                              ; preds = %635, %600
  %602 = load i32, ptr %30, align 4, !tbaa !5
  %603 = zext i32 %602 to i64
  %604 = call noundef i64 @_ZNKSt6vectorINSt10filesystem7__cxx114pathESaIS2_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %26) #12
  %605 = icmp ult i64 %603, %604
  br i1 %605, label %629, label %606

606:                                              ; preds = %601
  store i32 8, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #12
  br label %647

607:                                              ; preds = %575
  %608 = landingpad { ptr, i32 }
          cleanup
  %609 = extractvalue { ptr, i32 } %608, 0
  store ptr %609, ptr %13, align 8
  %610 = extractvalue { ptr, i32 } %608, 1
  store i32 %610, ptr %14, align 4
  br label %615

611:                                              ; preds = %583
  %612 = landingpad { ptr, i32 }
          cleanup
  %613 = extractvalue { ptr, i32 } %612, 0
  store ptr %613, ptr %13, align 8
  %614 = extractvalue { ptr, i32 } %612, 1
  store i32 %614, ptr %14, align 4
  call void @_ZNSt10filesystem7__cxx114pathD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %22) #12
  br label %615

615:                                              ; preds = %611, %607
  call void @llvm.lifetime.end.p0(i64 40, ptr %22) #12
  br label %709

616:                                              ; preds = %590
  %617 = landingpad { ptr, i32 }
          cleanup
  %618 = extractvalue { ptr, i32 } %617, 0
  store ptr %618, ptr %13, align 8
  %619 = extractvalue { ptr, i32 } %617, 1
  store i32 %619, ptr %14, align 4
  br label %624

620:                                              ; preds = %598
  %621 = landingpad { ptr, i32 }
          cleanup
  %622 = extractvalue { ptr, i32 } %621, 0
  store ptr %622, ptr %13, align 8
  %623 = extractvalue { ptr, i32 } %621, 1
  store i32 %623, ptr %14, align 4
  call void @_ZNSt10filesystem7__cxx114pathD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %24) #12
  br label %624

624:                                              ; preds = %620, %616
  call void @llvm.lifetime.end.p0(i64 40, ptr %24) #12
  br label %649

625:                                              ; preds = %599
  %626 = landingpad { ptr, i32 }
          cleanup
  %627 = extractvalue { ptr, i32 } %626, 0
  store ptr %627, ptr %13, align 8
  %628 = extractvalue { ptr, i32 } %626, 1
  store i32 %628, ptr %14, align 4
  call void @_ZNSt15__new_allocatorINSt10filesystem7__cxx114pathEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %29) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %29) #12
  call void @_ZNSt10filesystem7__cxx1128recursive_directory_iteratorD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %28) #12
  call void @_ZNSt10filesystem7__cxx1128recursive_directory_iteratorD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %27) #12
  br label %648

629:                                              ; preds = %601
  call void @llvm.lifetime.start.p0(i64 32, ptr %31) #12
  %630 = load i32, ptr %30, align 4, !tbaa !5
  %631 = zext i32 %630 to i64
  %632 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNSt6vectorINSt10filesystem7__cxx114pathESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %26, i64 noundef %631) #12
  invoke void @_ZNKSt10filesystem7__cxx114path6stringEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %31, ptr noundef nonnull align 8 dereferenceable(40) %632)
          to label %633 unwind label %638

633:                                              ; preds = %629
  invoke void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE9push_backEOS5_(ptr noundef nonnull align 8 dereferenceable(24) %17, ptr noundef nonnull align 8 dereferenceable(32) %31)
          to label %634 unwind label %642

634:                                              ; preds = %633
  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 %635

635:                                              ; preds = %634
  %636 = load i32, ptr %30, align 4, !tbaa !5
  %637 = add i32 %636, 1
  store i32 %637, ptr %30, align 4, !tbaa !5
  br label %601, !llvm.loop !38

638:                                              ; preds = %629
  %639 = landingpad { ptr, i32 }
          cleanup
  %640 = extractvalue { ptr, i32 } %639, 0
  store ptr %640, ptr %13, align 8
  %641 = extractvalue { ptr, i32 } %639, 1
  store i32 %641, ptr %14, align 4
  br label %646

642:                                              ; preds = %633
  %643 = landingpad { ptr, i32 }
          cleanup
  %644 = extractvalue { ptr, i32 } %643, 0
  store ptr %644, ptr %13, align 8
  %645 = extractvalue { ptr, i32 } %643, 1
  store i32 %645, ptr %14, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %31) #12
  br label %646

646:                                              ; preds = %642, %638
  call void @llvm.lifetime.end.p0(i64 32, ptr %31) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #12
  call void @_ZNSt6vectorINSt10filesystem7__cxx114pathESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %26) #12
  br label %648

647:                                              ; preds = %606
  call void @_ZNSt6vectorINSt10filesystem7__cxx114pathESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %26) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr %26) #12
  call void @_ZNSt10filesystem7__cxx1128recursive_directory_iteratorD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %25) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr %25) #12
  call void @_ZNSt10filesystem7__cxx1128recursive_directory_iteratorD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %23) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr %23) #12
  br label %701

648:                                              ; preds = %646, %625
  call void @llvm.lifetime.end.p0(i64 24, ptr %26) #12
  call void @_ZNSt10filesystem7__cxx1128recursive_directory_iteratorD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %25) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr %25) #12
  call void @_ZNSt10filesystem7__cxx1128recursive_directory_iteratorD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %23) #12
  br label %649

649:                                              ; preds = %648, %624
  call void @llvm.lifetime.end.p0(i64 16, ptr %23) #12
  br label %709

650:                                              ; preds = %586
  call void @llvm.lifetime.start.p0(i64 16, ptr %32) #12
  call void @llvm.lifetime.start.p0(i64 40, ptr %33) #12
  %651 = load ptr, ptr %5, align 8, !tbaa !9
  %652 = load i32, ptr %18, align 4, !tbaa !5
  %653 = sext i32 %652 to i64
  %654 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %8, i64 noundef %653) #12
  %655 = load i32, ptr %654, align 4, !tbaa !5
  %656 = sext i32 %655 to i64
  %657 = getelementptr inbounds ptr, ptr %651, i64 %656
  invoke void @_ZNSt10filesystem7__cxx114pathC2IPKcS1_EERKT_NS1_6formatE(ptr noundef nonnull align 8 dereferenceable(40) %33, ptr noundef nonnull align 8 dereferenceable(8) %657, i8 noundef zeroext 2)
          to label %658 unwind label %667

658:                                              ; preds = %650
  invoke void @_ZNSt10filesystem7__cxx1118directory_iteratorC2ERKNS0_4pathE(ptr noundef nonnull align 8 dereferenceable(16) %32, ptr noundef nonnull align 8 dereferenceable(40) %33)
          to label %659 unwind label %671

659:                                              ; preds = %658
  call void @_ZNSt10filesystem7__cxx114pathD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %33) #12
  call void @llvm.lifetime.end.p0(i64 40, ptr %33) #12
  call void @llvm.lifetime.start.p0(i64 16, ptr %34) #12
  call void @_ZNSt10filesystem7__cxx1118directory_iteratorC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %34) #12
  call void @llvm.lifetime.start.p0(i64 24, ptr %35) #12
  call void @_ZNSt10filesystem7__cxx1118directory_iteratorC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %36, ptr noundef nonnull align 8 dereferenceable(16) %32) #12
  call void @_ZNSt10filesystem7__cxx1118directory_iteratorC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %37, ptr noundef nonnull align 8 dereferenceable(16) %34) #12
  call void @llvm.lifetime.start.p0(i64 1, ptr %38) #12
  call void @_ZNSaINSt10filesystem7__cxx114pathEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %38) #12
  invoke void @_ZNSt6vectorINSt10filesystem7__cxx114pathESaIS2_EEC2INS1_18directory_iteratorEvEET_S7_RKS3_(ptr noundef nonnull align 8 dereferenceable(24) %35, ptr noundef %36, ptr noundef %37, ptr noundef nonnull align 1 dereferenceable(1) %38)
          to label %660 unwind label %676

660:                                              ; preds = %659
  call void @_ZNSt15__new_allocatorINSt10filesystem7__cxx114pathEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %38) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %38) #12
  call void @_ZNSt10filesystem7__cxx1118directory_iteratorD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %37) #12
  call void @_ZNSt10filesystem7__cxx1118directory_iteratorD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %36) #12
  call void @llvm.lifetime.start.p0(i64 4, ptr %39) #12
  store i32 0, ptr %39, align 4, !tbaa !5
  br label %661

661:                                              ; preds = %686, %660
  %662 = load i32, ptr %39, align 4, !tbaa !5
  %663 = zext i32 %662 to i64
  %664 = call noundef i64 @_ZNKSt6vectorINSt10filesystem7__cxx114pathESaIS2_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %35) #12
  %665 = icmp ult i64 %663, %664
  br i1 %665, label %680, label %666

666:                                              ; preds = %661
  store i32 11, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #12
  br label %698

667:                                              ; preds = %650
  %668 = landingpad { ptr, i32 }
          cleanup
  %669 = extractvalue { ptr, i32 } %668, 0
  store ptr %669, ptr %13, align 8
  %670 = extractvalue { ptr, i32 } %668, 1
  store i32 %670, ptr %14, align 4
  br label %675

671:                                              ; preds = %658
  %672 = landingpad { ptr, i32 }
          cleanup
  %673 = extractvalue { ptr, i32 } %672, 0
  store ptr %673, ptr %13, align 8
  %674 = extractvalue { ptr, i32 } %672, 1
  store i32 %674, ptr %14, align 4
  call void @_ZNSt10filesystem7__cxx114pathD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %33) #12
  br label %675

675:                                              ; preds = %671, %667
  call void @llvm.lifetime.end.p0(i64 40, ptr %33) #12
  br label %700

676:                                              ; preds = %659
  %677 = landingpad { ptr, i32 }
          cleanup
  %678 = extractvalue { ptr, i32 } %677, 0
  store ptr %678, ptr %13, align 8
  %679 = extractvalue { ptr, i32 } %677, 1
  store i32 %679, ptr %14, align 4
  call void @_ZNSt15__new_allocatorINSt10filesystem7__cxx114pathEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %38) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %38) #12
  call void @_ZNSt10filesystem7__cxx1118directory_iteratorD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %37) #12
  call void @_ZNSt10filesystem7__cxx1118directory_iteratorD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %36) #12
  br label %699

680:                                              ; preds = %661
  call void @llvm.lifetime.start.p0(i64 32, ptr %40) #12
  %681 = load i32, ptr %39, align 4, !tbaa !5
  %682 = zext i32 %681 to i64
  %683 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNSt6vectorINSt10filesystem7__cxx114pathESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %35, i64 noundef %682) #12
  invoke void @_ZNKSt10filesystem7__cxx114path6stringEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %40, ptr noundef nonnull align 8 dereferenceable(40) %683)
          to label %684 unwind label %689

684:                                              ; preds = %680
  invoke void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE9push_backEOS5_(ptr noundef nonnull align 8 dereferenceable(24) %17, ptr noundef nonnull align 8 dereferenceable(32) %40)
          to label %685 unwind label %693

685:                                              ; preds = %684
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %40) #12
  call void @llvm.lifetime.end.p0(i64 32, ptr %40) #12
  br label %686

686:                                              ; preds = %685
  %687 = load i32, ptr %39, align 4, !tbaa !5
  %688 = add i32 %687, 1
  store i32 %688, ptr %39, align 4, !tbaa !5
  br label %661, !llvm.loop !39

689:                                              ; preds = %680
  %690 = landingpad { ptr, i32 }
          cleanup
  %691 = extractvalue { ptr, i32 } %690, 0
  store ptr %691, ptr %13, align 8
  %692 = extractvalue { ptr, i32 } %690, 1
  store i32 %692, ptr %14, align 4
  br label %697

693:                                              ; preds = %684
  %694 = landingpad { ptr, i32 }
          cleanup
  %695 = extractvalue { ptr, i32 } %694, 0
  store ptr %695, ptr %13, align 8
  %696 = extractvalue { ptr, i32 } %694, 1
  store i32 %696, ptr %14, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %40) #12
  br label %697

697:                                              ; preds = %693, %689
  call void @llvm.lifetime.end.p0(i64 32, ptr %40) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #12
  call void @_ZNSt6vectorINSt10filesystem7__cxx114pathESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %35) #12
  br label %699

698:                                              ; preds = %666
  call void @_ZNSt6vectorINSt10filesystem7__cxx114pathESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %35) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr %35) #12
  call void @_ZNSt10filesystem7__cxx1118directory_iteratorD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %34) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr %34) #12
  call void @_ZNSt10filesystem7__cxx1118directory_iteratorD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %32) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr %32) #12
  br label %701

699:                                              ; preds = %697, %676
  call void @llvm.lifetime.end.p0(i64 24, ptr %35) #12
  call void @_ZNSt10filesystem7__cxx1118directory_iteratorD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %34) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr %34) #12
  call void @_ZNSt10filesystem7__cxx1118directory_iteratorD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %32) #12
  br label %700

700:                                              ; preds = %699, %675
  call void @llvm.lifetime.end.p0(i64 16, ptr %32) #12
  br label %709

701:                                              ; preds = %698, %647
  br label %704

702:                                              ; preds = %585
  %703 = call noundef i32 @_ZNSt13__atomic_baseIjEaSEj(ptr noundef nonnull align 4 dereferenceable(4) %6, i32 noundef 1) #12
  br label %704

704:                                              ; preds = %702, %701
  br label %705

705:                                              ; preds = %704, %556
  br label %706

706:                                              ; preds = %705
  %707 = load i32, ptr %18, align 4, !tbaa !5
  %708 = add nsw i32 %707, 1
  store i32 %708, ptr %18, align 4, !tbaa !5
  br label %530, !llvm.loop !40

709:                                              ; preds = %700, %649, %615, %574, %565
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #12
  br label %778

710:                                              ; preds = %534
  %711 = getelementptr inbounds %struct.ECTOptions, ptr %7, i32 0, i32 18
  %712 = load i32, ptr %711, align 4, !tbaa !26
  %713 = icmp ne i32 %712, 0
  br i1 %713, label %714, label %753

714:                                              ; preds = %710
  call void @llvm.lifetime.start.p0(i64 24, ptr %41) #12
  call void @_ZNSt6vectorISt6threadSaIS0_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %41) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #12
  call void @llvm.memset.p0.i64(ptr align 8 %42, i8 0, i64 8, i1 false)
  call void @llvm.lifetime.start.p0(i64 4, ptr %43) #12
  store i32 0, ptr %43, align 4, !tbaa !5
  br label %715

715:                                              ; preds = %724, %714
  %716 = load i32, ptr %43, align 4, !tbaa !5
  %717 = getelementptr inbounds %struct.ECTOptions, ptr %7, i32 0, i32 18
  %718 = load i32, ptr %717, align 4, !tbaa !26
  %719 = icmp ult i32 %716, %718
  br i1 %719, label %721, label %720

720:                                              ; preds = %715
  store i32 14, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #12
  br label %731

721:                                              ; preds = %715
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #12
  store ptr %42, ptr %44, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %45) #12
  store ptr %6, ptr %45, align 8, !tbaa !9
  %722 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorISt6threadSaIS0_EE12emplace_backIJRFvRKS_INSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS9_EEPSt6atomicImERK10ECTOptionsPSE_IjEERSB_SG_RSH_SL_EEERS0_DpOT_(ptr noundef nonnull align 8 dereferenceable(24) %41, ptr noundef nonnull @_ZL19multithreadFileLoopRKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EEPSt6atomicImERK10ECTOptionsPSA_IjE, ptr noundef nonnull align 8 dereferenceable(24) %17, ptr noundef nonnull align 8 dereferenceable(8) %44, ptr noundef nonnull align 4 dereferenceable(40) %7, ptr noundef nonnull align 8 dereferenceable(8) %45)
          to label %723 unwind label %727

723:                                              ; preds = %721
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #12
  br label %724

724:                                              ; preds = %723
  %725 = load i32, ptr %43, align 4, !tbaa !5
  %726 = add i32 %725, 1
  store i32 %726, ptr %43, align 4, !tbaa !5
  br label %715, !llvm.loop !41

727:                                              ; preds = %721
  %728 = landingpad { ptr, i32 }
          cleanup
  %729 = extractvalue { ptr, i32 } %728, 0
  store ptr %729, ptr %13, align 8
  %730 = extractvalue { ptr, i32 } %728, 1
  store i32 %730, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #12
  br label %752

731:                                              ; preds = %720
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #12
  store ptr %41, ptr %46, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %47) #12
  %732 = load ptr, ptr %46, align 8, !tbaa !9
  %733 = call ptr @_ZNSt6vectorISt6threadSaIS0_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %732) #12
  %734 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %47, i32 0, i32 0
  store ptr %733, ptr %734, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %48) #12
  %735 = load ptr, ptr %46, align 8, !tbaa !9
  %736 = call ptr @_ZNSt6vectorISt6threadSaIS0_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %735) #12
  %737 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %48, i32 0, i32 0
  store ptr %736, ptr %737, align 8
  br label %738

738:                                              ; preds = %745, %731
  %739 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPSt6threadSt6vectorIS1_SaIS1_EEEEbRKNS_17__normal_iteratorIT_T0_EESB_(ptr noundef nonnull align 8 dereferenceable(8) %47, ptr noundef nonnull align 8 dereferenceable(8) %48) #12
  br i1 %739, label %741, label %740

740:                                              ; preds = %738
  store i32 17, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #12
  br label %751

741:                                              ; preds = %738
  call void @llvm.lifetime.start.p0(i64 8, ptr %49) #12
  %742 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPSt6threadSt6vectorIS1_SaIS1_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %47) #12
  store ptr %742, ptr %49, align 8, !tbaa !9
  %743 = load ptr, ptr %49, align 8, !tbaa !9
  invoke void @_ZNSt6thread4joinEv(ptr noundef nonnull align 8 dereferenceable(8) %743)
          to label %744 unwind label %747

744:                                              ; preds = %741
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #12
  br label %745

745:                                              ; preds = %744
  %746 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPSt6threadSt6vectorIS1_SaIS1_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %47) #12
  br label %738

747:                                              ; preds = %741
  %748 = landingpad { ptr, i32 }
          cleanup
  %749 = extractvalue { ptr, i32 } %748, 0
  store ptr %749, ptr %13, align 8
  %750 = extractvalue { ptr, i32 } %748, 1
  store i32 %750, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #12
  br label %752

751:                                              ; preds = %740
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #12
  call void @_ZNSt6vectorISt6threadSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %41) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr %41) #12
  br label %777

752:                                              ; preds = %747, %727
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #12
  call void @_ZNSt6vectorISt6threadSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %41) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr %41) #12
  br label %778

753:                                              ; preds = %710
  call void @llvm.lifetime.start.p0(i64 8, ptr %50) #12
  store ptr %17, ptr %50, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %51) #12
  %754 = load ptr, ptr %50, align 8, !tbaa !9
  %755 = call ptr @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %754) #12
  %756 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.26", ptr %51, i32 0, i32 0
  store ptr %755, ptr %756, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %52) #12
  %757 = load ptr, ptr %50, align 8, !tbaa !9
  %758 = call ptr @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %757) #12
  %759 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.26", ptr %52, i32 0, i32 0
  store ptr %758, ptr %759, align 8
  br label %760

760:                                              ; preds = %770, %753
  %761 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIS6_SaIS6_EEEEbRKNS_17__normal_iteratorIT_T0_EESG_(ptr noundef nonnull align 8 dereferenceable(8) %51, ptr noundef nonnull align 8 dereferenceable(8) %52) #12
  br i1 %761, label %763, label %762

762:                                              ; preds = %760
  store i32 19, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #12
  br label %776

763:                                              ; preds = %760
  call void @llvm.lifetime.start.p0(i64 8, ptr %53) #12
  %764 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIS6_SaIS6_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %51) #12
  store ptr %764, ptr %53, align 8, !tbaa !9
  %765 = load ptr, ptr %53, align 8, !tbaa !9
  %766 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %765) #12
  %767 = invoke noundef i32 @_Z11fileHandlerPKcRK10ECTOptionsi(ptr noundef %766, ptr noundef nonnull align 4 dereferenceable(40) %7, i32 noundef 0)
          to label %768 unwind label %772

768:                                              ; preds = %763
  %769 = call noundef i32 @_ZNSt13__atomic_baseIjEoREj(ptr noundef nonnull align 4 dereferenceable(4) %6, i32 noundef %767) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #12
  br label %770

770:                                              ; preds = %768
  %771 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIS6_SaIS6_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %51) #12
  br label %760

772:                                              ; preds = %763
  %773 = landingpad { ptr, i32 }
          cleanup
  %774 = extractvalue { ptr, i32 } %773, 0
  store ptr %774, ptr %13, align 8
  %775 = extractvalue { ptr, i32 } %773, 1
  store i32 %775, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #12
  br label %778

776:                                              ; preds = %762
  br label %777

777:                                              ; preds = %776, %751
  call void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %17) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr %17) #12
  br label %779

778:                                              ; preds = %772, %752, %709
  call void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %17) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr %17) #12
  br label %797

779:                                              ; preds = %777, %523
  %780 = load i32, ptr %9, align 4, !tbaa !5
  %781 = icmp ne i32 %780, 0
  br i1 %781, label %784, label %782

782:                                              ; preds = %779
  invoke void @_ZL5Usagev()
          to label %783 unwind label %500

783:                                              ; preds = %782
  br label %784

784:                                              ; preds = %783, %779
  %785 = getelementptr inbounds %struct.ECTOptions, ptr %7, i32 0, i32 7
  %786 = load i8, ptr %785, align 2, !tbaa !23, !range !36, !noundef !37
  %787 = trunc i8 %786 to i1
  br i1 %787, label %788, label %790

788:                                              ; preds = %784
  invoke void @_ZL17ECT_ReportSavingsv()
          to label %789 unwind label %500

789:                                              ; preds = %788
  br label %790

790:                                              ; preds = %789, %784
  br label %793

791:                                              ; preds = %2
  invoke void @_ZL5Usagev()
          to label %792 unwind label %500

792:                                              ; preds = %791
  br label %793

793:                                              ; preds = %792, %790
  %794 = call noundef i32 @_ZNKSt13__atomic_baseIjE4loadESt12memory_order(ptr noundef nonnull align 4 dereferenceable(4) %6, i32 noundef 5) #12
  store i32 %794, ptr %3, align 4
  store i32 1, ptr %11, align 4
  br label %795

795:                                              ; preds = %793, %499, %487
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #12
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %8) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr %8) #12
  call void @llvm.lifetime.end.p0(i64 40, ptr %7) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %6) #12
  %796 = load i32, ptr %3, align 4
  ret i32 %796

797:                                              ; preds = %778, %525, %500, %101
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #12
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %8) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr %8) #12
  call void @llvm.lifetime.end.p0(i64 40, ptr %7) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %6) #12
  br label %798

798:                                              ; preds = %797
  %799 = load ptr, ptr %13, align 8
  %800 = load i32, ptr %14, align 4
  %801 = insertvalue { ptr, i32 } poison, ptr %799, 0
  %802 = insertvalue { ptr, i32 } %801, i32 %800, 1
  resume { ptr, i32 } %802
}

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

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

; Function Attrs: nounwind willreturn memory(read)
declare i64 @strnlen(ptr noundef, i64 noundef) #8

; Function Attrs: nounwind willreturn memory(read)
declare i32 @strncmp(ptr noundef, ptr noundef, i64 noundef) #8

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorIiSaIiEE9push_backERKi(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 4 dereferenceable(4)) #0 align 2

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

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

; Function Attrs: mustprogress uwtable
declare hidden void @_ZL5Usagev() #0

; Function Attrs: nounwind willreturn memory(read)
declare i32 @strcmp(ptr noundef, ptr noundef) #8

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorIiSaIiEEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNSt13__atomic_baseIjEoREj(ptr noundef nonnull align 4 dereferenceable(4), i32 noundef) #2 align 2

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE9push_backEOS5_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(32)) #0 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNSt10filesystem12is_directoryERKNS_7__cxx114pathE(ptr noundef nonnull align 8 dereferenceable(40)) #4

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt10filesystem7__cxx1118directory_iteratorC2ERKNS0_4pathE(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(40)) unnamed_addr #0 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt10filesystem7__cxx1118directory_iteratorC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(16)) unnamed_addr #2 align 2

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNSt13__atomic_baseIjEaSEj(ptr noundef nonnull align 4 dereferenceable(4), i32 noundef) #2 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorISt6threadSaIS0_EE12emplace_backIJRFvRKS_INSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS9_EEPSt6atomicImERK10ECTOptionsPSE_IjEERSB_SG_RSH_SL_EEERS0_DpOT_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull, ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 4 dereferenceable(40), ptr noundef nonnull align 8 dereferenceable(8)) #0 align 2

; Function Attrs: mustprogress uwtable
declare hidden void @_ZL19multithreadFileLoopRKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EEPSt6atomicImERK10ECTOptionsPSA_IjE(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef, ptr noundef nonnull align 4 dereferenceable(40), ptr noundef) #0

; Function Attrs: mustprogress nounwind uwtable
declare dso_local ptr @_ZNSt6vectorISt6threadSaIS0_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24)) #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local ptr @_ZNSt6vectorISt6threadSaIS0_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24)) #2 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN9__gnu_cxxneIPSt6threadSt6vectorIS1_SaIS1_EEEEbRKNS_17__normal_iteratorIT_T0_EESB_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) #10

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

declare void @_ZNSt6thread4joinEv(ptr noundef nonnull align 8 dereferenceable(8)) #3

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local ptr @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24)) #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local ptr @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24)) #2 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN9__gnu_cxxneIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIS6_SaIS6_EEEEbRKNS_17__normal_iteratorIT_T0_EESG_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) #10

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

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

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

; Function Attrs: mustprogress uwtable
declare hidden void @_ZL17ECT_ReportSavingsv() #0

; Function Attrs: alwaysinline mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNKSt13__atomic_baseIjE4loadESt12memory_order(ptr noundef nonnull align 4 dereferenceable(4), i32 noundef) #11 align 2

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

attributes #0 = { 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 #1 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { 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 #3 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { 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 #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 = { nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #8 = { 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 #9 = { 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 #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 = { alwaysinline 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 = { 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, !13, i64 8}
!12 = !{!"_ZTS10ECTOptions", !6, i64 0, !6, i64 4, !13, i64 8, !13, i64 9, !6, i64 12, !13, i64 16, !13, i64 17, !13, i64 18, !13, i64 19, !13, i64 20, !13, i64 21, !13, i64 22, !13, i64 23, !13, i64 24, !13, i64 25, !13, i64 26, !13, i64 27, !6, i64 28, !6, i64 32, !13, i64 36}
!13 = !{!"bool", !7, i64 0}
!14 = !{!12, !13, i64 9}
!15 = !{!12, !6, i64 12}
!16 = !{!12, !6, i64 0}
!17 = !{!12, !13, i64 27}
!18 = !{!12, !13, i64 17}
!19 = !{!12, !13, i64 16}
!20 = !{!12, !13, i64 20}
!21 = !{!12, !13, i64 21}
!22 = !{!12, !13, i64 22}
!23 = !{!12, !13, i64 18}
!24 = !{!12, !13, i64 19}
!25 = !{!12, !6, i64 28}
!26 = !{!12, !6, i64 32}
!27 = !{!12, !13, i64 23}
!28 = !{!12, !13, i64 24}
!29 = !{!12, !13, i64 25}
!30 = !{!12, !13, i64 26}
!31 = !{!12, !6, i64 4}
!32 = !{!12, !13, i64 36}
!33 = !{!7, !7, i64 0}
!34 = distinct !{!34, !35}
!35 = !{!"llvm.loop.mustprogress"}
!36 = !{i8 0, i8 2}
!37 = !{}
!38 = distinct !{!38, !35}
!39 = distinct !{!39, !35}
!40 = distinct !{!40, !35}
!41 = distinct !{!41, !35}


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

%"struct.std::atomic.12" = type { %"struct.std::__atomic_base.13" }
%"struct.std::__atomic_base.13" = type { i32 }
%struct.ECTOptions = type { i32, i32, i8, i8, i32, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i32, i32, i8 }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl" }
%"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl" = type { %"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl_data" }
%"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.14" = type { %"struct.std::_Vector_base.15" }
%"struct.std::_Vector_base.15" = type { %"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::filesystem::__cxx11::path" = type { %"class.std::__cxx11::basic_string", %"struct.std::filesystem::__cxx11::path::_List" }
%"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] }
%"struct.std::filesystem::__cxx11::path::_List" = type { %"class.std::unique_ptr" }
%"class.std::unique_ptr" = type { %"struct.std::__uniq_ptr_data" }
%"struct.std::__uniq_ptr_data" = type { %"class.std::__uniq_ptr_impl" }
%"class.std::__uniq_ptr_impl" = type { %"class.std::tuple" }
%"class.std::tuple" = type { %"struct.std::_Tuple_impl" }
%"struct.std::_Tuple_impl" = type { %"struct.std::_Head_base.6" }
%"struct.std::_Head_base.6" = type { ptr }
%"class.std::allocator" = type { i8 }
%"class.std::filesystem::__cxx11::recursive_directory_iterator" = type { %"class.std::__shared_ptr" }
%"class.std::__shared_ptr" = type { ptr, %"class.std::__shared_count" }
%"class.std::__shared_count" = type { ptr }
%"class.std::vector.7" = type { %"struct.std::_Vector_base.8" }
%"struct.std::_Vector_base.8" = type { %"struct.std::_Vector_base<std::filesystem::__cxx11::path, std::allocator<std::filesystem::__cxx11::path>>::_Vector_impl" }
%"struct.std::_Vector_base<std::filesystem::__cxx11::path, std::allocator<std::filesystem::__cxx11::path>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::filesystem::__cxx11::path, std::allocator<std::filesystem::__cxx11::path>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::filesystem::__cxx11::path, std::allocator<std::filesystem::__cxx11::path>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::allocator.9" = type { i8 }
%"class.std::filesystem::__cxx11::directory_iterator" = type { %"class.std::__shared_ptr.19" }
%"class.std::__shared_ptr.19" = type { ptr, %"class.std::__shared_count" }
%"class.std::vector.21" = type { %"struct.std::_Vector_base.22" }
%"struct.std::_Vector_base.22" = type { %"struct.std::_Vector_base<std::thread, std::allocator<std::thread>>::_Vector_impl" }
%"struct.std::_Vector_base<std::thread, std::allocator<std::thread>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::thread, std::allocator<std::thread>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::thread, std::allocator<std::thread>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.std::atomic" = type { %"struct.std::__atomic_base" }
%"struct.std::__atomic_base" = type { i64 }
%"class.__gnu_cxx::__normal_iterator" = type { ptr }
%"class.__gnu_cxx::__normal_iterator.26" = type { ptr }

@.str.22 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.33 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.34 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.35 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.36 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.37 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.38 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.39 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.40 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.41 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.42 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.43 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.44 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.45 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.46 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.47 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.48 = external hidden unnamed_addr constant [34 x i8], align 1

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_Z11fileHandlerPKcRK10ECTOptionsi(ptr noundef, ptr noundef nonnull align 4 dereferenceable(40), i32 noundef) local_unnamed_addr #0

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

; Function Attrs: mustprogress nounwind uwtable
declare void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #2 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 #0 align 2

declare i32 @__gxx_personality_v0(...)

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32)) local_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 #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_Z10zipHandlerSt6vectorIiSaIiEEPPKciRK10ECTOptions(ptr noundef, ptr noundef, i32 noundef, ptr noundef nonnull align 4 dereferenceable(40)) local_unnamed_addr #0

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) local_unnamed_addr #2 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNSt10filesystem15is_regular_fileERKNS_7__cxx114pathE(ptr noundef nonnull align 8 dereferenceable(40)) local_unnamed_addr #4

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt10filesystem7__cxx114pathC2IPKcS1_EERKT_NS1_6formatE(ptr noundef nonnull align 8 dereferenceable(40), ptr noundef nonnull align 8 dereferenceable(8), i8 noundef zeroext) unnamed_addr #0 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt10filesystem7__cxx1128recursive_directory_iteratorC2ERKNS0_4pathE(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(40)) unnamed_addr #0 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt10filesystem7__cxx1128recursive_directory_iteratorC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(16)) unnamed_addr #2 align 2

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

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

; Function Attrs: nounwind
declare void @_ZNSt10filesystem7__cxx1128recursive_directory_iteratorD1Ev(ptr noundef nonnull align 8 dereferenceable(16)) unnamed_addr #5

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZNKSt6vectorINSt10filesystem7__cxx114pathESaIS2_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(40) ptr @_ZNSt6vectorINSt10filesystem7__cxx114pathESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) local_unnamed_addr #2 align 2

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

; Function Attrs: mustprogress norecurse uwtable
define dso_local noundef i32 @main(i32 noundef %0, ptr noundef %1) local_unnamed_addr #6 personality ptr @__gxx_personality_v0 {
  %3 = alloca %"struct.std::atomic.12", align 4
  %4 = alloca %struct.ECTOptions, align 4
  %5 = alloca %"class.std::vector", align 8
  %6 = alloca i32, align 4
  %7 = alloca %"class.std::vector", align 8
  %8 = alloca %"class.std::vector.14", align 8
  %9 = alloca %"class.std::filesystem::__cxx11::path", align 8
  %10 = alloca %"class.std::__cxx11::basic_string", align 8
  %11 = alloca %"class.std::allocator", align 1
  %12 = alloca %"class.std::filesystem::__cxx11::path", align 8
  %13 = alloca %"class.std::filesystem::__cxx11::recursive_directory_iterator", align 8
  %14 = alloca %"class.std::filesystem::__cxx11::path", align 8
  %15 = alloca %"class.std::filesystem::__cxx11::recursive_directory_iterator", align 8
  %16 = alloca %"class.std::vector.7", align 8
  %17 = alloca %"class.std::filesystem::__cxx11::recursive_directory_iterator", align 8
  %18 = alloca %"class.std::filesystem::__cxx11::recursive_directory_iterator", align 8
  %19 = alloca %"class.std::allocator.9", align 1
  %20 = alloca %"class.std::__cxx11::basic_string", align 8
  %21 = alloca %"class.std::filesystem::__cxx11::directory_iterator", align 8
  %22 = alloca %"class.std::filesystem::__cxx11::path", align 8
  %23 = alloca %"class.std::filesystem::__cxx11::directory_iterator", align 8
  %24 = alloca %"class.std::vector.7", align 8
  %25 = alloca %"class.std::filesystem::__cxx11::directory_iterator", align 8
  %26 = alloca %"class.std::filesystem::__cxx11::directory_iterator", align 8
  %27 = alloca %"class.std::allocator.9", align 1
  %28 = alloca %"class.std::__cxx11::basic_string", align 8
  %29 = alloca %"class.std::vector.21", align 8
  %30 = alloca %"struct.std::atomic", align 8
  %31 = alloca ptr, align 8
  %32 = alloca ptr, align 8
  %33 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %34 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %35 = alloca %"class.__gnu_cxx::__normal_iterator.26", align 8
  %36 = alloca %"class.__gnu_cxx::__normal_iterator.26", align 8
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %3) #14
  store i32 0, ptr %3, align 4
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %4) #14
  %37 = getelementptr inbounds i8, ptr %4, i64 8
  store i8 0, ptr %37, align 4, !tbaa !5
  %38 = getelementptr inbounds i8, ptr %4, i64 9
  store i8 0, ptr %38, align 1, !tbaa !11
  %39 = getelementptr inbounds i8, ptr %4, i64 12
  store i32 0, ptr %39, align 4, !tbaa !12
  store i32 3, ptr %4, align 4, !tbaa !13
  %40 = getelementptr inbounds i8, ptr %4, i64 27
  store i8 0, ptr %40, align 1, !tbaa !14
  %41 = getelementptr inbounds i8, ptr %4, i64 17
  %42 = getelementptr inbounds i8, ptr %4, i64 16
  %43 = getelementptr inbounds i8, ptr %4, i64 20
  store i8 0, ptr %43, align 4, !tbaa !15
  %44 = getelementptr inbounds i8, ptr %4, i64 21
  store i8 0, ptr %44, align 1, !tbaa !16
  %45 = getelementptr inbounds i8, ptr %4, i64 22
  store i8 0, ptr %45, align 2, !tbaa !17
  %46 = getelementptr inbounds i8, ptr %4, i64 18
  %47 = getelementptr inbounds i8, ptr %4, i64 19
  store <4 x i8> <i8 1, i8 1, i8 1, i8 0>, ptr %42, align 4, !tbaa !18
  %48 = getelementptr inbounds i8, ptr %4, i64 28
  %49 = getelementptr inbounds i8, ptr %4, i64 32
  %50 = getelementptr inbounds i8, ptr %4, i64 23
  %51 = getelementptr inbounds i8, ptr %4, i64 24
  %52 = getelementptr inbounds i8, ptr %4, i64 25
  %53 = getelementptr inbounds i8, ptr %4, i64 26
  %54 = getelementptr inbounds i8, ptr %4, i64 4
  store i32 0, ptr %54, align 4, !tbaa !19
  %55 = getelementptr inbounds i8, ptr %4, i64 36
  store i32 0, ptr %50, align 1
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(9) %48, i8 0, i64 9, i1 false)
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %5) #14
  call void @_ZNSt6vectorIiSaIiEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %5) #14
  %56 = icmp sgt i32 %0, 1
  br i1 %56, label %57, label %362

57:                                               ; preds = %2
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %6) #14
  store i32 1, ptr %6, align 4, !tbaa !20
  %rhsc = load i8, ptr @.str.22, align 1
  %58 = icmp eq i8 %rhsc, 45
  br label %59

59:                                               ; preds = %57, %188
  %.087161 = phi i32 [ 0, %57 ], [ %.289.ph, %188 ]
  %storemerge160 = phi i32 [ 1, %57 ], [ %190, %188 ]
  %60 = sext i32 %storemerge160 to i64
  %61 = getelementptr inbounds ptr, ptr %1, i64 %60
  %62 = load ptr, ptr %61, align 8, !tbaa !21
  %lhsc = load i8, ptr %62, align 1
  %.not = icmp eq i8 %lhsc, %rhsc
  br i1 %.not, label %67, label %63

63:                                               ; preds = %59
  invoke void @_ZNSt6vectorIiSaIiEE9push_backERKi(ptr noundef nonnull align 8 dereferenceable(24) %5, ptr noundef nonnull align 4 dereferenceable(4) %6)
          to label %64 unwind label %.loopexit

64:                                               ; preds = %63
  %65 = add nsw i32 %.087161, 1
  br label %188

.loopexit:                                        ; preds = %63
  %lpad.loopexit = landingpad { ptr, i32 }
          cleanup
  br label %66

.loopexit.split-lp:                               ; preds = %103
  %lpad.loopexit.split-lp = landingpad { ptr, i32 }
          cleanup
  br label %66

66:                                               ; preds = %.loopexit.split-lp, %.loopexit
  %lpad.phi = phi { ptr, i32 } [ %lpad.loopexit, %.loopexit ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %6) #14
  br label %366

67:                                               ; preds = %59
  %68 = call i64 @strnlen(ptr noundef nonnull dereferenceable(1) %62, i64 noundef 64) #15
  %sext = shl i64 %68, 32
  %69 = ashr exact i64 %sext, 32
  %70 = call i32 @strncmp(ptr noundef nonnull %62, ptr noundef nonnull @.str.23, i64 noundef %69) #15
  %71 = icmp eq i32 %70, 0
  br i1 %71, label %72, label %73

72:                                               ; preds = %67
  store i8 1, ptr %37, align 4, !tbaa !5
  br label %188

73:                                               ; preds = %67
  %74 = call i32 @strncmp(ptr noundef nonnull %62, ptr noundef nonnull @.str.24, i64 noundef %69) #15
  %75 = icmp eq i32 %74, 0
  br i1 %75, label %76, label %77

76:                                               ; preds = %73
  store i8 1, ptr %38, align 1, !tbaa !11
  br label %188

77:                                               ; preds = %73
  %78 = call i32 @strncmp(ptr noundef nonnull %62, ptr noundef nonnull @.str.25, i64 noundef %69) #15
  %79 = icmp eq i32 %78, 0
  br i1 %79, label %80, label %81

80:                                               ; preds = %77
  store i32 2, ptr %39, align 4, !tbaa !12
  br label %188

81:                                               ; preds = %77
  %82 = call i32 @strncmp(ptr noundef nonnull %62, ptr noundef nonnull @.str.26, i64 noundef %69) #15
  %83 = icmp eq i32 %82, 0
  br i1 %83, label %84, label %85

84:                                               ; preds = %81
  store i32 1, ptr %39, align 4, !tbaa !12
  br label %188

85:                                               ; preds = %81
  br i1 %58, label %86, label %92

86:                                               ; preds = %85
  %87 = getelementptr inbounds i8, ptr %62, i64 1
  %88 = load i8, ptr %87, align 1, !tbaa !23
  %89 = sext i8 %88 to i32
  %isdigittmp = add nsw i32 %89, -48
  %isdigit = icmp ult i32 %isdigittmp, 10
  br i1 %isdigit, label %90, label %92

90:                                               ; preds = %86
  %91 = call i32 @atoi(ptr nocapture noundef %87) #15
  %spec.store.select = call i32 @llvm.umax.i32(i32 %91, i32 1)
  store i32 %spec.store.select, ptr %4, align 4, !tbaa !13
  br label %188

92:                                               ; preds = %86, %85
  %93 = call i32 @strncmp(ptr noundef nonnull %62, ptr noundef nonnull @.str.27, i64 noundef %69) #15
  %94 = icmp eq i32 %93, 0
  br i1 %94, label %95, label %96

95:                                               ; preds = %92
  store i8 1, ptr %44, align 1, !tbaa !16
  br label %188

96:                                               ; preds = %92
  %97 = call i32 @strncmp(ptr noundef nonnull %62, ptr noundef nonnull @.str.28, i64 noundef %69) #15
  %98 = icmp eq i32 %97, 0
  br i1 %98, label %99, label %100

99:                                               ; preds = %96
  store i8 1, ptr %45, align 2, !tbaa !17
  store i8 1, ptr %44, align 1, !tbaa !16
  br label %188

100:                                              ; preds = %96
  %101 = call i32 @strncmp(ptr noundef nonnull %62, ptr noundef nonnull @.str.29, i64 noundef %69) #15
  %102 = icmp eq i32 %101, 0
  br i1 %102, label %103, label %104

103:                                              ; preds = %100
  invoke void @_ZL5Usagev()
          to label %.thread152 unwind label %.loopexit.split-lp

104:                                              ; preds = %100
  %105 = call i32 @strncmp(ptr noundef nonnull %62, ptr noundef nonnull @.str.30, i64 noundef %69) #15
  %106 = icmp eq i32 %105, 0
  br i1 %106, label %107, label %108

107:                                              ; preds = %104
  store i8 0, ptr %46, align 2, !tbaa !24
  br label %188

108:                                              ; preds = %104
  %109 = call i32 @strncmp(ptr noundef nonnull %62, ptr noundef nonnull @.str.31, i64 noundef %69) #15
  %110 = icmp eq i32 %109, 0
  br i1 %110, label %111, label %112

111:                                              ; preds = %108
  store i8 1, ptr %55, align 4, !tbaa !25
  br label %188

112:                                              ; preds = %108
  %113 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %62, ptr noundef nonnull dereferenceable(1) @.str.32) #15
  %114 = icmp eq i32 %113, 0
  br i1 %114, label %118, label %115

115:                                              ; preds = %112
  %116 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %62, ptr noundef nonnull dereferenceable(1) @.str.33) #15
  %117 = icmp eq i32 %116, 0
  br i1 %117, label %118, label %119

118:                                              ; preds = %115, %112
  store i8 0, ptr %42, align 4, !tbaa !26
  br label %188

119:                                              ; preds = %115
  %120 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %62, ptr noundef nonnull dereferenceable(1) @.str.34) #15
  %121 = icmp eq i32 %120, 0
  br i1 %121, label %122, label %123

122:                                              ; preds = %119
  store i8 0, ptr %41, align 1, !tbaa !27
  br label %188

123:                                              ; preds = %119
  %124 = call i32 @strncmp(ptr noundef nonnull %62, ptr noundef nonnull @.str.35, i64 noundef %69) #15
  %125 = icmp eq i32 %124, 0
  br i1 %125, label %126, label %127

126:                                              ; preds = %123
  store i8 1, ptr %40, align 1, !tbaa !14
  br label %188

127:                                              ; preds = %123
  %128 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %62, ptr noundef nonnull dereferenceable(1) @.str.36) #15
  %129 = icmp eq i32 %128, 0
  br i1 %129, label %130, label %131

130:                                              ; preds = %127
  store i8 1, ptr %47, align 1, !tbaa !28
  br label %188

131:                                              ; preds = %127
  %132 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %62, ptr noundef nonnull dereferenceable(1) @.str.37) #15
  %133 = icmp eq i32 %132, 0
  br i1 %133, label %134, label %135

134:                                              ; preds = %131
  store i8 1, ptr %50, align 1, !tbaa !29
  br label %188

135:                                              ; preds = %131
  %136 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %62, ptr noundef nonnull dereferenceable(1) @.str.38) #15
  %137 = icmp eq i32 %136, 0
  br i1 %137, label %138, label %139

138:                                              ; preds = %135
  store i8 1, ptr %51, align 4, !tbaa !30
  br label %188

139:                                              ; preds = %135
  %140 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %62, ptr noundef nonnull dereferenceable(1) @.str.39) #15
  %141 = icmp eq i32 %140, 0
  br i1 %141, label %142, label %143

142:                                              ; preds = %139
  store i8 1, ptr %51, align 4, !tbaa !30
  store i8 1, ptr %52, align 1, !tbaa !31
  br label %188

143:                                              ; preds = %139
  %144 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %62, ptr noundef nonnull dereferenceable(1) @.str.40) #15
  %145 = icmp eq i32 %144, 0
  br i1 %145, label %146, label %147

146:                                              ; preds = %143
  store i8 1, ptr %53, align 2, !tbaa !32
  br label %188

147:                                              ; preds = %143
  %148 = call i32 @strncmp(ptr noundef nonnull dereferenceable(1) %62, ptr noundef nonnull dereferenceable(1) @.str.41, i64 noundef 11) #15
  %149 = icmp eq i32 %148, 0
  br i1 %149, label %150, label %154

150:                                              ; preds = %147
  %151 = getelementptr inbounds i8, ptr %62, i64 11
  %152 = call i32 @atoi(ptr nocapture noundef %151) #15
  %153 = shl i32 %152, 8
  %spec.store.select147 = call i32 @llvm.umin.i32(i32 %153, i32 30720)
  store i32 %spec.store.select147, ptr %54, align 4
  br label %188

154:                                              ; preds = %147
  %155 = call i32 @strncmp(ptr noundef nonnull dereferenceable(1) %62, ptr noundef nonnull dereferenceable(1) @.str.42, i64 noundef 12) #15
  %156 = icmp eq i32 %155, 0
  br i1 %156, label %157, label %168

157:                                              ; preds = %154
  %158 = call i32 @strncmp(ptr noundef nonnull dereferenceable(1) %62, ptr noundef nonnull dereferenceable(1) @.str.43, i64 noundef 13) #15
  %159 = icmp eq i32 %158, 0
  br i1 %159, label %160, label %163

160:                                              ; preds = %157
  %161 = getelementptr inbounds i8, ptr %62, i64 13
  %162 = call i32 @atoi(ptr nocapture noundef %161) #15
  store i32 %162, ptr %48, align 4, !tbaa !33
  br label %188

163:                                              ; preds = %157
  %164 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %62, ptr noundef nonnull dereferenceable(1) @.str.42) #15
  %165 = icmp eq i32 %164, 0
  br i1 %165, label %166, label %188

166:                                              ; preds = %163
  %167 = call noundef i32 @_ZNSt6thread20hardware_concurrencyEv() #14
  store i32 %167, ptr %48, align 4, !tbaa !33
  br label %188

168:                                              ; preds = %154
  %169 = call i32 @strncmp(ptr noundef nonnull dereferenceable(1) %62, ptr noundef nonnull dereferenceable(1) @.str.44, i64 noundef 9) #15
  %170 = icmp eq i32 %169, 0
  br i1 %170, label %171, label %182

171:                                              ; preds = %168
  %172 = call i32 @strncmp(ptr noundef nonnull dereferenceable(1) %62, ptr noundef nonnull dereferenceable(1) @.str.45, i64 noundef 10) #15
  %173 = icmp eq i32 %172, 0
  br i1 %173, label %174, label %177

174:                                              ; preds = %171
  %175 = getelementptr inbounds i8, ptr %62, i64 10
  %176 = call i32 @atoi(ptr nocapture noundef %175) #15
  store i32 %176, ptr %49, align 4, !tbaa !34
  br label %188

177:                                              ; preds = %171
  %178 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %62, ptr noundef nonnull dereferenceable(1) @.str.44) #15
  %179 = icmp eq i32 %178, 0
  br i1 %179, label %180, label %188

180:                                              ; preds = %177
  %181 = call noundef i32 @_ZNSt6thread20hardware_concurrencyEv() #14
  store i32 %181, ptr %49, align 4, !tbaa !34
  br label %188

182:                                              ; preds = %168
  %183 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %62, ptr noundef nonnull dereferenceable(1) @.str.46) #15
  %184 = icmp eq i32 %183, 0
  br i1 %184, label %185, label %186

185:                                              ; preds = %182
  store i8 1, ptr %43, align 4, !tbaa !15
  br label %188

186:                                              ; preds = %182
  %187 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.47, ptr noundef nonnull %62)
  br label %.thread152

188:                                              ; preds = %72, %80, %90, %99, %107, %118, %126, %134, %142, %150, %185, %177, %180, %174, %160, %166, %163, %146, %138, %130, %122, %111, %95, %84, %76, %64
  %.289.ph = phi i32 [ %.087161, %150 ], [ %.087161, %185 ], [ %.087161, %177 ], [ %.087161, %180 ], [ %.087161, %174 ], [ %.087161, %163 ], [ %.087161, %166 ], [ %.087161, %160 ], [ %.087161, %146 ], [ %.087161, %142 ], [ %.087161, %138 ], [ %.087161, %134 ], [ %.087161, %130 ], [ %.087161, %126 ], [ %.087161, %122 ], [ %.087161, %118 ], [ %.087161, %111 ], [ %.087161, %107 ], [ %.087161, %99 ], [ %.087161, %95 ], [ %.087161, %90 ], [ %.087161, %84 ], [ %.087161, %80 ], [ %.087161, %76 ], [ %.087161, %72 ], [ %65, %64 ]
  %189 = load i32, ptr %6, align 4, !tbaa !20
  %190 = add nsw i32 %189, 1
  store i32 %190, ptr %6, align 4, !tbaa !20
  %.not121 = icmp slt i32 %190, %0
  br i1 %.not121, label %59, label %191, !llvm.loop !35

.thread152:                                       ; preds = %186, %103
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %6) #14
  br label %365

191:                                              ; preds = %188
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %6) #14
  %192 = load i32, ptr %39, align 4, !tbaa !12
  %.not122 = icmp eq i32 %192, 0
  br i1 %.not122, label %200, label %193

193:                                              ; preds = %191
  %194 = load i8, ptr %37, align 4, !tbaa !5, !range !37, !noundef !38
  %195 = trunc nuw i8 %194 to i1
  br i1 %195, label %200, label %196

196:                                              ; preds = %193
  %197 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.48)
  br label %365

198:                                              ; preds = %362, %361, %357, %208
  %199 = landingpad { ptr, i32 }
          cleanup
  br label %366

200:                                              ; preds = %193, %191
  %201 = load i8, ptr %50, align 1, !tbaa !29, !range !37, !noundef !38
  %202 = trunc nuw i8 %201 to i1
  br i1 %202, label %203, label %204

203:                                              ; preds = %200
  store i8 0, ptr %51, align 4, !tbaa !30
  br label %204

204:                                              ; preds = %203, %200
  %205 = load i8, ptr %45, align 2, !tbaa !17, !range !37, !noundef !38
  %206 = trunc nuw i8 %205 to i1
  %207 = icmp ne i32 %.289.ph, 0
  %or.cond = select i1 %206, i1 %207, i1 false
  br i1 %or.cond, label %208, label %214

208:                                              ; preds = %204
  invoke void @_ZNSt6vectorIiSaIiEEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %7, ptr noundef nonnull align 8 dereferenceable(24) %5)
          to label %209 unwind label %198

209:                                              ; preds = %208
  %210 = invoke noundef i32 @_Z10zipHandlerSt6vectorIiSaIiEEPPKciRK10ECTOptions(ptr noundef nonnull %7, ptr noundef nonnull %1, i32 noundef %.289.ph, ptr noundef nonnull align 4 dereferenceable(40) %4)
          to label %.thread154 unwind label %212

.thread154:                                       ; preds = %209
  %211 = call noundef i32 @_ZNSt13__atomic_baseIjEoREj(ptr noundef nonnull align 4 dereferenceable(4) %3, i32 noundef %210) #14
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %7) #14
  br label %358

212:                                              ; preds = %209
  %213 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %7) #14
  br label %366

214:                                              ; preds = %204
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %8) #14
  call void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %8) #14
  %215 = icmp sgt i32 %.289.ph, 0
  br i1 %215, label %.lr.ph169.preheader, label %._crit_edge170

.lr.ph169.preheader:                              ; preds = %214
  %wide.trip.count = zext nneg i32 %.289.ph to i64
  br label %.lr.ph169

._crit_edge170:                                   ; preds = %322, %214
  %216 = load i32, ptr %49, align 4, !tbaa !34
  %.not123 = icmp eq i32 %216, 0
  br i1 %.not123, label %342, label %323

.lr.ph169:                                        ; preds = %.lr.ph169.preheader, %322
  %indvars.iv = phi i64 [ 0, %.lr.ph169.preheader ], [ %indvars.iv.next, %322 ]
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %9) #14
  %217 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef %indvars.iv) #14
  %218 = load i32, ptr %217, align 4, !tbaa !20
  %219 = sext i32 %218 to i64
  %220 = getelementptr inbounds ptr, ptr %1, i64 %219
  invoke void @_ZNSt10filesystem7__cxx114pathC2IPKcS1_EERKT_NS1_6formatE(ptr noundef nonnull align 8 dereferenceable(40) %9, ptr noundef nonnull align 8 dereferenceable(8) %220, i8 noundef zeroext 2)
          to label %221 unwind label %232

221:                                              ; preds = %.lr.ph169
  %222 = invoke noundef zeroext i1 @_ZNSt10filesystem15is_regular_fileERKNS_7__cxx114pathE(ptr noundef nonnull align 8 dereferenceable(40) %9)
          to label %223 unwind label %234

223:                                              ; preds = %221
  call void @_ZNSt10filesystem7__cxx114pathD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %9) #14
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %9) #14
  br i1 %222, label %224, label %242

224:                                              ; preds = %223
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %10) #14
  %225 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef %indvars.iv) #14
  %226 = load i32, ptr %225, align 4, !tbaa !20
  %227 = sext i32 %226 to i64
  %228 = getelementptr inbounds ptr, ptr %1, i64 %227
  %229 = load ptr, ptr %228, align 8, !tbaa !21
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %11) #14
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %11) #14
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %10, ptr noundef %229, ptr noundef nonnull align 1 dereferenceable(1) %11)
          to label %230 unwind label %237

230:                                              ; preds = %224
  invoke void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE9push_backEOS5_(ptr noundef nonnull align 8 dereferenceable(24) %8, ptr noundef nonnull align 8 dereferenceable(32) %10)
          to label %231 unwind label %239

231:                                              ; preds = %230
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #14
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %11) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %11) #14
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %10) #14
  br label %322

232:                                              ; preds = %.lr.ph169
  %233 = landingpad { ptr, i32 }
          cleanup
  br label %236

234:                                              ; preds = %221
  %235 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt10filesystem7__cxx114pathD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %9) #14
  br label %236

236:                                              ; preds = %234, %232
  %.pn125 = phi { ptr, i32 } [ %235, %234 ], [ %233, %232 ]
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %9) #14
  br label %355

237:                                              ; preds = %224
  %238 = landingpad { ptr, i32 }
          cleanup
  br label %241

239:                                              ; preds = %230
  %240 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #14
  br label %241

241:                                              ; preds = %239, %237
  %.pn141 = phi { ptr, i32 } [ %240, %239 ], [ %238, %237 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %11) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %11) #14
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %10) #14
  br label %355

242:                                              ; preds = %223
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %12) #14
  %243 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef %indvars.iv) #14
  %244 = load i32, ptr %243, align 4, !tbaa !20
  %245 = sext i32 %244 to i64
  %246 = getelementptr inbounds ptr, ptr %1, i64 %245
  invoke void @_ZNSt10filesystem7__cxx114pathC2IPKcS1_EERKT_NS1_6formatE(ptr noundef nonnull align 8 dereferenceable(40) %12, ptr noundef nonnull align 8 dereferenceable(8) %246, i8 noundef zeroext 2)
          to label %247 unwind label %262

247:                                              ; preds = %242
  %248 = invoke noundef zeroext i1 @_ZNSt10filesystem12is_directoryERKNS_7__cxx114pathE(ptr noundef nonnull align 8 dereferenceable(40) %12)
          to label %249 unwind label %264

249:                                              ; preds = %247
  call void @_ZNSt10filesystem7__cxx114pathD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %12) #14
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %12) #14
  br i1 %248, label %250, label %320

250:                                              ; preds = %249
  %251 = load i8, ptr %40, align 1, !tbaa !14, !range !37, !noundef !38
  %252 = trunc nuw i8 %251 to i1
  br i1 %252, label %253, label %289

253:                                              ; preds = %250
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %13) #14
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %14) #14
  %254 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef %indvars.iv) #14
  %255 = load i32, ptr %254, align 4, !tbaa !20
  %256 = sext i32 %255 to i64
  %257 = getelementptr inbounds ptr, ptr %1, i64 %256
  invoke void @_ZNSt10filesystem7__cxx114pathC2IPKcS1_EERKT_NS1_6formatE(ptr noundef nonnull align 8 dereferenceable(40) %14, ptr noundef nonnull align 8 dereferenceable(8) %257, i8 noundef zeroext 2)
          to label %258 unwind label %267

258:                                              ; preds = %253
  invoke void @_ZNSt10filesystem7__cxx1128recursive_directory_iteratorC2ERKNS0_4pathE(ptr noundef nonnull align 8 dereferenceable(16) %13, ptr noundef nonnull align 8 dereferenceable(40) %14)
          to label %259 unwind label %269

259:                                              ; preds = %258
  call void @_ZNSt10filesystem7__cxx114pathD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %14) #14
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %14) #14
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %15) #14
  call void @_ZNSt10filesystem7__cxx1128recursive_directory_iteratorC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %15) #14
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %16) #14
  call void @_ZNSt10filesystem7__cxx1128recursive_directory_iteratorC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %17, ptr noundef nonnull align 8 dereferenceable(16) %13) #14
  call void @_ZNSt10filesystem7__cxx1128recursive_directory_iteratorC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %18, ptr noundef nonnull align 8 dereferenceable(16) %15) #14
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %19) #14
  call void @_ZNSaINSt10filesystem7__cxx114pathEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %19) #14
  invoke void @_ZNSt6vectorINSt10filesystem7__cxx114pathESaIS2_EEC2INS1_28recursive_directory_iteratorEvEET_S7_RKS3_(ptr noundef nonnull align 8 dereferenceable(24) %16, ptr noundef nonnull %17, ptr noundef nonnull %18, ptr noundef nonnull align 1 dereferenceable(1) %19)
          to label %260 unwind label %272

260:                                              ; preds = %259
  call void @_ZNSt15__new_allocatorINSt10filesystem7__cxx114pathEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %19) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %19) #14
  call void @_ZNSt10filesystem7__cxx1128recursive_directory_iteratorD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %18) #14
  call void @_ZNSt10filesystem7__cxx1128recursive_directory_iteratorD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %17) #14
  %261 = call noundef i64 @_ZNKSt6vectorINSt10filesystem7__cxx114pathESaIS2_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %16) #14
  %.not182 = icmp eq i64 %261, 0
  br i1 %.not182, label %._crit_edge166, label %.lr.ph165

._crit_edge166:                                   ; preds = %277, %260
  call void @_ZNSt6vectorINSt10filesystem7__cxx114pathESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %16) #14
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %16) #14
  call void @_ZNSt10filesystem7__cxx1128recursive_directory_iteratorD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %15) #14
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %15) #14
  call void @_ZNSt10filesystem7__cxx1128recursive_directory_iteratorD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %13) #14
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %13) #14
  br label %322

262:                                              ; preds = %242
  %263 = landingpad { ptr, i32 }
          cleanup
  br label %266

264:                                              ; preds = %247
  %265 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt10filesystem7__cxx114pathD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %12) #14
  br label %266

266:                                              ; preds = %264, %262
  %.pn127 = phi { ptr, i32 } [ %265, %264 ], [ %263, %262 ]
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %12) #14
  br label %355

267:                                              ; preds = %253
  %268 = landingpad { ptr, i32 }
          cleanup
  br label %271

269:                                              ; preds = %258
  %270 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt10filesystem7__cxx114pathD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %14) #14
  br label %271

271:                                              ; preds = %269, %267
  %.pn135 = phi { ptr, i32 } [ %270, %269 ], [ %268, %267 ]
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %14) #14
  br label %288

272:                                              ; preds = %259
  %273 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorINSt10filesystem7__cxx114pathEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %19) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %19) #14
  call void @_ZNSt10filesystem7__cxx1128recursive_directory_iteratorD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %18) #14
  call void @_ZNSt10filesystem7__cxx1128recursive_directory_iteratorD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %17) #14
  br label %287

.lr.ph165:                                        ; preds = %260, %277
  %274 = phi i64 [ %279, %277 ], [ 0, %260 ]
  %.099163 = phi i32 [ %278, %277 ], [ 0, %260 ]
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %20) #14
  %275 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNSt6vectorINSt10filesystem7__cxx114pathESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %16, i64 noundef %274) #14
  invoke void @_ZNKSt10filesystem7__cxx114path6stringEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %20, ptr noundef nonnull align 8 dereferenceable(40) %275)
          to label %276 unwind label %282

276:                                              ; preds = %.lr.ph165
  invoke void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE9push_backEOS5_(ptr noundef nonnull align 8 dereferenceable(24) %8, ptr noundef nonnull align 8 dereferenceable(32) %20)
          to label %277 unwind label %284

277:                                              ; preds = %276
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %20) #14
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %20) #14
  %278 = add i32 %.099163, 1
  %279 = zext i32 %278 to i64
  %280 = call noundef i64 @_ZNKSt6vectorINSt10filesystem7__cxx114pathESaIS2_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %16) #14
  %281 = icmp ugt i64 %280, %279
  br i1 %281, label %.lr.ph165, label %._crit_edge166, !llvm.loop !39

282:                                              ; preds = %.lr.ph165
  %283 = landingpad { ptr, i32 }
          cleanup
  br label %286

284:                                              ; preds = %276
  %285 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %20) #14
  br label %286

286:                                              ; preds = %284, %282
  %.pn137 = phi { ptr, i32 } [ %285, %284 ], [ %283, %282 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %20) #14
  call void @_ZNSt6vectorINSt10filesystem7__cxx114pathESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %16) #14
  br label %287

287:                                              ; preds = %286, %272
  %.pn137.pn = phi { ptr, i32 } [ %.pn137, %286 ], [ %273, %272 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %16) #14
  call void @_ZNSt10filesystem7__cxx1128recursive_directory_iteratorD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %15) #14
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %15) #14
  call void @_ZNSt10filesystem7__cxx1128recursive_directory_iteratorD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %13) #14
  br label %288

288:                                              ; preds = %287, %271
  %.pn137.pn.pn = phi { ptr, i32 } [ %.pn137.pn, %287 ], [ %.pn135, %271 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %13) #14
  br label %355

289:                                              ; preds = %250
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %21) #14
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %22) #14
  %290 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef %indvars.iv) #14
  %291 = load i32, ptr %290, align 4, !tbaa !20
  %292 = sext i32 %291 to i64
  %293 = getelementptr inbounds ptr, ptr %1, i64 %292
  invoke void @_ZNSt10filesystem7__cxx114pathC2IPKcS1_EERKT_NS1_6formatE(ptr noundef nonnull align 8 dereferenceable(40) %22, ptr noundef nonnull align 8 dereferenceable(8) %293, i8 noundef zeroext 2)
          to label %294 unwind label %298

294:                                              ; preds = %289
  invoke void @_ZNSt10filesystem7__cxx1118directory_iteratorC2ERKNS0_4pathE(ptr noundef nonnull align 8 dereferenceable(16) %21, ptr noundef nonnull align 8 dereferenceable(40) %22)
          to label %295 unwind label %300

295:                                              ; preds = %294
  call void @_ZNSt10filesystem7__cxx114pathD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %22) #14
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %22) #14
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %23) #14
  call void @_ZNSt10filesystem7__cxx1118directory_iteratorC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %23) #14
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %24) #14
  call void @_ZNSt10filesystem7__cxx1118directory_iteratorC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %25, ptr noundef nonnull align 8 dereferenceable(16) %21) #14
  call void @_ZNSt10filesystem7__cxx1118directory_iteratorC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %26, ptr noundef nonnull align 8 dereferenceable(16) %23) #14
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %27) #14
  call void @_ZNSaINSt10filesystem7__cxx114pathEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %27) #14
  invoke void @_ZNSt6vectorINSt10filesystem7__cxx114pathESaIS2_EEC2INS1_18directory_iteratorEvEET_S7_RKS3_(ptr noundef nonnull align 8 dereferenceable(24) %24, ptr noundef nonnull %25, ptr noundef nonnull %26, ptr noundef nonnull align 1 dereferenceable(1) %27)
          to label %296 unwind label %303

296:                                              ; preds = %295
  call void @_ZNSt15__new_allocatorINSt10filesystem7__cxx114pathEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %27) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %27) #14
  call void @_ZNSt10filesystem7__cxx1118directory_iteratorD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %26) #14
  call void @_ZNSt10filesystem7__cxx1118directory_iteratorD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %25) #14
  %297 = call noundef i64 @_ZNKSt6vectorINSt10filesystem7__cxx114pathESaIS2_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %24) #14
  %.not181 = icmp eq i64 %297, 0
  br i1 %.not181, label %._crit_edge, label %.lr.ph

._crit_edge:                                      ; preds = %308, %296
  call void @_ZNSt6vectorINSt10filesystem7__cxx114pathESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %24) #14
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %24) #14
  call void @_ZNSt10filesystem7__cxx1118directory_iteratorD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %23) #14
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %23) #14
  call void @_ZNSt10filesystem7__cxx1118directory_iteratorD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %21) #14
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %21) #14
  br label %322

298:                                              ; preds = %289
  %299 = landingpad { ptr, i32 }
          cleanup
  br label %302

300:                                              ; preds = %294
  %301 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt10filesystem7__cxx114pathD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %22) #14
  br label %302

302:                                              ; preds = %300, %298
  %.pn129 = phi { ptr, i32 } [ %301, %300 ], [ %299, %298 ]
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %22) #14
  br label %319

303:                                              ; preds = %295
  %304 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorINSt10filesystem7__cxx114pathEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %27) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %27) #14
  call void @_ZNSt10filesystem7__cxx1118directory_iteratorD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %26) #14
  call void @_ZNSt10filesystem7__cxx1118directory_iteratorD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %25) #14
  br label %318

.lr.ph:                                           ; preds = %296, %308
  %305 = phi i64 [ %310, %308 ], [ 0, %296 ]
  %.098162 = phi i32 [ %309, %308 ], [ 0, %296 ]
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %28) #14
  %306 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNSt6vectorINSt10filesystem7__cxx114pathESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %24, i64 noundef %305) #14
  invoke void @_ZNKSt10filesystem7__cxx114path6stringEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %28, ptr noundef nonnull align 8 dereferenceable(40) %306)
          to label %307 unwind label %313

307:                                              ; preds = %.lr.ph
  invoke void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE9push_backEOS5_(ptr noundef nonnull align 8 dereferenceable(24) %8, ptr noundef nonnull align 8 dereferenceable(32) %28)
          to label %308 unwind label %315

308:                                              ; preds = %307
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %28) #14
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %28) #14
  %309 = add i32 %.098162, 1
  %310 = zext i32 %309 to i64
  %311 = call noundef i64 @_ZNKSt6vectorINSt10filesystem7__cxx114pathESaIS2_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %24) #14
  %312 = icmp ugt i64 %311, %310
  br i1 %312, label %.lr.ph, label %._crit_edge, !llvm.loop !40

313:                                              ; preds = %.lr.ph
  %314 = landingpad { ptr, i32 }
          cleanup
  br label %317

315:                                              ; preds = %307
  %316 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %28) #14
  br label %317

317:                                              ; preds = %315, %313
  %.pn131 = phi { ptr, i32 } [ %316, %315 ], [ %314, %313 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %28) #14
  call void @_ZNSt6vectorINSt10filesystem7__cxx114pathESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %24) #14
  br label %318

318:                                              ; preds = %317, %303
  %.pn131.pn = phi { ptr, i32 } [ %.pn131, %317 ], [ %304, %303 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %24) #14
  call void @_ZNSt10filesystem7__cxx1118directory_iteratorD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %23) #14
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %23) #14
  call void @_ZNSt10filesystem7__cxx1118directory_iteratorD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %21) #14
  br label %319

319:                                              ; preds = %318, %302
  %.pn131.pn.pn = phi { ptr, i32 } [ %.pn131.pn, %318 ], [ %.pn129, %302 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %21) #14
  br label %355

320:                                              ; preds = %249
  %321 = call noundef i32 @_ZNSt13__atomic_baseIjEaSEj(ptr noundef nonnull align 4 dereferenceable(4) %3, i32 noundef 1) #14
  br label %322

322:                                              ; preds = %231, %._crit_edge166, %._crit_edge, %320
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count
  br i1 %exitcond.not, label %._crit_edge170, label %.lr.ph169, !llvm.loop !41

323:                                              ; preds = %._crit_edge170
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %29) #14
  call void @_ZNSt6vectorISt6threadSaIS0_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %29) #14
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %30) #14
  store i64 0, ptr %30, align 8
  %324 = load i32, ptr %49, align 4, !tbaa !34
  %.not183 = icmp eq i32 %324, 0
  br i1 %.not183, label %._crit_edge174, label %.lr.ph173

._crit_edge174:                                   ; preds = %329, %323
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %33) #14
  %325 = call ptr @_ZNSt6vectorISt6threadSaIS0_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %29) #14
  store ptr %325, ptr %33, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %34) #14
  %326 = call ptr @_ZNSt6vectorISt6threadSaIS0_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %29) #14
  store ptr %326, ptr %34, align 8
  %327 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPSt6threadSt6vectorIS1_SaIS1_EEEEbRKNS_17__normal_iteratorIT_T0_EESB_(ptr noundef nonnull align 8 dereferenceable(8) %33, ptr noundef nonnull align 8 dereferenceable(8) %34) #14
  br i1 %327, label %.lr.ph176, label %._crit_edge177

.lr.ph173:                                        ; preds = %323, %329
  %.097171 = phi i32 [ %330, %329 ], [ 0, %323 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %31) #14
  store ptr %30, ptr %31, align 8, !tbaa !21
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %32) #14
  store ptr %3, ptr %32, align 8, !tbaa !21
  %328 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorISt6threadSaIS0_EE12emplace_backIJRFvRKS_INSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS9_EEPSt6atomicImERK10ECTOptionsPSE_IjEERSB_SG_RSH_SL_EEERS0_DpOT_(ptr noundef nonnull align 8 dereferenceable(24) %29, ptr noundef nonnull @_ZL19multithreadFileLoopRKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EEPSt6atomicImERK10ECTOptionsPSA_IjE, ptr noundef nonnull align 8 dereferenceable(24) %8, ptr noundef nonnull align 8 dereferenceable(8) %31, ptr noundef nonnull align 4 dereferenceable(40) %4, ptr noundef nonnull align 8 dereferenceable(8) %32)
          to label %329 unwind label %333

329:                                              ; preds = %.lr.ph173
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %32) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %31) #14
  %330 = add nuw i32 %.097171, 1
  %331 = load i32, ptr %49, align 4, !tbaa !34
  %332 = icmp ult i32 %330, %331
  br i1 %332, label %.lr.ph173, label %._crit_edge174, !llvm.loop !42

333:                                              ; preds = %.lr.ph173
  %334 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %32) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %31) #14
  br label %341

._crit_edge177:                                   ; preds = %336, %._crit_edge174
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %34) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %33) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %30) #14
  call void @_ZNSt6vectorISt6threadSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %29) #14
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %29) #14
  br label %356

.lr.ph176:                                        ; preds = %._crit_edge174, %336
  %335 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPSt6threadSt6vectorIS1_SaIS1_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %33) #14
  invoke void @_ZNSt6thread4joinEv(ptr noundef nonnull align 8 dereferenceable(8) %335)
          to label %336 unwind label %339

336:                                              ; preds = %.lr.ph176
  %337 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPSt6threadSt6vectorIS1_SaIS1_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %33) #14
  %338 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPSt6threadSt6vectorIS1_SaIS1_EEEEbRKNS_17__normal_iteratorIT_T0_EESB_(ptr noundef nonnull align 8 dereferenceable(8) %33, ptr noundef nonnull align 8 dereferenceable(8) %34) #14
  br i1 %338, label %.lr.ph176, label %._crit_edge177

339:                                              ; preds = %.lr.ph176
  %340 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %34) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %33) #14
  br label %341

341:                                              ; preds = %339, %333
  %.pn = phi { ptr, i32 } [ %334, %333 ], [ %340, %339 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %30) #14
  call void @_ZNSt6vectorISt6threadSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %29) #14
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %29) #14
  br label %355

342:                                              ; preds = %._crit_edge170
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %35) #14
  %343 = call ptr @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %8) #14
  store ptr %343, ptr %35, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %36) #14
  %344 = call ptr @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %8) #14
  store ptr %344, ptr %36, align 8
  %345 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIS6_SaIS6_EEEEbRKNS_17__normal_iteratorIT_T0_EESG_(ptr noundef nonnull align 8 dereferenceable(8) %35, ptr noundef nonnull align 8 dereferenceable(8) %36) #14
  br i1 %345, label %.lr.ph179, label %._crit_edge180

._crit_edge180:                                   ; preds = %349, %342
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %36) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %35) #14
  br label %356

.lr.ph179:                                        ; preds = %342, %349
  %346 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIS6_SaIS6_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %35) #14
  %347 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %346) #14
  %348 = invoke noundef i32 @_Z11fileHandlerPKcRK10ECTOptionsi(ptr noundef %347, ptr noundef nonnull align 4 dereferenceable(40) %4, i32 noundef 0)
          to label %349 unwind label %353

349:                                              ; preds = %.lr.ph179
  %350 = call noundef i32 @_ZNSt13__atomic_baseIjEoREj(ptr noundef nonnull align 4 dereferenceable(4) %3, i32 noundef %348) #14
  %351 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIS6_SaIS6_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %35) #14
  %352 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIS6_SaIS6_EEEEbRKNS_17__normal_iteratorIT_T0_EESG_(ptr noundef nonnull align 8 dereferenceable(8) %35, ptr noundef nonnull align 8 dereferenceable(8) %36) #14
  br i1 %352, label %.lr.ph179, label %._crit_edge180

353:                                              ; preds = %.lr.ph179
  %354 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %36) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %35) #14
  br label %355

355:                                              ; preds = %236, %241, %266, %288, %319, %353, %341
  %.pn141.pn.pn = phi { ptr, i32 } [ %.pn, %341 ], [ %354, %353 ], [ %.pn141, %241 ], [ %.pn137.pn.pn, %288 ], [ %.pn131.pn.pn, %319 ], [ %.pn127, %266 ], [ %.pn125, %236 ]
  call void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %8) #14
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %8) #14
  br label %366

356:                                              ; preds = %._crit_edge177, %._crit_edge180
  call void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %8) #14
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %8) #14
  br i1 %207, label %358, label %357

357:                                              ; preds = %356
  invoke void @_ZL5Usagev()
          to label %358 unwind label %198

358:                                              ; preds = %.thread154, %357, %356
  %359 = load i8, ptr %46, align 2, !tbaa !24, !range !37, !noundef !38
  %360 = trunc nuw i8 %359 to i1
  br i1 %360, label %361, label %363

361:                                              ; preds = %358
  invoke void @_ZL17ECT_ReportSavingsv()
          to label %363 unwind label %198

362:                                              ; preds = %2
  invoke void @_ZL5Usagev()
          to label %363 unwind label %198

363:                                              ; preds = %362, %358, %361
  %364 = call noundef i32 @_ZNKSt13__atomic_baseIjE4loadESt12memory_order(ptr noundef nonnull align 4 dereferenceable(4) %3, i32 noundef 5) #14
  br label %365

365:                                              ; preds = %.thread152, %363, %196
  %.3 = phi i32 [ %364, %363 ], [ 0, %196 ], [ 0, %.thread152 ]
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %5) #14
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %5) #14
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %4) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %3) #14
  ret i32 %.3

366:                                              ; preds = %355, %212, %198, %66
  %.pn145 = phi { ptr, i32 } [ %199, %198 ], [ %213, %212 ], [ %.pn141.pn.pn, %355 ], [ %lpad.phi, %66 ]
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %5) #14
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %5) #14
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %4) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %3) #14
  resume { ptr, i32 } %.pn145
}

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

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

; Function Attrs: mustprogress nofree nounwind willreturn memory(argmem: read)
declare i64 @strnlen(ptr nocapture noundef, i64 noundef) local_unnamed_addr #8

; Function Attrs: mustprogress nofree nounwind willreturn memory(argmem: read)
declare i32 @strncmp(ptr nocapture noundef, ptr nocapture noundef, i64 noundef) local_unnamed_addr #8

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorIiSaIiEE9push_backERKi(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 4 dereferenceable(4)) local_unnamed_addr #0 align 2

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

; Function Attrs: mustprogress uwtable
declare hidden void @_ZL5Usagev() local_unnamed_addr #0

; Function Attrs: mustprogress nofree nounwind willreturn memory(argmem: read)
declare i32 @strcmp(ptr nocapture noundef, ptr nocapture noundef) local_unnamed_addr #8

; Function Attrs: nounwind
declare noundef i32 @_ZNSt6thread20hardware_concurrencyEv() local_unnamed_addr #5

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorIiSaIiEEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNSt13__atomic_baseIjEoREj(ptr noundef nonnull align 4 dereferenceable(4), i32 noundef) local_unnamed_addr #2 align 2

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE9push_backEOS5_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #0 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNSt10filesystem12is_directoryERKNS_7__cxx114pathE(ptr noundef nonnull align 8 dereferenceable(40)) local_unnamed_addr #4

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt10filesystem7__cxx1118directory_iteratorC2ERKNS0_4pathE(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(40)) unnamed_addr #0 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt10filesystem7__cxx1118directory_iteratorC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(16)) unnamed_addr #2 align 2

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNSt13__atomic_baseIjEaSEj(ptr noundef nonnull align 4 dereferenceable(4), i32 noundef) local_unnamed_addr #2 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorISt6threadSaIS0_EE12emplace_backIJRFvRKS_INSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS9_EEPSt6atomicImERK10ECTOptionsPSE_IjEERSB_SG_RSH_SL_EEERS0_DpOT_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull, ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 4 dereferenceable(40), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #0 align 2

; Function Attrs: mustprogress uwtable
declare hidden void @_ZL19multithreadFileLoopRKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EEPSt6atomicImERK10ECTOptionsPSA_IjE(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef, ptr noundef nonnull align 4 dereferenceable(40), ptr noundef) #0

; Function Attrs: mustprogress nounwind uwtable
declare dso_local ptr @_ZNSt6vectorISt6threadSaIS0_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local ptr @_ZNSt6vectorISt6threadSaIS0_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #2 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN9__gnu_cxxneIPSt6threadSt6vectorIS1_SaIS1_EEEEbRKNS_17__normal_iteratorIT_T0_EESB_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #10

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

declare void @_ZNSt6thread4joinEv(ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #11

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local ptr @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local ptr @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #2 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN9__gnu_cxxneIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIS6_SaIS6_EEEEbRKNS_17__normal_iteratorIT_T0_EESG_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #10

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

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

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

; Function Attrs: mustprogress uwtable
declare hidden void @_ZL17ECT_ReportSavingsv() local_unnamed_addr #0

; Function Attrs: alwaysinline mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNKSt13__atomic_baseIjE4loadESt12memory_order(ptr noundef nonnull align 4 dereferenceable(4), i32 noundef) local_unnamed_addr #12 align 2

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

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

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

attributes #0 = { 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 #1 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { 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 #3 = { 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 #4 = { 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 #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 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #8 = { mustprogress nofree nounwind willreturn memory(argmem: 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 #9 = { 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 #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 = { alwaysinline 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 #13 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #14 = { nounwind }
attributes #15 = { 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, !10, i64 8}
!6 = !{!"_ZTS10ECTOptions", !7, i64 0, !7, i64 4, !10, i64 8, !10, i64 9, !7, i64 12, !10, i64 16, !10, i64 17, !10, i64 18, !10, i64 19, !10, i64 20, !10, i64 21, !10, i64 22, !10, i64 23, !10, i64 24, !10, i64 25, !10, i64 26, !10, i64 27, !7, i64 28, !7, i64 32, !10, i64 36}
!7 = !{!"int", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C++ TBAA"}
!10 = !{!"bool", !8, i64 0}
!11 = !{!6, !10, i64 9}
!12 = !{!6, !7, i64 12}
!13 = !{!6, !7, i64 0}
!14 = !{!6, !10, i64 27}
!15 = !{!6, !10, i64 20}
!16 = !{!6, !10, i64 21}
!17 = !{!6, !10, i64 22}
!18 = !{!10, !10, i64 0}
!19 = !{!6, !7, i64 4}
!20 = !{!7, !7, i64 0}
!21 = !{!22, !22, i64 0}
!22 = !{!"any pointer", !8, i64 0}
!23 = !{!8, !8, i64 0}
!24 = !{!6, !10, i64 18}
!25 = !{!6, !10, i64 36}
!26 = !{!6, !10, i64 16}
!27 = !{!6, !10, i64 17}
!28 = !{!6, !10, i64 19}
!29 = !{!6, !10, i64 23}
!30 = !{!6, !10, i64 24}
!31 = !{!6, !10, i64 25}
!32 = !{!6, !10, i64 26}
!33 = !{!6, !7, i64 28}
!34 = !{!6, !7, i64 32}
!35 = distinct !{!35, !36}
!36 = !{!"llvm.loop.mustprogress"}
!37 = !{i8 0, i8 2}
!38 = !{}
!39 = distinct !{!39, !36}
!40 = distinct !{!40, !36}
!41 = distinct !{!41, !36}
!42 = distinct !{!42, !36}


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