; LLVM IR from thepowersgang/mrustc :: tools/minicargo/main.ll (ZN14ProgramOptions5parseEiPPKc)

; 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] }
%"class.std::allocator.12" = type { i8 }
%struct.ProgramOptions = type { ptr, ptr, ptr, ptr, ptr, i8, ptr, %"class.std::vector", i32, i8, i8, i8, i8, i8, %"class.std::vector.0" }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<const char *, std::allocator<const char *>>::_Vector_impl" }
%"struct.std::_Vector_base<const char *, std::allocator<const char *>>::_Vector_impl" = type { %"struct.std::_Vector_base<const char *, std::allocator<const char *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<const char *, std::allocator<const char *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.0" = type { %"struct.std::_Vector_base.1" }
%"struct.std::_Vector_base.1" = 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 }

@_ZSt4cerr = external global %"class.std::basic_ostream", align 8
@.str.17 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [14 x i8], align 1

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

; Function Attrs: mustprogress uwtable
define dso_local noundef i32 @_ZN14ProgramOptions5parseEiPPKc(ptr noundef nonnull align 8 dereferenceable(120) %0, i32 noundef %1, ptr noundef %2) #1 align 2 personality ptr @__gxx_personality_v0 {
  %4 = alloca i32, align 4
  %5 = alloca ptr, align 8
  %6 = alloca i32, align 4
  %7 = alloca ptr, align 8
  %8 = alloca i8, align 1
  %9 = alloca i32, align 4
  %10 = alloca i32, align 4
  %11 = alloca ptr, align 8
  %12 = alloca ptr, align 8
  %13 = alloca ptr, align 8
  %14 = alloca %"class.std::__cxx11::basic_string", align 8
  %15 = alloca %"class.std::allocator.12", align 1
  %16 = alloca ptr, align 8
  %17 = alloca i32, align 4
  %18 = alloca %"class.std::__cxx11::basic_string", align 8
  %19 = alloca %"class.std::allocator.12", align 1
  store ptr %0, ptr %5, align 8, !tbaa !5
  store i32 %1, ptr %6, align 4, !tbaa !9
  store ptr %2, ptr %7, align 8, !tbaa !5
  %20 = load ptr, ptr %5, align 8
  call void @llvm.lifetime.start.p0(i64 1, ptr %8) #7
  store i8 0, ptr %8, align 1, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %9) #7
  store i32 1, ptr %9, align 4, !tbaa !9
  br label %21

21:                                               ; preds = %405, %3
  %22 = load i32, ptr %9, align 4, !tbaa !9
  %23 = load i32, ptr %6, align 4, !tbaa !9
  %24 = icmp slt i32 %22, %23
  br i1 %24, label %26, label %25

25:                                               ; preds = %21
  store i32 2, ptr %10, align 4
  br label %408

26:                                               ; preds = %21
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #7
  %27 = load ptr, ptr %7, align 8, !tbaa !5
  %28 = load i32, ptr %9, align 4, !tbaa !9
  %29 = sext i32 %28 to i64
  %30 = getelementptr inbounds ptr, ptr %27, i64 %29
  %31 = load ptr, ptr %30, align 8, !tbaa !5
  store ptr %31, ptr %11, align 8, !tbaa !5
  %32 = load ptr, ptr %11, align 8, !tbaa !5
  %33 = getelementptr inbounds i8, ptr %32, i64 0
  %34 = load i8, ptr %33, align 1, !tbaa !13
  %35 = sext i8 %34 to i32
  %36 = icmp ne i32 %35, 45
  br i1 %36, label %40, label %37

37:                                               ; preds = %26
  %38 = load i8, ptr %8, align 1, !tbaa !11, !range !14, !noundef !15
  %39 = trunc i8 %38 to i1
  br i1 %39, label %40, label %49

40:                                               ; preds = %37, %26
  %41 = getelementptr inbounds %struct.ProgramOptions, ptr %20, i32 0, i32 0
  %42 = load ptr, ptr %41, align 8, !tbaa !16
  %43 = icmp ne ptr %42, null
  br i1 %43, label %47, label %44

44:                                               ; preds = %40
  %45 = load ptr, ptr %11, align 8, !tbaa !5
  %46 = getelementptr inbounds %struct.ProgramOptions, ptr %20, i32 0, i32 0
  store ptr %45, ptr %46, align 8, !tbaa !16
  br label %48

47:                                               ; preds = %40
  br label %48

48:                                               ; preds = %47, %44
  br label %401

49:                                               ; preds = %37
  %50 = load ptr, ptr %11, align 8, !tbaa !5
  %51 = getelementptr inbounds i8, ptr %50, i64 1
  %52 = load i8, ptr %51, align 1, !tbaa !13
  %53 = sext i8 %52 to i32
  %54 = icmp ne i32 %53, 45
  br i1 %54, label %55, label %176

55:                                               ; preds = %49
  %56 = load ptr, ptr %11, align 8, !tbaa !5
  %57 = getelementptr inbounds i8, ptr %56, i64 1
  %58 = load i8, ptr %57, align 1, !tbaa !13
  %59 = sext i8 %58 to i32
  switch i32 %59, label %168 [
    i32 76, label %60
    i32 111, label %78
    i32 106, label %97
    i32 90, label %124
    i32 110, label %163
    i32 103, label %165
    i32 104, label %167
  ]

60:                                               ; preds = %55
  %61 = load i32, ptr %9, align 4, !tbaa !9
  %62 = add nsw i32 %61, 1
  %63 = load i32, ptr %6, align 4, !tbaa !9
  %64 = icmp eq i32 %62, %63
  br i1 %64, label %65, label %71

65:                                               ; preds = %60
  %66 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cerr, ptr noundef @.str.17)
  %67 = load ptr, ptr %11, align 8, !tbaa !5
  %68 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %66, ptr noundef %67)
  %69 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %68, ptr noundef @.str.18)
  %70 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %69, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  store i32 1, ptr %4, align 4
  store i32 1, ptr %10, align 4
  br label %402

71:                                               ; preds = %60
  %72 = getelementptr inbounds %struct.ProgramOptions, ptr %20, i32 0, i32 7
  %73 = load ptr, ptr %7, align 8, !tbaa !5
  %74 = load i32, ptr %9, align 4, !tbaa !9
  %75 = add nsw i32 %74, 1
  store i32 %75, ptr %9, align 4, !tbaa !9
  %76 = sext i32 %75 to i64
  %77 = getelementptr inbounds ptr, ptr %73, i64 %76
  call void @_ZNSt6vectorIPKcSaIS1_EE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %72, ptr noundef nonnull align 8 dereferenceable(8) %77)
  br label %175

78:                                               ; preds = %55
  %79 = load i32, ptr %9, align 4, !tbaa !9
  %80 = add nsw i32 %79, 1
  %81 = load i32, ptr %6, align 4, !tbaa !9
  %82 = icmp eq i32 %80, %81
  br i1 %82, label %83, label %89

83:                                               ; preds = %78
  %84 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cerr, ptr noundef @.str.17)
  %85 = load ptr, ptr %11, align 8, !tbaa !5
  %86 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %84, ptr noundef %85)
  %87 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %86, ptr noundef @.str.18)
  %88 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %87, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  store i32 1, ptr %4, align 4
  store i32 1, ptr %10, align 4
  br label %402

89:                                               ; preds = %78
  %90 = load ptr, ptr %7, align 8, !tbaa !5
  %91 = load i32, ptr %9, align 4, !tbaa !9
  %92 = add nsw i32 %91, 1
  store i32 %92, ptr %9, align 4, !tbaa !9
  %93 = sext i32 %92 to i64
  %94 = getelementptr inbounds ptr, ptr %90, i64 %93
  %95 = load ptr, ptr %94, align 8, !tbaa !5
  %96 = getelementptr inbounds %struct.ProgramOptions, ptr %20, i32 0, i32 4
  store ptr %95, ptr %96, align 8, !tbaa !26
  br label %175

97:                                               ; preds = %55
  %98 = load i32, ptr %9, align 4, !tbaa !9
  %99 = add nsw i32 %98, 1
  %100 = load i32, ptr %6, align 4, !tbaa !9
  %101 = icmp eq i32 %99, %100
  br i1 %101, label %113, label %102

102:                                              ; preds = %97
  %103 = load ptr, ptr %7, align 8, !tbaa !5
  %104 = load i32, ptr %9, align 4, !tbaa !9
  %105 = add nsw i32 %104, 1
  %106 = sext i32 %105 to i64
  %107 = getelementptr inbounds ptr, ptr %103, i64 %106
  %108 = load ptr, ptr %107, align 8, !tbaa !5
  %109 = getelementptr inbounds i8, ptr %108, i64 0
  %110 = load i8, ptr %109, align 1, !tbaa !13
  %111 = sext i8 %110 to i32
  %112 = icmp eq i32 %111, 45
  br i1 %112, label %113, label %114

113:                                              ; preds = %102, %97
  br label %175

114:                                              ; preds = %102
  %115 = load ptr, ptr %7, align 8, !tbaa !5
  %116 = load i32, ptr %9, align 4, !tbaa !9
  %117 = add nsw i32 %116, 1
  store i32 %117, ptr %9, align 4, !tbaa !9
  %118 = sext i32 %117 to i64
  %119 = getelementptr inbounds ptr, ptr %115, i64 %118
  %120 = load ptr, ptr %119, align 8, !tbaa !5
  %121 = call i64 @strtol(ptr noundef %120, ptr noundef null, i32 noundef 10) #7
  %122 = trunc i64 %121 to i32
  %123 = getelementptr inbounds %struct.ProgramOptions, ptr %20, i32 0, i32 8
  store i32 %122, ptr %123, align 8, !tbaa !27
  br label %175

124:                                              ; preds = %55
  %125 = load ptr, ptr %11, align 8, !tbaa !5
  %126 = getelementptr inbounds i8, ptr %125, i64 2
  %127 = load i8, ptr %126, align 1, !tbaa !13
  %128 = sext i8 %127 to i32
  %129 = icmp ne i32 %128, 0
  br i1 %129, label %130, label %133

130:                                              ; preds = %124
  %131 = load ptr, ptr %11, align 8, !tbaa !5
  %132 = getelementptr inbounds i8, ptr %131, i64 2
  store ptr %132, ptr %11, align 8, !tbaa !5
  br label %151

133:                                              ; preds = %124
  %134 = load i32, ptr %9, align 4, !tbaa !9
  %135 = add nsw i32 %134, 1
  %136 = load i32, ptr %6, align 4, !tbaa !9
  %137 = icmp eq i32 %135, %136
  br i1 %137, label %138, label %144

138:                                              ; preds = %133
  %139 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cerr, ptr noundef @.str.17)
  %140 = load ptr, ptr %11, align 8, !tbaa !5
  %141 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %139, ptr noundef %140)
  %142 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %141, ptr noundef @.str.18)
  %143 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %142, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  store i32 1, ptr %4, align 4
  store i32 1, ptr %10, align 4
  br label %402

144:                                              ; preds = %133
  %145 = load ptr, ptr %7, align 8, !tbaa !5
  %146 = load i32, ptr %9, align 4, !tbaa !9
  %147 = add nsw i32 %146, 1
  store i32 %147, ptr %9, align 4, !tbaa !9
  %148 = sext i32 %147 to i64
  %149 = getelementptr inbounds ptr, ptr %145, i64 %148
  %150 = load ptr, ptr %149, align 8, !tbaa !5
  store ptr %150, ptr %11, align 8, !tbaa !5
  br label %151

151:                                              ; preds = %144, %130
  %152 = load ptr, ptr %11, align 8, !tbaa !5
  %153 = call i32 @strcmp(ptr noundef %152, ptr noundef @.str.19) #8
  %154 = icmp eq i32 %153, 0
  br i1 %154, label %155, label %157

155:                                              ; preds = %151
  %156 = getelementptr inbounds %struct.ProgramOptions, ptr %20, i32 0, i32 5
  store i8 1, ptr %156, align 8, !tbaa !28
  br label %162

157:                                              ; preds = %151
  %158 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cerr, ptr noundef @.str.20)
  %159 = load ptr, ptr %11, align 8, !tbaa !5
  %160 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %158, ptr noundef %159)
  %161 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %160, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  store i32 1, ptr %4, align 4
  store i32 1, ptr %10, align 4
  br label %402

162:                                              ; preds = %155
  br label %175

163:                                              ; preds = %55
  %164 = getelementptr inbounds %struct.ProgramOptions, ptr %20, i32 0, i32 9
  store i8 1, ptr %164, align 4, !tbaa !29
  br label %175

165:                                              ; preds = %55
  %166 = getelementptr inbounds %struct.ProgramOptions, ptr %20, i32 0, i32 12
  store i8 1, ptr %166, align 1, !tbaa !30
  br label %175

167:                                              ; preds = %55
  call void @_ZNK14ProgramOptions4helpEv(ptr noundef nonnull align 8 dereferenceable(120) %20)
  call void @exit(i32 noundef 1) #9
  unreachable

168:                                              ; preds = %55
  %169 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cerr, ptr noundef @.str.21)
  %170 = load ptr, ptr %11, align 8, !tbaa !5
  %171 = getelementptr inbounds i8, ptr %170, i64 1
  %172 = load i8, ptr %171, align 1, !tbaa !13
  %173 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c(ptr noundef nonnull align 8 dereferenceable(8) %169, i8 noundef signext %172)
  %174 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %173, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  store i32 1, ptr %4, align 4
  store i32 1, ptr %10, align 4
  br label %402

175:                                              ; preds = %165, %163, %162, %114, %113, %89, %71
  br label %400

176:                                              ; preds = %49
  %177 = load ptr, ptr %11, align 8, !tbaa !5
  %178 = getelementptr inbounds i8, ptr %177, i64 2
  %179 = load i8, ptr %178, align 1, !tbaa !13
  %180 = sext i8 %179 to i32
  %181 = icmp eq i32 %180, 0
  br i1 %181, label %182, label %183

182:                                              ; preds = %176
  store i8 1, ptr %8, align 1, !tbaa !11
  br label %399

183:                                              ; preds = %176
  %184 = load ptr, ptr %11, align 8, !tbaa !5
  %185 = call i32 @strcmp(ptr noundef %184, ptr noundef @.str.22) #8
  %186 = icmp eq i32 %185, 0
  br i1 %186, label %187, label %188

187:                                              ; preds = %183
  call void @_ZNK14ProgramOptions4helpEv(ptr noundef nonnull align 8 dereferenceable(120) %20)
  call void @exit(i32 noundef 1) #9
  unreachable

188:                                              ; preds = %183
  %189 = load ptr, ptr %11, align 8, !tbaa !5
  %190 = call i32 @strcmp(ptr noundef %189, ptr noundef @.str.23) #8
  %191 = icmp eq i32 %190, 0
  br i1 %191, label %192, label %211

192:                                              ; preds = %188
  %193 = load i32, ptr %9, align 4, !tbaa !9
  %194 = add nsw i32 %193, 1
  %195 = load i32, ptr %6, align 4, !tbaa !9
  %196 = icmp eq i32 %194, %195
  br i1 %196, label %197, label %203

197:                                              ; preds = %192
  %198 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cerr, ptr noundef @.str.17)
  %199 = load ptr, ptr %11, align 8, !tbaa !5
  %200 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %198, ptr noundef %199)
  %201 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %200, ptr noundef @.str.18)
  %202 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %201, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  store i32 1, ptr %4, align 4
  store i32 1, ptr %10, align 4
  br label %402

203:                                              ; preds = %192
  %204 = load ptr, ptr %7, align 8, !tbaa !5
  %205 = load i32, ptr %9, align 4, !tbaa !9
  %206 = add nsw i32 %205, 1
  store i32 %206, ptr %9, align 4, !tbaa !9
  %207 = sext i32 %206 to i64
  %208 = getelementptr inbounds ptr, ptr %204, i64 %207
  %209 = load ptr, ptr %208, align 8, !tbaa !5
  %210 = getelementptr inbounds %struct.ProgramOptions, ptr %20, i32 0, i32 1
  store ptr %209, ptr %210, align 8, !tbaa !31
  br label %397

211:                                              ; preds = %188
  %212 = load ptr, ptr %11, align 8, !tbaa !5
  %213 = call i32 @strcmp(ptr noundef %212, ptr noundef @.str.24) #8
  %214 = icmp eq i32 %213, 0
  br i1 %214, label %215, label %234

215:                                              ; preds = %211
  %216 = load i32, ptr %9, align 4, !tbaa !9
  %217 = add nsw i32 %216, 1
  %218 = load i32, ptr %6, align 4, !tbaa !9
  %219 = icmp eq i32 %217, %218
  br i1 %219, label %220, label %226

220:                                              ; preds = %215
  %221 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cerr, ptr noundef @.str.17)
  %222 = load ptr, ptr %11, align 8, !tbaa !5
  %223 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %221, ptr noundef %222)
  %224 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %223, ptr noundef @.str.18)
  %225 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %224, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  store i32 1, ptr %4, align 4
  store i32 1, ptr %10, align 4
  br label %402

226:                                              ; preds = %215
  %227 = load ptr, ptr %7, align 8, !tbaa !5
  %228 = load i32, ptr %9, align 4, !tbaa !9
  %229 = add nsw i32 %228, 1
  store i32 %229, ptr %9, align 4, !tbaa !9
  %230 = sext i32 %229 to i64
  %231 = getelementptr inbounds ptr, ptr %227, i64 %230
  %232 = load ptr, ptr %231, align 8, !tbaa !5
  %233 = getelementptr inbounds %struct.ProgramOptions, ptr %20, i32 0, i32 2
  store ptr %232, ptr %233, align 8, !tbaa !32
  br label %396

234:                                              ; preds = %211
  %235 = load ptr, ptr %11, align 8, !tbaa !5
  %236 = call i32 @strcmp(ptr noundef %235, ptr noundef @.str.25) #8
  %237 = icmp eq i32 %236, 0
  br i1 %237, label %238, label %257

238:                                              ; preds = %234
  %239 = load i32, ptr %9, align 4, !tbaa !9
  %240 = add nsw i32 %239, 1
  %241 = load i32, ptr %6, align 4, !tbaa !9
  %242 = icmp eq i32 %240, %241
  br i1 %242, label %243, label %249

243:                                              ; preds = %238
  %244 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cerr, ptr noundef @.str.17)
  %245 = load ptr, ptr %11, align 8, !tbaa !5
  %246 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %244, ptr noundef %245)
  %247 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %246, ptr noundef @.str.18)
  %248 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %247, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  store i32 1, ptr %4, align 4
  store i32 1, ptr %10, align 4
  br label %402

249:                                              ; preds = %238
  %250 = load ptr, ptr %7, align 8, !tbaa !5
  %251 = load i32, ptr %9, align 4, !tbaa !9
  %252 = add nsw i32 %251, 1
  store i32 %252, ptr %9, align 4, !tbaa !9
  %253 = sext i32 %252 to i64
  %254 = getelementptr inbounds ptr, ptr %250, i64 %253
  %255 = load ptr, ptr %254, align 8, !tbaa !5
  %256 = getelementptr inbounds %struct.ProgramOptions, ptr %20, i32 0, i32 3
  store ptr %255, ptr %256, align 8, !tbaa !33
  br label %395

257:                                              ; preds = %234
  %258 = load ptr, ptr %11, align 8, !tbaa !5
  %259 = call i32 @strcmp(ptr noundef %258, ptr noundef @.str.26) #8
  %260 = icmp eq i32 %259, 0
  br i1 %260, label %261, label %280

261:                                              ; preds = %257
  %262 = load i32, ptr %9, align 4, !tbaa !9
  %263 = add nsw i32 %262, 1
  %264 = load i32, ptr %6, align 4, !tbaa !9
  %265 = icmp eq i32 %263, %264
  br i1 %265, label %266, label %272

266:                                              ; preds = %261
  %267 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cerr, ptr noundef @.str.17)
  %268 = load ptr, ptr %11, align 8, !tbaa !5
  %269 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %267, ptr noundef %268)
  %270 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %269, ptr noundef @.str.18)
  %271 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %270, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  store i32 1, ptr %4, align 4
  store i32 1, ptr %10, align 4
  br label %402

272:                                              ; preds = %261
  %273 = load ptr, ptr %7, align 8, !tbaa !5
  %274 = load i32, ptr %9, align 4, !tbaa !9
  %275 = add nsw i32 %274, 1
  store i32 %275, ptr %9, align 4, !tbaa !9
  %276 = sext i32 %275 to i64
  %277 = getelementptr inbounds ptr, ptr %273, i64 %276
  %278 = load ptr, ptr %277, align 8, !tbaa !5
  %279 = getelementptr inbounds %struct.ProgramOptions, ptr %20, i32 0, i32 4
  store ptr %278, ptr %279, align 8, !tbaa !26
  br label %394

280:                                              ; preds = %257
  %281 = load ptr, ptr %11, align 8, !tbaa !5
  %282 = call i32 @strcmp(ptr noundef %281, ptr noundef @.str.27) #8
  %283 = icmp eq i32 %282, 0
  br i1 %283, label %284, label %303

284:                                              ; preds = %280
  %285 = load i32, ptr %9, align 4, !tbaa !9
  %286 = add nsw i32 %285, 1
  %287 = load i32, ptr %6, align 4, !tbaa !9
  %288 = icmp eq i32 %286, %287
  br i1 %288, label %289, label %295

289:                                              ; preds = %284
  %290 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cerr, ptr noundef @.str.17)
  %291 = load ptr, ptr %11, align 8, !tbaa !5
  %292 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %290, ptr noundef %291)
  %293 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %292, ptr noundef @.str.18)
  %294 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %293, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  store i32 1, ptr %4, align 4
  store i32 1, ptr %10, align 4
  br label %402

295:                                              ; preds = %284
  %296 = load ptr, ptr %7, align 8, !tbaa !5
  %297 = load i32, ptr %9, align 4, !tbaa !9
  %298 = add nsw i32 %297, 1
  store i32 %298, ptr %9, align 4, !tbaa !9
  %299 = sext i32 %298 to i64
  %300 = getelementptr inbounds ptr, ptr %296, i64 %299
  %301 = load ptr, ptr %300, align 8, !tbaa !5
  %302 = getelementptr inbounds %struct.ProgramOptions, ptr %20, i32 0, i32 6
  store ptr %301, ptr %302, align 8, !tbaa !34
  br label %393

303:                                              ; preds = %280
  %304 = load ptr, ptr %11, align 8, !tbaa !5
  %305 = call i32 @strcmp(ptr noundef %304, ptr noundef @.str.28) #8
  %306 = icmp eq i32 %305, 0
  br i1 %306, label %307, label %366

307:                                              ; preds = %303
  %308 = load i32, ptr %9, align 4, !tbaa !9
  %309 = add nsw i32 %308, 1
  %310 = load i32, ptr %6, align 4, !tbaa !9
  %311 = icmp eq i32 %309, %310
  br i1 %311, label %312, label %318

312:                                              ; preds = %307
  %313 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cerr, ptr noundef @.str.17)
  %314 = load ptr, ptr %11, align 8, !tbaa !5
  %315 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %313, ptr noundef %314)
  %316 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %315, ptr noundef @.str.18)
  %317 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %316, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  store i32 1, ptr %4, align 4
  store i32 1, ptr %10, align 4
  br label %402

318:                                              ; preds = %307
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #7
  %319 = load ptr, ptr %7, align 8, !tbaa !5
  %320 = load i32, ptr %9, align 4, !tbaa !9
  %321 = add nsw i32 %320, 1
  store i32 %321, ptr %9, align 4, !tbaa !9
  %322 = sext i32 %321 to i64
  %323 = getelementptr inbounds ptr, ptr %319, i64 %322
  %324 = load ptr, ptr %323, align 8, !tbaa !5
  store ptr %324, ptr %12, align 8, !tbaa !5
  br label %325

325:                                              ; preds = %341, %318
  call void @llvm.lifetime.start.p0(i64 8, ptr %13) #7
  %326 = load ptr, ptr %12, align 8, !tbaa !5
  %327 = call noundef ptr @strchr(ptr noundef %326, i32 noundef 44) #8
  store ptr %327, ptr %13, align 8, !tbaa !5
  %328 = load ptr, ptr %13, align 8, !tbaa !5
  %329 = icmp ne ptr %328, null
  br i1 %329, label %331, label %330

330:                                              ; preds = %325
  store i32 7, ptr %10, align 4
  br label %339

331:                                              ; preds = %325
  %332 = getelementptr inbounds %struct.ProgramOptions, ptr %20, i32 0, i32 14
  call void @llvm.lifetime.start.p0(i64 32, ptr %14) #7
  %333 = load ptr, ptr %12, align 8, !tbaa !5
  %334 = load ptr, ptr %13, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %15) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %15) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IPKcvEET_S8_RKS3_(ptr noundef nonnull align 8 dereferenceable(32) %14, ptr noundef %333, ptr noundef %334, ptr noundef nonnull align 1 dereferenceable(1) %15)
          to label %335 unwind label %342

335:                                              ; preds = %331
  invoke void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE9push_backEOS5_(ptr noundef nonnull align 8 dereferenceable(24) %332, ptr noundef nonnull align 8 dereferenceable(32) %14)
          to label %336 unwind label %346

336:                                              ; preds = %335
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %14) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %15) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %15) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %14) #7
  %337 = load ptr, ptr %13, align 8, !tbaa !5
  %338 = getelementptr inbounds i8, ptr %337, i64 1
  store ptr %338, ptr %12, align 8, !tbaa !5
  store i32 0, ptr %10, align 4
  br label %339

339:                                              ; preds = %336, %330
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #7
  %340 = load i32, ptr %10, align 4
  switch i32 %340, label %423 [
    i32 0, label %341
    i32 7, label %351
  ]

341:                                              ; preds = %339
  br label %325, !llvm.loop !35

342:                                              ; preds = %331
  %343 = landingpad { ptr, i32 }
          cleanup
  %344 = extractvalue { ptr, i32 } %343, 0
  store ptr %344, ptr %16, align 8
  %345 = extractvalue { ptr, i32 } %343, 1
  store i32 %345, ptr %17, align 4
  br label %350

346:                                              ; preds = %335
  %347 = landingpad { ptr, i32 }
          cleanup
  %348 = extractvalue { ptr, i32 } %347, 0
  store ptr %348, ptr %16, align 8
  %349 = extractvalue { ptr, i32 } %347, 1
  store i32 %349, ptr %17, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %14) #7
  br label %350

350:                                              ; preds = %346, %342
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %15) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %15) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %14) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #7
  br label %365

351:                                              ; preds = %339
  %352 = getelementptr inbounds %struct.ProgramOptions, ptr %20, i32 0, i32 14
  call void @llvm.lifetime.start.p0(i64 32, ptr %18) #7
  %353 = load ptr, ptr %12, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %19) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %19) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %18, ptr noundef %353, ptr noundef nonnull align 1 dereferenceable(1) %19)
          to label %354 unwind label %356

354:                                              ; preds = %351
  invoke void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE9push_backEOS5_(ptr noundef nonnull align 8 dereferenceable(24) %352, ptr noundef nonnull align 8 dereferenceable(32) %18)
          to label %355 unwind label %360

355:                                              ; preds = %354
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %19) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %19) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %18) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #7
  br label %392

356:                                              ; preds = %351
  %357 = landingpad { ptr, i32 }
          cleanup
  %358 = extractvalue { ptr, i32 } %357, 0
  store ptr %358, ptr %16, align 8
  %359 = extractvalue { ptr, i32 } %357, 1
  store i32 %359, ptr %17, align 4
  br label %364

360:                                              ; preds = %354
  %361 = landingpad { ptr, i32 }
          cleanup
  %362 = extractvalue { ptr, i32 } %361, 0
  store ptr %362, ptr %16, align 8
  %363 = extractvalue { ptr, i32 } %361, 1
  store i32 %363, ptr %17, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #7
  br label %364

364:                                              ; preds = %360, %356
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %19) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %19) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %18) #7
  br label %365

365:                                              ; preds = %364, %350
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %8) #7
  br label %418

366:                                              ; preds = %303
  %367 = load ptr, ptr %11, align 8, !tbaa !5
  %368 = call i32 @strcmp(ptr noundef %367, ptr noundef @.str.29) #8
  %369 = icmp eq i32 %368, 0
  br i1 %369, label %370, label %372

370:                                              ; preds = %366
  %371 = getelementptr inbounds %struct.ProgramOptions, ptr %20, i32 0, i32 13
  store i8 1, ptr %371, align 8, !tbaa !37
  br label %391

372:                                              ; preds = %366
  %373 = load ptr, ptr %11, align 8, !tbaa !5
  %374 = call i32 @strcmp(ptr noundef %373, ptr noundef @.str.30) #8
  %375 = icmp eq i32 %374, 0
  br i1 %375, label %376, label %378

376:                                              ; preds = %372
  %377 = getelementptr inbounds %struct.ProgramOptions, ptr %20, i32 0, i32 10
  store i8 1, ptr %377, align 1, !tbaa !38
  br label %390

378:                                              ; preds = %372
  %379 = load ptr, ptr %11, align 8, !tbaa !5
  %380 = call i32 @strcmp(ptr noundef %379, ptr noundef @.str.31) #8
  %381 = icmp eq i32 %380, 0
  br i1 %381, label %382, label %384

382:                                              ; preds = %378
  %383 = getelementptr inbounds %struct.ProgramOptions, ptr %20, i32 0, i32 11
  store i8 1, ptr %383, align 2, !tbaa !39
  br label %389

384:                                              ; preds = %378
  %385 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cerr, ptr noundef @.str.32)
  %386 = load ptr, ptr %11, align 8, !tbaa !5
  %387 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %385, ptr noundef %386)
  %388 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %387, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  store i32 1, ptr %4, align 4
  store i32 1, ptr %10, align 4
  br label %402

389:                                              ; preds = %382
  br label %390

390:                                              ; preds = %389, %376
  br label %391

391:                                              ; preds = %390, %370
  br label %392

392:                                              ; preds = %391, %355
  br label %393

393:                                              ; preds = %392, %295
  br label %394

394:                                              ; preds = %393, %272
  br label %395

395:                                              ; preds = %394, %249
  br label %396

396:                                              ; preds = %395, %226
  br label %397

397:                                              ; preds = %396, %203
  br label %398

398:                                              ; preds = %397
  br label %399

399:                                              ; preds = %398, %182
  br label %400

400:                                              ; preds = %399, %175
  br label %401

401:                                              ; preds = %400, %48
  store i32 0, ptr %10, align 4
  br label %402

402:                                              ; preds = %401, %384, %312, %289, %266, %243, %220, %197, %168, %157, %138, %83, %65
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #7
  %403 = load i32, ptr %10, align 4
  switch i32 %403, label %408 [
    i32 0, label %404
  ]

404:                                              ; preds = %402
  br label %405

405:                                              ; preds = %404
  %406 = load i32, ptr %9, align 4, !tbaa !9
  %407 = add nsw i32 %406, 1
  store i32 %407, ptr %9, align 4, !tbaa !9
  br label %21, !llvm.loop !40

408:                                              ; preds = %402, %25
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #7
  %409 = load i32, ptr %10, align 4
  switch i32 %409, label %416 [
    i32 2, label %410
  ]

410:                                              ; preds = %408
  %411 = getelementptr inbounds %struct.ProgramOptions, ptr %20, i32 0, i32 0
  %412 = load ptr, ptr %411, align 8, !tbaa !16
  %413 = icmp ne ptr %412, null
  br i1 %413, label %415, label %414

414:                                              ; preds = %410
  call void @_ZNK14ProgramOptions5usageEv(ptr noundef nonnull align 8 dereferenceable(120) %20)
  call void @exit(i32 noundef 1) #9
  unreachable

415:                                              ; preds = %410
  store i32 0, ptr %4, align 4
  store i32 1, ptr %10, align 4
  br label %416

416:                                              ; preds = %415, %408
  call void @llvm.lifetime.end.p0(i64 1, ptr %8) #7
  %417 = load i32, ptr %4, align 4
  ret i32 %417

418:                                              ; preds = %365
  %419 = load ptr, ptr %16, align 8
  %420 = load i32, ptr %17, align 4
  %421 = insertvalue { ptr, i32 } poison, ptr %419, 0
  %422 = insertvalue { ptr, i32 } %421, i32 %420, 1
  resume { ptr, i32 } %422

423:                                              ; preds = %339
  unreachable
}

declare i32 @__gxx_personality_v0(...)

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) #1 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)) #3

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

; Function Attrs: nounwind
declare i64 @strtol(ptr noundef, ptr noundef, i32 noundef) #4

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK14ProgramOptions4helpEv(ptr noundef nonnull align 8 dereferenceable(120)) #1 align 2

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK14ProgramOptions5usageEv(ptr noundef nonnull align 8 dereferenceable(120)) #1 align 2

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { 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 nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { 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 #4 = { nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { nounwind willreturn memory(read) "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { noreturn nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #7 = { nounwind }
attributes #8 = { nounwind willreturn memory(read) }
attributes #9 = { noreturn 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 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"bool", !7, i64 0}
!13 = !{!7, !7, i64 0}
!14 = !{i8 0, i8 2}
!15 = !{}
!16 = !{!17, !6, i64 0}
!17 = !{!"_ZTS14ProgramOptions", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !12, i64 40, !6, i64 48, !18, i64 56, !10, i64 80, !12, i64 84, !12, i64 85, !12, i64 86, !12, i64 87, !12, i64 88, !22, i64 96}
!18 = !{!"_ZTSSt6vectorIPKcSaIS1_EE", !19, i64 0}
!19 = !{!"_ZTSSt12_Vector_baseIPKcSaIS1_EE", !20, i64 0}
!20 = !{!"_ZTSNSt12_Vector_baseIPKcSaIS1_EE12_Vector_implE", !21, i64 0}
!21 = !{!"_ZTSNSt12_Vector_baseIPKcSaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!22 = !{!"_ZTSSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE", !23, i64 0}
!23 = !{!"_ZTSSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE", !24, i64 0}
!24 = !{!"_ZTSNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12_Vector_implE", !25, i64 0}
!25 = !{!"_ZTSNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!26 = !{!17, !6, i64 32}
!27 = !{!17, !10, i64 80}
!28 = !{!17, !12, i64 40}
!29 = !{!17, !12, i64 84}
!30 = !{!17, !12, i64 87}
!31 = !{!17, !6, i64 8}
!32 = !{!17, !6, i64 16}
!33 = !{!17, !6, i64 24}
!34 = !{!17, !6, i64 48}
!35 = distinct !{!35, !36}
!36 = !{!"llvm.loop.mustprogress"}
!37 = !{!17, !12, i64 88}
!38 = !{!17, !12, i64 85}
!39 = !{!17, !12, i64 86}
!40 = distinct !{!40, !36}


; 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] }
%"class.std::allocator.12" = type { i8 }

@_ZSt4cerr = external global %"class.std::basic_ostream", align 8
@.str.17 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [14 x i8], align 1

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

; Function Attrs: mustprogress uwtable
define dso_local noundef i32 @_ZN14ProgramOptions5parseEiPPKc(ptr noundef nonnull align 8 dereferenceable(120) %0, i32 noundef %1, ptr noundef %2) local_unnamed_addr #1 align 2 personality ptr @__gxx_personality_v0 {
  %4 = alloca %"class.std::__cxx11::basic_string", align 8
  %5 = alloca %"class.std::allocator.12", align 1
  %6 = alloca %"class.std::__cxx11::basic_string", align 8
  %7 = alloca %"class.std::allocator.12", align 1
  %.not131182 = icmp sgt i32 %1, 1
  br i1 %.not131182, label %.lr.ph186, label %.critedge

.lr.ph186:                                        ; preds = %3
  %8 = getelementptr inbounds i8, ptr %0, i64 87
  %9 = getelementptr inbounds i8, ptr %0, i64 84
  %10 = getelementptr inbounds i8, ptr %0, i64 40
  %11 = getelementptr inbounds i8, ptr %0, i64 80
  %12 = getelementptr inbounds i8, ptr %0, i64 32
  %13 = getelementptr inbounds i8, ptr %0, i64 56
  %14 = getelementptr inbounds i8, ptr %0, i64 86
  %15 = getelementptr inbounds i8, ptr %0, i64 85
  %16 = getelementptr inbounds i8, ptr %0, i64 88
  %17 = getelementptr inbounds i8, ptr %0, i64 96
  %18 = getelementptr inbounds i8, ptr %0, i64 48
  %19 = getelementptr inbounds i8, ptr %0, i64 24
  %20 = getelementptr inbounds i8, ptr %0, i64 16
  %21 = getelementptr inbounds i8, ptr %0, i64 8
  br label %22

22:                                               ; preds = %.lr.ph186, %221
  %.0103184 = phi i32 [ 1, %.lr.ph186 ], [ %222, %221 ]
  %.0107183 = phi i1 [ false, %.lr.ph186 ], [ %.2109.ph, %221 ]
  %23 = sext i32 %.0103184 to i64
  %24 = getelementptr inbounds ptr, ptr %2, i64 %23
  %25 = load ptr, ptr %24, align 8, !tbaa !5
  %26 = load i8, ptr %25, align 1, !tbaa !9
  %.not = icmp ne i8 %26, 45
  %brmerge = select i1 %.not, i1 true, i1 %.0107183
  br i1 %brmerge, label %27, label %30

27:                                               ; preds = %22
  %28 = load ptr, ptr %0, align 8, !tbaa !10
  %.not130 = icmp eq ptr %28, null
  br i1 %.not130, label %29, label %221

29:                                               ; preds = %27
  store ptr %25, ptr %0, align 8, !tbaa !10
  br label %221

30:                                               ; preds = %22
  %31 = getelementptr inbounds i8, ptr %25, i64 1
  %32 = load i8, ptr %31, align 1, !tbaa !9
  switch i8 %32, label %90 [
    i8 45, label %95
    i8 76, label %33
    i8 111, label %43
    i8 106, label %54
    i8 90, label %66
    i8 110, label %87
    i8 103, label %88
    i8 104, label %89
  ]

33:                                               ; preds = %30
  %34 = add nsw i32 %.0103184, 1
  %35 = icmp eq i32 %34, %1
  br i1 %35, label %36, label %40

36:                                               ; preds = %33
  %37 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cerr, ptr noundef nonnull @.str.17)
  %38 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %37, ptr noundef nonnull %25)
  %39 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %38, ptr noundef nonnull @.str.18)
  br label %.sink.split

40:                                               ; preds = %33
  %41 = sext i32 %34 to i64
  %42 = getelementptr inbounds ptr, ptr %2, i64 %41
  call void @_ZNSt6vectorIPKcSaIS1_EE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %13, ptr noundef nonnull align 8 dereferenceable(8) %42)
  br label %221

43:                                               ; preds = %30
  %44 = add nsw i32 %.0103184, 1
  %45 = icmp eq i32 %44, %1
  br i1 %45, label %46, label %50

46:                                               ; preds = %43
  %47 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cerr, ptr noundef nonnull @.str.17)
  %48 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %47, ptr noundef nonnull %25)
  %49 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %48, ptr noundef nonnull @.str.18)
  br label %.sink.split

50:                                               ; preds = %43
  %51 = sext i32 %44 to i64
  %52 = getelementptr inbounds ptr, ptr %2, i64 %51
  %53 = load ptr, ptr %52, align 8, !tbaa !5
  store ptr %53, ptr %12, align 8, !tbaa !22
  br label %221

54:                                               ; preds = %30
  %55 = add nsw i32 %.0103184, 1
  %56 = icmp eq i32 %55, %1
  br i1 %56, label %221, label %57

57:                                               ; preds = %54
  %58 = sext i32 %55 to i64
  %59 = getelementptr inbounds ptr, ptr %2, i64 %58
  %60 = load ptr, ptr %59, align 8, !tbaa !5
  %61 = load i8, ptr %60, align 1, !tbaa !9
  %62 = icmp eq i8 %61, 45
  br i1 %62, label %221, label %63

63:                                               ; preds = %57
  %64 = call i64 @strtol(ptr nocapture noundef nonnull %60, ptr noundef null, i32 noundef 10) #7
  %65 = trunc i64 %64 to i32
  store i32 %65, ptr %11, align 8, !tbaa !23
  br label %221

66:                                               ; preds = %30
  %67 = getelementptr inbounds i8, ptr %25, i64 2
  %68 = load i8, ptr %67, align 1, !tbaa !9
  %.not129 = icmp eq i8 %68, 0
  br i1 %.not129, label %69, label %80

69:                                               ; preds = %66
  %70 = add nsw i32 %.0103184, 1
  %71 = icmp eq i32 %70, %1
  br i1 %71, label %72, label %76

72:                                               ; preds = %69
  %73 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cerr, ptr noundef nonnull @.str.17)
  %74 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %73, ptr noundef nonnull %25)
  %75 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %74, ptr noundef nonnull @.str.18)
  br label %.sink.split

76:                                               ; preds = %69
  %77 = sext i32 %70 to i64
  %78 = getelementptr inbounds ptr, ptr %2, i64 %77
  %79 = load ptr, ptr %78, align 8, !tbaa !5
  br label %80

80:                                               ; preds = %66, %76
  %.1104 = phi i32 [ %70, %76 ], [ %.0103184, %66 ]
  %.099 = phi ptr [ %79, %76 ], [ %67, %66 ]
  %81 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %.099, ptr noundef nonnull dereferenceable(1) @.str.19) #8
  %82 = icmp eq i32 %81, 0
  br i1 %82, label %83, label %84

83:                                               ; preds = %80
  store i8 1, ptr %10, align 8, !tbaa !24
  br label %221

84:                                               ; preds = %80
  %85 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cerr, ptr noundef nonnull @.str.20)
  %86 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %85, ptr noundef %.099)
  br label %.sink.split

87:                                               ; preds = %30
  store i8 1, ptr %9, align 4, !tbaa !25
  br label %221

88:                                               ; preds = %30
  store i8 1, ptr %8, align 1, !tbaa !26
  br label %221

89:                                               ; preds = %30
  call void @_ZNK14ProgramOptions4helpEv(ptr noundef nonnull align 8 dereferenceable(120) %0)
  call void @exit(i32 noundef 1) #9
  unreachable

90:                                               ; preds = %30
  %91 = getelementptr inbounds i8, ptr %25, i64 1
  %92 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cerr, ptr noundef nonnull @.str.21)
  %93 = load i8, ptr %91, align 1, !tbaa !9
  %94 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c(ptr noundef nonnull align 8 dereferenceable(8) %92, i8 noundef signext %93)
  br label %.sink.split

95:                                               ; preds = %30
  %96 = getelementptr inbounds i8, ptr %25, i64 2
  %97 = load i8, ptr %96, align 1, !tbaa !9
  %98 = icmp eq i8 %97, 0
  br i1 %98, label %221, label %99

99:                                               ; preds = %95
  %100 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %25, ptr noundef nonnull dereferenceable(1) @.str.22) #8
  %101 = icmp eq i32 %100, 0
  br i1 %101, label %102, label %103

102:                                              ; preds = %99
  call void @_ZNK14ProgramOptions4helpEv(ptr noundef nonnull align 8 dereferenceable(120) %0)
  call void @exit(i32 noundef 1) #9
  unreachable

103:                                              ; preds = %99
  %104 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %25, ptr noundef nonnull dereferenceable(1) @.str.23) #8
  %105 = icmp eq i32 %104, 0
  br i1 %105, label %106, label %117

106:                                              ; preds = %103
  %107 = add nsw i32 %.0103184, 1
  %108 = icmp eq i32 %107, %1
  br i1 %108, label %109, label %113

109:                                              ; preds = %106
  %110 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cerr, ptr noundef nonnull @.str.17)
  %111 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %110, ptr noundef nonnull %25)
  %112 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %111, ptr noundef nonnull @.str.18)
  br label %.sink.split

113:                                              ; preds = %106
  %114 = sext i32 %107 to i64
  %115 = getelementptr inbounds ptr, ptr %2, i64 %114
  %116 = load ptr, ptr %115, align 8, !tbaa !5
  store ptr %116, ptr %21, align 8, !tbaa !27
  br label %221

117:                                              ; preds = %103
  %118 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %25, ptr noundef nonnull dereferenceable(1) @.str.24) #8
  %119 = icmp eq i32 %118, 0
  br i1 %119, label %120, label %131

120:                                              ; preds = %117
  %121 = add nsw i32 %.0103184, 1
  %122 = icmp eq i32 %121, %1
  br i1 %122, label %123, label %127

123:                                              ; preds = %120
  %124 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cerr, ptr noundef nonnull @.str.17)
  %125 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %124, ptr noundef nonnull %25)
  %126 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %125, ptr noundef nonnull @.str.18)
  br label %.sink.split

127:                                              ; preds = %120
  %128 = sext i32 %121 to i64
  %129 = getelementptr inbounds ptr, ptr %2, i64 %128
  %130 = load ptr, ptr %129, align 8, !tbaa !5
  store ptr %130, ptr %20, align 8, !tbaa !28
  br label %221

131:                                              ; preds = %117
  %132 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %25, ptr noundef nonnull dereferenceable(1) @.str.25) #8
  %133 = icmp eq i32 %132, 0
  br i1 %133, label %134, label %145

134:                                              ; preds = %131
  %135 = add nsw i32 %.0103184, 1
  %136 = icmp eq i32 %135, %1
  br i1 %136, label %137, label %141

137:                                              ; preds = %134
  %138 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cerr, ptr noundef nonnull @.str.17)
  %139 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %138, ptr noundef nonnull %25)
  %140 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %139, ptr noundef nonnull @.str.18)
  br label %.sink.split

141:                                              ; preds = %134
  %142 = sext i32 %135 to i64
  %143 = getelementptr inbounds ptr, ptr %2, i64 %142
  %144 = load ptr, ptr %143, align 8, !tbaa !5
  store ptr %144, ptr %19, align 8, !tbaa !29
  br label %221

145:                                              ; preds = %131
  %146 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %25, ptr noundef nonnull dereferenceable(1) @.str.26) #8
  %147 = icmp eq i32 %146, 0
  br i1 %147, label %148, label %159

148:                                              ; preds = %145
  %149 = add nsw i32 %.0103184, 1
  %150 = icmp eq i32 %149, %1
  br i1 %150, label %151, label %155

151:                                              ; preds = %148
  %152 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cerr, ptr noundef nonnull @.str.17)
  %153 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %152, ptr noundef nonnull %25)
  %154 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %153, ptr noundef nonnull @.str.18)
  br label %.sink.split

155:                                              ; preds = %148
  %156 = sext i32 %149 to i64
  %157 = getelementptr inbounds ptr, ptr %2, i64 %156
  %158 = load ptr, ptr %157, align 8, !tbaa !5
  store ptr %158, ptr %12, align 8, !tbaa !22
  br label %221

159:                                              ; preds = %145
  %160 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %25, ptr noundef nonnull dereferenceable(1) @.str.27) #8
  %161 = icmp eq i32 %160, 0
  br i1 %161, label %162, label %173

162:                                              ; preds = %159
  %163 = add nsw i32 %.0103184, 1
  %164 = icmp eq i32 %163, %1
  br i1 %164, label %165, label %169

165:                                              ; preds = %162
  %166 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cerr, ptr noundef nonnull @.str.17)
  %167 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %166, ptr noundef nonnull %25)
  %168 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %167, ptr noundef nonnull @.str.18)
  br label %.sink.split

169:                                              ; preds = %162
  %170 = sext i32 %163 to i64
  %171 = getelementptr inbounds ptr, ptr %2, i64 %170
  %172 = load ptr, ptr %171, align 8, !tbaa !5
  store ptr %172, ptr %18, align 8, !tbaa !30
  br label %221

173:                                              ; preds = %159
  %174 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %25, ptr noundef nonnull dereferenceable(1) @.str.28) #8
  %175 = icmp eq i32 %174, 0
  br i1 %175, label %176, label %206

176:                                              ; preds = %173
  %177 = add nsw i32 %.0103184, 1
  %178 = icmp eq i32 %177, %1
  br i1 %178, label %179, label %183

179:                                              ; preds = %176
  %180 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cerr, ptr noundef nonnull @.str.17)
  %181 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %180, ptr noundef nonnull %25)
  %182 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %181, ptr noundef nonnull @.str.18)
  br label %.sink.split

183:                                              ; preds = %176
  %184 = sext i32 %177 to i64
  %185 = getelementptr inbounds ptr, ptr %2, i64 %184
  %186 = load ptr, ptr %185, align 8, !tbaa !5
  %187 = call noundef ptr @strchr(ptr noundef nonnull dereferenceable(1) %186, i32 noundef 44) #8
  %.not124180 = icmp eq ptr %187, null
  br i1 %.not124180, label %._crit_edge, label %.lr.ph

.lr.ph:                                           ; preds = %183, %190
  %188 = phi ptr [ %192, %190 ], [ %187, %183 ]
  %.097181 = phi ptr [ %191, %190 ], [ %186, %183 ]
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %4) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %5) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %5) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IPKcvEET_S8_RKS3_(ptr noundef nonnull align 8 dereferenceable(32) %4, ptr noundef %.097181, ptr noundef nonnull %188, ptr noundef nonnull align 1 dereferenceable(1) %5)
          to label %189 unwind label %193

189:                                              ; preds = %.lr.ph
  invoke void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE9push_backEOS5_(ptr noundef nonnull align 8 dereferenceable(24) %17, ptr noundef nonnull align 8 dereferenceable(32) %4)
          to label %190 unwind label %195

190:                                              ; preds = %189
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %4) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %5) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %5) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %4) #7
  %191 = getelementptr inbounds i8, ptr %188, i64 1
  %192 = call noundef ptr @strchr(ptr noundef nonnull dereferenceable(1) %191, i32 noundef 44) #8
  %.not124 = icmp eq ptr %192, null
  br i1 %.not124, label %._crit_edge, label %.lr.ph

193:                                              ; preds = %.lr.ph
  %194 = landingpad { ptr, i32 }
          cleanup
  br label %197

195:                                              ; preds = %189
  %196 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %4) #7
  br label %197

197:                                              ; preds = %195, %193
  %.pn = phi { ptr, i32 } [ %196, %195 ], [ %194, %193 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %5) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %5) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %4) #7
  br label %205

._crit_edge:                                      ; preds = %190, %183
  %.097.lcssa = phi ptr [ %186, %183 ], [ %191, %190 ]
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %6) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %7) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %7) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %6, ptr noundef %.097.lcssa, ptr noundef nonnull align 1 dereferenceable(1) %7)
          to label %198 unwind label %200

198:                                              ; preds = %._crit_edge
  invoke void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE9push_backEOS5_(ptr noundef nonnull align 8 dereferenceable(24) %17, ptr noundef nonnull align 8 dereferenceable(32) %6)
          to label %199 unwind label %202

199:                                              ; preds = %198
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %6) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %7) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %7) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %6) #7
  br label %221

200:                                              ; preds = %._crit_edge
  %201 = landingpad { ptr, i32 }
          cleanup
  br label %204

202:                                              ; preds = %198
  %203 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %6) #7
  br label %204

204:                                              ; preds = %202, %200
  %.pn126 = phi { ptr, i32 } [ %203, %202 ], [ %201, %200 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %7) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %7) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %6) #7
  br label %205

205:                                              ; preds = %204, %197
  %.pn126.pn = phi { ptr, i32 } [ %.pn126, %204 ], [ %.pn, %197 ]
  resume { ptr, i32 } %.pn126.pn

206:                                              ; preds = %173
  %207 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %25, ptr noundef nonnull dereferenceable(1) @.str.29) #8
  %208 = icmp eq i32 %207, 0
  br i1 %208, label %209, label %210

209:                                              ; preds = %206
  store i8 1, ptr %16, align 8, !tbaa !31
  br label %221

210:                                              ; preds = %206
  %211 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %25, ptr noundef nonnull dereferenceable(1) @.str.30) #8
  %212 = icmp eq i32 %211, 0
  br i1 %212, label %213, label %214

213:                                              ; preds = %210
  store i8 1, ptr %15, align 1, !tbaa !32
  br label %221

214:                                              ; preds = %210
  %215 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %25, ptr noundef nonnull dereferenceable(1) @.str.31) #8
  %216 = icmp eq i32 %215, 0
  br i1 %216, label %217, label %218

217:                                              ; preds = %214
  store i8 1, ptr %14, align 2, !tbaa !33
  br label %221

218:                                              ; preds = %214
  %219 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cerr, ptr noundef nonnull @.str.32)
  %220 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %219, ptr noundef nonnull %25)
  br label %.sink.split

221:                                              ; preds = %95, %54, %57, %88, %87, %83, %63, %50, %40, %127, %155, %199, %213, %217, %209, %169, %141, %113, %29, %27
  %.2109.ph = phi i1 [ true, %95 ], [ false, %217 ], [ false, %213 ], [ false, %209 ], [ false, %199 ], [ false, %169 ], [ false, %155 ], [ false, %141 ], [ false, %127 ], [ false, %113 ], [ false, %40 ], [ false, %50 ], [ false, %63 ], [ false, %57 ], [ false, %54 ], [ false, %83 ], [ false, %87 ], [ false, %88 ], [ %.0107183, %29 ], [ %.0107183, %27 ]
  %.3106.ph = phi i32 [ %.0103184, %95 ], [ %.0103184, %217 ], [ %.0103184, %213 ], [ %.0103184, %209 ], [ %177, %199 ], [ %163, %169 ], [ %149, %155 ], [ %135, %141 ], [ %121, %127 ], [ %107, %113 ], [ %34, %40 ], [ %44, %50 ], [ %55, %63 ], [ %.0103184, %57 ], [ %.0103184, %54 ], [ %.1104, %83 ], [ %.0103184, %87 ], [ %.0103184, %88 ], [ %.0103184, %29 ], [ %.0103184, %27 ]
  %222 = add nsw i32 %.3106.ph, 1
  %.not131 = icmp slt i32 %222, %1
  br i1 %.not131, label %22, label %.critedge, !llvm.loop !34

.critedge:                                        ; preds = %221, %3
  %223 = load ptr, ptr %0, align 8, !tbaa !10
  %.not132 = icmp eq ptr %223, null
  br i1 %.not132, label %224, label %226

224:                                              ; preds = %.critedge
  call void @_ZNK14ProgramOptions5usageEv(ptr noundef nonnull align 8 dereferenceable(120) %0)
  call void @exit(i32 noundef 1) #9
  unreachable

.sink.split:                                      ; preds = %36, %46, %72, %84, %90, %109, %123, %137, %151, %165, %179, %218
  %.sink = phi ptr [ %220, %218 ], [ %182, %179 ], [ %168, %165 ], [ %154, %151 ], [ %140, %137 ], [ %126, %123 ], [ %112, %109 ], [ %94, %90 ], [ %86, %84 ], [ %75, %72 ], [ %49, %46 ], [ %39, %36 ]
  %225 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %.sink, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  br label %226

226:                                              ; preds = %.sink.split, %.critedge
  %.3 = phi i32 [ 0, %.critedge ], [ 1, %.sink.split ]
  ret i32 %.3
}

declare i32 @__gxx_personality_v0(...)

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

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

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

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

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

; 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 #3

; 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 #1 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)) #3

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

; Function Attrs: mustprogress nofree nounwind willreturn
declare i64 @strtol(ptr noundef readonly, ptr nocapture noundef, i32 noundef) local_unnamed_addr #4

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK14ProgramOptions4helpEv(ptr noundef nonnull align 8 dereferenceable(120)) local_unnamed_addr #1 align 2

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

; 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 #3

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK14ProgramOptions5usageEv(ptr noundef nonnull align 8 dereferenceable(120)) local_unnamed_addr #1 align 2

attributes #0 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { 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 nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { 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 #4 = { mustprogress nofree nounwind willreturn "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 nofree nounwind willreturn memory(argmem: read) "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { noreturn nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #7 = { nounwind }
attributes #8 = { nounwind willreturn memory(read) }
attributes #9 = { noreturn 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, !6, i64 0}
!11 = !{!"_ZTS14ProgramOptions", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !12, i64 40, !6, i64 48, !13, i64 56, !17, i64 80, !12, i64 84, !12, i64 85, !12, i64 86, !12, i64 87, !12, i64 88, !18, i64 96}
!12 = !{!"bool", !7, i64 0}
!13 = !{!"_ZTSSt6vectorIPKcSaIS1_EE", !14, i64 0}
!14 = !{!"_ZTSSt12_Vector_baseIPKcSaIS1_EE", !15, i64 0}
!15 = !{!"_ZTSNSt12_Vector_baseIPKcSaIS1_EE12_Vector_implE", !16, i64 0}
!16 = !{!"_ZTSNSt12_Vector_baseIPKcSaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!17 = !{!"int", !7, i64 0}
!18 = !{!"_ZTSSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE", !19, i64 0}
!19 = !{!"_ZTSSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE", !20, i64 0}
!20 = !{!"_ZTSNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12_Vector_implE", !21, i64 0}
!21 = !{!"_ZTSNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!22 = !{!11, !6, i64 32}
!23 = !{!11, !17, i64 80}
!24 = !{!11, !12, i64 40}
!25 = !{!11, !12, i64 84}
!26 = !{!11, !12, i64 87}
!27 = !{!11, !6, i64 8}
!28 = !{!11, !6, i64 16}
!29 = !{!11, !6, i64 24}
!30 = !{!11, !6, i64 48}
!31 = !{!11, !12, i64 88}
!32 = !{!11, !12, i64 85}
!33 = !{!11, !12, i64 86}
!34 = distinct !{!34, !35}
!35 = !{!"llvm.loop.mustprogress"}


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