; LLVM IR from fritzsedlazeck/SURVIVOR :: src/simulator (SV_Simulator)

; 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.parameter = type { i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i8, float }
%struct.position = type { %"class.std::__cxx11::basic_string", i32, i32 }
%"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::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<struct_var, std::allocator<struct_var>>::_Vector_impl" }
%"struct.std::_Vector_base<struct_var, std::allocator<struct_var>>::_Vector_impl" = type { %"struct.std::_Vector_base<struct_var, std::allocator<struct_var>>::_Vector_impl_data" }
%"struct.std::_Vector_base<struct_var, std::allocator<struct_var>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%struct.struct_var = type { i32, %struct.position, %struct.position, %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", i8, i32 }
%"class.std::map" = type { %"class.std::_Rb_tree" }
%"class.std::_Rb_tree" = type { %"struct.std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char>>, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char>>>, std::less<std::__cxx11::basic_string<char>>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char>>, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char>>>, std::less<std::__cxx11::basic_string<char>>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"struct.std::_Rb_tree_header" = type { %"struct.std::_Rb_tree_node_base", i64 }
%"struct.std::_Rb_tree_node_base" = type { i32, ptr, ptr, ptr }

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z11parse_paramNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind noalias writable sret(%struct.parameter) align 4, ptr noundef) #1

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

declare i32 @__gxx_personality_v0(...)

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

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

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

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

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

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

; Function Attrs: nounwind
declare i32 @rand() #3

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z10choose_posSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_St4lessIS5_ESaISt4pairIKS5_S5_EEEiiRSt6vectorI10struct_varSaISE_EE(ptr dead_on_unwind noalias writable sret(%struct.position) align 8, ptr noundef, i32 noundef, i32 noundef, ptr noundef nonnull align 8 dereferenceable(24)) #1

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(40) ptr @_ZN8positionaSEOS_(ptr noundef nonnull align 8 dereferenceable(40), ptr noundef nonnull align 8 dereferenceable(40)) #4 align 2

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(40) ptr @_ZN8positionaSERKS_(ptr noundef nonnull align 8 dereferenceable(40), ptr noundef nonnull align 8 dereferenceable(40)) #6 align 2

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_Z22generate_mutations_refNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt3mapIS4_S4_St4lessIS4_ESaISt4pairIKS4_S4_EEE(ptr dead_on_unwind noalias writable sret(%"class.std::vector") align 8 %0, ptr noundef %1, ptr noundef %2) #1 personality ptr @__gxx_personality_v0 {
  %4 = alloca ptr, align 8
  %5 = alloca ptr, align 8
  %6 = alloca ptr, align 8
  %7 = alloca %struct.parameter, align 4
  %8 = alloca %"class.std::__cxx11::basic_string", align 8
  %9 = alloca ptr, align 8
  %10 = alloca i32, align 4
  %11 = alloca i1, align 1
  %12 = alloca %struct.struct_var, align 8
  %13 = alloca i32, align 4
  %14 = alloca %struct.position, align 8
  %15 = alloca %"class.std::map", align 8
  %16 = alloca i32, align 4
  %17 = alloca %struct.position, align 8
  %18 = alloca %"class.std::map", align 8
  %19 = alloca i32, align 4
  %20 = alloca %struct.position, align 8
  %21 = alloca %"class.std::map", align 8
  %22 = alloca %struct.position, align 8
  %23 = alloca %"class.std::map", align 8
  %24 = alloca %struct.position, align 8
  %25 = alloca %"class.std::map", align 8
  %26 = alloca i32, align 4
  %27 = alloca i32, align 4
  store ptr %0, ptr %4, align 8
  store ptr %1, ptr %5, align 8, !tbaa !5
  store ptr %2, ptr %6, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 96, ptr %7) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %8, ptr noundef nonnull align 8 dereferenceable(32) %1)
  invoke void @_Z11parse_paramNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%struct.parameter) align 4 %7, ptr noundef %8)
          to label %28 unwind label %35

28:                                               ; preds = %3
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %8) #7
  store i1 false, ptr %11, align 1
  call void @_ZNSt6vectorI10struct_varSaIS0_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %0) #7
  call void @llvm.lifetime.start.p0(i64 160, ptr %12) #7
  call void @_ZN10struct_varC2Ev(ptr noundef nonnull align 8 dereferenceable(160) %12) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #7
  store i32 0, ptr %13, align 4, !tbaa !9
  br label %29

29:                                               ; preds = %62, %28
  %30 = load i32, ptr %13, align 4, !tbaa !9
  %31 = getelementptr inbounds %struct.parameter, ptr %7, i32 0, i32 6
  %32 = load i32, ptr %31, align 4, !tbaa !11
  %33 = icmp slt i32 %30, %32
  br i1 %33, label %39, label %34

34:                                               ; preds = %29
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #7
  br label %79

35:                                               ; preds = %3
  %36 = landingpad { ptr, i32 }
          cleanup
  %37 = extractvalue { ptr, i32 } %36, 0
  store ptr %37, ptr %9, align 8
  %38 = extractvalue { ptr, i32 } %36, 1
  store i32 %38, ptr %10, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %8) #7
  br label %269

39:                                               ; preds = %29
  %40 = call i32 @rand() #7
  %41 = srem i32 %40, 100
  %42 = icmp sle i32 %41, 50
  br i1 %42, label %43, label %45

43:                                               ; preds = %39
  %44 = getelementptr inbounds %struct.struct_var, ptr %12, i32 0, i32 0
  store i32 1, ptr %44, align 8, !tbaa !15
  br label %47

45:                                               ; preds = %39
  %46 = getelementptr inbounds %struct.struct_var, ptr %12, i32 0, i32 0
  store i32 4, ptr %46, align 8, !tbaa !15
  br label %47

47:                                               ; preds = %45, %43
  call void @llvm.lifetime.start.p0(i64 40, ptr %14) #7
  invoke void @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_St4lessIS5_ESaISt4pairIKS5_S5_EEEC2ERKSC_(ptr noundef nonnull align 8 dereferenceable(48) %15, ptr noundef nonnull align 8 dereferenceable(48) %2)
          to label %48 unwind label %65

48:                                               ; preds = %47
  %49 = getelementptr inbounds %struct.parameter, ptr %7, i32 0, i32 4
  %50 = load i32, ptr %49, align 4, !tbaa !21
  %51 = getelementptr inbounds %struct.parameter, ptr %7, i32 0, i32 5
  %52 = load i32, ptr %51, align 4, !tbaa !22
  invoke void @_Z10choose_posSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_St4lessIS5_ESaISt4pairIKS5_S5_EEEiiRSt6vectorI10struct_varSaISE_EE(ptr dead_on_unwind writable sret(%struct.position) align 8 %14, ptr noundef %15, i32 noundef %50, i32 noundef %52, ptr noundef nonnull align 8 dereferenceable(24) %0)
          to label %53 unwind label %69

53:                                               ; preds = %48
  %54 = getelementptr inbounds %struct.struct_var, ptr %12, i32 0, i32 1
  %55 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZN8positionaSEOS_(ptr noundef nonnull align 8 dereferenceable(40) %54, ptr noundef nonnull align 8 dereferenceable(40) %14) #7
  call void @_ZN8positionD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %14) #7
  call void @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_St4lessIS5_ESaISt4pairIKS5_S5_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %15) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr %14) #7
  %56 = getelementptr inbounds %struct.struct_var, ptr %12, i32 0, i32 1
  %57 = getelementptr inbounds %struct.struct_var, ptr %12, i32 0, i32 2
  %58 = invoke noundef nonnull align 8 dereferenceable(40) ptr @_ZN8positionaSERKS_(ptr noundef nonnull align 8 dereferenceable(40) %57, ptr noundef nonnull align 8 dereferenceable(40) %56)
          to label %59 unwind label %74

59:                                               ; preds = %53
  %60 = getelementptr inbounds %struct.struct_var, ptr %12, i32 0, i32 6
  store i32 1, ptr %60, align 4, !tbaa !23
  invoke void @_ZNSt6vectorI10struct_varSaIS0_EE9push_backERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr noundef nonnull align 8 dereferenceable(160) %12)
          to label %61 unwind label %74

61:                                               ; preds = %59
  br label %62

62:                                               ; preds = %61
  %63 = load i32, ptr %13, align 4, !tbaa !9
  %64 = add nsw i32 %63, 1
  store i32 %64, ptr %13, align 4, !tbaa !9
  br label %29, !llvm.loop !24

65:                                               ; preds = %47
  %66 = landingpad { ptr, i32 }
          cleanup
  %67 = extractvalue { ptr, i32 } %66, 0
  store ptr %67, ptr %9, align 8
  %68 = extractvalue { ptr, i32 } %66, 1
  store i32 %68, ptr %10, align 4
  br label %73

69:                                               ; preds = %48
  %70 = landingpad { ptr, i32 }
          cleanup
  %71 = extractvalue { ptr, i32 } %70, 0
  store ptr %71, ptr %9, align 8
  %72 = extractvalue { ptr, i32 } %70, 1
  store i32 %72, ptr %10, align 4
  call void @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_St4lessIS5_ESaISt4pairIKS5_S5_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %15) #7
  br label %73

73:                                               ; preds = %69, %65
  call void @llvm.lifetime.end.p0(i64 40, ptr %14) #7
  br label %78

74:                                               ; preds = %59, %53
  %75 = landingpad { ptr, i32 }
          cleanup
  %76 = extractvalue { ptr, i32 } %75, 0
  store ptr %76, ptr %9, align 8
  %77 = extractvalue { ptr, i32 } %75, 1
  store i32 %77, ptr %10, align 4
  br label %78

78:                                               ; preds = %74, %73
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #7
  br label %266

79:                                               ; preds = %34
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #7
  store i32 0, ptr %16, align 4, !tbaa !9
  br label %80

80:                                               ; preds = %112, %79
  %81 = load i32, ptr %16, align 4, !tbaa !9
  %82 = getelementptr inbounds %struct.parameter, ptr %7, i32 0, i32 12
  %83 = load i32, ptr %82, align 4, !tbaa !26
  %84 = icmp slt i32 %81, %83
  br i1 %84, label %86, label %85

85:                                               ; preds = %80
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #7
  br label %129

86:                                               ; preds = %80
  %87 = getelementptr inbounds %struct.struct_var, ptr %12, i32 0, i32 0
  store i32 2, ptr %87, align 8, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 40, ptr %17) #7
  invoke void @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_St4lessIS5_ESaISt4pairIKS5_S5_EEEC2ERKSC_(ptr noundef nonnull align 8 dereferenceable(48) %18, ptr noundef nonnull align 8 dereferenceable(48) %2)
          to label %88 unwind label %115

88:                                               ; preds = %86
  %89 = getelementptr inbounds %struct.parameter, ptr %7, i32 0, i32 10
  %90 = load i32, ptr %89, align 4, !tbaa !27
  %91 = getelementptr inbounds %struct.parameter, ptr %7, i32 0, i32 11
  %92 = load i32, ptr %91, align 4, !tbaa !28
  invoke void @_Z10choose_posSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_St4lessIS5_ESaISt4pairIKS5_S5_EEEiiRSt6vectorI10struct_varSaISE_EE(ptr dead_on_unwind writable sret(%struct.position) align 8 %17, ptr noundef %18, i32 noundef %90, i32 noundef %92, ptr noundef nonnull align 8 dereferenceable(24) %0)
          to label %93 unwind label %119

93:                                               ; preds = %88
  %94 = getelementptr inbounds %struct.struct_var, ptr %12, i32 0, i32 1
  %95 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZN8positionaSEOS_(ptr noundef nonnull align 8 dereferenceable(40) %94, ptr noundef nonnull align 8 dereferenceable(40) %17) #7
  call void @_ZN8positionD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %17) #7
  call void @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_St4lessIS5_ESaISt4pairIKS5_S5_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %18) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr %17) #7
  %96 = getelementptr inbounds %struct.struct_var, ptr %12, i32 0, i32 1
  %97 = getelementptr inbounds %struct.struct_var, ptr %12, i32 0, i32 2
  %98 = invoke noundef nonnull align 8 dereferenceable(40) ptr @_ZN8positionaSERKS_(ptr noundef nonnull align 8 dereferenceable(40) %97, ptr noundef nonnull align 8 dereferenceable(40) %96)
          to label %99 unwind label %124

99:                                               ; preds = %93
  %100 = getelementptr inbounds %struct.struct_var, ptr %12, i32 0, i32 1
  %101 = getelementptr inbounds %struct.position, ptr %100, i32 0, i32 2
  %102 = load i32, ptr %101, align 4, !tbaa !29
  %103 = getelementptr inbounds %struct.struct_var, ptr %12, i32 0, i32 2
  %104 = getelementptr inbounds %struct.position, ptr %103, i32 0, i32 1
  store i32 %102, ptr %104, align 8, !tbaa !30
  %105 = getelementptr inbounds %struct.struct_var, ptr %12, i32 0, i32 1
  %106 = getelementptr inbounds %struct.position, ptr %105, i32 0, i32 1
  %107 = load i32, ptr %106, align 8, !tbaa !31
  %108 = getelementptr inbounds %struct.struct_var, ptr %12, i32 0, i32 2
  %109 = getelementptr inbounds %struct.position, ptr %108, i32 0, i32 2
  store i32 %107, ptr %109, align 4, !tbaa !32
  %110 = getelementptr inbounds %struct.struct_var, ptr %12, i32 0, i32 6
  store i32 1, ptr %110, align 4, !tbaa !23
  invoke void @_ZNSt6vectorI10struct_varSaIS0_EE9push_backERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr noundef nonnull align 8 dereferenceable(160) %12)
          to label %111 unwind label %124

111:                                              ; preds = %99
  br label %112

112:                                              ; preds = %111
  %113 = load i32, ptr %16, align 4, !tbaa !9
  %114 = add nsw i32 %113, 1
  store i32 %114, ptr %16, align 4, !tbaa !9
  br label %80, !llvm.loop !33

115:                                              ; preds = %86
  %116 = landingpad { ptr, i32 }
          cleanup
  %117 = extractvalue { ptr, i32 } %116, 0
  store ptr %117, ptr %9, align 8
  %118 = extractvalue { ptr, i32 } %116, 1
  store i32 %118, ptr %10, align 4
  br label %123

119:                                              ; preds = %88
  %120 = landingpad { ptr, i32 }
          cleanup
  %121 = extractvalue { ptr, i32 } %120, 0
  store ptr %121, ptr %9, align 8
  %122 = extractvalue { ptr, i32 } %120, 1
  store i32 %122, ptr %10, align 4
  call void @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_St4lessIS5_ESaISt4pairIKS5_S5_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %18) #7
  br label %123

123:                                              ; preds = %119, %115
  call void @llvm.lifetime.end.p0(i64 40, ptr %17) #7
  br label %128

124:                                              ; preds = %99, %93
  %125 = landingpad { ptr, i32 }
          cleanup
  %126 = extractvalue { ptr, i32 } %125, 0
  store ptr %126, ptr %9, align 8
  %127 = extractvalue { ptr, i32 } %125, 1
  store i32 %127, ptr %10, align 4
  br label %128

128:                                              ; preds = %124, %123
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #7
  br label %266

129:                                              ; preds = %85
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #7
  store i32 0, ptr %19, align 4, !tbaa !9
  br label %130

130:                                              ; preds = %256, %129
  %131 = load i32, ptr %19, align 4, !tbaa !9
  %132 = getelementptr inbounds %struct.parameter, ptr %7, i32 0, i32 9
  %133 = load i32, ptr %132, align 4, !tbaa !34
  %134 = icmp slt i32 %131, %133
  br i1 %134, label %136, label %135

135:                                              ; preds = %130
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #7
  br label %264

136:                                              ; preds = %130
  %137 = getelementptr inbounds %struct.struct_var, ptr %12, i32 0, i32 0
  store i32 3, ptr %137, align 8, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 40, ptr %20) #7
  invoke void @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_St4lessIS5_ESaISt4pairIKS5_S5_EEEC2ERKSC_(ptr noundef nonnull align 8 dereferenceable(48) %21, ptr noundef nonnull align 8 dereferenceable(48) %2)
          to label %138 unwind label %194

138:                                              ; preds = %136
  %139 = getelementptr inbounds %struct.parameter, ptr %7, i32 0, i32 7
  %140 = load i32, ptr %139, align 4, !tbaa !35
  %141 = getelementptr inbounds %struct.parameter, ptr %7, i32 0, i32 8
  %142 = load i32, ptr %141, align 4, !tbaa !36
  invoke void @_Z10choose_posSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_St4lessIS5_ESaISt4pairIKS5_S5_EEEiiRSt6vectorI10struct_varSaISE_EE(ptr dead_on_unwind writable sret(%struct.position) align 8 %20, ptr noundef %21, i32 noundef %140, i32 noundef %142, ptr noundef nonnull align 8 dereferenceable(24) %0)
          to label %143 unwind label %198

143:                                              ; preds = %138
  %144 = getelementptr inbounds %struct.struct_var, ptr %12, i32 0, i32 1
  %145 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZN8positionaSEOS_(ptr noundef nonnull align 8 dereferenceable(40) %144, ptr noundef nonnull align 8 dereferenceable(40) %20) #7
  call void @_ZN8positionD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %20) #7
  call void @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_St4lessIS5_ESaISt4pairIKS5_S5_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %21) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr %20) #7
  call void @llvm.lifetime.start.p0(i64 40, ptr %22) #7
  invoke void @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_St4lessIS5_ESaISt4pairIKS5_S5_EEEC2ERKSC_(ptr noundef nonnull align 8 dereferenceable(48) %23, ptr noundef nonnull align 8 dereferenceable(48) %2)
          to label %146 unwind label %203

146:                                              ; preds = %143
  %147 = getelementptr inbounds %struct.struct_var, ptr %12, i32 0, i32 1
  %148 = getelementptr inbounds %struct.position, ptr %147, i32 0, i32 2
  %149 = load i32, ptr %148, align 4, !tbaa !29
  %150 = getelementptr inbounds %struct.struct_var, ptr %12, i32 0, i32 1
  %151 = getelementptr inbounds %struct.position, ptr %150, i32 0, i32 1
  %152 = load i32, ptr %151, align 8, !tbaa !31
  %153 = sub nsw i32 %149, %152
  %154 = getelementptr inbounds %struct.struct_var, ptr %12, i32 0, i32 1
  %155 = getelementptr inbounds %struct.position, ptr %154, i32 0, i32 2
  %156 = load i32, ptr %155, align 4, !tbaa !29
  %157 = getelementptr inbounds %struct.struct_var, ptr %12, i32 0, i32 1
  %158 = getelementptr inbounds %struct.position, ptr %157, i32 0, i32 1
  %159 = load i32, ptr %158, align 8, !tbaa !31
  %160 = sub nsw i32 %156, %159
  %161 = add nsw i32 %160, 1
  invoke void @_Z10choose_posSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_St4lessIS5_ESaISt4pairIKS5_S5_EEEiiRSt6vectorI10struct_varSaISE_EE(ptr dead_on_unwind writable sret(%struct.position) align 8 %22, ptr noundef %23, i32 noundef %153, i32 noundef %161, ptr noundef nonnull align 8 dereferenceable(24) %0)
          to label %162 unwind label %207

162:                                              ; preds = %146
  %163 = getelementptr inbounds %struct.struct_var, ptr %12, i32 0, i32 2
  %164 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZN8positionaSEOS_(ptr noundef nonnull align 8 dereferenceable(40) %163, ptr noundef nonnull align 8 dereferenceable(40) %22) #7
  call void @_ZN8positionD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %22) #7
  call void @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_St4lessIS5_ESaISt4pairIKS5_S5_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %23) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr %22) #7
  br label %165

165:                                              ; preds = %191, %162
  %166 = getelementptr inbounds %struct.struct_var, ptr %12, i32 0, i32 2
  %167 = getelementptr inbounds %struct.position, ptr %166, i32 0, i32 0
  %168 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %167) #7
  %169 = getelementptr inbounds %struct.struct_var, ptr %12, i32 0, i32 1
  %170 = getelementptr inbounds %struct.position, ptr %169, i32 0, i32 0
  %171 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %170) #7
  %172 = call i32 @strcmp(ptr noundef %168, ptr noundef %171) #8
  %173 = icmp eq i32 %172, 0
  br i1 %173, label %174, label %221

174:                                              ; preds = %165
  call void @llvm.lifetime.start.p0(i64 40, ptr %24) #7
  invoke void @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_St4lessIS5_ESaISt4pairIKS5_S5_EEEC2ERKSC_(ptr noundef nonnull align 8 dereferenceable(48) %25, ptr noundef nonnull align 8 dereferenceable(48) %2)
          to label %175 unwind label %212

175:                                              ; preds = %174
  %176 = getelementptr inbounds %struct.struct_var, ptr %12, i32 0, i32 1
  %177 = getelementptr inbounds %struct.position, ptr %176, i32 0, i32 2
  %178 = load i32, ptr %177, align 4, !tbaa !29
  %179 = getelementptr inbounds %struct.struct_var, ptr %12, i32 0, i32 1
  %180 = getelementptr inbounds %struct.position, ptr %179, i32 0, i32 1
  %181 = load i32, ptr %180, align 8, !tbaa !31
  %182 = sub nsw i32 %178, %181
  %183 = getelementptr inbounds %struct.struct_var, ptr %12, i32 0, i32 1
  %184 = getelementptr inbounds %struct.position, ptr %183, i32 0, i32 2
  %185 = load i32, ptr %184, align 4, !tbaa !29
  %186 = getelementptr inbounds %struct.struct_var, ptr %12, i32 0, i32 1
  %187 = getelementptr inbounds %struct.position, ptr %186, i32 0, i32 1
  %188 = load i32, ptr %187, align 8, !tbaa !31
  %189 = sub nsw i32 %185, %188
  %190 = add nsw i32 %189, 1
  invoke void @_Z10choose_posSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_St4lessIS5_ESaISt4pairIKS5_S5_EEEiiRSt6vectorI10struct_varSaISE_EE(ptr dead_on_unwind writable sret(%struct.position) align 8 %24, ptr noundef %25, i32 noundef %182, i32 noundef %190, ptr noundef nonnull align 8 dereferenceable(24) %0)
          to label %191 unwind label %216

191:                                              ; preds = %175
  %192 = getelementptr inbounds %struct.struct_var, ptr %12, i32 0, i32 2
  %193 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZN8positionaSEOS_(ptr noundef nonnull align 8 dereferenceable(40) %192, ptr noundef nonnull align 8 dereferenceable(40) %24) #7
  call void @_ZN8positionD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %24) #7
  call void @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_St4lessIS5_ESaISt4pairIKS5_S5_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %25) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr %24) #7
  br label %165, !llvm.loop !37

194:                                              ; preds = %136
  %195 = landingpad { ptr, i32 }
          cleanup
  %196 = extractvalue { ptr, i32 } %195, 0
  store ptr %196, ptr %9, align 8
  %197 = extractvalue { ptr, i32 } %195, 1
  store i32 %197, ptr %10, align 4
  br label %202

198:                                              ; preds = %138
  %199 = landingpad { ptr, i32 }
          cleanup
  %200 = extractvalue { ptr, i32 } %199, 0
  store ptr %200, ptr %9, align 8
  %201 = extractvalue { ptr, i32 } %199, 1
  store i32 %201, ptr %10, align 4
  call void @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_St4lessIS5_ESaISt4pairIKS5_S5_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %21) #7
  br label %202

202:                                              ; preds = %198, %194
  call void @llvm.lifetime.end.p0(i64 40, ptr %20) #7
  br label %263

203:                                              ; preds = %143
  %204 = landingpad { ptr, i32 }
          cleanup
  %205 = extractvalue { ptr, i32 } %204, 0
  store ptr %205, ptr %9, align 8
  %206 = extractvalue { ptr, i32 } %204, 1
  store i32 %206, ptr %10, align 4
  br label %211

207:                                              ; preds = %146
  %208 = landingpad { ptr, i32 }
          cleanup
  %209 = extractvalue { ptr, i32 } %208, 0
  store ptr %209, ptr %9, align 8
  %210 = extractvalue { ptr, i32 } %208, 1
  store i32 %210, ptr %10, align 4
  call void @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_St4lessIS5_ESaISt4pairIKS5_S5_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %23) #7
  br label %211

211:                                              ; preds = %207, %203
  call void @llvm.lifetime.end.p0(i64 40, ptr %22) #7
  br label %263

212:                                              ; preds = %174
  %213 = landingpad { ptr, i32 }
          cleanup
  %214 = extractvalue { ptr, i32 } %213, 0
  store ptr %214, ptr %9, align 8
  %215 = extractvalue { ptr, i32 } %213, 1
  store i32 %215, ptr %10, align 4
  br label %220

216:                                              ; preds = %175
  %217 = landingpad { ptr, i32 }
          cleanup
  %218 = extractvalue { ptr, i32 } %217, 0
  store ptr %218, ptr %9, align 8
  %219 = extractvalue { ptr, i32 } %217, 1
  store i32 %219, ptr %10, align 4
  call void @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_St4lessIS5_ESaISt4pairIKS5_S5_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %25) #7
  br label %220

220:                                              ; preds = %216, %212
  call void @llvm.lifetime.end.p0(i64 40, ptr %24) #7
  br label %263

221:                                              ; preds = %165
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #7
  %222 = getelementptr inbounds %struct.struct_var, ptr %12, i32 0, i32 1
  %223 = getelementptr inbounds %struct.position, ptr %222, i32 0, i32 2
  %224 = load i32, ptr %223, align 4, !tbaa !29
  %225 = getelementptr inbounds %struct.struct_var, ptr %12, i32 0, i32 1
  %226 = getelementptr inbounds %struct.position, ptr %225, i32 0, i32 1
  %227 = load i32, ptr %226, align 8, !tbaa !31
  %228 = sub nsw i32 %224, %227
  store i32 %228, ptr %26, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #7
  %229 = getelementptr inbounds %struct.struct_var, ptr %12, i32 0, i32 2
  %230 = getelementptr inbounds %struct.position, ptr %229, i32 0, i32 2
  %231 = load i32, ptr %230, align 4, !tbaa !32
  %232 = getelementptr inbounds %struct.struct_var, ptr %12, i32 0, i32 2
  %233 = getelementptr inbounds %struct.position, ptr %232, i32 0, i32 1
  %234 = load i32, ptr %233, align 8, !tbaa !30
  %235 = sub nsw i32 %231, %234
  store i32 %235, ptr %27, align 4, !tbaa !9
  %236 = getelementptr inbounds %struct.struct_var, ptr %12, i32 0, i32 1
  %237 = getelementptr inbounds %struct.position, ptr %236, i32 0, i32 1
  %238 = load i32, ptr %237, align 8, !tbaa !31
  %239 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3minIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %26, ptr noundef nonnull align 4 dereferenceable(4) %27)
          to label %240 unwind label %259

240:                                              ; preds = %221
  %241 = load i32, ptr %239, align 4, !tbaa !9
  %242 = add nsw i32 %238, %241
  %243 = getelementptr inbounds %struct.struct_var, ptr %12, i32 0, i32 1
  %244 = getelementptr inbounds %struct.position, ptr %243, i32 0, i32 2
  store i32 %242, ptr %244, align 4, !tbaa !29
  %245 = getelementptr inbounds %struct.struct_var, ptr %12, i32 0, i32 2
  %246 = getelementptr inbounds %struct.position, ptr %245, i32 0, i32 1
  %247 = load i32, ptr %246, align 8, !tbaa !30
  %248 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3minIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %26, ptr noundef nonnull align 4 dereferenceable(4) %27)
          to label %249 unwind label %259

249:                                              ; preds = %240
  %250 = load i32, ptr %248, align 4, !tbaa !9
  %251 = add nsw i32 %247, %250
  %252 = getelementptr inbounds %struct.struct_var, ptr %12, i32 0, i32 2
  %253 = getelementptr inbounds %struct.position, ptr %252, i32 0, i32 2
  store i32 %251, ptr %253, align 4, !tbaa !32
  %254 = getelementptr inbounds %struct.struct_var, ptr %12, i32 0, i32 6
  store i32 1, ptr %254, align 4, !tbaa !23
  invoke void @_ZNSt6vectorI10struct_varSaIS0_EE9push_backERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr noundef nonnull align 8 dereferenceable(160) %12)
          to label %255 unwind label %259

255:                                              ; preds = %249
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #7
  br label %256

256:                                              ; preds = %255
  %257 = load i32, ptr %19, align 4, !tbaa !9
  %258 = add nsw i32 %257, 1
  store i32 %258, ptr %19, align 4, !tbaa !9
  br label %130, !llvm.loop !38

259:                                              ; preds = %249, %240, %221
  %260 = landingpad { ptr, i32 }
          cleanup
  %261 = extractvalue { ptr, i32 } %260, 0
  store ptr %261, ptr %9, align 8
  %262 = extractvalue { ptr, i32 } %260, 1
  store i32 %262, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #7
  br label %263

263:                                              ; preds = %259, %220, %211, %202
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #7
  br label %266

264:                                              ; preds = %135
  store i1 true, ptr %11, align 1
  call void @_ZN10struct_varD2Ev(ptr noundef nonnull align 8 dereferenceable(160) %12) #7
  call void @llvm.lifetime.end.p0(i64 160, ptr %12) #7
  %265 = load i1, ptr %11, align 1
  br i1 %265, label %268, label %267

266:                                              ; preds = %263, %128, %78
  call void @_ZN10struct_varD2Ev(ptr noundef nonnull align 8 dereferenceable(160) %12) #7
  call void @llvm.lifetime.end.p0(i64 160, ptr %12) #7
  call void @_ZNSt6vectorI10struct_varSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %0) #7
  br label %269

267:                                              ; preds = %264
  call void @_ZNSt6vectorI10struct_varSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %0) #7
  br label %268

268:                                              ; preds = %267, %264
  call void @llvm.lifetime.end.p0(i64 96, ptr %7) #7
  ret void

269:                                              ; preds = %266, %35
  call void @llvm.lifetime.end.p0(i64 96, ptr %7) #7
  br label %270

270:                                              ; preds = %269
  %271 = load ptr, ptr %9, align 8
  %272 = load i32, ptr %10, align 4
  %273 = insertvalue { ptr, i32 } poison, ptr %271, 0
  %274 = insertvalue { ptr, i32 } %273, i32 %272, 1
  resume { ptr, i32 } %274
}

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!12, !10, i64 24}
!12 = !{!"_ZTS9parameter", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !10, i64 24, !10, i64 28, !10, i64 32, !10, i64 36, !10, i64 40, !10, i64 44, !10, i64 48, !10, i64 52, !10, i64 56, !10, i64 60, !10, i64 64, !10, i64 68, !10, i64 72, !10, i64 76, !10, i64 80, !10, i64 84, !13, i64 88, !14, i64 92}
!13 = !{!"bool", !7, i64 0}
!14 = !{!"float", !7, i64 0}
!15 = !{!16, !10, i64 0}
!16 = !{!"_ZTS10struct_var", !10, i64 0, !17, i64 8, !17, i64 48, !18, i64 88, !18, i64 120, !13, i64 152, !10, i64 156}
!17 = !{!"_ZTS8position", !18, i64 0, !10, i64 32, !10, i64 36}
!18 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !19, i64 0, !20, i64 8, !7, i64 16}
!19 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !6, i64 0}
!20 = !{!"long", !7, i64 0}
!21 = !{!12, !10, i64 16}
!22 = !{!12, !10, i64 20}
!23 = !{!16, !10, i64 156}
!24 = distinct !{!24, !25}
!25 = !{!"llvm.loop.mustprogress"}
!26 = !{!12, !10, i64 48}
!27 = !{!12, !10, i64 40}
!28 = !{!12, !10, i64 44}
!29 = !{!16, !10, i64 44}
!30 = !{!16, !10, i64 80}
!31 = !{!16, !10, i64 40}
!32 = !{!16, !10, i64 84}
!33 = distinct !{!33, !25}
!34 = !{!12, !10, i64 36}
!35 = !{!12, !10, i64 28}
!36 = !{!12, !10, i64 32}
!37 = distinct !{!37, !25}
!38 = distinct !{!38, !25}


; 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.parameter = type { i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i8, float }
%struct.position = type { %"class.std::__cxx11::basic_string", i32, i32 }
%"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::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<struct_var, std::allocator<struct_var>>::_Vector_impl" }
%"struct.std::_Vector_base<struct_var, std::allocator<struct_var>>::_Vector_impl" = type { %"struct.std::_Vector_base<struct_var, std::allocator<struct_var>>::_Vector_impl_data" }
%"struct.std::_Vector_base<struct_var, std::allocator<struct_var>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%struct.struct_var = type { i32, %struct.position, %struct.position, %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", i8, i32 }
%"class.std::map" = type { %"class.std::_Rb_tree" }
%"class.std::_Rb_tree" = type { %"struct.std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char>>, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char>>>, std::less<std::__cxx11::basic_string<char>>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char>>, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char>>>, std::less<std::__cxx11::basic_string<char>>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"struct.std::_Rb_tree_header" = type { %"struct.std::_Rb_tree_node_base", i64 }
%"struct.std::_Rb_tree_node_base" = type { i32, ptr, ptr, ptr }

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z11parse_paramNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind noalias writable sret(%struct.parameter) align 4, ptr noundef) local_unnamed_addr #1

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

declare i32 @__gxx_personality_v0(...)

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

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

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

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

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

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

; Function Attrs: nounwind
declare i32 @rand() local_unnamed_addr #3

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z10choose_posSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_St4lessIS5_ESaISt4pairIKS5_S5_EEEiiRSt6vectorI10struct_varSaISE_EE(ptr dead_on_unwind noalias writable sret(%struct.position) align 8, ptr noundef, i32 noundef, i32 noundef, ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #1

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(40) ptr @_ZN8positionaSEOS_(ptr noundef nonnull align 8 dereferenceable(40), ptr noundef nonnull align 8 dereferenceable(40)) local_unnamed_addr #4 align 2

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(40) ptr @_ZN8positionaSERKS_(ptr noundef nonnull align 8 dereferenceable(40), ptr noundef nonnull align 8 dereferenceable(40)) local_unnamed_addr #6 align 2

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_Z22generate_mutations_refNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt3mapIS4_S4_St4lessIS4_ESaISt4pairIKS4_S4_EEE(ptr dead_on_unwind noalias writable sret(%"class.std::vector") align 8 %0, ptr noundef nonnull %1, ptr noundef %2) local_unnamed_addr #1 personality ptr @__gxx_personality_v0 {
  %4 = alloca %struct.parameter, align 4
  %5 = alloca %"class.std::__cxx11::basic_string", align 8
  %6 = alloca %struct.struct_var, align 8
  %7 = alloca %struct.position, align 8
  %8 = alloca %"class.std::map", align 8
  %9 = alloca %struct.position, align 8
  %10 = alloca %"class.std::map", align 8
  %11 = alloca %struct.position, align 8
  %12 = alloca %"class.std::map", align 8
  %13 = alloca %struct.position, align 8
  %14 = alloca %"class.std::map", align 8
  %15 = alloca %struct.position, align 8
  %16 = alloca %"class.std::map", align 8
  %17 = alloca i32, align 4
  %18 = alloca i32, align 4
  call void @llvm.lifetime.start.p0(i64 96, ptr nonnull %4) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef nonnull align 8 dereferenceable(32) %1)
  invoke void @_Z11parse_paramNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%struct.parameter) align 4 %4, ptr noundef nonnull %5)
          to label %19 unwind label %38

19:                                               ; preds = %3
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %5) #7
  call void @_ZNSt6vectorI10struct_varSaIS0_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %0) #7
  call void @llvm.lifetime.start.p0(i64 160, ptr nonnull %6) #7
  call void @_ZN10struct_varC2Ev(ptr noundef nonnull align 8 dereferenceable(160) %6) #7
  %20 = getelementptr inbounds i8, ptr %4, i64 24
  %21 = load i32, ptr %20, align 4, !tbaa !5
  %22 = icmp sgt i32 %21, 0
  br i1 %22, label %.lr.ph, label %.preheader37

.lr.ph:                                           ; preds = %19
  %23 = getelementptr inbounds i8, ptr %4, i64 16
  %24 = getelementptr inbounds i8, ptr %4, i64 20
  %25 = getelementptr inbounds i8, ptr %6, i64 8
  %26 = getelementptr inbounds i8, ptr %6, i64 48
  %27 = getelementptr inbounds i8, ptr %6, i64 156
  br label %40

.preheader37:                                     ; preds = %51, %19
  %28 = getelementptr inbounds i8, ptr %4, i64 48
  %29 = load i32, ptr %28, align 4, !tbaa !12
  %30 = icmp sgt i32 %29, 0
  br i1 %30, label %.lr.ph40, label %.preheader

.lr.ph40:                                         ; preds = %.preheader37
  %31 = getelementptr inbounds i8, ptr %4, i64 40
  %32 = getelementptr inbounds i8, ptr %4, i64 44
  %33 = getelementptr inbounds i8, ptr %6, i64 8
  %34 = getelementptr inbounds i8, ptr %6, i64 48
  %35 = getelementptr inbounds i8, ptr %6, i64 80
  %36 = getelementptr inbounds i8, ptr %6, i64 40
  %37 = getelementptr inbounds i8, ptr %6, i64 156
  br label %74

38:                                               ; preds = %3
  %39 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %5) #7
  br label %158

40:                                               ; preds = %.lr.ph, %51
  %.0938 = phi i32 [ 0, %.lr.ph ], [ %52, %51 ]
  %41 = call i32 @rand() #7
  %42 = srem i32 %41, 100
  %43 = icmp slt i32 %42, 51
  %. = select i1 %43, i32 1, i32 4
  store i32 %., ptr %6, align 8, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %7) #7
  invoke void @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_St4lessIS5_ESaISt4pairIKS5_S5_EEEC2ERKSC_(ptr noundef nonnull align 8 dereferenceable(48) %8, ptr noundef nonnull align 8 dereferenceable(48) %2)
          to label %44 unwind label %55

44:                                               ; preds = %40
  %45 = load i32, ptr %23, align 4, !tbaa !20
  %46 = load i32, ptr %24, align 4, !tbaa !21
  invoke void @_Z10choose_posSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_St4lessIS5_ESaISt4pairIKS5_S5_EEEiiRSt6vectorI10struct_varSaISE_EE(ptr dead_on_unwind nonnull writable sret(%struct.position) align 8 %7, ptr noundef nonnull %8, i32 noundef %45, i32 noundef %46, ptr noundef nonnull align 8 dereferenceable(24) %0)
          to label %47 unwind label %57

47:                                               ; preds = %44
  %48 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZN8positionaSEOS_(ptr noundef nonnull align 8 dereferenceable(40) %25, ptr noundef nonnull align 8 dereferenceable(40) %7) #7
  call void @_ZN8positionD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %7) #7
  call void @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_St4lessIS5_ESaISt4pairIKS5_S5_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %8) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %7) #7
  %49 = invoke noundef nonnull align 8 dereferenceable(40) ptr @_ZN8positionaSERKS_(ptr noundef nonnull align 8 dereferenceable(40) %26, ptr noundef nonnull align 8 dereferenceable(40) %25)
          to label %50 unwind label %60

50:                                               ; preds = %47
  store i32 1, ptr %27, align 4, !tbaa !22
  invoke void @_ZNSt6vectorI10struct_varSaIS0_EE9push_backERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr noundef nonnull align 8 dereferenceable(160) %6)
          to label %51 unwind label %60

51:                                               ; preds = %50
  %52 = add nuw nsw i32 %.0938, 1
  %53 = load i32, ptr %20, align 4, !tbaa !5
  %54 = icmp slt i32 %52, %53
  br i1 %54, label %40, label %.preheader37, !llvm.loop !23

55:                                               ; preds = %40
  %56 = landingpad { ptr, i32 }
          cleanup
  br label %59

57:                                               ; preds = %44
  %58 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_St4lessIS5_ESaISt4pairIKS5_S5_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %8) #7
  br label %59

59:                                               ; preds = %57, %55
  %.pn31 = phi { ptr, i32 } [ %58, %57 ], [ %56, %55 ]
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %7) #7
  br label %157

60:                                               ; preds = %50, %47
  %61 = landingpad { ptr, i32 }
          cleanup
  br label %157

.preheader:                                       ; preds = %84, %.preheader37
  %62 = getelementptr inbounds i8, ptr %4, i64 36
  %63 = load i32, ptr %62, align 4, !tbaa !25
  %64 = icmp sgt i32 %63, 0
  br i1 %64, label %.lr.ph43, label %._crit_edge44

.lr.ph43:                                         ; preds = %.preheader
  %65 = getelementptr inbounds i8, ptr %4, i64 28
  %66 = getelementptr inbounds i8, ptr %4, i64 32
  %67 = getelementptr inbounds i8, ptr %6, i64 8
  %68 = getelementptr inbounds i8, ptr %6, i64 44
  %69 = getelementptr inbounds i8, ptr %6, i64 40
  %70 = getelementptr inbounds i8, ptr %6, i64 48
  %71 = getelementptr inbounds i8, ptr %6, i64 84
  %72 = getelementptr inbounds i8, ptr %6, i64 80
  %73 = getelementptr inbounds i8, ptr %6, i64 156
  br label %95

74:                                               ; preds = %.lr.ph40, %84
  %.0839 = phi i32 [ 0, %.lr.ph40 ], [ %85, %84 ]
  store i32 2, ptr %6, align 8, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %9) #7
  invoke void @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_St4lessIS5_ESaISt4pairIKS5_S5_EEEC2ERKSC_(ptr noundef nonnull align 8 dereferenceable(48) %10, ptr noundef nonnull align 8 dereferenceable(48) %2)
          to label %75 unwind label %88

75:                                               ; preds = %74
  %76 = load i32, ptr %31, align 4, !tbaa !26
  %77 = load i32, ptr %32, align 4, !tbaa !27
  invoke void @_Z10choose_posSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_St4lessIS5_ESaISt4pairIKS5_S5_EEEiiRSt6vectorI10struct_varSaISE_EE(ptr dead_on_unwind nonnull writable sret(%struct.position) align 8 %9, ptr noundef nonnull %10, i32 noundef %76, i32 noundef %77, ptr noundef nonnull align 8 dereferenceable(24) %0)
          to label %78 unwind label %90

78:                                               ; preds = %75
  %79 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZN8positionaSEOS_(ptr noundef nonnull align 8 dereferenceable(40) %33, ptr noundef nonnull align 8 dereferenceable(40) %9) #7
  call void @_ZN8positionD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %9) #7
  call void @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_St4lessIS5_ESaISt4pairIKS5_S5_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %10) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %9) #7
  %80 = invoke noundef nonnull align 8 dereferenceable(40) ptr @_ZN8positionaSERKS_(ptr noundef nonnull align 8 dereferenceable(40) %34, ptr noundef nonnull align 8 dereferenceable(40) %33)
          to label %81 unwind label %93

81:                                               ; preds = %78
  %82 = load <2 x i32>, ptr %36, align 8, !tbaa !28
  %83 = shufflevector <2 x i32> %82, <2 x i32> poison, <2 x i32> <i32 1, i32 0>
  store <2 x i32> %83, ptr %35, align 8, !tbaa !28
  store i32 1, ptr %37, align 4, !tbaa !22
  invoke void @_ZNSt6vectorI10struct_varSaIS0_EE9push_backERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr noundef nonnull align 8 dereferenceable(160) %6)
          to label %84 unwind label %93

84:                                               ; preds = %81
  %85 = add nuw nsw i32 %.0839, 1
  %86 = load i32, ptr %28, align 4, !tbaa !12
  %87 = icmp slt i32 %85, %86
  br i1 %87, label %74, label %.preheader, !llvm.loop !29

88:                                               ; preds = %74
  %89 = landingpad { ptr, i32 }
          cleanup
  br label %92

90:                                               ; preds = %75
  %91 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_St4lessIS5_ESaISt4pairIKS5_S5_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %10) #7
  br label %92

92:                                               ; preds = %90, %88
  %.pn27 = phi { ptr, i32 } [ %91, %90 ], [ %89, %88 ]
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %9) #7
  br label %157

93:                                               ; preds = %81, %78
  %94 = landingpad { ptr, i32 }
          cleanup
  br label %157

._crit_edge44:                                    ; preds = %151, %.preheader
  call void @_ZN10struct_varD2Ev(ptr noundef nonnull align 8 dereferenceable(160) %6) #7
  call void @llvm.lifetime.end.p0(i64 160, ptr nonnull %6) #7
  call void @llvm.lifetime.end.p0(i64 96, ptr nonnull %4) #7
  ret void

95:                                               ; preds = %.lr.ph43, %151
  %.042 = phi i32 [ 0, %.lr.ph43 ], [ %152, %151 ]
  store i32 3, ptr %6, align 8, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %11) #7
  invoke void @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_St4lessIS5_ESaISt4pairIKS5_S5_EEEC2ERKSC_(ptr noundef nonnull align 8 dereferenceable(48) %12, ptr noundef nonnull align 8 dereferenceable(48) %2)
          to label %96 unwind label %123

96:                                               ; preds = %95
  %97 = load i32, ptr %65, align 4, !tbaa !30
  %98 = load i32, ptr %66, align 4, !tbaa !31
  invoke void @_Z10choose_posSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_St4lessIS5_ESaISt4pairIKS5_S5_EEEiiRSt6vectorI10struct_varSaISE_EE(ptr dead_on_unwind nonnull writable sret(%struct.position) align 8 %11, ptr noundef nonnull %12, i32 noundef %97, i32 noundef %98, ptr noundef nonnull align 8 dereferenceable(24) %0)
          to label %99 unwind label %125

99:                                               ; preds = %96
  %100 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZN8positionaSEOS_(ptr noundef nonnull align 8 dereferenceable(40) %67, ptr noundef nonnull align 8 dereferenceable(40) %11) #7
  call void @_ZN8positionD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %11) #7
  call void @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_St4lessIS5_ESaISt4pairIKS5_S5_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %12) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %11) #7
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %13) #7
  invoke void @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_St4lessIS5_ESaISt4pairIKS5_S5_EEEC2ERKSC_(ptr noundef nonnull align 8 dereferenceable(48) %14, ptr noundef nonnull align 8 dereferenceable(48) %2)
          to label %101 unwind label %128

101:                                              ; preds = %99
  %102 = load i32, ptr %68, align 4, !tbaa !32
  %103 = load i32, ptr %69, align 8, !tbaa !33
  %104 = sub nsw i32 %102, %103
  %105 = add nsw i32 %104, 1
  invoke void @_Z10choose_posSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_St4lessIS5_ESaISt4pairIKS5_S5_EEEiiRSt6vectorI10struct_varSaISE_EE(ptr dead_on_unwind nonnull writable sret(%struct.position) align 8 %13, ptr noundef nonnull %14, i32 noundef %104, i32 noundef %105, ptr noundef nonnull align 8 dereferenceable(24) %0)
          to label %106 unwind label %130

106:                                              ; preds = %101
  %107 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZN8positionaSEOS_(ptr noundef nonnull align 8 dereferenceable(40) %70, ptr noundef nonnull align 8 dereferenceable(40) %13) #7
  call void @_ZN8positionD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %13) #7
  call void @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_St4lessIS5_ESaISt4pairIKS5_S5_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %14) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %13) #7
  %108 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %70) #7
  %109 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %67) #7
  %110 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %108, ptr noundef nonnull dereferenceable(1) %109) #8
  %111 = icmp eq i32 %110, 0
  br i1 %111, label %.lr.ph41, label %._crit_edge

.lr.ph41:                                         ; preds = %106, %117
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %15) #7
  invoke void @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_St4lessIS5_ESaISt4pairIKS5_S5_EEEC2ERKSC_(ptr noundef nonnull align 8 dereferenceable(48) %16, ptr noundef nonnull align 8 dereferenceable(48) %2)
          to label %112 unwind label %133

112:                                              ; preds = %.lr.ph41
  %113 = load i32, ptr %68, align 4, !tbaa !32
  %114 = load i32, ptr %69, align 8, !tbaa !33
  %115 = sub nsw i32 %113, %114
  %116 = add nsw i32 %115, 1
  invoke void @_Z10choose_posSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_St4lessIS5_ESaISt4pairIKS5_S5_EEEiiRSt6vectorI10struct_varSaISE_EE(ptr dead_on_unwind nonnull writable sret(%struct.position) align 8 %15, ptr noundef nonnull %16, i32 noundef %115, i32 noundef %116, ptr noundef nonnull align 8 dereferenceable(24) %0)
          to label %117 unwind label %135

117:                                              ; preds = %112
  %118 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZN8positionaSEOS_(ptr noundef nonnull align 8 dereferenceable(40) %70, ptr noundef nonnull align 8 dereferenceable(40) %15) #7
  call void @_ZN8positionD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %15) #7
  call void @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_St4lessIS5_ESaISt4pairIKS5_S5_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %16) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %15) #7
  %119 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %70) #7
  %120 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %67) #7
  %121 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %119, ptr noundef nonnull dereferenceable(1) %120) #8
  %122 = icmp eq i32 %121, 0
  br i1 %122, label %.lr.ph41, label %._crit_edge, !llvm.loop !34

123:                                              ; preds = %95
  %124 = landingpad { ptr, i32 }
          cleanup
  br label %127

125:                                              ; preds = %96
  %126 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_St4lessIS5_ESaISt4pairIKS5_S5_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %12) #7
  br label %127

127:                                              ; preds = %125, %123
  %.pn = phi { ptr, i32 } [ %126, %125 ], [ %124, %123 ]
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %11) #7
  br label %157

128:                                              ; preds = %99
  %129 = landingpad { ptr, i32 }
          cleanup
  br label %132

130:                                              ; preds = %101
  %131 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_St4lessIS5_ESaISt4pairIKS5_S5_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %14) #7
  br label %132

132:                                              ; preds = %130, %128
  %.pn22 = phi { ptr, i32 } [ %131, %130 ], [ %129, %128 ]
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %13) #7
  br label %157

133:                                              ; preds = %.lr.ph41
  %134 = landingpad { ptr, i32 }
          cleanup
  br label %137

135:                                              ; preds = %112
  %136 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_St4lessIS5_ESaISt4pairIKS5_S5_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %16) #7
  br label %137

137:                                              ; preds = %135, %133
  %.pn24 = phi { ptr, i32 } [ %136, %135 ], [ %134, %133 ]
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %15) #7
  br label %157

._crit_edge:                                      ; preds = %117, %106
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %17) #7
  %138 = load i32, ptr %68, align 4, !tbaa !32
  %139 = load i32, ptr %69, align 8, !tbaa !33
  %140 = sub nsw i32 %138, %139
  store i32 %140, ptr %17, align 4, !tbaa !28
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %18) #7
  %141 = load i32, ptr %71, align 4, !tbaa !35
  %142 = load i32, ptr %72, align 8, !tbaa !36
  %143 = sub nsw i32 %141, %142
  store i32 %143, ptr %18, align 4, !tbaa !28
  %144 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3minIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %17, ptr noundef nonnull align 4 dereferenceable(4) %18)
  %145 = load i32, ptr %144, align 4, !tbaa !28
  %146 = add nsw i32 %145, %139
  store i32 %146, ptr %68, align 4, !tbaa !32
  %147 = load i32, ptr %72, align 8, !tbaa !36
  %148 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3minIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %17, ptr noundef nonnull align 4 dereferenceable(4) %18)
  %149 = load i32, ptr %148, align 4, !tbaa !28
  %150 = add nsw i32 %149, %147
  store i32 %150, ptr %71, align 4, !tbaa !35
  store i32 1, ptr %73, align 4, !tbaa !22
  invoke void @_ZNSt6vectorI10struct_varSaIS0_EE9push_backERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr noundef nonnull align 8 dereferenceable(160) %6)
          to label %151 unwind label %155

151:                                              ; preds = %._crit_edge
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %18) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %17) #7
  %152 = add nuw nsw i32 %.042, 1
  %153 = load i32, ptr %62, align 4, !tbaa !25
  %154 = icmp slt i32 %152, %153
  br i1 %154, label %95, label %._crit_edge44, !llvm.loop !37

155:                                              ; preds = %._crit_edge
  %156 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %18) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %17) #7
  br label %157

157:                                              ; preds = %127, %132, %137, %155, %92, %93, %59, %60
  %.pn33.pn = phi { ptr, i32 } [ %61, %60 ], [ %.pn31, %59 ], [ %94, %93 ], [ %.pn27, %92 ], [ %.pn24, %137 ], [ %156, %155 ], [ %.pn22, %132 ], [ %.pn, %127 ]
  call void @_ZN10struct_varD2Ev(ptr noundef nonnull align 8 dereferenceable(160) %6) #7
  call void @llvm.lifetime.end.p0(i64 160, ptr nonnull %6) #7
  call void @_ZNSt6vectorI10struct_varSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %0) #7
  br label %158

158:                                              ; preds = %157, %38
  %.pn33.pn.pn = phi { ptr, i32 } [ %.pn33.pn, %157 ], [ %39, %38 ]
  call void @llvm.lifetime.end.p0(i64 96, ptr nonnull %4) #7
  resume { ptr, i32 } %.pn33.pn.pn
}

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !7, i64 24}
!6 = !{!"_ZTS9parameter", !7, i64 0, !7, i64 4, !7, i64 8, !7, i64 12, !7, i64 16, !7, i64 20, !7, i64 24, !7, i64 28, !7, i64 32, !7, i64 36, !7, i64 40, !7, i64 44, !7, i64 48, !7, i64 52, !7, i64 56, !7, i64 60, !7, i64 64, !7, i64 68, !7, i64 72, !7, i64 76, !7, i64 80, !7, i64 84, !10, i64 88, !11, i64 92}
!7 = !{!"int", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C++ TBAA"}
!10 = !{!"bool", !8, i64 0}
!11 = !{!"float", !8, i64 0}
!12 = !{!6, !7, i64 48}
!13 = !{!14, !7, i64 0}
!14 = !{!"_ZTS10struct_var", !7, i64 0, !15, i64 8, !15, i64 48, !16, i64 88, !16, i64 120, !10, i64 152, !7, i64 156}
!15 = !{!"_ZTS8position", !16, i64 0, !7, i64 32, !7, i64 36}
!16 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !17, i64 0, !19, i64 8, !8, i64 16}
!17 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !18, i64 0}
!18 = !{!"any pointer", !8, i64 0}
!19 = !{!"long", !8, i64 0}
!20 = !{!6, !7, i64 16}
!21 = !{!6, !7, i64 20}
!22 = !{!14, !7, i64 156}
!23 = distinct !{!23, !24}
!24 = !{!"llvm.loop.mustprogress"}
!25 = !{!6, !7, i64 36}
!26 = !{!6, !7, i64 40}
!27 = !{!6, !7, i64 44}
!28 = !{!7, !7, i64 0}
!29 = distinct !{!29, !24}
!30 = !{!6, !7, i64 28}
!31 = !{!6, !7, i64 32}
!32 = !{!14, !7, i64 44}
!33 = !{!14, !7, i64 40}
!34 = distinct !{!34, !24}
!35 = !{!14, !7, i64 84}
!36 = !{!14, !7, i64 80}
!37 = distinct !{!37, !24}


; Effective O3 passes: EarlyCSEPass,GlobalOptPass,IPSCCPPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,LICMPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,PostOrderFunctionAttrsPass,ReassociatePass,SLPVectorizerPass,SROAPass,SimplifyCFGPass