; LLVM IR from HorizenOfficial/zendoo-mc-cryptolib :: mc_test/mcTestCall.ll (Z10parse_argsiPPc9OperationPFbPKcRSt6vectorIhSaIhEEE)

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

%struct.CreateParameters = type { %struct.Parameters, i8, i8, ptr, i32, i64, ptr, ptr, ptr, i64, i64, i64, ptr, %struct.BufferWithSize, %"class.std::vector", %"class.std::vector.0" }
%struct.Parameters = type { i32, i32, ptr, i32, i8, i8, i32, i32, ptr, ptr, ptr }
%struct.BufferWithSize = type { ptr, i64 }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<backward_transfer, std::allocator<backward_transfer>>::_Vector_impl" }
%"struct.std::_Vector_base<backward_transfer, std::allocator<backward_transfer>>::_Vector_impl" = type { %"struct.std::_Vector_base<backward_transfer, std::allocator<backward_transfer>>::_Vector_impl_data" }
%"struct.std::_Vector_base<backward_transfer, std::allocator<backward_transfer>>::_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<field *, std::allocator<field *>>::_Vector_impl" }
%"struct.std::_Vector_base<field *, std::allocator<field *>>::_Vector_impl" = type { %"struct.std::_Vector_base<field *, std::allocator<field *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<field *, std::allocator<field *>>::_Vector_impl_data" = type { ptr, ptr, 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.5" = type { i8 }
%"class.std::vector.8" = type { %"struct.std::_Vector_base.9" }
%"struct.std::_Vector_base.9" = 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 }
%struct.backward_transfer = type { [20 x i8], i64 }

@.str.24 = external hidden unnamed_addr constant [16 x i8], align 1
@optarg = external global ptr, align 8
@.str.25 = external hidden unnamed_addr constant [21 x i8], align 1
@optind = external global i32, align 4
@.str.26 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [92 x i8], align 1
@__PRETTY_FUNCTION__._Z10parse_argsiPPc9OperationPFbPKcRSt6vectorIhSaIhEEE = external hidden unnamed_addr constant [62 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [23 x i8], align 1
@__func__._Z10parse_argsiPPc9OperationPFbPKcRSt6vectorIhSaIhEEE = external hidden unnamed_addr constant [11 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [44 x i8], align 1

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_Z10printErrorPKcjS0_z(ptr noundef, i32 noundef, ptr noundef, ...) #0

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

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

declare i32 @__gxx_personality_v0(...)

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_Z16get_circuit_typeRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEb(ptr noundef nonnull align 8 dereferenceable(32), i1 noundef zeroext) #2

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_Z10parse_argsiPPc9OperationPFbPKcRSt6vectorIhSaIhEEE(ptr dead_on_unwind noalias writable sret(%struct.CreateParameters) align 8 %0, i32 noundef %1, ptr noundef %2, i32 noundef %3, ptr noundef %4) #2 personality ptr @__gxx_personality_v0 {
  %6 = alloca ptr, align 8
  %7 = alloca i32, align 4
  %8 = alloca ptr, align 8
  %9 = alloca i32, align 4
  %10 = alloca ptr, align 8
  %11 = alloca i1, align 1
  %12 = alloca i8, align 1
  %13 = alloca ptr, align 8
  %14 = alloca ptr, align 8
  %15 = alloca i32, align 4
  %16 = alloca %"class.std::__cxx11::basic_string", align 8
  %17 = alloca %"class.std::allocator.5", align 1
  %18 = alloca i32, align 4
  %19 = alloca i32, align 4
  %20 = alloca ptr, align 8
  %21 = alloca %"class.std::vector.8", align 8
  %22 = alloca i64, align 8
  %23 = alloca i32, align 4
  %24 = alloca i32, align 4
  %25 = alloca ptr, align 8
  %26 = alloca ptr, align 8
  %27 = alloca %"class.std::vector.8", align 8
  %28 = alloca %struct.BufferWithSize, align 8
  store ptr %0, ptr %6, align 8
  store i32 %1, ptr %7, align 4, !tbaa !5
  store ptr %2, ptr %8, align 8, !tbaa !9
  store i32 %3, ptr %9, align 4, !tbaa !11
  store ptr %4, ptr %10, align 8, !tbaa !9
  store i1 false, ptr %11, align 1
  call void @_ZN16CreateParametersC2Ev(ptr noundef nonnull align 8 dereferenceable(208) %0)
  call void @llvm.lifetime.start.p0(i64 1, ptr %12) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr %13) #11
  store ptr null, ptr %13, align 8, !tbaa !9
  %29 = load i32, ptr %9, align 4, !tbaa !11
  %30 = getelementptr inbounds %struct.Parameters, ptr %0, i32 0, i32 0
  store i32 %29, ptr %30, align 8, !tbaa !13
  br label %31

31:                                               ; preds = %82, %5
  %32 = load i32, ptr %7, align 4, !tbaa !5
  %33 = load ptr, ptr %8, align 8, !tbaa !9
  %34 = call i32 @getopt(i32 noundef %32, ptr noundef %33, ptr noundef @.str.24) #11
  %35 = trunc i32 %34 to i8
  store i8 %35, ptr %12, align 1, !tbaa !18
  %36 = sext i8 %35 to i32
  %37 = icmp ne i32 %36, -1
  br i1 %37, label %38, label %83

38:                                               ; preds = %31
  %39 = load i8, ptr %12, align 1, !tbaa !18
  %40 = sext i8 %39 to i32
  switch i32 %40, label %82 [
    i32 99, label %41
    i32 107, label %43
    i32 112, label %57
    i32 115, label %63
    i32 110, label %68
    i32 114, label %73
    i32 118, label %75
    i32 122, label %77
    i32 108, label %79
  ]

41:                                               ; preds = %38
  %42 = load ptr, ptr @optarg, align 8, !tbaa !9
  store ptr %42, ptr %13, align 8, !tbaa !9
  br label %82

43:                                               ; preds = %38
  %44 = getelementptr inbounds %struct.Parameters, ptr %0, i32 0, i32 5
  store i8 1, ptr %44, align 1, !tbaa !19
  %45 = load ptr, ptr @optarg, align 8, !tbaa !9
  %46 = call i32 @strcmp(ptr noundef %45, ptr noundef @.str.25) #12
  %47 = icmp ne i32 %46, 0
  br i1 %47, label %48, label %56

48:                                               ; preds = %43
  %49 = load ptr, ptr @optarg, align 8, !tbaa !9
  %50 = getelementptr inbounds %struct.CreateParameters, ptr %0, i32 0, i32 6
  invoke void @_Z11parse_fieldPKcRP5field(ptr noundef %49, ptr noundef nonnull align 8 dereferenceable(8) %50)
          to label %51 unwind label %52

51:                                               ; preds = %48
  br label %56

52:                                               ; preds = %421, %216, %207, %164, %149, %48
  %53 = landingpad { ptr, i32 }
          cleanup
  %54 = extractvalue { ptr, i32 } %53, 0
  store ptr %54, ptr %14, align 8
  %55 = extractvalue { ptr, i32 } %53, 1
  store i32 %55, ptr %15, align 4
  br label %469

56:                                               ; preds = %51, %43
  br label %82

57:                                               ; preds = %38
  %58 = load ptr, ptr @optarg, align 8, !tbaa !9
  %59 = getelementptr inbounds %struct.Parameters, ptr %0, i32 0, i32 2
  store ptr %58, ptr %59, align 8, !tbaa !20
  %60 = load ptr, ptr @optarg, align 8, !tbaa !9
  %61 = call noundef i32 @_Z23get_proving_system_typePKc(ptr noundef %60)
  %62 = getelementptr inbounds %struct.Parameters, ptr %0, i32 0, i32 3
  store i32 %61, ptr %62, align 8, !tbaa !21
  br label %82

63:                                               ; preds = %38
  %64 = load ptr, ptr @optarg, align 8, !tbaa !9
  %65 = call i64 @strtoull(ptr noundef %64, ptr noundef null, i32 noundef 0) #11
  %66 = trunc i64 %65 to i32
  %67 = getelementptr inbounds %struct.Parameters, ptr %0, i32 0, i32 6
  store i32 %66, ptr %67, align 8, !tbaa !22
  br label %82

68:                                               ; preds = %38
  %69 = load ptr, ptr @optarg, align 8, !tbaa !9
  %70 = call i64 @strtoull(ptr noundef %69, ptr noundef null, i32 noundef 0) #11
  %71 = trunc i64 %70 to i32
  %72 = getelementptr inbounds %struct.Parameters, ptr %0, i32 0, i32 7
  store i32 %71, ptr %72, align 4, !tbaa !23
  br label %82

73:                                               ; preds = %38
  %74 = getelementptr inbounds %struct.Parameters, ptr %0, i32 0, i32 4
  store i8 1, ptr %74, align 4, !tbaa !24
  br label %82

75:                                               ; preds = %38
  %76 = getelementptr inbounds %struct.CreateParameters, ptr %0, i32 0, i32 1
  store i8 1, ptr %76, align 8, !tbaa !25
  br label %82

77:                                               ; preds = %38
  %78 = getelementptr inbounds %struct.CreateParameters, ptr %0, i32 0, i32 2
  store i8 1, ptr %78, align 1, !tbaa !37
  br label %82

79:                                               ; preds = %38
  %80 = load ptr, ptr @optarg, align 8, !tbaa !9
  %81 = getelementptr inbounds %struct.Parameters, ptr %0, i32 0, i32 10
  store ptr %80, ptr %81, align 8, !tbaa !38
  br label %82

82:                                               ; preds = %79, %77, %75, %73, %68, %63, %57, %56, %41, %38
  br label %31, !llvm.loop !39

83:                                               ; preds = %31
  %84 = load i32, ptr @optind, align 4, !tbaa !5
  %85 = load i32, ptr %7, align 4, !tbaa !5
  %86 = icmp slt i32 %84, %85
  br i1 %86, label %87, label %88

87:                                               ; preds = %83
  br label %90

88:                                               ; preds = %83
  call void @__assert_fail(ptr noundef @.str.26, ptr noundef @.str.27, i32 noundef 268, ptr noundef @__PRETTY_FUNCTION__._Z10parse_argsiPPc9OperationPFbPKcRSt6vectorIhSaIhEEE) #13
  unreachable

89:                                               ; No predecessors!
  br label %90

90:                                               ; preds = %89, %87
  %91 = load ptr, ptr %13, align 8, !tbaa !9
  %92 = icmp ne ptr %91, null
  br i1 %92, label %93, label %111

93:                                               ; preds = %90
  call void @llvm.lifetime.start.p0(i64 32, ptr %16) #11
  %94 = load ptr, ptr %13, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr %17) #11
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %17) #11
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %16, ptr noundef %94, ptr noundef nonnull align 1 dereferenceable(1) %17)
          to label %95 unwind label %102

95:                                               ; preds = %93
  %96 = getelementptr inbounds %struct.Parameters, ptr %0, i32 0, i32 5
  %97 = load i8, ptr %96, align 1, !tbaa !19, !range !41, !noundef !42
  %98 = trunc i8 %97 to i1
  %99 = invoke noundef i32 @_Z16get_circuit_typeRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEb(ptr noundef nonnull align 8 dereferenceable(32) %16, i1 noundef zeroext %98)
          to label %100 unwind label %106

100:                                              ; preds = %95
  %101 = getelementptr inbounds %struct.Parameters, ptr %0, i32 0, i32 1
  store i32 %99, ptr %101, align 4, !tbaa !43
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %16) #11
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %17) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr %17) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr %16) #11
  br label %111

102:                                              ; preds = %93
  %103 = landingpad { ptr, i32 }
          cleanup
  %104 = extractvalue { ptr, i32 } %103, 0
  store ptr %104, ptr %14, align 8
  %105 = extractvalue { ptr, i32 } %103, 1
  store i32 %105, ptr %15, align 4
  br label %110

106:                                              ; preds = %95
  %107 = landingpad { ptr, i32 }
          cleanup
  %108 = extractvalue { ptr, i32 } %107, 0
  store ptr %108, ptr %14, align 8
  %109 = extractvalue { ptr, i32 } %107, 1
  store i32 %109, ptr %15, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %16) #11
  br label %110

110:                                              ; preds = %106, %102
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %17) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr %17) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr %16) #11
  br label %469

111:                                              ; preds = %100, %90
  %112 = load i32, ptr @optind, align 4, !tbaa !5
  %113 = load i32, ptr %7, align 4, !tbaa !5
  %114 = icmp slt i32 %112, %113
  br i1 %114, label %115, label %116

115:                                              ; preds = %111
  br label %118

116:                                              ; preds = %111
  call void @__assert_fail(ptr noundef @.str.26, ptr noundef @.str.27, i32 noundef 273, ptr noundef @__PRETTY_FUNCTION__._Z10parse_argsiPPc9OperationPFbPKcRSt6vectorIhSaIhEEE) #13
  unreachable

117:                                              ; No predecessors!
  br label %118

118:                                              ; preds = %117, %115
  %119 = load ptr, ptr %8, align 8, !tbaa !9
  %120 = load i32, ptr @optind, align 4, !tbaa !5
  %121 = add nsw i32 %120, 1
  store i32 %121, ptr @optind, align 4, !tbaa !5
  %122 = sext i32 %120 to i64
  %123 = getelementptr inbounds ptr, ptr %119, i64 %122
  %124 = load ptr, ptr %123, align 8, !tbaa !9
  %125 = getelementptr inbounds %struct.Parameters, ptr %0, i32 0, i32 8
  store ptr %124, ptr %125, align 8, !tbaa !44
  %126 = load i32, ptr %9, align 4, !tbaa !11
  %127 = icmp eq i32 %126, 1
  br i1 %127, label %128, label %462

128:                                              ; preds = %118
  %129 = load i32, ptr @optind, align 4, !tbaa !5
  %130 = load i32, ptr %7, align 4, !tbaa !5
  %131 = icmp slt i32 %129, %130
  br i1 %131, label %132, label %133

132:                                              ; preds = %128
  br label %135

133:                                              ; preds = %128
  call void @__assert_fail(ptr noundef @.str.26, ptr noundef @.str.27, i32 noundef 278, ptr noundef @__PRETTY_FUNCTION__._Z10parse_argsiPPc9OperationPFbPKcRSt6vectorIhSaIhEEE) #13
  unreachable

134:                                              ; No predecessors!
  br label %135

135:                                              ; preds = %134, %132
  %136 = load ptr, ptr %8, align 8, !tbaa !9
  %137 = load i32, ptr @optind, align 4, !tbaa !5
  %138 = add nsw i32 %137, 1
  store i32 %138, ptr @optind, align 4, !tbaa !5
  %139 = sext i32 %137 to i64
  %140 = getelementptr inbounds ptr, ptr %136, i64 %139
  %141 = load ptr, ptr %140, align 8, !tbaa !9
  %142 = getelementptr inbounds %struct.Parameters, ptr %0, i32 0, i32 9
  store ptr %141, ptr %142, align 8, !tbaa !45
  %143 = load i32, ptr @optind, align 4, !tbaa !5
  %144 = load i32, ptr %7, align 4, !tbaa !5
  %145 = icmp slt i32 %143, %144
  br i1 %145, label %146, label %147

146:                                              ; preds = %135
  br label %149

147:                                              ; preds = %135
  call void @__assert_fail(ptr noundef @.str.26, ptr noundef @.str.27, i32 noundef 282, ptr noundef @__PRETTY_FUNCTION__._Z10parse_argsiPPc9OperationPFbPKcRSt6vectorIhSaIhEEE) #13
  unreachable

148:                                              ; No predecessors!
  br label %149

149:                                              ; preds = %148, %146
  %150 = load ptr, ptr %8, align 8, !tbaa !9
  %151 = load i32, ptr @optind, align 4, !tbaa !5
  %152 = add nsw i32 %151, 1
  store i32 %152, ptr @optind, align 4, !tbaa !5
  %153 = sext i32 %151 to i64
  %154 = getelementptr inbounds ptr, ptr %150, i64 %153
  %155 = load ptr, ptr %154, align 8, !tbaa !9
  %156 = getelementptr inbounds %struct.CreateParameters, ptr %0, i32 0, i32 3
  invoke void @_Z11parse_fieldPKcRP5field(ptr noundef %155, ptr noundef nonnull align 8 dereferenceable(8) %156)
          to label %157 unwind label %52

157:                                              ; preds = %149
  %158 = load i32, ptr @optind, align 4, !tbaa !5
  %159 = load i32, ptr %7, align 4, !tbaa !5
  %160 = icmp slt i32 %158, %159
  br i1 %160, label %161, label %162

161:                                              ; preds = %157
  br label %164

162:                                              ; preds = %157
  call void @__assert_fail(ptr noundef @.str.26, ptr noundef @.str.27, i32 noundef 286, ptr noundef @__PRETTY_FUNCTION__._Z10parse_argsiPPc9OperationPFbPKcRSt6vectorIhSaIhEEE) #13
  unreachable

163:                                              ; No predecessors!
  br label %164

164:                                              ; preds = %163, %161
  %165 = load ptr, ptr %8, align 8, !tbaa !9
  %166 = load i32, ptr @optind, align 4, !tbaa !5
  %167 = add nsw i32 %166, 1
  store i32 %167, ptr @optind, align 4, !tbaa !5
  %168 = sext i32 %166 to i64
  %169 = getelementptr inbounds ptr, ptr %165, i64 %168
  %170 = load ptr, ptr %169, align 8, !tbaa !9
  %171 = getelementptr inbounds %struct.CreateParameters, ptr %0, i32 0, i32 7
  invoke void @_Z11parse_fieldPKcRP5field(ptr noundef %170, ptr noundef nonnull align 8 dereferenceable(8) %171)
          to label %172 unwind label %52

172:                                              ; preds = %164
  %173 = load i32, ptr @optind, align 4, !tbaa !5
  %174 = load i32, ptr %7, align 4, !tbaa !5
  %175 = icmp slt i32 %173, %174
  br i1 %175, label %176, label %177

176:                                              ; preds = %172
  br label %179

177:                                              ; preds = %172
  call void @__assert_fail(ptr noundef @.str.26, ptr noundef @.str.27, i32 noundef 290, ptr noundef @__PRETTY_FUNCTION__._Z10parse_argsiPPc9OperationPFbPKcRSt6vectorIhSaIhEEE) #13
  unreachable

178:                                              ; No predecessors!
  br label %179

179:                                              ; preds = %178, %176
  %180 = load ptr, ptr %8, align 8, !tbaa !9
  %181 = load i32, ptr @optind, align 4, !tbaa !5
  %182 = sext i32 %181 to i64
  %183 = getelementptr inbounds ptr, ptr %180, i64 %182
  %184 = load ptr, ptr %183, align 8, !tbaa !9
  %185 = call i32 @strcmp(ptr noundef %184, ptr noundef @.str.28) #12
  %186 = icmp eq i32 %185, 0
  br i1 %186, label %187, label %189

187:                                              ; preds = %179
  %188 = getelementptr inbounds %struct.CreateParameters, ptr %0, i32 0, i32 8
  store ptr null, ptr %188, align 8, !tbaa !46
  br label %226

189:                                              ; preds = %179
  %190 = load ptr, ptr %8, align 8, !tbaa !9
  %191 = load i32, ptr @optind, align 4, !tbaa !5
  %192 = sext i32 %191 to i64
  %193 = getelementptr inbounds ptr, ptr %190, i64 %192
  %194 = load ptr, ptr %193, align 8, !tbaa !9
  %195 = call i32 @strcmp(ptr noundef %194, ptr noundef @.str.29) #12
  %196 = icmp eq i32 %195, 0
  br i1 %196, label %197, label %199

197:                                              ; preds = %189
  %198 = getelementptr inbounds %struct.CreateParameters, ptr %0, i32 0, i32 8
  store ptr null, ptr %198, align 8, !tbaa !46
  br label %225

199:                                              ; preds = %189
  %200 = load ptr, ptr %8, align 8, !tbaa !9
  %201 = load i32, ptr @optind, align 4, !tbaa !5
  %202 = sext i32 %201 to i64
  %203 = getelementptr inbounds ptr, ptr %200, i64 %202
  %204 = load ptr, ptr %203, align 8, !tbaa !9
  %205 = call i32 @strcmp(ptr noundef %204, ptr noundef @.str.30) #12
  %206 = icmp eq i32 %205, 0
  br i1 %206, label %207, label %216

207:                                              ; preds = %199
  %208 = invoke ptr @zendoo_get_phantom_cert_data_hash()
          to label %209 unwind label %52

209:                                              ; preds = %207
  %210 = getelementptr inbounds %struct.CreateParameters, ptr %0, i32 0, i32 8
  store ptr %208, ptr %210, align 8, !tbaa !46
  %211 = getelementptr inbounds %struct.CreateParameters, ptr %0, i32 0, i32 8
  %212 = load ptr, ptr %211, align 8, !tbaa !46
  %213 = icmp eq ptr %212, null
  br i1 %213, label %214, label %215

214:                                              ; preds = %209
  call void (ptr, i32, ptr, ...) @_Z10printErrorPKcjS0_z(ptr noundef @__func__._Z10parse_argsiPPc9OperationPFbPKcRSt6vectorIhSaIhEEE, i32 noundef 298, ptr noundef @.str.31)
  br label %215

215:                                              ; preds = %214, %209
  br label %224

216:                                              ; preds = %199
  %217 = load ptr, ptr %8, align 8, !tbaa !9
  %218 = load i32, ptr @optind, align 4, !tbaa !5
  %219 = sext i32 %218 to i64
  %220 = getelementptr inbounds ptr, ptr %217, i64 %219
  %221 = load ptr, ptr %220, align 8, !tbaa !9
  %222 = getelementptr inbounds %struct.CreateParameters, ptr %0, i32 0, i32 8
  invoke void @_Z11parse_fieldPKcRP5field(ptr noundef %221, ptr noundef nonnull align 8 dereferenceable(8) %222)
          to label %223 unwind label %52

223:                                              ; preds = %216
  br label %224

224:                                              ; preds = %223, %215
  br label %225

225:                                              ; preds = %224, %197
  br label %226

226:                                              ; preds = %225, %187
  %227 = load i32, ptr @optind, align 4, !tbaa !5
  %228 = add nsw i32 %227, 1
  store i32 %228, ptr @optind, align 4, !tbaa !5
  %229 = getelementptr inbounds %struct.Parameters, ptr %0, i32 0, i32 1
  %230 = load i32, ptr %229, align 4, !tbaa !43
  %231 = icmp eq i32 %230, 1
  br i1 %231, label %236, label %232

232:                                              ; preds = %226
  %233 = getelementptr inbounds %struct.Parameters, ptr %0, i32 0, i32 1
  %234 = load i32, ptr %233, align 4, !tbaa !43
  %235 = icmp eq i32 %234, 2
  br i1 %235, label %236, label %398

236:                                              ; preds = %232, %226
  %237 = load i32, ptr @optind, align 4, !tbaa !5
  %238 = load i32, ptr %7, align 4, !tbaa !5
  %239 = icmp slt i32 %237, %238
  br i1 %239, label %240, label %241

240:                                              ; preds = %236
  br label %243

241:                                              ; preds = %236
  call void @__assert_fail(ptr noundef @.str.26, ptr noundef @.str.27, i32 noundef 308, ptr noundef @__PRETTY_FUNCTION__._Z10parse_argsiPPc9OperationPFbPKcRSt6vectorIhSaIhEEE) #13
  unreachable

242:                                              ; No predecessors!
  br label %243

243:                                              ; preds = %242, %240
  %244 = load ptr, ptr %8, align 8, !tbaa !9
  %245 = load i32, ptr @optind, align 4, !tbaa !5
  %246 = add nsw i32 %245, 1
  store i32 %246, ptr @optind, align 4, !tbaa !5
  %247 = sext i32 %245 to i64
  %248 = getelementptr inbounds ptr, ptr %244, i64 %247
  %249 = load ptr, ptr %248, align 8, !tbaa !9
  %250 = call i64 @strtoull(ptr noundef %249, ptr noundef null, i32 noundef 0) #11
  %251 = trunc i64 %250 to i32
  %252 = getelementptr inbounds %struct.CreateParameters, ptr %0, i32 0, i32 4
  store i32 %251, ptr %252, align 8, !tbaa !47
  %253 = load i32, ptr @optind, align 4, !tbaa !5
  %254 = load i32, ptr %7, align 4, !tbaa !5
  %255 = icmp slt i32 %253, %254
  br i1 %255, label %256, label %257

256:                                              ; preds = %243
  br label %259

257:                                              ; preds = %243
  call void @__assert_fail(ptr noundef @.str.26, ptr noundef @.str.27, i32 noundef 312, ptr noundef @__PRETTY_FUNCTION__._Z10parse_argsiPPc9OperationPFbPKcRSt6vectorIhSaIhEEE) #13
  unreachable

258:                                              ; No predecessors!
  br label %259

259:                                              ; preds = %258, %256
  %260 = load ptr, ptr %8, align 8, !tbaa !9
  %261 = load i32, ptr @optind, align 4, !tbaa !5
  %262 = add nsw i32 %261, 1
  store i32 %262, ptr @optind, align 4, !tbaa !5
  %263 = sext i32 %261 to i64
  %264 = getelementptr inbounds ptr, ptr %260, i64 %263
  %265 = load ptr, ptr %264, align 8, !tbaa !9
  %266 = call i64 @strtoull(ptr noundef %265, ptr noundef null, i32 noundef 0) #11
  %267 = getelementptr inbounds %struct.CreateParameters, ptr %0, i32 0, i32 5
  store i64 %266, ptr %267, align 8, !tbaa !48
  %268 = load i32, ptr @optind, align 4, !tbaa !5
  %269 = load i32, ptr %7, align 4, !tbaa !5
  %270 = icmp slt i32 %268, %269
  br i1 %270, label %271, label %272

271:                                              ; preds = %259
  br label %274

272:                                              ; preds = %259
  call void @__assert_fail(ptr noundef @.str.26, ptr noundef @.str.27, i32 noundef 316, ptr noundef @__PRETTY_FUNCTION__._Z10parse_argsiPPc9OperationPFbPKcRSt6vectorIhSaIhEEE) #13
  unreachable

273:                                              ; No predecessors!
  br label %274

274:                                              ; preds = %273, %271
  %275 = load ptr, ptr %8, align 8, !tbaa !9
  %276 = load i32, ptr @optind, align 4, !tbaa !5
  %277 = add nsw i32 %276, 1
  store i32 %277, ptr @optind, align 4, !tbaa !5
  %278 = sext i32 %276 to i64
  %279 = getelementptr inbounds ptr, ptr %275, i64 %278
  %280 = load ptr, ptr %279, align 8, !tbaa !9
  %281 = call i64 @strtoull(ptr noundef %280, ptr noundef null, i32 noundef 0) #11
  %282 = getelementptr inbounds %struct.CreateParameters, ptr %0, i32 0, i32 9
  store i64 %281, ptr %282, align 8, !tbaa !49
  %283 = load i32, ptr @optind, align 4, !tbaa !5
  %284 = load i32, ptr %7, align 4, !tbaa !5
  %285 = icmp slt i32 %283, %284
  br i1 %285, label %286, label %287

286:                                              ; preds = %274
  br label %289

287:                                              ; preds = %274
  call void @__assert_fail(ptr noundef @.str.26, ptr noundef @.str.27, i32 noundef 320, ptr noundef @__PRETTY_FUNCTION__._Z10parse_argsiPPc9OperationPFbPKcRSt6vectorIhSaIhEEE) #13
  unreachable

288:                                              ; No predecessors!
  br label %289

289:                                              ; preds = %288, %286
  %290 = load ptr, ptr %8, align 8, !tbaa !9
  %291 = load i32, ptr @optind, align 4, !tbaa !5
  %292 = add nsw i32 %291, 1
  store i32 %292, ptr @optind, align 4, !tbaa !5
  %293 = sext i32 %291 to i64
  %294 = getelementptr inbounds ptr, ptr %290, i64 %293
  %295 = load ptr, ptr %294, align 8, !tbaa !9
  %296 = call i64 @strtoull(ptr noundef %295, ptr noundef null, i32 noundef 0) #11
  %297 = getelementptr inbounds %struct.CreateParameters, ptr %0, i32 0, i32 10
  store i64 %296, ptr %297, align 8, !tbaa !50
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #11
  %298 = load ptr, ptr %8, align 8, !tbaa !9
  %299 = load i32, ptr @optind, align 4, !tbaa !5
  %300 = add nsw i32 %299, 1
  store i32 %300, ptr @optind, align 4, !tbaa !5
  %301 = sext i32 %299 to i64
  %302 = getelementptr inbounds ptr, ptr %298, i64 %301
  %303 = load ptr, ptr %302, align 8, !tbaa !9
  %304 = call i64 @strtoull(ptr noundef %303, ptr noundef null, i32 noundef 0) #11
  %305 = trunc i64 %304 to i32
  store i32 %305, ptr %18, align 4, !tbaa !5
  %306 = getelementptr inbounds %struct.CreateParameters, ptr %0, i32 0, i32 14
  %307 = load i32, ptr %18, align 4, !tbaa !5
  %308 = zext i32 %307 to i64
  invoke void @_ZNSt6vectorI17backward_transferSaIS0_EE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %306, i64 noundef %308)
          to label %309 unwind label %315

309:                                              ; preds = %289
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #11
  store i32 0, ptr %19, align 4, !tbaa !5
  br label %310

310:                                              ; preds = %346, %309
  %311 = load i32, ptr %19, align 4, !tbaa !5
  %312 = load i32, ptr %18, align 4, !tbaa !5
  %313 = icmp ult i32 %311, %312
  br i1 %313, label %319, label %314

314:                                              ; preds = %310
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #11
  br label %353

315:                                              ; preds = %289
  %316 = landingpad { ptr, i32 }
          cleanup
  %317 = extractvalue { ptr, i32 } %316, 0
  store ptr %317, ptr %14, align 8
  %318 = extractvalue { ptr, i32 } %316, 1
  store i32 %318, ptr %15, align 4
  br label %397

319:                                              ; preds = %310
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #11
  %320 = getelementptr inbounds %struct.CreateParameters, ptr %0, i32 0, i32 14
  %321 = load i32, ptr %19, align 4, !tbaa !5
  %322 = zext i32 %321 to i64
  %323 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorI17backward_transferSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %320, i64 noundef %322) #11
  store ptr %323, ptr %20, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 24, ptr %21) #11
  call void @_ZNSt6vectorIhSaIhEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %21) #11
  %324 = load ptr, ptr %10, align 8, !tbaa !9
  %325 = load ptr, ptr %8, align 8, !tbaa !9
  %326 = load i32, ptr @optind, align 4, !tbaa !5
  %327 = add nsw i32 %326, 1
  store i32 %327, ptr @optind, align 4, !tbaa !5
  %328 = sext i32 %326 to i64
  %329 = getelementptr inbounds ptr, ptr %325, i64 %328
  %330 = load ptr, ptr %329, align 8, !tbaa !9
  %331 = invoke noundef zeroext i1 %324(ptr noundef %330, ptr noundef nonnull align 8 dereferenceable(24) %21)
          to label %332 unwind label %349

332:                                              ; preds = %319
  %333 = load ptr, ptr %20, align 8, !tbaa !9
  %334 = getelementptr inbounds %struct.backward_transfer, ptr %333, i32 0, i32 0
  %335 = call noundef ptr @_ZNSt6vectorIhSaIhEE4dataEv(ptr noundef nonnull align 8 dereferenceable(24) %21) #11
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %334, ptr align 1 %335, i64 20, i1 false)
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #11
  %336 = load ptr, ptr %8, align 8, !tbaa !9
  %337 = load i32, ptr @optind, align 4, !tbaa !5
  %338 = add nsw i32 %337, 1
  store i32 %338, ptr @optind, align 4, !tbaa !5
  %339 = sext i32 %337 to i64
  %340 = getelementptr inbounds ptr, ptr %336, i64 %339
  %341 = load ptr, ptr %340, align 8, !tbaa !9
  %342 = call i64 @strtoull(ptr noundef %341, ptr noundef null, i32 noundef 0) #11
  store i64 %342, ptr %22, align 8, !tbaa !51
  %343 = load i64, ptr %22, align 8, !tbaa !51
  %344 = load ptr, ptr %20, align 8, !tbaa !9
  %345 = getelementptr inbounds %struct.backward_transfer, ptr %344, i32 0, i32 1
  store i64 %343, ptr %345, align 8, !tbaa !52
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #11
  call void @_ZNSt6vectorIhSaIhEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %21) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr %21) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #11
  br label %346

346:                                              ; preds = %332
  %347 = load i32, ptr %19, align 4, !tbaa !5
  %348 = add i32 %347, 1
  store i32 %348, ptr %19, align 4, !tbaa !5
  br label %310, !llvm.loop !54

349:                                              ; preds = %319
  %350 = landingpad { ptr, i32 }
          cleanup
  %351 = extractvalue { ptr, i32 } %350, 0
  store ptr %351, ptr %14, align 8
  %352 = extractvalue { ptr, i32 } %350, 1
  store i32 %352, ptr %15, align 4
  call void @_ZNSt6vectorIhSaIhEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %21) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr %21) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #11
  br label %397

353:                                              ; preds = %314
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #11
  %354 = load ptr, ptr %8, align 8, !tbaa !9
  %355 = load i32, ptr @optind, align 4, !tbaa !5
  %356 = add nsw i32 %355, 1
  store i32 %356, ptr @optind, align 4, !tbaa !5
  %357 = sext i32 %355 to i64
  %358 = getelementptr inbounds ptr, ptr %354, i64 %357
  %359 = load ptr, ptr %358, align 8, !tbaa !9
  %360 = call i64 @strtoull(ptr noundef %359, ptr noundef null, i32 noundef 0) #11
  %361 = trunc i64 %360 to i32
  store i32 %361, ptr %23, align 4, !tbaa !5
  %362 = getelementptr inbounds %struct.CreateParameters, ptr %0, i32 0, i32 15
  %363 = load i32, ptr %23, align 4, !tbaa !5
  %364 = zext i32 %363 to i64
  invoke void @_ZNSt6vectorIP5fieldSaIS1_EE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %362, i64 noundef %364)
          to label %365 unwind label %371

365:                                              ; preds = %353
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #11
  store i32 0, ptr %24, align 4, !tbaa !5
  br label %366

366:                                              ; preds = %388, %365
  %367 = load i32, ptr %24, align 4, !tbaa !5
  %368 = load i32, ptr %23, align 4, !tbaa !5
  %369 = icmp ult i32 %367, %368
  br i1 %369, label %375, label %370

370:                                              ; preds = %366
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #11
  br label %395

371:                                              ; preds = %353
  %372 = landingpad { ptr, i32 }
          cleanup
  %373 = extractvalue { ptr, i32 } %372, 0
  store ptr %373, ptr %14, align 8
  %374 = extractvalue { ptr, i32 } %372, 1
  store i32 %374, ptr %15, align 4
  br label %396

375:                                              ; preds = %366
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #11
  %376 = getelementptr inbounds %struct.CreateParameters, ptr %0, i32 0, i32 15
  %377 = load i32, ptr %24, align 4, !tbaa !5
  %378 = zext i32 %377 to i64
  %379 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP5fieldSaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %376, i64 noundef %378) #11
  store ptr %379, ptr %25, align 8, !tbaa !9
  %380 = load ptr, ptr %8, align 8, !tbaa !9
  %381 = load i32, ptr @optind, align 4, !tbaa !5
  %382 = add nsw i32 %381, 1
  store i32 %382, ptr @optind, align 4, !tbaa !5
  %383 = sext i32 %381 to i64
  %384 = getelementptr inbounds ptr, ptr %380, i64 %383
  %385 = load ptr, ptr %384, align 8, !tbaa !9
  %386 = load ptr, ptr %25, align 8, !tbaa !9
  invoke void @_Z11parse_fieldPKcRP5field(ptr noundef %385, ptr noundef nonnull align 8 dereferenceable(8) %386)
          to label %387 unwind label %391

387:                                              ; preds = %375
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #11
  br label %388

388:                                              ; preds = %387
  %389 = load i32, ptr %24, align 4, !tbaa !5
  %390 = add i32 %389, 1
  store i32 %390, ptr %24, align 4, !tbaa !5
  br label %366, !llvm.loop !55

391:                                              ; preds = %375
  %392 = landingpad { ptr, i32 }
          cleanup
  %393 = extractvalue { ptr, i32 } %392, 0
  store ptr %393, ptr %14, align 8
  %394 = extractvalue { ptr, i32 } %392, 1
  store i32 %394, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #11
  br label %396

395:                                              ; preds = %370
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #11
  br label %461

396:                                              ; preds = %391, %371
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #11
  br label %397

397:                                              ; preds = %396, %349, %315
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #11
  br label %469

398:                                              ; preds = %232
  %399 = getelementptr inbounds %struct.Parameters, ptr %0, i32 0, i32 1
  %400 = load i32, ptr %399, align 4, !tbaa !43
  %401 = icmp eq i32 %400, 3
  br i1 %401, label %406, label %402

402:                                              ; preds = %398
  %403 = getelementptr inbounds %struct.Parameters, ptr %0, i32 0, i32 1
  %404 = load i32, ptr %403, align 4, !tbaa !43
  %405 = icmp eq i32 %404, 4
  br i1 %405, label %406, label %460

406:                                              ; preds = %402, %398
  %407 = load ptr, ptr %8, align 8, !tbaa !9
  %408 = load i32, ptr @optind, align 4, !tbaa !5
  %409 = add nsw i32 %408, 1
  store i32 %409, ptr @optind, align 4, !tbaa !5
  %410 = sext i32 %408 to i64
  %411 = getelementptr inbounds ptr, ptr %407, i64 %410
  %412 = load ptr, ptr %411, align 8, !tbaa !9
  %413 = call i64 @strtoull(ptr noundef %412, ptr noundef null, i32 noundef 0) #11
  %414 = getelementptr inbounds %struct.CreateParameters, ptr %0, i32 0, i32 11
  store i64 %413, ptr %414, align 8, !tbaa !56
  %415 = load i32, ptr @optind, align 4, !tbaa !5
  %416 = load i32, ptr %7, align 4, !tbaa !5
  %417 = icmp slt i32 %415, %416
  br i1 %417, label %418, label %419

418:                                              ; preds = %406
  br label %421

419:                                              ; preds = %406
  call void @__assert_fail(ptr noundef @.str.26, ptr noundef @.str.27, i32 noundef 354, ptr noundef @__PRETTY_FUNCTION__._Z10parse_argsiPPc9OperationPFbPKcRSt6vectorIhSaIhEEE) #13
  unreachable

420:                                              ; No predecessors!
  br label %421

421:                                              ; preds = %420, %418
  %422 = load ptr, ptr %8, align 8, !tbaa !9
  %423 = load i32, ptr @optind, align 4, !tbaa !5
  %424 = add nsw i32 %423, 1
  store i32 %424, ptr @optind, align 4, !tbaa !5
  %425 = sext i32 %423 to i64
  %426 = getelementptr inbounds ptr, ptr %422, i64 %425
  %427 = load ptr, ptr %426, align 8, !tbaa !9
  %428 = getelementptr inbounds %struct.CreateParameters, ptr %0, i32 0, i32 12
  invoke void @_Z11parse_fieldPKcRP5field(ptr noundef %427, ptr noundef nonnull align 8 dereferenceable(8) %428)
          to label %429 unwind label %52

429:                                              ; preds = %421
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #11
  %430 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef 20) #14
          to label %431 unwind label %446

431:                                              ; preds = %429
  store ptr %430, ptr %26, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 24, ptr %27) #11
  call void @_ZNSt6vectorIhSaIhEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %27) #11
  %432 = load ptr, ptr %10, align 8, !tbaa !9
  %433 = load ptr, ptr %8, align 8, !tbaa !9
  %434 = load i32, ptr @optind, align 4, !tbaa !5
  %435 = add nsw i32 %434, 1
  store i32 %435, ptr @optind, align 4, !tbaa !5
  %436 = sext i32 %434 to i64
  %437 = getelementptr inbounds ptr, ptr %433, i64 %436
  %438 = load ptr, ptr %437, align 8, !tbaa !9
  %439 = invoke noundef zeroext i1 %432(ptr noundef %438, ptr noundef nonnull align 8 dereferenceable(24) %27)
          to label %440 unwind label %450

440:                                              ; preds = %431
  %441 = load ptr, ptr %26, align 8, !tbaa !9
  %442 = call noundef ptr @_ZNSt6vectorIhSaIhEE4dataEv(ptr noundef nonnull align 8 dereferenceable(24) %27) #11
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %441, ptr align 1 %442, i64 20, i1 false)
  call void @llvm.lifetime.start.p0(i64 16, ptr %28) #11
  %443 = load ptr, ptr %26, align 8, !tbaa !9
  invoke void @_ZN14BufferWithSizeC2EPKhm(ptr noundef nonnull align 8 dereferenceable(16) %28, ptr noundef %443, i64 noundef 20)
          to label %444 unwind label %454

444:                                              ; preds = %440
  %445 = getelementptr inbounds %struct.CreateParameters, ptr %0, i32 0, i32 13
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %445, ptr align 8 %28, i64 16, i1 false), !tbaa.struct !57
  call void @llvm.lifetime.end.p0(i64 16, ptr %28) #11
  call void @_ZNSt6vectorIhSaIhEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %27) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr %27) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #11
  br label %460

446:                                              ; preds = %429
  %447 = landingpad { ptr, i32 }
          cleanup
  %448 = extractvalue { ptr, i32 } %447, 0
  store ptr %448, ptr %14, align 8
  %449 = extractvalue { ptr, i32 } %447, 1
  store i32 %449, ptr %15, align 4
  br label %459

450:                                              ; preds = %431
  %451 = landingpad { ptr, i32 }
          cleanup
  %452 = extractvalue { ptr, i32 } %451, 0
  store ptr %452, ptr %14, align 8
  %453 = extractvalue { ptr, i32 } %451, 1
  store i32 %453, ptr %15, align 4
  br label %458

454:                                              ; preds = %440
  %455 = landingpad { ptr, i32 }
          cleanup
  %456 = extractvalue { ptr, i32 } %455, 0
  store ptr %456, ptr %14, align 8
  %457 = extractvalue { ptr, i32 } %455, 1
  store i32 %457, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %28) #11
  br label %458

458:                                              ; preds = %454, %450
  call void @_ZNSt6vectorIhSaIhEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %27) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr %27) #11
  br label %459

459:                                              ; preds = %458, %446
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #11
  br label %469

460:                                              ; preds = %444, %402
  br label %461

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

462:                                              ; preds = %461, %118
  %463 = load i32, ptr @optind, align 4, !tbaa !5
  %464 = load i32, ptr %7, align 4, !tbaa !5
  %465 = icmp slt i32 %463, %464
  br i1 %465, label %466, label %467

466:                                              ; preds = %462
  call void (ptr, i32, ptr, ...) @_Z10printErrorPKcjS0_z(ptr noundef @__func__._Z10parse_argsiPPc9OperationPFbPKcRSt6vectorIhSaIhEEE, i32 noundef 367, ptr noundef @.str.32)
  br label %467

467:                                              ; preds = %466, %462
  store i1 true, ptr %11, align 1
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr %12) #11
  %468 = load i1, ptr %11, align 1
  br i1 %468, label %471, label %470

469:                                              ; preds = %459, %397, %110, %52
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr %12) #11
  call void @_ZN16CreateParametersD2Ev(ptr noundef nonnull align 8 dereferenceable(208) %0) #11
  br label %472

470:                                              ; preds = %467
  call void @_ZN16CreateParametersD2Ev(ptr noundef nonnull align 8 dereferenceable(208) %0) #11
  br label %471

471:                                              ; preds = %470, %467
  ret void

472:                                              ; preds = %469
  %473 = load ptr, ptr %14, align 8
  %474 = load i32, ptr %15, align 4
  %475 = insertvalue { ptr, i32 } poison, ptr %473, 0
  %476 = insertvalue { ptr, i32 } %475, i32 %474, 1
  resume { ptr, i32 } %476
}

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

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

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

; Function Attrs: noreturn nounwind
declare void @__assert_fail(ptr noundef, ptr noundef, i32 noundef, ptr noundef) #6

declare ptr @zendoo_get_phantom_cert_data_hash() #7

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

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

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

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite)
declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #8

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

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

; Function Attrs: nobuiltin allocsize(0)
declare noundef nonnull ptr @_Znam(i64 noundef) #9

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN16CreateParametersD2Ev(ptr noundef nonnull align 8 dereferenceable(208)) unnamed_addr #10 align 2

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

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

!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 = !{!"_ZTS9Operation", !7, i64 0}
!13 = !{!14, !12, i64 0}
!14 = !{!"_ZTS10Parameters", !12, i64 0, !15, i64 4, !10, i64 8, !16, i64 16, !17, i64 20, !17, i64 21, !6, i64 24, !6, i64 28, !10, i64 32, !10, i64 40, !10, i64 48}
!15 = !{!"_ZTS15TestCircuitType", !7, i64 0}
!16 = !{!"_ZTS13ProvingSystem", !7, i64 0}
!17 = !{!"bool", !7, i64 0}
!18 = !{!7, !7, i64 0}
!19 = !{!14, !17, i64 21}
!20 = !{!14, !10, i64 8}
!21 = !{!14, !16, i64 16}
!22 = !{!14, !6, i64 24}
!23 = !{!14, !6, i64 28}
!24 = !{!14, !17, i64 20}
!25 = !{!26, !17, i64 56}
!26 = !{!"_ZTS16CreateParameters", !14, i64 0, !17, i64 56, !17, i64 57, !10, i64 64, !6, i64 72, !27, i64 80, !10, i64 88, !10, i64 96, !10, i64 104, !27, i64 112, !27, i64 120, !27, i64 128, !10, i64 136, !28, i64 144, !29, i64 160, !33, i64 184}
!27 = !{!"long", !7, i64 0}
!28 = !{!"_ZTS14BufferWithSize", !10, i64 0, !27, i64 8}
!29 = !{!"_ZTSSt6vectorI17backward_transferSaIS0_EE", !30, i64 0}
!30 = !{!"_ZTSSt12_Vector_baseI17backward_transferSaIS0_EE", !31, i64 0}
!31 = !{!"_ZTSNSt12_Vector_baseI17backward_transferSaIS0_EE12_Vector_implE", !32, i64 0}
!32 = !{!"_ZTSNSt12_Vector_baseI17backward_transferSaIS0_EE17_Vector_impl_dataE", !10, i64 0, !10, i64 8, !10, i64 16}
!33 = !{!"_ZTSSt6vectorIP5fieldSaIS1_EE", !34, i64 0}
!34 = !{!"_ZTSSt12_Vector_baseIP5fieldSaIS1_EE", !35, i64 0}
!35 = !{!"_ZTSNSt12_Vector_baseIP5fieldSaIS1_EE12_Vector_implE", !36, i64 0}
!36 = !{!"_ZTSNSt12_Vector_baseIP5fieldSaIS1_EE17_Vector_impl_dataE", !10, i64 0, !10, i64 8, !10, i64 16}
!37 = !{!26, !17, i64 57}
!38 = !{!14, !10, i64 48}
!39 = distinct !{!39, !40}
!40 = !{!"llvm.loop.mustprogress"}
!41 = !{i8 0, i8 2}
!42 = !{}
!43 = !{!14, !15, i64 4}
!44 = !{!14, !10, i64 32}
!45 = !{!14, !10, i64 40}
!46 = !{!26, !10, i64 104}
!47 = !{!26, !6, i64 72}
!48 = !{!26, !27, i64 80}
!49 = !{!26, !27, i64 112}
!50 = !{!26, !27, i64 120}
!51 = !{!27, !27, i64 0}
!52 = !{!53, !27, i64 24}
!53 = !{!"_ZTS17backward_transfer", !7, i64 0, !27, i64 24}
!54 = distinct !{!54, !40}
!55 = distinct !{!55, !40}
!56 = !{!26, !27, i64 128}
!57 = !{i64 0, i64 8, !9, i64 8, i64 8, !51}


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

%struct.CreateParameters = type { %struct.Parameters, i8, i8, ptr, i32, i64, ptr, ptr, ptr, i64, i64, i64, ptr, %struct.BufferWithSize, %"class.std::vector", %"class.std::vector.0" }
%struct.Parameters = type { i32, i32, ptr, i32, i8, i8, i32, i32, ptr, ptr, ptr }
%struct.BufferWithSize = type { ptr, i64 }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<backward_transfer, std::allocator<backward_transfer>>::_Vector_impl" }
%"struct.std::_Vector_base<backward_transfer, std::allocator<backward_transfer>>::_Vector_impl" = type { %"struct.std::_Vector_base<backward_transfer, std::allocator<backward_transfer>>::_Vector_impl_data" }
%"struct.std::_Vector_base<backward_transfer, std::allocator<backward_transfer>>::_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<field *, std::allocator<field *>>::_Vector_impl" }
%"struct.std::_Vector_base<field *, std::allocator<field *>>::_Vector_impl" = type { %"struct.std::_Vector_base<field *, std::allocator<field *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<field *, std::allocator<field *>>::_Vector_impl_data" = type { ptr, ptr, 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.5" = type { i8 }
%"class.std::vector.8" = type { %"struct.std::_Vector_base.9" }
%"struct.std::_Vector_base.9" = 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 }

@.str.24 = external hidden unnamed_addr constant [16 x i8], align 1
@optarg = external local_unnamed_addr global ptr, align 8
@.str.25 = external hidden unnamed_addr constant [21 x i8], align 1
@optind = external local_unnamed_addr global i32, align 4
@.str.26 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [92 x i8], align 1
@__PRETTY_FUNCTION__._Z10parse_argsiPPc9OperationPFbPKcRSt6vectorIhSaIhEEE = external hidden unnamed_addr constant [62 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [23 x i8], align 1
@__func__._Z10parse_argsiPPc9OperationPFbPKcRSt6vectorIhSaIhEEE = external hidden unnamed_addr constant [11 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [44 x i8], align 1

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_Z10printErrorPKcjS0_z(ptr noundef, i32 noundef, ptr noundef, ...) local_unnamed_addr #0

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

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

declare i32 @__gxx_personality_v0(...)

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_Z16get_circuit_typeRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEb(ptr noundef nonnull align 8 dereferenceable(32), i1 noundef zeroext) local_unnamed_addr #2

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_Z10parse_argsiPPc9OperationPFbPKcRSt6vectorIhSaIhEEE(ptr dead_on_unwind noalias nonnull writable sret(%struct.CreateParameters) align 8 %0, i32 noundef %1, ptr noundef %2, i32 noundef %3, ptr nocapture noundef readonly %4) local_unnamed_addr #2 personality ptr @__gxx_personality_v0 {
  %6 = alloca %"class.std::__cxx11::basic_string", align 8
  %7 = alloca %"class.std::allocator.5", align 1
  %8 = alloca %"class.std::vector.8", align 8
  %9 = alloca %"class.std::vector.8", align 8
  %10 = alloca %struct.BufferWithSize, align 8
  tail call void @_ZN16CreateParametersC2Ev(ptr noundef nonnull align 8 dereferenceable(208) %0)
  store i32 %3, ptr %0, align 8, !tbaa !5
  %11 = tail call i32 @getopt(i32 noundef %1, ptr noundef %2, ptr noundef nonnull @.str.24) #12
  %sext100 = shl i32 %11, 24
  %.not101 = icmp eq i32 %sext100, -16777216
  br i1 %.not101, label %._crit_edge.thread, label %.lr.ph

.lr.ph:                                           ; preds = %5
  %12 = getelementptr inbounds i8, ptr %0, i64 48
  %13 = getelementptr inbounds i8, ptr %0, i64 57
  %14 = getelementptr inbounds i8, ptr %0, i64 56
  %15 = getelementptr inbounds i8, ptr %0, i64 20
  %16 = getelementptr inbounds i8, ptr %0, i64 28
  %17 = getelementptr inbounds i8, ptr %0, i64 24
  %18 = getelementptr inbounds i8, ptr %0, i64 8
  %19 = getelementptr inbounds i8, ptr %0, i64 16
  %20 = getelementptr inbounds i8, ptr %0, i64 21
  %21 = getelementptr inbounds i8, ptr %0, i64 88
  br label %22

22:                                               ; preds = %.lr.ph, %46
  %sext103 = phi i32 [ %sext100, %.lr.ph ], [ %sext, %46 ]
  %.0102 = phi ptr [ null, %.lr.ph ], [ %.1, %46 ]
  %23 = ashr exact i32 %sext103, 24
  switch i32 %23, label %46 [
    i32 99, label %24
    i32 107, label %26
    i32 112, label %30
    i32 115, label %33
    i32 110, label %37
    i32 114, label %41
    i32 118, label %42
    i32 122, label %43
    i32 108, label %44
  ]

24:                                               ; preds = %22
  %25 = load ptr, ptr @optarg, align 8, !tbaa !15
  br label %46

26:                                               ; preds = %22
  store i8 1, ptr %20, align 1, !tbaa !16
  %27 = load ptr, ptr @optarg, align 8, !tbaa !15
  %28 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %27, ptr noundef nonnull dereferenceable(1) @.str.25) #13
  %.not94 = icmp eq i32 %28, 0
  br i1 %.not94, label %46, label %29

29:                                               ; preds = %26
  invoke void @_Z11parse_fieldPKcRP5field(ptr noundef %27, ptr noundef nonnull align 8 dereferenceable(8) %21)
          to label %46 unwind label %.loopexit98

.loopexit98:                                      ; preds = %29
  %lpad.loopexit = landingpad { ptr, i32 }
          cleanup
  br label %265

.loopexit.split-lp:                               ; preds = %88, %98, %124, %130, %240
  %lpad.loopexit.split-lp = landingpad { ptr, i32 }
          cleanup
  br label %265

30:                                               ; preds = %22
  %31 = load ptr, ptr @optarg, align 8, !tbaa !15
  store ptr %31, ptr %18, align 8, !tbaa !17
  %32 = tail call noundef i32 @_Z23get_proving_system_typePKc(ptr noundef %31)
  store i32 %32, ptr %19, align 8, !tbaa !18
  br label %46

33:                                               ; preds = %22
  %34 = load ptr, ptr @optarg, align 8, !tbaa !15
  %35 = tail call i64 @strtoull(ptr nocapture noundef %34, ptr noundef null, i32 noundef 0) #12
  %36 = trunc i64 %35 to i32
  store i32 %36, ptr %17, align 8, !tbaa !19
  br label %46

37:                                               ; preds = %22
  %38 = load ptr, ptr @optarg, align 8, !tbaa !15
  %39 = tail call i64 @strtoull(ptr nocapture noundef %38, ptr noundef null, i32 noundef 0) #12
  %40 = trunc i64 %39 to i32
  store i32 %40, ptr %16, align 4, !tbaa !20
  br label %46

41:                                               ; preds = %22
  store i8 1, ptr %15, align 4, !tbaa !21
  br label %46

42:                                               ; preds = %22
  store i8 1, ptr %14, align 8, !tbaa !22
  br label %46

43:                                               ; preds = %22
  store i8 1, ptr %13, align 1, !tbaa !34
  br label %46

44:                                               ; preds = %22
  %45 = load ptr, ptr @optarg, align 8, !tbaa !15
  store ptr %45, ptr %12, align 8, !tbaa !35
  br label %46

46:                                               ; preds = %26, %29, %44, %43, %42, %41, %37, %33, %30, %24, %22
  %.1 = phi ptr [ %.0102, %22 ], [ %.0102, %44 ], [ %.0102, %43 ], [ %.0102, %42 ], [ %.0102, %41 ], [ %.0102, %37 ], [ %.0102, %33 ], [ %.0102, %30 ], [ %.0102, %29 ], [ %.0102, %26 ], [ %25, %24 ]
  %47 = tail call i32 @getopt(i32 noundef %1, ptr noundef %2, ptr noundef nonnull @.str.24) #12
  %sext = shl i32 %47, 24
  %.not = icmp eq i32 %sext, -16777216
  br i1 %.not, label %._crit_edge, label %22, !llvm.loop !36

._crit_edge:                                      ; preds = %46
  %48 = load i32, ptr @optind, align 4, !tbaa !38
  %49 = icmp slt i32 %48, %1
  br i1 %49, label %53, label %52

._crit_edge.thread:                               ; preds = %5
  %50 = load i32, ptr @optind, align 4, !tbaa !38
  %51 = icmp slt i32 %50, %1
  br i1 %51, label %.thread, label %52

52:                                               ; preds = %._crit_edge.thread, %._crit_edge
  tail call void @__assert_fail(ptr noundef nonnull @.str.26, ptr noundef nonnull @.str.27, i32 noundef 268, ptr noundef nonnull @__PRETTY_FUNCTION__._Z10parse_argsiPPc9OperationPFbPKcRSt6vectorIhSaIhEEE) #14
  unreachable

53:                                               ; preds = %._crit_edge
  %.not86 = icmp eq ptr %.1, null
  br i1 %.not86, label %.thread, label %54

54:                                               ; preds = %53
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %6) #12
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %7) #12
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %7) #12
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %6, ptr noundef nonnull %.1, ptr noundef nonnull align 1 dereferenceable(1) %7)
          to label %55 unwind label %62

55:                                               ; preds = %54
  %56 = getelementptr inbounds i8, ptr %0, i64 21
  %57 = load i8, ptr %56, align 1, !tbaa !16, !range !39, !noundef !40
  %58 = trunc nuw i8 %57 to i1
  %59 = invoke noundef i32 @_Z16get_circuit_typeRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEb(ptr noundef nonnull align 8 dereferenceable(32) %6, i1 noundef zeroext %58)
          to label %60 unwind label %64

60:                                               ; preds = %55
  %61 = getelementptr inbounds i8, ptr %0, i64 4
  store i32 %59, ptr %61, align 4, !tbaa !41
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %6) #12
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %7) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %7) #12
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %6) #12
  %.pre = load i32, ptr @optind, align 4, !tbaa !38
  br label %.thread

62:                                               ; preds = %54
  %63 = landingpad { ptr, i32 }
          cleanup
  br label %66

64:                                               ; preds = %55
  %65 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %6) #12
  br label %66

66:                                               ; preds = %64, %62
  %.pn = phi { ptr, i32 } [ %65, %64 ], [ %63, %62 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %7) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %7) #12
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %6) #12
  br label %265

.thread:                                          ; preds = %._crit_edge.thread, %60, %53
  %67 = phi i32 [ %.pre, %60 ], [ %48, %53 ], [ %50, %._crit_edge.thread ]
  %68 = icmp slt i32 %67, %1
  br i1 %68, label %70, label %69

69:                                               ; preds = %.thread
  call void @__assert_fail(ptr noundef nonnull @.str.26, ptr noundef nonnull @.str.27, i32 noundef 273, ptr noundef nonnull @__PRETTY_FUNCTION__._Z10parse_argsiPPc9OperationPFbPKcRSt6vectorIhSaIhEEE) #14
  unreachable

70:                                               ; preds = %.thread
  %71 = add nsw i32 %67, 1
  store i32 %71, ptr @optind, align 4, !tbaa !38
  %72 = sext i32 %67 to i64
  %73 = getelementptr inbounds ptr, ptr %2, i64 %72
  %74 = load ptr, ptr %73, align 8, !tbaa !15
  %75 = getelementptr inbounds i8, ptr %0, i64 32
  store ptr %74, ptr %75, align 8, !tbaa !42
  %76 = icmp eq i32 %3, 1
  br i1 %76, label %77, label %.loopexit

77:                                               ; preds = %70
  %78 = icmp slt i32 %71, %1
  br i1 %78, label %80, label %79

79:                                               ; preds = %77
  call void @__assert_fail(ptr noundef nonnull @.str.26, ptr noundef nonnull @.str.27, i32 noundef 278, ptr noundef nonnull @__PRETTY_FUNCTION__._Z10parse_argsiPPc9OperationPFbPKcRSt6vectorIhSaIhEEE) #14
  unreachable

80:                                               ; preds = %77
  %81 = add nsw i32 %67, 2
  store i32 %81, ptr @optind, align 4, !tbaa !38
  %82 = sext i32 %71 to i64
  %83 = getelementptr inbounds ptr, ptr %2, i64 %82
  %84 = load ptr, ptr %83, align 8, !tbaa !15
  %85 = getelementptr inbounds i8, ptr %0, i64 40
  store ptr %84, ptr %85, align 8, !tbaa !43
  %86 = icmp slt i32 %81, %1
  br i1 %86, label %88, label %87

87:                                               ; preds = %80
  call void @__assert_fail(ptr noundef nonnull @.str.26, ptr noundef nonnull @.str.27, i32 noundef 282, ptr noundef nonnull @__PRETTY_FUNCTION__._Z10parse_argsiPPc9OperationPFbPKcRSt6vectorIhSaIhEEE) #14
  unreachable

88:                                               ; preds = %80
  %89 = add nsw i32 %67, 3
  store i32 %89, ptr @optind, align 4, !tbaa !38
  %90 = sext i32 %81 to i64
  %91 = getelementptr inbounds ptr, ptr %2, i64 %90
  %92 = load ptr, ptr %91, align 8, !tbaa !15
  %93 = getelementptr inbounds i8, ptr %0, i64 64
  invoke void @_Z11parse_fieldPKcRP5field(ptr noundef %92, ptr noundef nonnull align 8 dereferenceable(8) %93)
          to label %94 unwind label %.loopexit.split-lp

94:                                               ; preds = %88
  %95 = load i32, ptr @optind, align 4, !tbaa !38
  %96 = icmp slt i32 %95, %1
  br i1 %96, label %98, label %97

97:                                               ; preds = %94
  call void @__assert_fail(ptr noundef nonnull @.str.26, ptr noundef nonnull @.str.27, i32 noundef 286, ptr noundef nonnull @__PRETTY_FUNCTION__._Z10parse_argsiPPc9OperationPFbPKcRSt6vectorIhSaIhEEE) #14
  unreachable

98:                                               ; preds = %94
  %99 = add nsw i32 %95, 1
  store i32 %99, ptr @optind, align 4, !tbaa !38
  %100 = sext i32 %95 to i64
  %101 = getelementptr inbounds ptr, ptr %2, i64 %100
  %102 = load ptr, ptr %101, align 8, !tbaa !15
  %103 = getelementptr inbounds i8, ptr %0, i64 96
  invoke void @_Z11parse_fieldPKcRP5field(ptr noundef %102, ptr noundef nonnull align 8 dereferenceable(8) %103)
          to label %104 unwind label %.loopexit.split-lp

104:                                              ; preds = %98
  %105 = load i32, ptr @optind, align 4, !tbaa !38
  %106 = icmp slt i32 %105, %1
  br i1 %106, label %108, label %107

107:                                              ; preds = %104
  call void @__assert_fail(ptr noundef nonnull @.str.26, ptr noundef nonnull @.str.27, i32 noundef 290, ptr noundef nonnull @__PRETTY_FUNCTION__._Z10parse_argsiPPc9OperationPFbPKcRSt6vectorIhSaIhEEE) #14
  unreachable

108:                                              ; preds = %104
  %109 = sext i32 %105 to i64
  %110 = getelementptr inbounds ptr, ptr %2, i64 %109
  %111 = load ptr, ptr %110, align 8, !tbaa !15
  %112 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %111, ptr noundef nonnull dereferenceable(1) @.str.28) #13
  %113 = icmp eq i32 %112, 0
  br i1 %113, label %114, label %116

114:                                              ; preds = %108
  %115 = getelementptr inbounds i8, ptr %0, i64 104
  store ptr null, ptr %115, align 8, !tbaa !44
  br label %132

116:                                              ; preds = %108
  %117 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %111, ptr noundef nonnull dereferenceable(1) @.str.29) #13
  %118 = icmp eq i32 %117, 0
  br i1 %118, label %119, label %121

119:                                              ; preds = %116
  %120 = getelementptr inbounds i8, ptr %0, i64 104
  store ptr null, ptr %120, align 8, !tbaa !44
  br label %132

121:                                              ; preds = %116
  %122 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %111, ptr noundef nonnull dereferenceable(1) @.str.30) #13
  %123 = icmp eq i32 %122, 0
  br i1 %123, label %124, label %130

124:                                              ; preds = %121
  %125 = invoke ptr @zendoo_get_phantom_cert_data_hash()
          to label %126 unwind label %.loopexit.split-lp

126:                                              ; preds = %124
  %127 = getelementptr inbounds i8, ptr %0, i64 104
  store ptr %125, ptr %127, align 8, !tbaa !44
  %128 = icmp eq ptr %125, null
  br i1 %128, label %129, label %132

129:                                              ; preds = %126
  call void (ptr, i32, ptr, ...) @_Z10printErrorPKcjS0_z(ptr noundef nonnull @__func__._Z10parse_argsiPPc9OperationPFbPKcRSt6vectorIhSaIhEEE, i32 noundef 298, ptr noundef nonnull @.str.31)
  br label %132

130:                                              ; preds = %121
  %131 = getelementptr inbounds i8, ptr %0, i64 104
  invoke void @_Z11parse_fieldPKcRP5field(ptr noundef %111, ptr noundef nonnull align 8 dereferenceable(8) %131)
          to label %132 unwind label %.loopexit.split-lp

132:                                              ; preds = %119, %130, %126, %129, %114
  %133 = load i32, ptr @optind, align 4, !tbaa !38
  %134 = add nsw i32 %133, 1
  store i32 %134, ptr @optind, align 4, !tbaa !38
  %135 = getelementptr inbounds i8, ptr %0, i64 4
  %136 = load i32, ptr %135, align 4
  %137 = add i32 %136, -1
  %or.cond = icmp ult i32 %137, 2
  br i1 %or.cond, label %138, label %228

138:                                              ; preds = %132
  %139 = icmp slt i32 %134, %1
  br i1 %139, label %141, label %140

140:                                              ; preds = %138
  call void @__assert_fail(ptr noundef nonnull @.str.26, ptr noundef nonnull @.str.27, i32 noundef 308, ptr noundef nonnull @__PRETTY_FUNCTION__._Z10parse_argsiPPc9OperationPFbPKcRSt6vectorIhSaIhEEE) #14
  unreachable

141:                                              ; preds = %138
  %142 = add nsw i32 %133, 2
  store i32 %142, ptr @optind, align 4, !tbaa !38
  %143 = sext i32 %134 to i64
  %144 = getelementptr inbounds ptr, ptr %2, i64 %143
  %145 = load ptr, ptr %144, align 8, !tbaa !15
  %146 = call i64 @strtoull(ptr nocapture noundef %145, ptr noundef null, i32 noundef 0) #12
  %147 = trunc i64 %146 to i32
  %148 = getelementptr inbounds i8, ptr %0, i64 72
  store i32 %147, ptr %148, align 8, !tbaa !45
  %149 = load i32, ptr @optind, align 4, !tbaa !38
  %150 = icmp slt i32 %149, %1
  br i1 %150, label %152, label %151

151:                                              ; preds = %141
  call void @__assert_fail(ptr noundef nonnull @.str.26, ptr noundef nonnull @.str.27, i32 noundef 312, ptr noundef nonnull @__PRETTY_FUNCTION__._Z10parse_argsiPPc9OperationPFbPKcRSt6vectorIhSaIhEEE) #14
  unreachable

152:                                              ; preds = %141
  %153 = add nsw i32 %149, 1
  store i32 %153, ptr @optind, align 4, !tbaa !38
  %154 = sext i32 %149 to i64
  %155 = getelementptr inbounds ptr, ptr %2, i64 %154
  %156 = load ptr, ptr %155, align 8, !tbaa !15
  %157 = call i64 @strtoull(ptr nocapture noundef %156, ptr noundef null, i32 noundef 0) #12
  %158 = getelementptr inbounds i8, ptr %0, i64 80
  store i64 %157, ptr %158, align 8, !tbaa !46
  %159 = load i32, ptr @optind, align 4, !tbaa !38
  %160 = icmp slt i32 %159, %1
  br i1 %160, label %162, label %161

161:                                              ; preds = %152
  call void @__assert_fail(ptr noundef nonnull @.str.26, ptr noundef nonnull @.str.27, i32 noundef 316, ptr noundef nonnull @__PRETTY_FUNCTION__._Z10parse_argsiPPc9OperationPFbPKcRSt6vectorIhSaIhEEE) #14
  unreachable

162:                                              ; preds = %152
  %163 = add nsw i32 %159, 1
  store i32 %163, ptr @optind, align 4, !tbaa !38
  %164 = sext i32 %159 to i64
  %165 = getelementptr inbounds ptr, ptr %2, i64 %164
  %166 = load ptr, ptr %165, align 8, !tbaa !15
  %167 = call i64 @strtoull(ptr nocapture noundef %166, ptr noundef null, i32 noundef 0) #12
  %168 = getelementptr inbounds i8, ptr %0, i64 112
  store i64 %167, ptr %168, align 8, !tbaa !47
  %169 = load i32, ptr @optind, align 4, !tbaa !38
  %170 = icmp slt i32 %169, %1
  br i1 %170, label %172, label %171

171:                                              ; preds = %162
  call void @__assert_fail(ptr noundef nonnull @.str.26, ptr noundef nonnull @.str.27, i32 noundef 320, ptr noundef nonnull @__PRETTY_FUNCTION__._Z10parse_argsiPPc9OperationPFbPKcRSt6vectorIhSaIhEEE) #14
  unreachable

172:                                              ; preds = %162
  %173 = add nsw i32 %169, 1
  store i32 %173, ptr @optind, align 4, !tbaa !38
  %174 = sext i32 %169 to i64
  %175 = getelementptr inbounds ptr, ptr %2, i64 %174
  %176 = load ptr, ptr %175, align 8, !tbaa !15
  %177 = call i64 @strtoull(ptr nocapture noundef %176, ptr noundef null, i32 noundef 0) #12
  %178 = getelementptr inbounds i8, ptr %0, i64 120
  store i64 %177, ptr %178, align 8, !tbaa !48
  %179 = load i32, ptr @optind, align 4, !tbaa !38
  %180 = add nsw i32 %179, 1
  store i32 %180, ptr @optind, align 4, !tbaa !38
  %181 = sext i32 %179 to i64
  %182 = getelementptr inbounds ptr, ptr %2, i64 %181
  %183 = load ptr, ptr %182, align 8, !tbaa !15
  %184 = call i64 @strtoull(ptr nocapture noundef %183, ptr noundef null, i32 noundef 0) #12
  %185 = getelementptr inbounds i8, ptr %0, i64 160
  %186 = and i64 %184, 4294967295
  invoke void @_ZNSt6vectorI17backward_transferSaIS0_EE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %185, i64 noundef %186)
          to label %.preheader97 unwind label %197

.preheader97:                                     ; preds = %172
  %187 = and i64 %184, 4294967295
  %.not109 = icmp eq i64 %187, 0
  br i1 %.not109, label %._crit_edge106, label %.lr.ph105.preheader

.lr.ph105.preheader:                              ; preds = %.preheader97
  %wide.trip.count = and i64 %184, 4294967295
  br label %.lr.ph105

._crit_edge106:                                   ; preds = %206, %.preheader97
  %188 = load i32, ptr @optind, align 4, !tbaa !38
  %189 = add nsw i32 %188, 1
  store i32 %189, ptr @optind, align 4, !tbaa !38
  %190 = sext i32 %188 to i64
  %191 = getelementptr inbounds ptr, ptr %2, i64 %190
  %192 = load ptr, ptr %191, align 8, !tbaa !15
  %193 = call i64 @strtoull(ptr nocapture noundef %192, ptr noundef null, i32 noundef 0) #12
  %194 = getelementptr inbounds i8, ptr %0, i64 184
  %195 = and i64 %193, 4294967295
  invoke void @_ZNSt6vectorIP5fieldSaIS1_EE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %194, i64 noundef %195)
          to label %.preheader unwind label %217

.preheader:                                       ; preds = %._crit_edge106
  %196 = and i64 %193, 4294967295
  %.not110 = icmp eq i64 %196, 0
  br i1 %.not110, label %.loopexit, label %.lr.ph108.preheader

.lr.ph108.preheader:                              ; preds = %.preheader
  %wide.trip.count115 = and i64 %193, 4294967295
  br label %.lr.ph108

197:                                              ; preds = %172
  %198 = landingpad { ptr, i32 }
          cleanup
  br label %265

.lr.ph105:                                        ; preds = %.lr.ph105.preheader, %206
  %indvars.iv = phi i64 [ 0, %.lr.ph105.preheader ], [ %indvars.iv.next, %206 ]
  %199 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorI17backward_transferSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %185, i64 noundef %indvars.iv) #12
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %8) #12
  call void @_ZNSt6vectorIhSaIhEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %8) #12
  %200 = load i32, ptr @optind, align 4, !tbaa !38
  %201 = add nsw i32 %200, 1
  store i32 %201, ptr @optind, align 4, !tbaa !38
  %202 = sext i32 %200 to i64
  %203 = getelementptr inbounds ptr, ptr %2, i64 %202
  %204 = load ptr, ptr %203, align 8, !tbaa !15
  %205 = invoke noundef zeroext i1 %4(ptr noundef %204, ptr noundef nonnull align 8 dereferenceable(24) %8)
          to label %206 unwind label %215

206:                                              ; preds = %.lr.ph105
  %207 = call noundef ptr @_ZNSt6vectorIhSaIhEE4dataEv(ptr noundef nonnull align 8 dereferenceable(24) %8) #12
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(20) %199, ptr noundef nonnull align 1 dereferenceable(20) %207, i64 20, i1 false)
  %208 = load i32, ptr @optind, align 4, !tbaa !38
  %209 = add nsw i32 %208, 1
  store i32 %209, ptr @optind, align 4, !tbaa !38
  %210 = sext i32 %208 to i64
  %211 = getelementptr inbounds ptr, ptr %2, i64 %210
  %212 = load ptr, ptr %211, align 8, !tbaa !15
  %213 = call i64 @strtoull(ptr nocapture noundef %212, ptr noundef null, i32 noundef 0) #12
  %214 = getelementptr inbounds i8, ptr %199, i64 24
  store i64 %213, ptr %214, align 8, !tbaa !49
  call void @_ZNSt6vectorIhSaIhEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %8) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %8) #12
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count
  br i1 %exitcond.not, label %._crit_edge106, label %.lr.ph105, !llvm.loop !51

215:                                              ; preds = %.lr.ph105
  %216 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorIhSaIhEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %8) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %8) #12
  br label %265

217:                                              ; preds = %._crit_edge106
  %218 = landingpad { ptr, i32 }
          cleanup
  br label %265

.lr.ph108:                                        ; preds = %.lr.ph108.preheader, %225
  %indvars.iv112 = phi i64 [ 0, %.lr.ph108.preheader ], [ %indvars.iv.next113, %225 ]
  %219 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP5fieldSaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %194, i64 noundef %indvars.iv112) #12
  %220 = load i32, ptr @optind, align 4, !tbaa !38
  %221 = add nsw i32 %220, 1
  store i32 %221, ptr @optind, align 4, !tbaa !38
  %222 = sext i32 %220 to i64
  %223 = getelementptr inbounds ptr, ptr %2, i64 %222
  %224 = load ptr, ptr %223, align 8, !tbaa !15
  invoke void @_Z11parse_fieldPKcRP5field(ptr noundef %224, ptr noundef nonnull align 8 dereferenceable(8) %219)
          to label %225 unwind label %226

225:                                              ; preds = %.lr.ph108
  %indvars.iv.next113 = add nuw nsw i64 %indvars.iv112, 1
  %exitcond116.not = icmp eq i64 %indvars.iv.next113, %wide.trip.count115
  br i1 %exitcond116.not, label %.loopexit, label %.lr.ph108, !llvm.loop !52

226:                                              ; preds = %.lr.ph108
  %227 = landingpad { ptr, i32 }
          cleanup
  br label %265

228:                                              ; preds = %132
  %229 = add i32 %136, -3
  %or.cond5 = icmp ult i32 %229, 2
  br i1 %or.cond5, label %230, label %.loopexit

230:                                              ; preds = %228
  %231 = add nsw i32 %133, 2
  store i32 %231, ptr @optind, align 4, !tbaa !38
  %232 = sext i32 %134 to i64
  %233 = getelementptr inbounds ptr, ptr %2, i64 %232
  %234 = load ptr, ptr %233, align 8, !tbaa !15
  %235 = call i64 @strtoull(ptr nocapture noundef %234, ptr noundef null, i32 noundef 0) #12
  %236 = getelementptr inbounds i8, ptr %0, i64 128
  store i64 %235, ptr %236, align 8, !tbaa !53
  %237 = load i32, ptr @optind, align 4, !tbaa !38
  %238 = icmp slt i32 %237, %1
  br i1 %238, label %240, label %239

239:                                              ; preds = %230
  call void @__assert_fail(ptr noundef nonnull @.str.26, ptr noundef nonnull @.str.27, i32 noundef 354, ptr noundef nonnull @__PRETTY_FUNCTION__._Z10parse_argsiPPc9OperationPFbPKcRSt6vectorIhSaIhEEE) #14
  unreachable

240:                                              ; preds = %230
  %241 = add nsw i32 %237, 1
  store i32 %241, ptr @optind, align 4, !tbaa !38
  %242 = sext i32 %237 to i64
  %243 = getelementptr inbounds ptr, ptr %2, i64 %242
  %244 = load ptr, ptr %243, align 8, !tbaa !15
  %245 = getelementptr inbounds i8, ptr %0, i64 136
  invoke void @_Z11parse_fieldPKcRP5field(ptr noundef %244, ptr noundef nonnull align 8 dereferenceable(8) %245)
          to label %246 unwind label %.loopexit.split-lp

246:                                              ; preds = %240
  %247 = invoke noalias noundef nonnull dereferenceable(20) ptr @_Znam(i64 noundef 20) #15
          to label %248 unwind label %258

248:                                              ; preds = %246
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %9) #12
  call void @_ZNSt6vectorIhSaIhEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %9) #12
  %249 = load i32, ptr @optind, align 4, !tbaa !38
  %250 = add nsw i32 %249, 1
  store i32 %250, ptr @optind, align 4, !tbaa !38
  %251 = sext i32 %249 to i64
  %252 = getelementptr inbounds ptr, ptr %2, i64 %251
  %253 = load ptr, ptr %252, align 8, !tbaa !15
  %254 = invoke noundef zeroext i1 %4(ptr noundef %253, ptr noundef nonnull align 8 dereferenceable(24) %9)
          to label %255 unwind label %260

255:                                              ; preds = %248
  %256 = call noundef ptr @_ZNSt6vectorIhSaIhEE4dataEv(ptr noundef nonnull align 8 dereferenceable(24) %9) #12
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(20) %247, ptr noundef nonnull align 1 dereferenceable(20) %256, i64 20, i1 false)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %10) #12
  call void @_ZN14BufferWithSizeC2EPKhm(ptr noundef nonnull align 8 dereferenceable(16) %10, ptr noundef nonnull %247, i64 noundef 20)
  %257 = getelementptr inbounds i8, ptr %0, i64 144
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %257, ptr noundef nonnull align 8 dereferenceable(16) %10, i64 16, i1 false), !tbaa.struct !54
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %10) #12
  call void @_ZNSt6vectorIhSaIhEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %9) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %9) #12
  br label %.loopexit

258:                                              ; preds = %246
  %259 = landingpad { ptr, i32 }
          cleanup
  br label %265

260:                                              ; preds = %248
  %261 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorIhSaIhEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %9) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %9) #12
  br label %265

.loopexit:                                        ; preds = %225, %.preheader, %228, %255, %70
  %262 = load i32, ptr @optind, align 4, !tbaa !38
  %263 = icmp slt i32 %262, %1
  br i1 %263, label %264, label %266

264:                                              ; preds = %.loopexit
  call void (ptr, i32, ptr, ...) @_Z10printErrorPKcjS0_z(ptr noundef nonnull @__func__._Z10parse_argsiPPc9OperationPFbPKcRSt6vectorIhSaIhEEE, i32 noundef 367, ptr noundef nonnull @.str.32)
  br label %266

265:                                              ; preds = %.loopexit98, %.loopexit.split-lp, %258, %260, %197, %215, %226, %217, %66
  %.pn95 = phi { ptr, i32 } [ %.pn, %66 ], [ %216, %215 ], [ %198, %197 ], [ %227, %226 ], [ %218, %217 ], [ %261, %260 ], [ %259, %258 ], [ %lpad.loopexit, %.loopexit98 ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ]
  call void @_ZN16CreateParametersD2Ev(ptr noundef nonnull align 8 dereferenceable(208) %0) #12
  resume { ptr, i32 } %.pn95

266:                                              ; preds = %.loopexit, %264
  ret void
}

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

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

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

; Function Attrs: noreturn nounwind
declare void @__assert_fail(ptr noundef, ptr noundef, i32 noundef, ptr noundef) local_unnamed_addr #7

declare ptr @zendoo_get_phantom_cert_data_hash() local_unnamed_addr #8

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

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

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

; Function Attrs: mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite)
declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #9

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

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

; Function Attrs: nobuiltin allocsize(0)
declare noundef nonnull ptr @_Znam(i64 noundef) local_unnamed_addr #10

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

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !7, i64 0}
!6 = !{!"_ZTS10Parameters", !7, i64 0, !10, i64 4, !11, i64 8, !12, i64 16, !13, i64 20, !13, i64 21, !14, i64 24, !14, i64 28, !11, i64 32, !11, i64 40, !11, i64 48}
!7 = !{!"_ZTS9Operation", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C++ TBAA"}
!10 = !{!"_ZTS15TestCircuitType", !8, i64 0}
!11 = !{!"any pointer", !8, i64 0}
!12 = !{!"_ZTS13ProvingSystem", !8, i64 0}
!13 = !{!"bool", !8, i64 0}
!14 = !{!"int", !8, i64 0}
!15 = !{!11, !11, i64 0}
!16 = !{!6, !13, i64 21}
!17 = !{!6, !11, i64 8}
!18 = !{!6, !12, i64 16}
!19 = !{!6, !14, i64 24}
!20 = !{!6, !14, i64 28}
!21 = !{!6, !13, i64 20}
!22 = !{!23, !13, i64 56}
!23 = !{!"_ZTS16CreateParameters", !6, i64 0, !13, i64 56, !13, i64 57, !11, i64 64, !14, i64 72, !24, i64 80, !11, i64 88, !11, i64 96, !11, i64 104, !24, i64 112, !24, i64 120, !24, i64 128, !11, i64 136, !25, i64 144, !26, i64 160, !30, i64 184}
!24 = !{!"long", !8, i64 0}
!25 = !{!"_ZTS14BufferWithSize", !11, i64 0, !24, i64 8}
!26 = !{!"_ZTSSt6vectorI17backward_transferSaIS0_EE", !27, i64 0}
!27 = !{!"_ZTSSt12_Vector_baseI17backward_transferSaIS0_EE", !28, i64 0}
!28 = !{!"_ZTSNSt12_Vector_baseI17backward_transferSaIS0_EE12_Vector_implE", !29, i64 0}
!29 = !{!"_ZTSNSt12_Vector_baseI17backward_transferSaIS0_EE17_Vector_impl_dataE", !11, i64 0, !11, i64 8, !11, i64 16}
!30 = !{!"_ZTSSt6vectorIP5fieldSaIS1_EE", !31, i64 0}
!31 = !{!"_ZTSSt12_Vector_baseIP5fieldSaIS1_EE", !32, i64 0}
!32 = !{!"_ZTSNSt12_Vector_baseIP5fieldSaIS1_EE12_Vector_implE", !33, i64 0}
!33 = !{!"_ZTSNSt12_Vector_baseIP5fieldSaIS1_EE17_Vector_impl_dataE", !11, i64 0, !11, i64 8, !11, i64 16}
!34 = !{!23, !13, i64 57}
!35 = !{!6, !11, i64 48}
!36 = distinct !{!36, !37}
!37 = !{!"llvm.loop.mustprogress"}
!38 = !{!14, !14, i64 0}
!39 = !{i8 0, i8 2}
!40 = !{}
!41 = !{!6, !10, i64 4}
!42 = !{!6, !11, i64 32}
!43 = !{!6, !11, i64 40}
!44 = !{!23, !11, i64 104}
!45 = !{!23, !14, i64 72}
!46 = !{!23, !24, i64 80}
!47 = !{!23, !24, i64 112}
!48 = !{!23, !24, i64 120}
!49 = !{!50, !24, i64 24}
!50 = !{!"_ZTS17backward_transfer", !8, i64 0, !24, i64 24}
!51 = distinct !{!51, !37}
!52 = distinct !{!52, !37}
!53 = !{!23, !24, i64 128}
!54 = !{i64 0, i64 8, !15, i64 8, i64 8, !55}
!55 = !{!24, !24, i64 0}


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