; LLVM IR from venumb/ZSPACE :: cpp/depends/lodePNG (pngdetail)

; Unoptimized IR (clang -disable-llvm-passes):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

%"class.std::basic_ostream" = type { ptr, %"class.std::basic_ios" }
%"class.std::basic_ios" = type { %"class.std::ios_base", ptr, i8, i8, ptr, ptr, ptr, ptr }
%"class.std::ios_base" = type { ptr, i64, i64, i32, i32, i32, ptr, %"struct.std::ios_base::_Words", [8 x %"struct.std::ios_base::_Words"], i32, ptr, %"class.std::locale" }
%"struct.std::ios_base::_Words" = type { ptr, i64 }
%"class.std::locale" = type { ptr }
%"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.Options = type { i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i32, i8, i32, i32, i8, i8, i8, i8, i8, i8, i8, i8 }
%"class.std::vector.3" = type { %"struct.std::_Vector_base.4" }
%"struct.std::_Vector_base.4" = 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::allocator" = type { i8 }
%struct.Data = type <{ %"class.std::__cxx11::basic_string", %"class.std::vector", %"class.std::vector", i32, i32, %"class.lodepng::State", i32, i8, [3 x i8] }>
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<unsigned char, std::allocator<unsigned char>>::_Vector_impl" }
%"struct.std::_Vector_base<unsigned char, std::allocator<unsigned char>>::_Vector_impl" = type { %"struct.std::_Vector_base<unsigned char, std::allocator<unsigned char>>::_Vector_impl_data" }
%"struct.std::_Vector_base<unsigned char, std::allocator<unsigned char>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.lodepng::State" = type { %struct.LodePNGState.base, [4 x i8] }
%struct.LodePNGState.base = type <{ ptr, %struct.LodePNGDecoderSettings, %struct.LodePNGEncoderSettings, %struct.LodePNGColorMode, %struct.LodePNGInfo, i32 }>
%struct.LodePNGDecoderSettings = type { %struct.LodePNGDecompressSettings, i32, i32, i32, i32, i32, i32 }
%struct.LodePNGDecompressSettings = type { i32, i32, ptr, ptr, ptr }
%struct.LodePNGEncoderSettings = type { %struct.LodePNGCompressSettings, i32, i32, i32, ptr, i32, i32, i32 }
%struct.LodePNGCompressSettings = type { i32, i32, i32, i32, i32, i32, ptr, ptr, ptr }
%struct.LodePNGColorMode = type { i32, i32, ptr, i64, i32, i32, i32, i32 }
%struct.LodePNGInfo = type { i32, i32, i32, %struct.LodePNGColorMode, i32, i32, i32, i32, i64, ptr, ptr, i64, ptr, ptr, ptr, ptr, i32, %struct.LodePNGTime, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, ptr, ptr, i32, [3 x ptr], [3 x i64] }
%struct.LodePNGTime = type { i32, i32, i32, i32, i32, i32 }

@_ZSt4cout = external global %"class.std::basic_ostream", align 8
@.str.5 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.85 = external hidden unnamed_addr constant [1 x i8], align 1
@.str.205 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.206 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.207 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.208 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.209 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.210 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.211 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.212 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.213 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.214 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.215 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.216 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.217 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.218 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.219 = external hidden unnamed_addr constant [37 x i8], align 1

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z8showHelpv() #0

; Function Attrs: inlinehint mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) #1

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

; Function Attrs: inlinehint mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_(ptr noundef nonnull align 8 dereferenceable(8)) #1

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

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

declare i32 @__gxx_personality_v0(...)

; Function Attrs: inlinehint mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(32)) #1

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(216) ptr @_ZSt3hexRSt8ios_base(ptr noundef nonnull align 8 dereferenceable(216)) #1

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

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c(ptr noundef nonnull align 8 dereferenceable(8), i8 noundef signext) #1

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

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN4DataD2Ev(ptr noundef nonnull align 8 dereferenceable(605)) unnamed_addr #4 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z9showInfosR4DataRK7Options(ptr noundef nonnull align 8 dereferenceable(605), ptr noundef nonnull align 4 dereferenceable(36)) #0

; Function Attrs: mustprogress norecurse uwtable
define dso_local noundef i32 @main(i32 noundef %0, ptr noundef %1) #5 personality ptr @__gxx_personality_v0 {
  %3 = alloca i32, align 4
  %4 = alloca i32, align 4
  %5 = alloca ptr, align 8
  %6 = alloca %struct.Options, align 4
  %7 = alloca i8, align 1
  %8 = alloca %"class.std::vector.3", align 8
  %9 = alloca i32, align 4
  %10 = alloca i32, align 4
  %11 = alloca %"class.std::__cxx11::basic_string", align 8
  %12 = alloca %"class.std::allocator", align 1
  %13 = alloca ptr, align 8
  %14 = alloca i32, align 4
  %15 = alloca i64, align 8
  %16 = alloca i8, align 1
  %17 = alloca i64, align 8
  %18 = alloca %"class.std::__cxx11::basic_string", align 8
  %19 = alloca %"class.std::__cxx11::basic_string", align 8
  %20 = alloca %"class.std::allocator", align 1
  %21 = alloca i1, align 1
  %22 = alloca i1, align 1
  %23 = alloca i32, align 4
  %24 = alloca i64, align 8
  %25 = alloca %struct.Data, 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 36, ptr %6) #6
  call void @_ZN7OptionsC2Ev(ptr noundef nonnull align 4 dereferenceable(36) %6)
  call void @llvm.lifetime.start.p0(i64 1, ptr %7) #6
  store i8 0, ptr %7, align 1, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 24, ptr %8) #6
  call void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %8) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %9) #6
  store i32 1, ptr %9, align 4, !tbaa !5
  br label %26

26:                                               ; preds = %435, %2
  %27 = load i32, ptr %9, align 4, !tbaa !5
  %28 = load i32, ptr %4, align 4, !tbaa !5
  %29 = icmp slt i32 %27, %28
  br i1 %29, label %31, label %30

30:                                               ; preds = %26
  store i32 2, ptr %10, align 4
  br label %440

31:                                               ; preds = %26
  call void @llvm.lifetime.start.p0(i64 32, ptr %11) #6
  %32 = load ptr, ptr %5, align 8, !tbaa !9
  %33 = load i32, ptr %9, align 4, !tbaa !5
  %34 = sext i32 %33 to i64
  %35 = getelementptr inbounds ptr, ptr %32, i64 %34
  %36 = load ptr, ptr %35, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr %12) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %12) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %11, ptr noundef %36, ptr noundef nonnull align 1 dereferenceable(1) %12)
          to label %37 unwind label %62

37:                                               ; preds = %31
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %12) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %12) #6
  %38 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %11) #6
  %39 = icmp ugt i64 %38, 1
  br i1 %39, label %40, label %274

40:                                               ; preds = %37
  %41 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %11, i64 noundef 0)
          to label %42 unwind label %66

42:                                               ; preds = %40
  %43 = load i8, ptr %41, align 1, !tbaa !13
  %44 = sext i8 %43 to i32
  %45 = icmp eq i32 %44, 45
  br i1 %45, label %46, label %274

46:                                               ; preds = %42
  %47 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %11, i64 noundef 1)
          to label %48 unwind label %66

48:                                               ; preds = %46
  %49 = load i8, ptr %47, align 1, !tbaa !13
  %50 = sext i8 %49 to i32
  %51 = icmp ne i32 %50, 45
  br i1 %51, label %52, label %274

52:                                               ; preds = %48
  %53 = invoke noundef zeroext i1 @_ZStneIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %11, ptr noundef @.str.205)
          to label %54 unwind label %66

54:                                               ; preds = %52
  br i1 %53, label %55, label %70

55:                                               ; preds = %54
  %56 = invoke noundef zeroext i1 @_ZStneIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %11, ptr noundef @.str.206)
          to label %57 unwind label %66

57:                                               ; preds = %55
  br i1 %56, label %58, label %70

58:                                               ; preds = %57
  %59 = invoke noundef zeroext i1 @_ZStneIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %11, ptr noundef @.str.207)
          to label %60 unwind label %66

60:                                               ; preds = %58
  br i1 %59, label %61, label %70

61:                                               ; preds = %60
  store i8 1, ptr %7, align 1, !tbaa !11
  br label %70

62:                                               ; preds = %31
  %63 = landingpad { ptr, i32 }
          cleanup
  %64 = extractvalue { ptr, i32 } %63, 0
  store ptr %64, ptr %13, align 8
  %65 = extractvalue { ptr, i32 } %63, 1
  store i32 %65, ptr %14, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %12) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %12) #6
  br label %439

66:                                               ; preds = %428, %283, %277, %58, %55, %52, %46, %40
  %67 = landingpad { ptr, i32 }
          cleanup
  %68 = extractvalue { ptr, i32 } %67, 0
  store ptr %68, ptr %13, align 8
  %69 = extractvalue { ptr, i32 } %67, 1
  store i32 %69, ptr %14, align 4
  br label %438

70:                                               ; preds = %61, %60, %57, %54
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #6
  store i64 1, ptr %15, align 8, !tbaa !14
  br label %71

71:                                               ; preds = %268, %70
  %72 = load i64, ptr %15, align 8, !tbaa !14
  %73 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %11) #6
  %74 = icmp ult i64 %72, %73
  br i1 %74, label %76, label %75

75:                                               ; preds = %71
  store i32 5, ptr %10, align 4
  br label %271

76:                                               ; preds = %71
  call void @llvm.lifetime.start.p0(i64 1, ptr %16) #6
  %77 = load i64, ptr %15, align 8, !tbaa !14
  %78 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %11, i64 noundef %77)
          to label %79 unwind label %86

79:                                               ; preds = %76
  %80 = load i8, ptr %78, align 1, !tbaa !13
  store i8 %80, ptr %16, align 1, !tbaa !13
  %81 = load i8, ptr %16, align 1, !tbaa !13
  %82 = sext i8 %81 to i32
  %83 = icmp eq i32 %82, 63
  br i1 %83, label %84, label %90

84:                                               ; preds = %79
  invoke void @_Z8showHelpv()
          to label %85 unwind label %86

85:                                               ; preds = %84
  store i32 0, ptr %3, align 4
  store i32 1, ptr %10, align 4
  br label %265

86:                                               ; preds = %242, %240, %238, %235, %233, %231, %228, %226, %224, %222, %219, %211, %84, %76
  %87 = landingpad { ptr, i32 }
          cleanup
  %88 = extractvalue { ptr, i32 } %87, 0
  store ptr %88, ptr %13, align 8
  %89 = extractvalue { ptr, i32 } %87, 1
  store i32 %89, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %16) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #6
  br label %438

90:                                               ; preds = %79
  %91 = load i8, ptr %16, align 1, !tbaa !13
  %92 = sext i8 %91 to i32
  %93 = icmp eq i32 %92, 111
  br i1 %93, label %94, label %96

94:                                               ; preds = %90
  %95 = getelementptr inbounds %struct.Options, ptr %6, i32 0, i32 2
  store i8 1, ptr %95, align 2, !tbaa !16
  br label %263

96:                                               ; preds = %90
  %97 = load i8, ptr %16, align 1, !tbaa !13
  %98 = sext i8 %97 to i32
  %99 = icmp eq i32 %98, 104
  br i1 %99, label %100, label %102

100:                                              ; preds = %96
  %101 = getelementptr inbounds %struct.Options, ptr %6, i32 0, i32 3
  store i8 1, ptr %101, align 1, !tbaa !20
  br label %262

102:                                              ; preds = %96
  %103 = load i8, ptr %16, align 1, !tbaa !13
  %104 = sext i8 %103 to i32
  %105 = icmp eq i32 %104, 105
  br i1 %105, label %106, label %108

106:                                              ; preds = %102
  %107 = getelementptr inbounds %struct.Options, ptr %6, i32 0, i32 5
  store i8 1, ptr %107, align 1, !tbaa !21
  br label %261

108:                                              ; preds = %102
  %109 = load i8, ptr %16, align 1, !tbaa !13
  %110 = sext i8 %109 to i32
  %111 = icmp eq i32 %110, 73
  br i1 %111, label %112, label %114

112:                                              ; preds = %108
  %113 = getelementptr inbounds %struct.Options, ptr %6, i32 0, i32 6
  store i8 1, ptr %113, align 2, !tbaa !22
  br label %260

114:                                              ; preds = %108
  %115 = load i8, ptr %16, align 1, !tbaa !13
  %116 = sext i8 %115 to i32
  %117 = icmp eq i32 %116, 118
  br i1 %117, label %118, label %120

118:                                              ; preds = %114
  %119 = getelementptr inbounds %struct.Options, ptr %6, i32 0, i32 0
  store i8 1, ptr %119, align 4, !tbaa !23
  br label %259

120:                                              ; preds = %114
  %121 = load i8, ptr %16, align 1, !tbaa !13
  %122 = sext i8 %121 to i32
  %123 = icmp eq i32 %122, 116
  br i1 %123, label %124, label %126

124:                                              ; preds = %120
  %125 = getelementptr inbounds %struct.Options, ptr %6, i32 0, i32 1
  store i8 1, ptr %125, align 1, !tbaa !24
  br label %258

126:                                              ; preds = %120
  %127 = load i8, ptr %16, align 1, !tbaa !13
  %128 = sext i8 %127 to i32
  %129 = icmp eq i32 %128, 115
  br i1 %129, label %130, label %132

130:                                              ; preds = %126
  %131 = getelementptr inbounds %struct.Options, ptr %6, i32 0, i32 7
  store i8 1, ptr %131, align 1, !tbaa !25
  br label %257

132:                                              ; preds = %126
  %133 = load i8, ptr %16, align 1, !tbaa !13
  %134 = sext i8 %133 to i32
  %135 = icmp eq i32 %134, 101
  br i1 %135, label %136, label %138

136:                                              ; preds = %132
  %137 = getelementptr inbounds %struct.Options, ptr %6, i32 0, i32 4
  store i8 1, ptr %137, align 4, !tbaa !26
  br label %256

138:                                              ; preds = %132
  %139 = load i8, ptr %16, align 1, !tbaa !13
  %140 = sext i8 %139 to i32
  %141 = icmp eq i32 %140, 112
  br i1 %141, label %142, label %145

142:                                              ; preds = %138
  %143 = getelementptr inbounds %struct.Options, ptr %6, i32 0, i32 8
  store i8 1, ptr %143, align 4, !tbaa !27
  %144 = getelementptr inbounds %struct.Options, ptr %6, i32 0, i32 3
  store i8 1, ptr %144, align 1, !tbaa !20
  br label %255

145:                                              ; preds = %138
  %146 = load i8, ptr %16, align 1, !tbaa !13
  %147 = sext i8 %146 to i32
  %148 = icmp eq i32 %147, 114
  br i1 %148, label %149, label %151

149:                                              ; preds = %145
  %150 = getelementptr inbounds %struct.Options, ptr %6, i32 0, i32 12
  store i8 1, ptr %150, align 4, !tbaa !28
  br label %254

151:                                              ; preds = %145
  %152 = load i8, ptr %16, align 1, !tbaa !13
  %153 = sext i8 %152 to i32
  %154 = icmp eq i32 %153, 108
  br i1 %154, label %155, label %157

155:                                              ; preds = %151
  %156 = getelementptr inbounds %struct.Options, ptr %6, i32 0, i32 9
  store i8 1, ptr %156, align 1, !tbaa !29
  br label %253

157:                                              ; preds = %151
  %158 = load i8, ptr %16, align 1, !tbaa !13
  %159 = sext i8 %158 to i32
  %160 = icmp eq i32 %159, 76
  br i1 %160, label %161, label %163

161:                                              ; preds = %157
  %162 = getelementptr inbounds %struct.Options, ptr %6, i32 0, i32 10
  store i8 1, ptr %162, align 2, !tbaa !30
  br label %252

163:                                              ; preds = %157
  %164 = load i8, ptr %16, align 1, !tbaa !13
  %165 = sext i8 %164 to i32
  %166 = icmp eq i32 %165, 99
  br i1 %166, label %167, label %169

167:                                              ; preds = %163
  %168 = getelementptr inbounds %struct.Options, ptr %6, i32 0, i32 15
  store i8 1, ptr %168, align 4, !tbaa !31
  br label %251

169:                                              ; preds = %163
  %170 = load i8, ptr %16, align 1, !tbaa !13
  %171 = sext i8 %170 to i32
  %172 = icmp eq i32 %171, 67
  br i1 %172, label %173, label %175

173:                                              ; preds = %169
  %174 = getelementptr inbounds %struct.Options, ptr %6, i32 0, i32 16
  store i8 1, ptr %174, align 1, !tbaa !32
  br label %250

175:                                              ; preds = %169
  %176 = load i8, ptr %16, align 1, !tbaa !13
  %177 = sext i8 %176 to i32
  %178 = icmp eq i32 %177, 102
  br i1 %178, label %179, label %181

179:                                              ; preds = %175
  %180 = getelementptr inbounds %struct.Options, ptr %6, i32 0, i32 17
  store i8 1, ptr %180, align 2, !tbaa !33
  br label %249

181:                                              ; preds = %175
  %182 = load i8, ptr %16, align 1, !tbaa !13
  %183 = sext i8 %182 to i32
  %184 = icmp eq i32 %183, 122
  br i1 %184, label %185, label %187

185:                                              ; preds = %181
  %186 = getelementptr inbounds %struct.Options, ptr %6, i32 0, i32 18
  store i8 1, ptr %186, align 1, !tbaa !34
  br label %248

187:                                              ; preds = %181
  %188 = load i8, ptr %16, align 1, !tbaa !13
  %189 = sext i8 %188 to i32
  %190 = icmp eq i32 %189, 98
  br i1 %190, label %191, label %193

191:                                              ; preds = %187
  %192 = getelementptr inbounds %struct.Options, ptr %6, i32 0, i32 19
  store i8 1, ptr %192, align 4, !tbaa !35
  br label %247

193:                                              ; preds = %187
  %194 = load i8, ptr %16, align 1, !tbaa !13
  %195 = sext i8 %194 to i32
  %196 = icmp eq i32 %195, 66
  br i1 %196, label %197, label %200

197:                                              ; preds = %193
  %198 = getelementptr inbounds %struct.Options, ptr %6, i32 0, i32 19
  store i8 1, ptr %198, align 4, !tbaa !35
  %199 = getelementptr inbounds %struct.Options, ptr %6, i32 0, i32 20
  store i8 1, ptr %199, align 1, !tbaa !36
  br label %246

200:                                              ; preds = %193
  %201 = load i8, ptr %16, align 1, !tbaa !13
  %202 = sext i8 %201 to i32
  %203 = icmp eq i32 %202, 55
  br i1 %203, label %204, label %207

204:                                              ; preds = %200
  %205 = getelementptr inbounds %struct.Options, ptr %6, i32 0, i32 19
  store i8 1, ptr %205, align 4, !tbaa !35
  %206 = getelementptr inbounds %struct.Options, ptr %6, i32 0, i32 21
  store i8 1, ptr %206, align 2, !tbaa !37
  br label %245

207:                                              ; preds = %200
  %208 = load i8, ptr %16, align 1, !tbaa !13
  %209 = sext i8 %208 to i32
  %210 = icmp eq i32 %209, 120
  br i1 %210, label %211, label %215

211:                                              ; preds = %207
  %212 = getelementptr inbounds %struct.Options, ptr %6, i32 0, i32 22
  store i8 1, ptr %212, align 1, !tbaa !38
  %213 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef @_ZSt3hexRSt8ios_base)
          to label %214 unwind label %86

214:                                              ; preds = %211
  br label %244

215:                                              ; preds = %207
  %216 = load i8, ptr %16, align 1, !tbaa !13
  %217 = sext i8 %216 to i32
  %218 = icmp eq i32 %217, 45
  br i1 %218, label %219, label %233

219:                                              ; preds = %215
  %220 = invoke noundef zeroext i1 @_ZStneIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %11, ptr noundef @.str.208)
          to label %221 unwind label %86

221:                                              ; preds = %219
  br i1 %220, label %222, label %231

222:                                              ; preds = %221
  %223 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef @.str.209)
          to label %224 unwind label %86

224:                                              ; preds = %222
  %225 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE(ptr noundef nonnull align 8 dereferenceable(8) %223, ptr noundef nonnull align 8 dereferenceable(32) %11)
          to label %226 unwind label %86

226:                                              ; preds = %224
  %227 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %225, ptr noundef @.str.210)
          to label %228 unwind label %86

228:                                              ; preds = %226
  %229 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %227, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %230 unwind label %86

230:                                              ; preds = %228
  br label %231

231:                                              ; preds = %230, %221
  invoke void @_Z8showHelpv()
          to label %232 unwind label %86

232:                                              ; preds = %231
  store i32 0, ptr %3, align 4
  store i32 1, ptr %10, align 4
  br label %265

233:                                              ; preds = %215
  %234 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef @.str.209)
          to label %235 unwind label %86

235:                                              ; preds = %233
  %236 = load i8, ptr %16, align 1, !tbaa !13
  %237 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c(ptr noundef nonnull align 8 dereferenceable(8) %234, i8 noundef signext %236)
          to label %238 unwind label %86

238:                                              ; preds = %235
  %239 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %237, ptr noundef @.str.210)
          to label %240 unwind label %86

240:                                              ; preds = %238
  %241 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %239, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %242 unwind label %86

242:                                              ; preds = %240
  invoke void @_Z8showHelpv()
          to label %243 unwind label %86

243:                                              ; preds = %242
  store i32 0, ptr %3, align 4
  store i32 1, ptr %10, align 4
  br label %265

244:                                              ; preds = %214
  br label %245

245:                                              ; preds = %244, %204
  br label %246

246:                                              ; preds = %245, %197
  br label %247

247:                                              ; preds = %246, %191
  br label %248

248:                                              ; preds = %247, %185
  br label %249

249:                                              ; preds = %248, %179
  br label %250

250:                                              ; preds = %249, %173
  br label %251

251:                                              ; preds = %250, %167
  br label %252

252:                                              ; preds = %251, %161
  br label %253

253:                                              ; preds = %252, %155
  br label %254

254:                                              ; preds = %253, %149
  br label %255

255:                                              ; preds = %254, %142
  br label %256

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

257:                                              ; preds = %256, %130
  br label %258

258:                                              ; preds = %257, %124
  br label %259

259:                                              ; preds = %258, %118
  br label %260

260:                                              ; preds = %259, %112
  br label %261

261:                                              ; preds = %260, %106
  br label %262

262:                                              ; preds = %261, %100
  br label %263

263:                                              ; preds = %262, %94
  br label %264

264:                                              ; preds = %263
  store i32 0, ptr %10, align 4
  br label %265

265:                                              ; preds = %264, %243, %232, %85
  call void @llvm.lifetime.end.p0(i64 1, ptr %16) #6
  %266 = load i32, ptr %10, align 4
  switch i32 %266, label %271 [
    i32 0, label %267
  ]

267:                                              ; preds = %265
  br label %268

268:                                              ; preds = %267
  %269 = load i64, ptr %15, align 8, !tbaa !14
  %270 = add i64 %269, 1
  store i64 %270, ptr %15, align 8, !tbaa !14
  br label %71, !llvm.loop !39

271:                                              ; preds = %265, %75
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #6
  %272 = load i32, ptr %10, align 4
  switch i32 %272, label %432 [
    i32 5, label %273
  ]

273:                                              ; preds = %271
  br label %431

274:                                              ; preds = %48, %42, %37
  %275 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %11) #6
  %276 = icmp ugt i64 %275, 1
  br i1 %276, label %277, label %428

277:                                              ; preds = %274
  %278 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %11, i64 noundef 0)
          to label %279 unwind label %66

279:                                              ; preds = %277
  %280 = load i8, ptr %278, align 1, !tbaa !13
  %281 = sext i8 %280 to i32
  %282 = icmp eq i32 %281, 45
  br i1 %282, label %283, label %428

283:                                              ; preds = %279
  %284 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %11, i64 noundef 1)
          to label %285 unwind label %66

285:                                              ; preds = %283
  %286 = load i8, ptr %284, align 1, !tbaa !13
  %287 = sext i8 %286 to i32
  %288 = icmp eq i32 %287, 45
  br i1 %288, label %289, label %428

289:                                              ; preds = %285
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #6
  store i64 2, ptr %17, align 8, !tbaa !14
  br label %290

290:                                              ; preds = %303, %289
  %291 = load i64, ptr %17, align 8, !tbaa !14
  %292 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %11) #6
  %293 = icmp ult i64 %291, %292
  br i1 %293, label %294, label %301

294:                                              ; preds = %290
  %295 = load i64, ptr %17, align 8, !tbaa !14
  %296 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %11, i64 noundef %295)
          to label %297 unwind label %306

297:                                              ; preds = %294
  %298 = load i8, ptr %296, align 1, !tbaa !13
  %299 = sext i8 %298 to i32
  %300 = icmp ne i32 %299, 61
  br label %301

301:                                              ; preds = %297, %290
  %302 = phi i1 [ false, %290 ], [ %300, %297 ]
  br i1 %302, label %303, label %310

303:                                              ; preds = %301
  %304 = load i64, ptr %17, align 8, !tbaa !14
  %305 = add i64 %304, 1
  store i64 %305, ptr %17, align 8, !tbaa !14
  br label %290, !llvm.loop !41

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

310:                                              ; preds = %301
  call void @llvm.lifetime.start.p0(i64 32, ptr %18) #6
  %311 = load i64, ptr %17, align 8, !tbaa !14
  %312 = sub i64 %311, 2
  invoke void @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6substrEmm(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %18, ptr noundef nonnull align 8 dereferenceable(32) %11, i64 noundef 2, i64 noundef %312)
          to label %313 unwind label %335

313:                                              ; preds = %310
  call void @llvm.lifetime.start.p0(i64 32, ptr %19) #6
  %314 = load i64, ptr %17, align 8, !tbaa !14
  %315 = add i64 %314, 1
  %316 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %11) #6
  %317 = icmp ult i64 %315, %316
  store i1 false, ptr %21, align 1
  store i1 false, ptr %22, align 1
  br i1 %317, label %318, label %322

318:                                              ; preds = %313
  %319 = load i64, ptr %17, align 8, !tbaa !14
  %320 = add i64 %319, 1
  invoke void @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6substrEmm(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %19, ptr noundef nonnull align 8 dereferenceable(32) %11, i64 noundef %320, i64 noundef -1)
          to label %321 unwind label %339

321:                                              ; preds = %318
  br label %324

322:                                              ; preds = %313
  call void @llvm.lifetime.start.p0(i64 1, ptr %20) #6
  store i1 true, ptr %21, align 1
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %20) #6
  store i1 true, ptr %22, align 1
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %19, ptr noundef @.str.85, ptr noundef nonnull align 1 dereferenceable(1) %20)
          to label %323 unwind label %343

323:                                              ; preds = %322
  br label %324

324:                                              ; preds = %323, %321
  %325 = load i1, ptr %22, align 1
  br i1 %325, label %326, label %327

326:                                              ; preds = %324
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %20) #6
  br label %327

327:                                              ; preds = %326, %324
  %328 = load i1, ptr %21, align 1
  br i1 %328, label %329, label %330

329:                                              ; preds = %327
  call void @llvm.lifetime.end.p0(i64 1, ptr %20) #6
  br label %330

330:                                              ; preds = %329, %327
  %331 = invoke noundef zeroext i1 @_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %18, ptr noundef @.str.211)
          to label %332 unwind label %353

332:                                              ; preds = %330
  br i1 %331, label %333, label %357

333:                                              ; preds = %332
  invoke void @_Z8showHelpv()
          to label %334 unwind label %353

334:                                              ; preds = %333
  store i32 0, ptr %3, align 4
  store i32 1, ptr %10, align 4
  br label %421

335:                                              ; preds = %310
  %336 = landingpad { ptr, i32 }
          cleanup
  %337 = extractvalue { ptr, i32 } %336, 0
  store ptr %337, ptr %13, align 8
  %338 = extractvalue { ptr, i32 } %336, 1
  store i32 %338, ptr %14, align 4
  br label %426

339:                                              ; preds = %318
  %340 = landingpad { ptr, i32 }
          cleanup
  %341 = extractvalue { ptr, i32 } %340, 0
  store ptr %341, ptr %13, align 8
  %342 = extractvalue { ptr, i32 } %340, 1
  store i32 %342, ptr %14, align 4
  br label %425

343:                                              ; preds = %322
  %344 = landingpad { ptr, i32 }
          cleanup
  %345 = extractvalue { ptr, i32 } %344, 0
  store ptr %345, ptr %13, align 8
  %346 = extractvalue { ptr, i32 } %344, 1
  store i32 %346, ptr %14, align 4
  %347 = load i1, ptr %22, align 1
  br i1 %347, label %348, label %349

348:                                              ; preds = %343
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %20) #6
  br label %349

349:                                              ; preds = %348, %343
  %350 = load i1, ptr %21, align 1
  br i1 %350, label %351, label %352

351:                                              ; preds = %349
  call void @llvm.lifetime.end.p0(i64 1, ptr %20) #6
  br label %352

352:                                              ; preds = %351, %349
  br label %425

353:                                              ; preds = %413, %408, %405, %384, %375, %370, %365, %360, %357, %333, %330
  %354 = landingpad { ptr, i32 }
          cleanup
  %355 = extractvalue { ptr, i32 } %354, 0
  store ptr %355, ptr %13, align 8
  %356 = extractvalue { ptr, i32 } %354, 1
  store i32 %356, ptr %14, align 4
  br label %424

357:                                              ; preds = %332
  %358 = invoke noundef zeroext i1 @_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %18, ptr noundef @.str.212)
          to label %359 unwind label %353

359:                                              ; preds = %357
  br i1 %358, label %360, label %384

360:                                              ; preds = %359
  %361 = invoke noundef zeroext i1 @_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %19, ptr noundef @.str.213)
          to label %362 unwind label %353

362:                                              ; preds = %360
  br i1 %361, label %363, label %365

363:                                              ; preds = %362
  %364 = getelementptr inbounds %struct.Options, ptr %6, i32 0, i32 13
  store i32 0, ptr %364, align 4, !tbaa !42
  br label %383

365:                                              ; preds = %362
  %366 = invoke noundef zeroext i1 @_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %19, ptr noundef @.str.214)
          to label %367 unwind label %353

367:                                              ; preds = %365
  br i1 %366, label %368, label %370

368:                                              ; preds = %367
  %369 = getelementptr inbounds %struct.Options, ptr %6, i32 0, i32 13
  store i32 1, ptr %369, align 4, !tbaa !42
  br label %382

370:                                              ; preds = %367
  %371 = invoke noundef zeroext i1 @_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %19, ptr noundef @.str.215)
          to label %372 unwind label %353

372:                                              ; preds = %370
  br i1 %371, label %373, label %375

373:                                              ; preds = %372
  %374 = getelementptr inbounds %struct.Options, ptr %6, i32 0, i32 13
  store i32 2, ptr %374, align 4, !tbaa !42
  br label %381

375:                                              ; preds = %372
  %376 = invoke noundef zeroext i1 @_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %19, ptr noundef @.str.5)
          to label %377 unwind label %353

377:                                              ; preds = %375
  br i1 %376, label %378, label %380

378:                                              ; preds = %377
  %379 = getelementptr inbounds %struct.Options, ptr %6, i32 0, i32 13
  store i32 3, ptr %379, align 4, !tbaa !42
  br label %380

380:                                              ; preds = %378, %377
  br label %381

381:                                              ; preds = %380, %373
  br label %382

382:                                              ; preds = %381, %368
  br label %383

383:                                              ; preds = %382, %363
  br label %384

384:                                              ; preds = %383, %359
  %385 = invoke noundef zeroext i1 @_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %18, ptr noundef @.str.216)
          to label %386 unwind label %353

386:                                              ; preds = %384
  br i1 %385, label %387, label %405

387:                                              ; preds = %386
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #6
  %388 = invoke noundef i32 @_Z8strtovalIiET_RKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(32) %19)
          to label %389 unwind label %400

389:                                              ; preds = %387
  store i32 %388, ptr %23, align 4, !tbaa !5
  %390 = getelementptr inbounds %struct.Options, ptr %6, i32 0, i32 14
  %391 = load i32, ptr %390, align 4, !tbaa !43
  %392 = icmp sge i32 %391, 1
  br i1 %392, label %393, label %404

393:                                              ; preds = %389
  %394 = getelementptr inbounds %struct.Options, ptr %6, i32 0, i32 14
  %395 = load i32, ptr %394, align 4, !tbaa !43
  %396 = icmp sle i32 %395, 4096
  br i1 %396, label %397, label %404

397:                                              ; preds = %393
  %398 = load i32, ptr %23, align 4, !tbaa !5
  %399 = getelementptr inbounds %struct.Options, ptr %6, i32 0, i32 14
  store i32 %398, ptr %399, align 4, !tbaa !43
  br label %404

400:                                              ; preds = %387
  %401 = landingpad { ptr, i32 }
          cleanup
  %402 = extractvalue { ptr, i32 } %401, 0
  store ptr %402, ptr %13, align 8
  %403 = extractvalue { ptr, i32 } %401, 1
  store i32 %403, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #6
  br label %424

404:                                              ; preds = %397, %393, %389
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #6
  br label %405

405:                                              ; preds = %404, %386
  %406 = invoke noundef zeroext i1 @_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %18, ptr noundef @.str.217)
          to label %407 unwind label %353

407:                                              ; preds = %405
  br i1 %406, label %408, label %420

408:                                              ; preds = %407
  %409 = invoke noundef zeroext i1 @_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %19, ptr noundef @.str.218)
          to label %410 unwind label %353

410:                                              ; preds = %408
  br i1 %409, label %411, label %413

411:                                              ; preds = %410
  %412 = getelementptr inbounds %struct.Options, ptr %6, i32 0, i32 11
  store i32 1, ptr %412, align 4, !tbaa !44
  br label %419

413:                                              ; preds = %410
  %414 = invoke noundef zeroext i1 @_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %19, ptr noundef @.str.214)
          to label %415 unwind label %353

415:                                              ; preds = %413
  br i1 %414, label %416, label %418

416:                                              ; preds = %415
  %417 = getelementptr inbounds %struct.Options, ptr %6, i32 0, i32 11
  store i32 0, ptr %417, align 4, !tbaa !44
  br label %418

418:                                              ; preds = %416, %415
  br label %419

419:                                              ; preds = %418, %411
  br label %420

420:                                              ; preds = %419, %407
  store i32 0, ptr %10, align 4
  br label %421

421:                                              ; preds = %420, %334
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %19) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %18) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #6
  %422 = load i32, ptr %10, align 4
  switch i32 %422, label %432 [
    i32 0, label %423
  ]

423:                                              ; preds = %421
  br label %430

424:                                              ; preds = %400, %353
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #6
  br label %425

425:                                              ; preds = %424, %352, %339
  call void @llvm.lifetime.end.p0(i64 32, ptr %19) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #6
  br label %426

426:                                              ; preds = %425, %335
  call void @llvm.lifetime.end.p0(i64 32, ptr %18) #6
  br label %427

427:                                              ; preds = %426, %306
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #6
  br label %438

428:                                              ; preds = %285, %279, %274
  invoke void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE9push_backERKS5_(ptr noundef nonnull align 8 dereferenceable(24) %8, ptr noundef nonnull align 8 dereferenceable(32) %11)
          to label %429 unwind label %66

429:                                              ; preds = %428
  br label %430

430:                                              ; preds = %429, %423
  br label %431

431:                                              ; preds = %430, %273
  store i32 0, ptr %10, align 4
  br label %432

432:                                              ; preds = %431, %421, %271
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %11) #6
  %433 = load i32, ptr %10, align 4
  switch i32 %433, label %440 [
    i32 0, label %434
  ]

434:                                              ; preds = %432
  br label %435

435:                                              ; preds = %434
  %436 = load i32, ptr %9, align 4, !tbaa !5
  %437 = add nsw i32 %436, 1
  store i32 %437, ptr %9, align 4, !tbaa !5
  br label %26, !llvm.loop !45

438:                                              ; preds = %427, %86, %66
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #6
  br label %439

439:                                              ; preds = %438, %62
  call void @llvm.lifetime.end.p0(i64 32, ptr %11) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #6
  br label %531

440:                                              ; preds = %432, %30
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #6
  %441 = load i32, ptr %10, align 4
  switch i32 %441, label %527 [
    i32 2, label %442
  ]

442:                                              ; preds = %440
  %443 = call noundef zeroext i1 @_ZNKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %8) #6
  br i1 %443, label %444, label %454

444:                                              ; preds = %442
  %445 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef @.str.219)
          to label %446 unwind label %450

446:                                              ; preds = %444
  %447 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %445, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %448 unwind label %450

448:                                              ; preds = %446
  invoke void @_Z8showHelpv()
          to label %449 unwind label %450

449:                                              ; preds = %448
  store i32 0, ptr %3, align 4
  store i32 1, ptr %10, align 4
  br label %527

450:                                              ; preds = %448, %446, %444
  %451 = landingpad { ptr, i32 }
          cleanup
  %452 = extractvalue { ptr, i32 } %451, 0
  store ptr %452, ptr %13, align 8
  %453 = extractvalue { ptr, i32 } %451, 1
  store i32 %453, ptr %14, align 4
  br label %531

454:                                              ; preds = %442
  %455 = load i8, ptr %7, align 1, !tbaa !11, !range !46, !noundef !47
  %456 = trunc i8 %455 to i1
  br i1 %456, label %468, label %457

457:                                              ; preds = %454
  %458 = getelementptr inbounds %struct.Options, ptr %6, i32 0, i32 3
  store i8 1, ptr %458, align 1, !tbaa !20
  %459 = getelementptr inbounds %struct.Options, ptr %6, i32 0, i32 8
  store i8 1, ptr %459, align 4, !tbaa !27
  %460 = getelementptr inbounds %struct.Options, ptr %6, i32 0, i32 16
  store i8 1, ptr %460, align 1, !tbaa !32
  %461 = getelementptr inbounds %struct.Options, ptr %6, i32 0, i32 0
  %462 = load i8, ptr %461, align 4, !tbaa !23, !range !46, !noundef !47
  %463 = trunc i8 %462 to i1
  br i1 %463, label %464, label %467

464:                                              ; preds = %457
  %465 = getelementptr inbounds %struct.Options, ptr %6, i32 0, i32 16
  store i8 0, ptr %465, align 1, !tbaa !32
  %466 = getelementptr inbounds %struct.Options, ptr %6, i32 0, i32 15
  store i8 1, ptr %466, align 4, !tbaa !31
  br label %467

467:                                              ; preds = %464, %457
  br label %468

468:                                              ; preds = %467, %454
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #6
  store i64 0, ptr %24, align 8, !tbaa !14
  br label %469

469:                                              ; preds = %513, %468
  %470 = load i64, ptr %24, align 8, !tbaa !14
  %471 = call noundef i64 @_ZNKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %8) #6
  %472 = icmp ult i64 %470, %471
  br i1 %472, label %474, label %473

473:                                              ; preds = %469
  store i32 10, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #6
  br label %526

474:                                              ; preds = %469
  %475 = call noundef i64 @_ZNKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %8) #6
  %476 = icmp ugt i64 %475, 1
  br i1 %476, label %477, label %508

477:                                              ; preds = %474
  %478 = load i64, ptr %24, align 8, !tbaa !14
  %479 = icmp ugt i64 %478, 0
  br i1 %479, label %480, label %491

480:                                              ; preds = %477
  %481 = getelementptr inbounds %struct.Options, ptr %6, i32 0, i32 2
  %482 = load i8, ptr %481, align 2, !tbaa !16, !range !46, !noundef !47
  %483 = trunc i8 %482 to i1
  br i1 %483, label %491, label %484

484:                                              ; preds = %480
  %485 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %486 unwind label %487

486:                                              ; preds = %484
  br label %491

487:                                              ; preds = %504, %501, %495, %491, %484
  %488 = landingpad { ptr, i32 }
          cleanup
  %489 = extractvalue { ptr, i32 } %488, 0
  store ptr %489, ptr %13, align 8
  %490 = extractvalue { ptr, i32 } %488, 1
  store i32 %490, ptr %14, align 4
  br label %525

491:                                              ; preds = %486, %480, %477
  %492 = load i64, ptr %24, align 8, !tbaa !14
  %493 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %8, i64 noundef %492) #6
  %494 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull align 8 dereferenceable(32) %493)
          to label %495 unwind label %487

495:                                              ; preds = %491
  %496 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %494, ptr noundef @.str.27)
          to label %497 unwind label %487

497:                                              ; preds = %495
  %498 = getelementptr inbounds %struct.Options, ptr %6, i32 0, i32 2
  %499 = load i8, ptr %498, align 2, !tbaa !16, !range !46, !noundef !47
  %500 = trunc i8 %499 to i1
  br i1 %500, label %504, label %501

501:                                              ; preds = %497
  %502 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %503 unwind label %487

503:                                              ; preds = %501
  br label %507

504:                                              ; preds = %497
  %505 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef @.str.15)
          to label %506 unwind label %487

506:                                              ; preds = %504
  br label %507

507:                                              ; preds = %506, %503
  br label %508

508:                                              ; preds = %507, %474
  call void @llvm.lifetime.start.p0(i64 608, ptr %25) #6
  %509 = load i64, ptr %24, align 8, !tbaa !14
  %510 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %8, i64 noundef %509) #6
  invoke void @_ZN4DataC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(605) %25, ptr noundef nonnull align 8 dereferenceable(32) %510)
          to label %511 unwind label %516

511:                                              ; preds = %508
  invoke void @_Z9showInfosR4DataRK7Options(ptr noundef nonnull align 8 dereferenceable(605) %25, ptr noundef nonnull align 4 dereferenceable(36) %6)
          to label %512 unwind label %520

512:                                              ; preds = %511
  call void @_ZN4DataD2Ev(ptr noundef nonnull align 8 dereferenceable(605) %25) #6
  call void @llvm.lifetime.end.p0(i64 608, ptr %25) #6
  br label %513

513:                                              ; preds = %512
  %514 = load i64, ptr %24, align 8, !tbaa !14
  %515 = add i64 %514, 1
  store i64 %515, ptr %24, align 8, !tbaa !14
  br label %469, !llvm.loop !48

516:                                              ; preds = %508
  %517 = landingpad { ptr, i32 }
          cleanup
  %518 = extractvalue { ptr, i32 } %517, 0
  store ptr %518, ptr %13, align 8
  %519 = extractvalue { ptr, i32 } %517, 1
  store i32 %519, ptr %14, align 4
  br label %524

520:                                              ; preds = %511
  %521 = landingpad { ptr, i32 }
          cleanup
  %522 = extractvalue { ptr, i32 } %521, 0
  store ptr %522, ptr %13, align 8
  %523 = extractvalue { ptr, i32 } %521, 1
  store i32 %523, ptr %14, align 4
  call void @_ZN4DataD2Ev(ptr noundef nonnull align 8 dereferenceable(605) %25) #6
  br label %524

524:                                              ; preds = %520, %516
  call void @llvm.lifetime.end.p0(i64 608, ptr %25) #6
  br label %525

525:                                              ; preds = %524, %487
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #6
  br label %531

526:                                              ; preds = %473
  store i32 0, ptr %10, align 4
  br label %527

527:                                              ; preds = %526, %449, %440
  call void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %8) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr %8) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %7) #6
  call void @llvm.lifetime.end.p0(i64 36, ptr %6) #6
  %528 = load i32, ptr %10, align 4
  switch i32 %528, label %537 [
    i32 0, label %529
    i32 1, label %529
  ]

529:                                              ; preds = %527, %527
  %530 = load i32, ptr %3, align 4
  ret i32 %530

531:                                              ; preds = %525, %450, %439
  call void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %8) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr %8) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %7) #6
  call void @llvm.lifetime.end.p0(i64 36, ptr %6) #6
  br label %532

532:                                              ; preds = %531
  %533 = load ptr, ptr %13, align 8
  %534 = load i32, ptr %14, align 4
  %535 = insertvalue { ptr, i32 } poison, ptr %533, 0
  %536 = insertvalue { ptr, i32 } %535, i32 %534, 1
  resume { ptr, i32 } %536

537:                                              ; preds = %527
  unreachable
}

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN7OptionsC2Ev(ptr noundef nonnull align 4 dereferenceable(36)) unnamed_addr #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEixEm(ptr noundef nonnull align 8 dereferenceable(32), i64 noundef) #3 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_Z8strtovalIiET_RKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(32)) #0

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #3 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 = { 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 #2 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #3 = { 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 #4 = { 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 #5 = { mustprogress norecurse uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { nounwind }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"any pointer", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"bool", !7, i64 0}
!13 = !{!7, !7, i64 0}
!14 = !{!15, !15, i64 0}
!15 = !{!"long", !7, i64 0}
!16 = !{!17, !12, i64 2}
!17 = !{!"_ZTS7Options", !12, i64 0, !12, i64 1, !12, i64 2, !12, i64 3, !12, i64 4, !12, i64 5, !12, i64 6, !12, i64 7, !12, i64 8, !12, i64 9, !12, i64 10, !18, i64 12, !12, i64 16, !19, i64 20, !6, i64 24, !12, i64 28, !12, i64 29, !12, i64 30, !12, i64 31, !12, i64 32, !12, i64 33, !12, i64 34, !12, i64 35}
!18 = !{!"_ZTS9HexFormat", !7, i64 0}
!19 = !{!"_ZTS10RenderMode", !7, i64 0}
!20 = !{!17, !12, i64 3}
!21 = !{!17, !12, i64 5}
!22 = !{!17, !12, i64 6}
!23 = !{!17, !12, i64 0}
!24 = !{!17, !12, i64 1}
!25 = !{!17, !12, i64 7}
!26 = !{!17, !12, i64 4}
!27 = !{!17, !12, i64 8}
!28 = !{!17, !12, i64 16}
!29 = !{!17, !12, i64 9}
!30 = !{!17, !12, i64 10}
!31 = !{!17, !12, i64 28}
!32 = !{!17, !12, i64 29}
!33 = !{!17, !12, i64 30}
!34 = !{!17, !12, i64 31}
!35 = !{!17, !12, i64 32}
!36 = !{!17, !12, i64 33}
!37 = !{!17, !12, i64 34}
!38 = !{!17, !12, i64 35}
!39 = distinct !{!39, !40}
!40 = !{!"llvm.loop.mustprogress"}
!41 = distinct !{!41, !40}
!42 = !{!17, !19, i64 20}
!43 = !{!17, !6, i64 24}
!44 = !{!17, !18, i64 12}
!45 = distinct !{!45, !40}
!46 = !{i8 0, i8 2}
!47 = !{}
!48 = distinct !{!48, !40}


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

%"class.std::basic_ostream" = type { ptr, %"class.std::basic_ios" }
%"class.std::basic_ios" = type { %"class.std::ios_base", ptr, i8, i8, ptr, ptr, ptr, ptr }
%"class.std::ios_base" = type { ptr, i64, i64, i32, i32, i32, ptr, %"struct.std::ios_base::_Words", [8 x %"struct.std::ios_base::_Words"], i32, ptr, %"class.std::locale" }
%"struct.std::ios_base::_Words" = type { ptr, i64 }
%"class.std::locale" = type { ptr }
%"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.Options = type { i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i32, i8, i32, i32, i8, i8, i8, i8, i8, i8, i8, i8 }
%"class.std::vector.3" = type { %"struct.std::_Vector_base.4" }
%"struct.std::_Vector_base.4" = 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::allocator" = type { i8 }
%struct.Data = type <{ %"class.std::__cxx11::basic_string", %"class.std::vector", %"class.std::vector", i32, i32, %"class.lodepng::State", i32, i8, [3 x i8] }>
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<unsigned char, std::allocator<unsigned char>>::_Vector_impl" }
%"struct.std::_Vector_base<unsigned char, std::allocator<unsigned char>>::_Vector_impl" = type { %"struct.std::_Vector_base<unsigned char, std::allocator<unsigned char>>::_Vector_impl_data" }
%"struct.std::_Vector_base<unsigned char, std::allocator<unsigned char>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.lodepng::State" = type { %struct.LodePNGState.base, [4 x i8] }
%struct.LodePNGState.base = type <{ ptr, %struct.LodePNGDecoderSettings, %struct.LodePNGEncoderSettings, %struct.LodePNGColorMode, %struct.LodePNGInfo, i32 }>
%struct.LodePNGDecoderSettings = type { %struct.LodePNGDecompressSettings, i32, i32, i32, i32, i32, i32 }
%struct.LodePNGDecompressSettings = type { i32, i32, ptr, ptr, ptr }
%struct.LodePNGEncoderSettings = type { %struct.LodePNGCompressSettings, i32, i32, i32, ptr, i32, i32, i32 }
%struct.LodePNGCompressSettings = type { i32, i32, i32, i32, i32, i32, ptr, ptr, ptr }
%struct.LodePNGColorMode = type { i32, i32, ptr, i64, i32, i32, i32, i32 }
%struct.LodePNGInfo = type { i32, i32, i32, %struct.LodePNGColorMode, i32, i32, i32, i32, i64, ptr, ptr, i64, ptr, ptr, ptr, ptr, i32, %struct.LodePNGTime, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, ptr, ptr, i32, [3 x ptr], [3 x i64] }
%struct.LodePNGTime = type { i32, i32, i32, i32, i32, i32 }

@_ZSt4cout = external global %"class.std::basic_ostream", align 8
@.str.5 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.85 = external hidden unnamed_addr constant [1 x i8], align 1
@.str.205 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.206 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.207 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.208 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.209 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.210 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.211 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.212 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.213 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.214 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.215 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.216 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.217 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.218 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.219 = external hidden unnamed_addr constant [37 x i8], align 1

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z8showHelpv() local_unnamed_addr #0

; Function Attrs: inlinehint mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) local_unnamed_addr #1

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

; Function Attrs: inlinehint mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_(ptr noundef nonnull align 8 dereferenceable(8)) #1

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

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

declare i32 @__gxx_personality_v0(...)

; Function Attrs: inlinehint mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #1

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(216) ptr @_ZSt3hexRSt8ios_base(ptr noundef nonnull align 8 dereferenceable(216)) #1

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

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c(ptr noundef nonnull align 8 dereferenceable(8), i8 noundef signext) local_unnamed_addr #1

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

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

; Function Attrs: mustprogress uwtable
declare void @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6substrEmm(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(32), i64 noundef, i64 noundef) local_unnamed_addr #0 align 2

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN4DataD2Ev(ptr noundef nonnull align 8 dereferenceable(605)) unnamed_addr #4 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z9showInfosR4DataRK7Options(ptr noundef nonnull align 8 dereferenceable(605), ptr noundef nonnull align 4 dereferenceable(36)) local_unnamed_addr #0

; Function Attrs: mustprogress norecurse uwtable
define dso_local noundef i32 @main(i32 noundef %0, ptr nocapture noundef readonly %1) local_unnamed_addr #5 personality ptr @__gxx_personality_v0 {
  %3 = alloca %struct.Options, align 4
  %4 = alloca %"class.std::vector.3", align 8
  %5 = alloca %"class.std::__cxx11::basic_string", align 8
  %6 = alloca %"class.std::allocator", align 1
  %7 = alloca %"class.std::__cxx11::basic_string", align 8
  %8 = alloca %"class.std::__cxx11::basic_string", align 8
  %9 = alloca %"class.std::allocator", align 1
  %10 = alloca %struct.Data, align 8
  call void @llvm.lifetime.start.p0(i64 36, ptr nonnull %3) #6
  call void @_ZN7OptionsC2Ev(ptr noundef nonnull align 4 dereferenceable(36) %3)
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %4) #6
  call void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %4) #6
  %.not104147 = icmp sgt i32 %0, 1
  br i1 %.not104147, label %.lr.ph150, label %.thread118.thread

.lr.ph150:                                        ; preds = %2
  %11 = getelementptr inbounds i8, ptr %3, i64 35
  %12 = getelementptr inbounds i8, ptr %3, i64 32
  %13 = getelementptr inbounds i8, ptr %3, i64 34
  %14 = getelementptr inbounds i8, ptr %3, i64 33
  %15 = getelementptr inbounds i8, ptr %3, i64 31
  %16 = getelementptr inbounds i8, ptr %3, i64 30
  %17 = getelementptr inbounds i8, ptr %3, i64 29
  %18 = getelementptr inbounds i8, ptr %3, i64 28
  %19 = getelementptr inbounds i8, ptr %3, i64 10
  %20 = getelementptr inbounds i8, ptr %3, i64 9
  %21 = getelementptr inbounds i8, ptr %3, i64 16
  %22 = getelementptr inbounds i8, ptr %3, i64 8
  %23 = getelementptr inbounds i8, ptr %3, i64 3
  %24 = getelementptr inbounds i8, ptr %3, i64 4
  %25 = getelementptr inbounds i8, ptr %3, i64 7
  %26 = getelementptr inbounds i8, ptr %3, i64 1
  %27 = getelementptr inbounds i8, ptr %3, i64 6
  %28 = getelementptr inbounds i8, ptr %3, i64 5
  %29 = getelementptr inbounds i8, ptr %3, i64 2
  %30 = getelementptr inbounds i8, ptr %3, i64 20
  %31 = getelementptr inbounds i8, ptr %3, i64 24
  %32 = getelementptr inbounds i8, ptr %3, i64 12
  %wide.trip.count = zext nneg i32 %0 to i64
  br label %33

33:                                               ; preds = %.lr.ph150, %.critedge113
  %indvars.iv = phi i64 [ 1, %.lr.ph150 ], [ %indvars.iv.next, %.critedge113 ]
  %.065149 = phi i1 [ false, %.lr.ph150 ], [ %.368, %.critedge113 ]
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %5) #6
  %34 = getelementptr inbounds ptr, ptr %1, i64 %indvars.iv
  %35 = load ptr, ptr %34, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %6) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %6) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef %35, ptr noundef nonnull align 1 dereferenceable(1) %6)
          to label %36 unwind label %52

36:                                               ; preds = %33
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %6) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %6) #6
  %37 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %5) #6
  %38 = icmp ugt i64 %37, 1
  br i1 %38, label %39, label %97

39:                                               ; preds = %36
  %40 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %5, i64 noundef 0)
  %41 = load i8, ptr %40, align 1, !tbaa !9
  %42 = icmp eq i8 %41, 45
  br i1 %42, label %43, label %97

43:                                               ; preds = %39
  %44 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %5, i64 noundef 1)
  %45 = load i8, ptr %44, align 1, !tbaa !9
  %.not = icmp eq i8 %45, 45
  br i1 %.not, label %97, label %46

46:                                               ; preds = %43
  %47 = call noundef zeroext i1 @_ZStneIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef nonnull @.str.205)
  br i1 %47, label %48, label %56

48:                                               ; preds = %46
  %49 = call noundef zeroext i1 @_ZStneIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef nonnull @.str.206)
  br i1 %49, label %50, label %56

50:                                               ; preds = %48
  %51 = call noundef zeroext i1 @_ZStneIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef nonnull @.str.207)
  %spec.select = select i1 %51, i1 true, i1 %.065149
  br label %56

52:                                               ; preds = %33
  %53 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %6) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %6) #6
  br label %165

54:                                               ; preds = %163
  %55 = landingpad { ptr, i32 }
          cleanup
  br label %164

56:                                               ; preds = %50, %48, %46
  %.166 = phi i1 [ %.065149, %48 ], [ %.065149, %46 ], [ %spec.select, %50 ]
  %57 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %5) #6
  %.not103141 = icmp ugt i64 %57, 1
  br i1 %.not103141, label %.lr.ph, label %.critedge113

.lr.ph:                                           ; preds = %56, %94
  %.070142 = phi i64 [ %95, %94 ], [ 1, %56 ]
  %58 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %5, i64 noundef %.070142)
  %59 = load i8, ptr %58, align 1, !tbaa !9
  switch i8 %59, label %90 [
    i8 63, label %.invoke
    i8 111, label %60
    i8 104, label %61
    i8 105, label %62
    i8 73, label %63
    i8 118, label %64
    i8 116, label %65
    i8 115, label %66
    i8 101, label %67
    i8 112, label %68
    i8 114, label %69
    i8 108, label %70
    i8 76, label %71
    i8 99, label %72
    i8 67, label %73
    i8 102, label %74
    i8 122, label %75
    i8 98, label %76
    i8 66, label %77
    i8 55, label %78
    i8 120, label %79
    i8 45, label %81
  ]

.invoke:                                          ; preds = %.lr.ph, %.invoke185, %81
  invoke void @_Z8showHelpv()
          to label %.loopexit122 unwind label %.loopexit.split-lp

.loopexit121:                                     ; preds = %79
  %lpad.loopexit = landingpad { ptr, i32 }
          cleanup
  br label %164

.loopexit.split-lp:                               ; preds = %.invoke186, %.invoke185, %.invoke, %83, %85, %90, %92
  %lpad.loopexit.split-lp = landingpad { ptr, i32 }
          cleanup
  br label %164

60:                                               ; preds = %.lr.ph
  store i8 1, ptr %29, align 2, !tbaa !10
  br label %94

61:                                               ; preds = %.lr.ph
  store i8 1, ptr %23, align 1, !tbaa !16
  br label %94

62:                                               ; preds = %.lr.ph
  store i8 1, ptr %28, align 1, !tbaa !17
  br label %94

63:                                               ; preds = %.lr.ph
  store i8 1, ptr %27, align 2, !tbaa !18
  br label %94

64:                                               ; preds = %.lr.ph
  store i8 1, ptr %3, align 4, !tbaa !19
  br label %94

65:                                               ; preds = %.lr.ph
  store i8 1, ptr %26, align 1, !tbaa !20
  br label %94

66:                                               ; preds = %.lr.ph
  store i8 1, ptr %25, align 1, !tbaa !21
  br label %94

67:                                               ; preds = %.lr.ph
  store i8 1, ptr %24, align 4, !tbaa !22
  br label %94

68:                                               ; preds = %.lr.ph
  store i8 1, ptr %22, align 4, !tbaa !23
  store i8 1, ptr %23, align 1, !tbaa !16
  br label %94

69:                                               ; preds = %.lr.ph
  store i8 1, ptr %21, align 4, !tbaa !24
  br label %94

70:                                               ; preds = %.lr.ph
  store i8 1, ptr %20, align 1, !tbaa !25
  br label %94

71:                                               ; preds = %.lr.ph
  store i8 1, ptr %19, align 2, !tbaa !26
  br label %94

72:                                               ; preds = %.lr.ph
  store i8 1, ptr %18, align 4, !tbaa !27
  br label %94

73:                                               ; preds = %.lr.ph
  store i8 1, ptr %17, align 1, !tbaa !28
  br label %94

74:                                               ; preds = %.lr.ph
  store i8 1, ptr %16, align 2, !tbaa !29
  br label %94

75:                                               ; preds = %.lr.ph
  store i8 1, ptr %15, align 1, !tbaa !30
  br label %94

76:                                               ; preds = %.lr.ph
  store i8 1, ptr %12, align 4, !tbaa !31
  br label %94

77:                                               ; preds = %.lr.ph
  store i8 1, ptr %12, align 4, !tbaa !31
  store i8 1, ptr %14, align 1, !tbaa !32
  br label %94

78:                                               ; preds = %.lr.ph
  store i8 1, ptr %12, align 4, !tbaa !31
  store i8 1, ptr %13, align 2, !tbaa !33
  br label %94

79:                                               ; preds = %.lr.ph
  store i8 1, ptr %11, align 1, !tbaa !34
  %80 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull @_ZSt3hexRSt8ios_base)
          to label %94 unwind label %.loopexit121

81:                                               ; preds = %.lr.ph
  %82 = call noundef zeroext i1 @_ZStneIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef nonnull @.str.208)
  br i1 %82, label %83, label %.invoke

83:                                               ; preds = %81
  %84 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull @.str.209)
          to label %85 unwind label %.loopexit.split-lp

85:                                               ; preds = %83
  %86 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE(ptr noundef nonnull align 8 dereferenceable(8) %84, ptr noundef nonnull align 8 dereferenceable(32) %5)
          to label %.invoke186 unwind label %.loopexit.split-lp

.invoke186:                                       ; preds = %92, %85
  %87 = phi ptr [ %86, %85 ], [ %93, %92 ]
  %88 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %87, ptr noundef nonnull @.str.210)
          to label %.invoke185 unwind label %.loopexit.split-lp

.invoke185:                                       ; preds = %.invoke186
  %89 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %88, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %.invoke unwind label %.loopexit.split-lp

90:                                               ; preds = %.lr.ph
  %91 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull @.str.209)
          to label %92 unwind label %.loopexit.split-lp

92:                                               ; preds = %90
  %93 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c(ptr noundef nonnull align 8 dereferenceable(8) %91, i8 noundef signext %59)
          to label %.invoke186 unwind label %.loopexit.split-lp

94:                                               ; preds = %60, %62, %64, %66, %68, %70, %72, %74, %76, %78, %79, %77, %75, %73, %71, %69, %67, %65, %63, %61
  %95 = add nuw i64 %.070142, 1
  %96 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %5) #6
  %.not103 = icmp ult i64 %95, %96
  br i1 %.not103, label %.lr.ph, label %.critedge113, !llvm.loop !35

97:                                               ; preds = %43, %39, %36
  %98 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %5) #6
  %99 = icmp ugt i64 %98, 1
  br i1 %99, label %100, label %163

100:                                              ; preds = %97
  %101 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %5, i64 noundef 0)
  %102 = load i8, ptr %101, align 1, !tbaa !9
  %103 = icmp eq i8 %102, 45
  br i1 %103, label %104, label %163

104:                                              ; preds = %100
  %105 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %5, i64 noundef 1)
  %106 = load i8, ptr %105, align 1, !tbaa !9
  %107 = icmp eq i8 %106, 45
  br i1 %107, label %.preheader, label %163

.preheader:                                       ; preds = %104
  %108 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %5) #6
  %109 = icmp ugt i64 %108, 2
  br i1 %109, label %.lr.ph144, label %.critedge

.lr.ph144:                                        ; preds = %.preheader, %112
  %.064143 = phi i64 [ %113, %112 ], [ 2, %.preheader ]
  %110 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %5, i64 noundef %.064143)
  %111 = load i8, ptr %110, align 1, !tbaa !9
  %.not95 = icmp eq i8 %111, 61
  br i1 %.not95, label %.critedge, label %112

112:                                              ; preds = %.lr.ph144
  %113 = add nuw i64 %.064143, 1
  %114 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %5) #6
  %115 = icmp ult i64 %113, %114
  br i1 %115, label %.lr.ph144, label %.critedge, !llvm.loop !37

.critedge:                                        ; preds = %.lr.ph144, %112, %.preheader
  %.064.lcssa = phi i64 [ 2, %.preheader ], [ %113, %112 ], [ %.064143, %.lr.ph144 ]
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %7) #6
  %116 = add i64 %.064.lcssa, -2
  invoke void @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6substrEmm(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %7, ptr noundef nonnull align 8 dereferenceable(32) %5, i64 noundef 2, i64 noundef %116)
          to label %117 unwind label %125

117:                                              ; preds = %.critedge
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %8) #6
  %118 = add i64 %.064.lcssa, 1
  %119 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %5) #6
  %.not96 = icmp ult i64 %118, %119
  br i1 %.not96, label %120, label %121

120:                                              ; preds = %117
  invoke void @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6substrEmm(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %8, ptr noundef nonnull align 8 dereferenceable(32) %5, i64 noundef %118, i64 noundef -1)
          to label %.critedge115 unwind label %127

121:                                              ; preds = %117
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %9) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %9) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %8, ptr noundef nonnull @.str.85, ptr noundef nonnull align 1 dereferenceable(1) %9)
          to label %122 unwind label %129

122:                                              ; preds = %121
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %9) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %9) #6
  br label %.critedge115

.critedge115:                                     ; preds = %120, %122
  %123 = call noundef zeroext i1 @_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %7, ptr noundef nonnull @.str.211)
  br i1 %123, label %124, label %133

124:                                              ; preds = %.critedge115
  invoke void @_Z8showHelpv()
          to label %159 unwind label %131

125:                                              ; preds = %.critedge
  %126 = landingpad { ptr, i32 }
          cleanup
  br label %162

127:                                              ; preds = %120
  %128 = landingpad { ptr, i32 }
          cleanup
  br label %161

129:                                              ; preds = %121
  %130 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %9) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %9) #6
  br label %161

131:                                              ; preds = %124
  %132 = landingpad { ptr, i32 }
          cleanup
  br label %160

133:                                              ; preds = %.critedge115
  %134 = call noundef zeroext i1 @_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %7, ptr noundef nonnull @.str.212)
  br i1 %134, label %135, label %143

135:                                              ; preds = %133
  %136 = call noundef zeroext i1 @_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %8, ptr noundef nonnull @.str.213)
  br i1 %136, label %.sink.split, label %137

137:                                              ; preds = %135
  %138 = call noundef zeroext i1 @_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %8, ptr noundef nonnull @.str.214)
  br i1 %138, label %.sink.split, label %139

139:                                              ; preds = %137
  %140 = call noundef zeroext i1 @_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %8, ptr noundef nonnull @.str.215)
  br i1 %140, label %.sink.split, label %141

141:                                              ; preds = %139
  %142 = call noundef zeroext i1 @_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %8, ptr noundef nonnull @.str.5)
  br i1 %142, label %.sink.split, label %143

.sink.split:                                      ; preds = %141, %139, %137, %135
  %.sink = phi i32 [ 0, %135 ], [ 1, %137 ], [ 2, %139 ], [ 3, %141 ]
  store i32 %.sink, ptr %30, align 4, !tbaa !38
  br label %143

143:                                              ; preds = %.sink.split, %141, %133
  %144 = call noundef zeroext i1 @_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %7, ptr noundef nonnull @.str.216)
  br i1 %144, label %145, label %153

145:                                              ; preds = %143
  %146 = invoke noundef i32 @_Z8strtovalIiET_RKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(32) %8)
          to label %147 unwind label %151

147:                                              ; preds = %145
  %148 = load i32, ptr %31, align 4
  %149 = add i32 %148, -1
  %or.cond = icmp ult i32 %149, 4096
  br i1 %or.cond, label %150, label %153

150:                                              ; preds = %147
  store i32 %146, ptr %31, align 4, !tbaa !39
  br label %153

151:                                              ; preds = %145
  %152 = landingpad { ptr, i32 }
          cleanup
  br label %160

153:                                              ; preds = %147, %150, %143
  %154 = call noundef zeroext i1 @_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %7, ptr noundef nonnull @.str.217)
  br i1 %154, label %155, label %159

155:                                              ; preds = %153
  %156 = call noundef zeroext i1 @_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %8, ptr noundef nonnull @.str.218)
  br i1 %156, label %.sink.split183, label %157

157:                                              ; preds = %155
  %158 = call noundef zeroext i1 @_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %8, ptr noundef nonnull @.str.214)
  br i1 %158, label %.sink.split183, label %159

.sink.split183:                                   ; preds = %157, %155
  %.sink184 = phi i32 [ 1, %155 ], [ 0, %157 ]
  store i32 %.sink184, ptr %32, align 4, !tbaa !40
  br label %159

159:                                              ; preds = %.sink.split183, %153, %157, %124
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %8) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %8) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %7) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %7) #6
  br i1 %123, label %.loopexit122, label %.critedge113

160:                                              ; preds = %151, %131
  %.pn = phi { ptr, i32 } [ %132, %131 ], [ %152, %151 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %8) #6
  br label %161

161:                                              ; preds = %129, %160, %127
  %.pn.pn = phi { ptr, i32 } [ %.pn, %160 ], [ %128, %127 ], [ %130, %129 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %8) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %7) #6
  br label %162

162:                                              ; preds = %161, %125
  %.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn, %161 ], [ %126, %125 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %7) #6
  br label %164

163:                                              ; preds = %104, %100, %97
  invoke void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE9push_backERKS5_(ptr noundef nonnull align 8 dereferenceable(24) %4, ptr noundef nonnull align 8 dereferenceable(32) %5)
          to label %.critedge113 unwind label %54

.critedge113:                                     ; preds = %94, %56, %159, %163
  %.368 = phi i1 [ %.065149, %163 ], [ %.065149, %159 ], [ %.166, %56 ], [ %.166, %94 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %5) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5) #6
  %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 %.thread118, label %33, !llvm.loop !41

164:                                              ; preds = %.loopexit121, %.loopexit.split-lp, %162, %54
  %.pn100 = phi { ptr, i32 } [ %.pn.pn.pn, %162 ], [ %55, %54 ], [ %lpad.loopexit, %.loopexit121 ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %5) #6
  br label %165

165:                                              ; preds = %164, %52
  %.pn100.pn = phi { ptr, i32 } [ %.pn100, %164 ], [ %53, %52 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5) #6
  br label %234

.loopexit122:                                     ; preds = %159, %.invoke
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %5) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5) #6
  br label %.loopexit

.thread118:                                       ; preds = %.critedge113
  %166 = call noundef zeroext i1 @_ZNKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %4) #6
  br i1 %166, label %168, label %175

.thread118.thread:                                ; preds = %2
  %167 = call noundef zeroext i1 @_ZNKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %4) #6
  br i1 %167, label %168, label %.thread

168:                                              ; preds = %.thread118.thread, %.thread118
  %169 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull @.str.219)
          to label %170 unwind label %173

170:                                              ; preds = %168
  %171 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %169, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %172 unwind label %173

172:                                              ; preds = %170
  invoke void @_Z8showHelpv()
          to label %.loopexit unwind label %173

173:                                              ; preds = %172, %170, %168
  %174 = landingpad { ptr, i32 }
          cleanup
  br label %234

175:                                              ; preds = %.thread118
  br i1 %.368, label %183, label %.thread

.thread:                                          ; preds = %.thread118.thread, %175
  %176 = getelementptr inbounds i8, ptr %3, i64 3
  store i8 1, ptr %176, align 1, !tbaa !16
  %177 = getelementptr inbounds i8, ptr %3, i64 8
  store i8 1, ptr %177, align 4, !tbaa !23
  %178 = getelementptr inbounds i8, ptr %3, i64 29
  store i8 1, ptr %178, align 1, !tbaa !28
  %179 = load i8, ptr %3, align 4, !tbaa !19, !range !42, !noundef !43
  %180 = trunc nuw i8 %179 to i1
  br i1 %180, label %181, label %183

181:                                              ; preds = %.thread
  store i8 0, ptr %178, align 1, !tbaa !28
  %182 = getelementptr inbounds i8, ptr %3, i64 28
  store i8 1, ptr %182, align 4, !tbaa !27
  br label %183

183:                                              ; preds = %.thread, %181, %175
  %184 = call noundef i64 @_ZNKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %4) #6
  %.not154 = icmp eq i64 %184, 0
  br i1 %.not154, label %.loopexit, label %.lr.ph153

.lr.ph153:                                        ; preds = %183
  %185 = getelementptr inbounds i8, ptr %3, i64 2
  %186 = call noundef i64 @_ZNKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %4) #6
  %187 = icmp ugt i64 %186, 1
  br i1 %187, label %188, label %200

188:                                              ; preds = %.lr.ph153
  %189 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %4, i64 noundef 0) #6
  %190 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull align 8 dereferenceable(32) %189)
          to label %191 unwind label %.loopexit.split-lp161

191:                                              ; preds = %188
  %192 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %190, ptr noundef nonnull @.str.27)
          to label %193 unwind label %.loopexit.split-lp161

193:                                              ; preds = %191
  %194 = load i8, ptr %185, align 2, !tbaa !10, !range !42, !noundef !43
  %195 = trunc nuw i8 %194 to i1
  br i1 %195, label %198, label %196

196:                                              ; preds = %193
  %197 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %200 unwind label %.loopexit.split-lp161

198:                                              ; preds = %193
  %199 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull @.str.15)
          to label %200 unwind label %.loopexit.split-lp161

200:                                              ; preds = %198, %196, %.lr.ph153
  call void @llvm.lifetime.start.p0(i64 608, ptr nonnull %10) #6
  %201 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %4, i64 noundef 0) #6
  invoke void @_ZN4DataC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(605) %10, ptr noundef nonnull align 8 dereferenceable(32) %201)
          to label %202 unwind label %.loopexit.split-lp165

202:                                              ; preds = %200
  invoke void @_Z9showInfosR4DataRK7Options(ptr noundef nonnull align 8 dereferenceable(605) %10, ptr noundef nonnull align 4 dereferenceable(36) %3)
          to label %203 unwind label %.loopexit.split-lp170

203:                                              ; preds = %202
  call void @_ZN4DataD2Ev(ptr noundef nonnull align 8 dereferenceable(605) %10) #6
  call void @llvm.lifetime.end.p0(i64 608, ptr nonnull %10) #6
  %204 = call noundef i64 @_ZNKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %4) #6
  %205 = icmp ugt i64 %204, 1
  br i1 %205, label %.peel.next, label %.loopexit

.peel.next:                                       ; preds = %203, %228
  %.0152 = phi i64 [ %229, %228 ], [ 1, %203 ]
  %206 = call noundef i64 @_ZNKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %4) #6
  %207 = icmp ugt i64 %206, 1
  br i1 %207, label %208, label %225

208:                                              ; preds = %.peel.next
  %209 = load i8, ptr %185, align 2, !tbaa !10, !range !42, !noundef !43
  %210 = trunc nuw i8 %209 to i1
  br i1 %210, label %213, label %211

211:                                              ; preds = %208
  %212 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %213 unwind label %.loopexit160

.loopexit160:                                     ; preds = %211, %213, %216, %221, %223
  %lpad.loopexit162 = landingpad { ptr, i32 }
          cleanup
  br label %234

.loopexit.split-lp161:                            ; preds = %188, %191, %196, %198
  %lpad.loopexit.split-lp163 = landingpad { ptr, i32 }
          cleanup
  br label %234

213:                                              ; preds = %211, %208
  %214 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %4, i64 noundef %.0152) #6
  %215 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull align 8 dereferenceable(32) %214)
          to label %216 unwind label %.loopexit160

216:                                              ; preds = %213
  %217 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %215, ptr noundef nonnull @.str.27)
          to label %218 unwind label %.loopexit160

218:                                              ; preds = %216
  %219 = load i8, ptr %185, align 2, !tbaa !10, !range !42, !noundef !43
  %220 = trunc nuw i8 %219 to i1
  br i1 %220, label %223, label %221

221:                                              ; preds = %218
  %222 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %225 unwind label %.loopexit160

223:                                              ; preds = %218
  %224 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull @.str.15)
          to label %225 unwind label %.loopexit160

225:                                              ; preds = %221, %223, %.peel.next
  call void @llvm.lifetime.start.p0(i64 608, ptr nonnull %10) #6
  %226 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %4, i64 noundef %.0152) #6
  invoke void @_ZN4DataC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(605) %10, ptr noundef nonnull align 8 dereferenceable(32) %226)
          to label %227 unwind label %.loopexit164

227:                                              ; preds = %225
  invoke void @_Z9showInfosR4DataRK7Options(ptr noundef nonnull align 8 dereferenceable(605) %10, ptr noundef nonnull align 4 dereferenceable(36) %3)
          to label %228 unwind label %.loopexit169

228:                                              ; preds = %227
  call void @_ZN4DataD2Ev(ptr noundef nonnull align 8 dereferenceable(605) %10) #6
  call void @llvm.lifetime.end.p0(i64 608, ptr nonnull %10) #6
  %229 = add nuw i64 %.0152, 1
  %230 = call noundef i64 @_ZNKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %4) #6
  %231 = icmp ult i64 %229, %230
  br i1 %231, label %.peel.next, label %.loopexit, !llvm.loop !44

.loopexit164:                                     ; preds = %225
  %lpad.loopexit166 = landingpad { ptr, i32 }
          cleanup
  br label %233

.loopexit.split-lp165:                            ; preds = %200
  %lpad.loopexit.split-lp167 = landingpad { ptr, i32 }
          cleanup
  br label %233

.loopexit169:                                     ; preds = %227
  %lpad.loopexit171 = landingpad { ptr, i32 }
          cleanup
  br label %232

.loopexit.split-lp170:                            ; preds = %202
  %lpad.loopexit.split-lp172 = landingpad { ptr, i32 }
          cleanup
  br label %232

232:                                              ; preds = %.loopexit.split-lp170, %.loopexit169
  %lpad.phi173 = phi { ptr, i32 } [ %lpad.loopexit171, %.loopexit169 ], [ %lpad.loopexit.split-lp172, %.loopexit.split-lp170 ]
  call void @_ZN4DataD2Ev(ptr noundef nonnull align 8 dereferenceable(605) %10) #6
  br label %233

233:                                              ; preds = %.loopexit164, %.loopexit.split-lp165, %232
  %.pn106 = phi { ptr, i32 } [ %lpad.phi173, %232 ], [ %lpad.loopexit166, %.loopexit164 ], [ %lpad.loopexit.split-lp167, %.loopexit.split-lp165 ]
  call void @llvm.lifetime.end.p0(i64 608, ptr nonnull %10) #6
  br label %234

.loopexit:                                        ; preds = %228, %203, %183, %.loopexit122, %172
  call void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %4) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %4) #6
  call void @llvm.lifetime.end.p0(i64 36, ptr nonnull %3) #6
  ret i32 0

234:                                              ; preds = %.loopexit160, %.loopexit.split-lp161, %233, %173, %165
  %.pn109 = phi { ptr, i32 } [ %174, %173 ], [ %.pn100.pn, %165 ], [ %.pn106, %233 ], [ %lpad.loopexit162, %.loopexit160 ], [ %lpad.loopexit.split-lp163, %.loopexit.split-lp161 ]
  call void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %4) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %4) #6
  call void @llvm.lifetime.end.p0(i64 36, ptr nonnull %3) #6
  resume { ptr, i32 } %.pn109
}

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN7OptionsC2Ev(ptr noundef nonnull align 4 dereferenceable(36)) unnamed_addr #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEixEm(ptr noundef nonnull align 8 dereferenceable(32), i64 noundef) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_Z8strtovalIiET_RKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #0

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #3 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 = { 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 #2 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #3 = { 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 #4 = { 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 #5 = { mustprogress norecurse uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { nounwind }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!7, !7, i64 0}
!10 = !{!11, !12, i64 2}
!11 = !{!"_ZTS7Options", !12, i64 0, !12, i64 1, !12, i64 2, !12, i64 3, !12, i64 4, !12, i64 5, !12, i64 6, !12, i64 7, !12, i64 8, !12, i64 9, !12, i64 10, !13, i64 12, !12, i64 16, !14, i64 20, !15, i64 24, !12, i64 28, !12, i64 29, !12, i64 30, !12, i64 31, !12, i64 32, !12, i64 33, !12, i64 34, !12, i64 35}
!12 = !{!"bool", !7, i64 0}
!13 = !{!"_ZTS9HexFormat", !7, i64 0}
!14 = !{!"_ZTS10RenderMode", !7, i64 0}
!15 = !{!"int", !7, i64 0}
!16 = !{!11, !12, i64 3}
!17 = !{!11, !12, i64 5}
!18 = !{!11, !12, i64 6}
!19 = !{!11, !12, i64 0}
!20 = !{!11, !12, i64 1}
!21 = !{!11, !12, i64 7}
!22 = !{!11, !12, i64 4}
!23 = !{!11, !12, i64 8}
!24 = !{!11, !12, i64 16}
!25 = !{!11, !12, i64 9}
!26 = !{!11, !12, i64 10}
!27 = !{!11, !12, i64 28}
!28 = !{!11, !12, i64 29}
!29 = !{!11, !12, i64 30}
!30 = !{!11, !12, i64 31}
!31 = !{!11, !12, i64 32}
!32 = !{!11, !12, i64 33}
!33 = !{!11, !12, i64 34}
!34 = !{!11, !12, i64 35}
!35 = distinct !{!35, !36}
!36 = !{!"llvm.loop.mustprogress"}
!37 = distinct !{!37, !36}
!38 = !{!11, !14, i64 20}
!39 = !{!11, !15, i64 24}
!40 = !{!11, !13, i64 12}
!41 = distinct !{!41, !36}
!42 = !{i8 0, i8 2}
!43 = !{}
!44 = distinct !{!44, !36, !45}
!45 = !{!"llvm.loop.peeled.count", i32 1}


; Effective O3 passes: AggressiveInstCombinePass,ConstraintEliminationPass,CorrelatedValuePropagationPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopFullUnrollPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,PostOrderFunctionAttrsPass,SCCPPass,SROAPass,SimplifyCFGPass