; 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 uwtable
declare noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSERKS4_(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(32)) #1 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_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: mustprogress uwtable
define dso_local void @_Z18generate_mutationsNSt7__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 i32, align 4
  %23 = alloca %struct.position, align 8
  %24 = alloca %"class.std::map", align 8
  %25 = alloca %struct.position, align 8
  %26 = alloca %"class.std::map", align 8
  %27 = alloca %struct.position, align 8
  %28 = alloca %"class.std::map", align 8
  %29 = alloca i32, align 4
  %30 = alloca i32, align 4
  %31 = alloca i32, align 4
  %32 = alloca %struct.position, align 8
  %33 = alloca %"class.std::map", align 8
  %34 = alloca i32, align 4
  %35 = alloca %struct.struct_var, align 8
  %36 = alloca i32, align 4
  %37 = alloca %struct.position, align 8
  %38 = alloca %"class.std::map", align 8
  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 %39 unwind label %46

39:                                               ; 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 %40

40:                                               ; preds = %63, %39
  %41 = load i32, ptr %13, align 4, !tbaa !9
  %42 = getelementptr inbounds %struct.parameter, ptr %7, i32 0, i32 3
  %43 = load i32, ptr %42, align 4, !tbaa !11
  %44 = icmp slt i32 %41, %43
  br i1 %44, label %50, label %45

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

46:                                               ; preds = %3
  %47 = landingpad { ptr, i32 }
          cleanup
  %48 = extractvalue { ptr, i32 } %47, 0
  store ptr %48, ptr %9, align 8
  %49 = extractvalue { ptr, i32 } %47, 1
  store i32 %49, ptr %10, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %8) #7
  br label %476

50:                                               ; preds = %40
  %51 = getelementptr inbounds %struct.struct_var, ptr %12, i32 0, i32 0
  store i32 0, ptr %51, align 8, !tbaa !15
  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 %52 unwind label %66

52:                                               ; preds = %50
  %53 = getelementptr inbounds %struct.parameter, ptr %7, i32 0, i32 0
  %54 = load i32, ptr %53, align 4, !tbaa !21
  %55 = getelementptr inbounds %struct.parameter, ptr %7, i32 0, i32 1
  %56 = load i32, ptr %55, 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 %54, i32 noundef %56, ptr noundef nonnull align 8 dereferenceable(24) %0)
          to label %57 unwind label %70

57:                                               ; preds = %52
  %58 = getelementptr inbounds %struct.struct_var, ptr %12, i32 0, i32 1
  %59 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZN8positionaSEOS_(ptr noundef nonnull align 8 dereferenceable(40) %58, 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
  %60 = getelementptr inbounds %struct.struct_var, ptr %12, i32 0, i32 6
  store i32 1, ptr %60, align 4, !tbaa !23
  %61 = getelementptr inbounds %struct.struct_var, ptr %12, i32 0, i32 5
  store i8 1, ptr %61, align 8, !tbaa !24
  invoke void @_ZNSt6vectorI10struct_varSaIS0_EE9push_backERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr noundef nonnull align 8 dereferenceable(160) %12)
          to label %62 unwind label %75

62:                                               ; preds = %57
  br label %63

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

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

70:                                               ; preds = %52
  %71 = landingpad { ptr, i32 }
          cleanup
  %72 = extractvalue { ptr, i32 } %71, 0
  store ptr %72, ptr %9, align 8
  %73 = extractvalue { ptr, i32 } %71, 1
  store i32 %73, 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 %74

74:                                               ; preds = %70, %66
  call void @llvm.lifetime.end.p0(i64 40, ptr %14) #7
  br label %79

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

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

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

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

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

87:                                               ; preds = %81
  %88 = call i32 @rand() #7
  %89 = srem i32 %88, 100
  %90 = icmp sle i32 %89, 50
  br i1 %90, label %91, label %93

91:                                               ; preds = %87
  %92 = getelementptr inbounds %struct.struct_var, ptr %12, i32 0, i32 0
  store i32 1, ptr %92, align 8, !tbaa !15
  br label %95

93:                                               ; preds = %87
  %94 = getelementptr inbounds %struct.struct_var, ptr %12, i32 0, i32 0
  store i32 4, ptr %94, align 8, !tbaa !15
  br label %95

95:                                               ; preds = %93, %91
  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 %96 unwind label %114

96:                                               ; preds = %95
  %97 = getelementptr inbounds %struct.parameter, ptr %7, i32 0, i32 4
  %98 = load i32, ptr %97, align 4, !tbaa !28
  %99 = getelementptr inbounds %struct.parameter, ptr %7, i32 0, i32 5
  %100 = load i32, ptr %99, align 4, !tbaa !29
  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 %98, i32 noundef %100, ptr noundef nonnull align 8 dereferenceable(24) %0)
          to label %101 unwind label %118

101:                                              ; preds = %96
  %102 = getelementptr inbounds %struct.struct_var, ptr %12, i32 0, i32 1
  %103 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZN8positionaSEOS_(ptr noundef nonnull align 8 dereferenceable(40) %102, 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
  %104 = getelementptr inbounds %struct.struct_var, ptr %12, i32 0, i32 1
  %105 = getelementptr inbounds %struct.struct_var, ptr %12, i32 0, i32 2
  %106 = invoke noundef nonnull align 8 dereferenceable(40) ptr @_ZN8positionaSERKS_(ptr noundef nonnull align 8 dereferenceable(40) %105, ptr noundef nonnull align 8 dereferenceable(40) %104)
          to label %107 unwind label %123

107:                                              ; preds = %101
  %108 = getelementptr inbounds %struct.struct_var, ptr %12, i32 0, i32 6
  store i32 1, ptr %108, align 4, !tbaa !23
  %109 = getelementptr inbounds %struct.struct_var, ptr %12, i32 0, i32 5
  store i8 1, ptr %109, align 8, !tbaa !24
  invoke void @_ZNSt6vectorI10struct_varSaIS0_EE9push_backERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr noundef nonnull align 8 dereferenceable(160) %12)
          to label %110 unwind label %123

110:                                              ; preds = %107
  br label %111

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

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

118:                                              ; preds = %96
  %119 = landingpad { ptr, i32 }
          cleanup
  %120 = extractvalue { ptr, i32 } %119, 0
  store ptr %120, ptr %9, align 8
  %121 = extractvalue { ptr, i32 } %119, 1
  store i32 %121, 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 %122

122:                                              ; preds = %118, %114
  call void @llvm.lifetime.end.p0(i64 40, ptr %17) #7
  br label %127

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

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

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

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

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

135:                                              ; preds = %129
  %136 = getelementptr inbounds %struct.struct_var, ptr %12, i32 0, i32 0
  store i32 2, ptr %136, 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 %137 unwind label %165

137:                                              ; preds = %135
  %138 = getelementptr inbounds %struct.parameter, ptr %7, i32 0, i32 10
  %139 = load i32, ptr %138, align 4, !tbaa !32
  %140 = getelementptr inbounds %struct.parameter, ptr %7, i32 0, i32 11
  %141 = load i32, ptr %140, align 4, !tbaa !33
  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 %139, i32 noundef %141, ptr noundef nonnull align 8 dereferenceable(24) %0)
          to label %142 unwind label %169

142:                                              ; preds = %137
  %143 = getelementptr inbounds %struct.struct_var, ptr %12, i32 0, i32 1
  %144 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZN8positionaSEOS_(ptr noundef nonnull align 8 dereferenceable(40) %143, 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
  %145 = getelementptr inbounds %struct.struct_var, ptr %12, i32 0, i32 1
  %146 = getelementptr inbounds %struct.struct_var, ptr %12, i32 0, i32 2
  %147 = invoke noundef nonnull align 8 dereferenceable(40) ptr @_ZN8positionaSERKS_(ptr noundef nonnull align 8 dereferenceable(40) %146, ptr noundef nonnull align 8 dereferenceable(40) %145)
          to label %148 unwind label %174

148:                                              ; preds = %142
  %149 = getelementptr inbounds %struct.struct_var, ptr %12, i32 0, i32 1
  %150 = getelementptr inbounds %struct.position, ptr %149, i32 0, i32 2
  %151 = load i32, ptr %150, align 4, !tbaa !34
  %152 = getelementptr inbounds %struct.struct_var, ptr %12, i32 0, i32 2
  %153 = getelementptr inbounds %struct.position, ptr %152, i32 0, i32 1
  store i32 %151, ptr %153, align 8, !tbaa !35
  %154 = getelementptr inbounds %struct.struct_var, ptr %12, i32 0, i32 1
  %155 = getelementptr inbounds %struct.position, ptr %154, i32 0, i32 1
  %156 = load i32, ptr %155, align 8, !tbaa !36
  %157 = getelementptr inbounds %struct.struct_var, ptr %12, i32 0, i32 2
  %158 = getelementptr inbounds %struct.position, ptr %157, i32 0, i32 2
  store i32 %156, ptr %158, align 4, !tbaa !37
  %159 = getelementptr inbounds %struct.struct_var, ptr %12, i32 0, i32 6
  store i32 1, ptr %159, align 4, !tbaa !23
  %160 = getelementptr inbounds %struct.struct_var, ptr %12, i32 0, i32 5
  store i8 1, ptr %160, align 8, !tbaa !24
  invoke void @_ZNSt6vectorI10struct_varSaIS0_EE9push_backERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr noundef nonnull align 8 dereferenceable(160) %12)
          to label %161 unwind label %174

161:                                              ; preds = %148
  br label %162

162:                                              ; preds = %161
  %163 = load i32, ptr %19, align 4, !tbaa !9
  %164 = add nsw i32 %163, 1
  store i32 %164, ptr %19, align 4, !tbaa !9
  br label %129, !llvm.loop !38

165:                                              ; preds = %135
  %166 = landingpad { ptr, i32 }
          cleanup
  %167 = extractvalue { ptr, i32 } %166, 0
  store ptr %167, ptr %9, align 8
  %168 = extractvalue { ptr, i32 } %166, 1
  store i32 %168, ptr %10, align 4
  br label %173

169:                                              ; preds = %137
  %170 = landingpad { ptr, i32 }
          cleanup
  %171 = extractvalue { ptr, i32 } %170, 0
  store ptr %171, ptr %9, align 8
  %172 = extractvalue { ptr, i32 } %170, 1
  store i32 %172, 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 %173

173:                                              ; preds = %169, %165
  call void @llvm.lifetime.end.p0(i64 40, ptr %20) #7
  br label %178

174:                                              ; preds = %148, %142
  %175 = landingpad { ptr, i32 }
          cleanup
  %176 = extractvalue { ptr, i32 } %175, 0
  store ptr %176, ptr %9, align 8
  %177 = extractvalue { ptr, i32 } %175, 1
  store i32 %177, ptr %10, align 4
  br label %178

178:                                              ; preds = %174, %173
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #7
  br label %473

179:                                              ; preds = %134
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #7
  store i32 0, ptr %22, align 4, !tbaa !9
  br label %180

180:                                              ; preds = %307, %179
  %181 = load i32, ptr %22, align 4, !tbaa !9
  %182 = getelementptr inbounds %struct.parameter, ptr %7, i32 0, i32 9
  %183 = load i32, ptr %182, align 4, !tbaa !39
  %184 = icmp slt i32 %181, %183
  br i1 %184, label %186, label %185

185:                                              ; preds = %180
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #7
  br label %315

186:                                              ; preds = %180
  %187 = getelementptr inbounds %struct.struct_var, ptr %12, i32 0, i32 0
  store i32 3, ptr %187, align 8, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 40, ptr %23) #7
  invoke void @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_St4lessIS5_ESaISt4pairIKS5_S5_EEEC2ERKSC_(ptr noundef nonnull align 8 dereferenceable(48) %24, ptr noundef nonnull align 8 dereferenceable(48) %2)
          to label %188 unwind label %244

188:                                              ; preds = %186
  %189 = getelementptr inbounds %struct.parameter, ptr %7, i32 0, i32 7
  %190 = load i32, ptr %189, align 4, !tbaa !40
  %191 = getelementptr inbounds %struct.parameter, ptr %7, i32 0, i32 8
  %192 = load i32, ptr %191, align 4, !tbaa !41
  invoke void @_Z10choose_posSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_St4lessIS5_ESaISt4pairIKS5_S5_EEEiiRSt6vectorI10struct_varSaISE_EE(ptr dead_on_unwind writable sret(%struct.position) align 8 %23, ptr noundef %24, i32 noundef %190, i32 noundef %192, ptr noundef nonnull align 8 dereferenceable(24) %0)
          to label %193 unwind label %248

193:                                              ; preds = %188
  %194 = getelementptr inbounds %struct.struct_var, ptr %12, i32 0, i32 1
  %195 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZN8positionaSEOS_(ptr noundef nonnull align 8 dereferenceable(40) %194, ptr noundef nonnull align 8 dereferenceable(40) %23) #7
  call void @_ZN8positionD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %23) #7
  call void @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_St4lessIS5_ESaISt4pairIKS5_S5_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %24) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr %23) #7
  call void @llvm.lifetime.start.p0(i64 40, ptr %25) #7
  invoke void @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_St4lessIS5_ESaISt4pairIKS5_S5_EEEC2ERKSC_(ptr noundef nonnull align 8 dereferenceable(48) %26, ptr noundef nonnull align 8 dereferenceable(48) %2)
          to label %196 unwind label %253

196:                                              ; preds = %193
  %197 = getelementptr inbounds %struct.struct_var, ptr %12, i32 0, i32 1
  %198 = getelementptr inbounds %struct.position, ptr %197, i32 0, i32 2
  %199 = load i32, ptr %198, align 4, !tbaa !34
  %200 = getelementptr inbounds %struct.struct_var, ptr %12, i32 0, i32 1
  %201 = getelementptr inbounds %struct.position, ptr %200, i32 0, i32 1
  %202 = load i32, ptr %201, align 8, !tbaa !36
  %203 = sub nsw i32 %199, %202
  %204 = getelementptr inbounds %struct.struct_var, ptr %12, i32 0, i32 1
  %205 = getelementptr inbounds %struct.position, ptr %204, i32 0, i32 2
  %206 = load i32, ptr %205, align 4, !tbaa !34
  %207 = getelementptr inbounds %struct.struct_var, ptr %12, i32 0, i32 1
  %208 = getelementptr inbounds %struct.position, ptr %207, i32 0, i32 1
  %209 = load i32, ptr %208, align 8, !tbaa !36
  %210 = sub nsw i32 %206, %209
  %211 = add nsw i32 %210, 1
  invoke void @_Z10choose_posSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_St4lessIS5_ESaISt4pairIKS5_S5_EEEiiRSt6vectorI10struct_varSaISE_EE(ptr dead_on_unwind writable sret(%struct.position) align 8 %25, ptr noundef %26, i32 noundef %203, i32 noundef %211, ptr noundef nonnull align 8 dereferenceable(24) %0)
          to label %212 unwind label %257

212:                                              ; preds = %196
  %213 = getelementptr inbounds %struct.struct_var, ptr %12, i32 0, i32 2
  %214 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZN8positionaSEOS_(ptr noundef nonnull align 8 dereferenceable(40) %213, ptr noundef nonnull align 8 dereferenceable(40) %25) #7
  call void @_ZN8positionD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %25) #7
  call void @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_St4lessIS5_ESaISt4pairIKS5_S5_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %26) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr %25) #7
  br label %215

215:                                              ; preds = %241, %212
  %216 = getelementptr inbounds %struct.struct_var, ptr %12, i32 0, i32 2
  %217 = getelementptr inbounds %struct.position, ptr %216, i32 0, i32 0
  %218 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %217) #7
  %219 = getelementptr inbounds %struct.struct_var, ptr %12, i32 0, i32 1
  %220 = getelementptr inbounds %struct.position, ptr %219, i32 0, i32 0
  %221 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %220) #7
  %222 = call i32 @strcmp(ptr noundef %218, ptr noundef %221) #8
  %223 = icmp eq i32 %222, 0
  br i1 %223, label %224, label %271

224:                                              ; preds = %215
  call void @llvm.lifetime.start.p0(i64 40, ptr %27) #7
  invoke void @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_St4lessIS5_ESaISt4pairIKS5_S5_EEEC2ERKSC_(ptr noundef nonnull align 8 dereferenceable(48) %28, ptr noundef nonnull align 8 dereferenceable(48) %2)
          to label %225 unwind label %262

225:                                              ; preds = %224
  %226 = getelementptr inbounds %struct.struct_var, ptr %12, i32 0, i32 1
  %227 = getelementptr inbounds %struct.position, ptr %226, i32 0, i32 2
  %228 = load i32, ptr %227, align 4, !tbaa !34
  %229 = getelementptr inbounds %struct.struct_var, ptr %12, i32 0, i32 1
  %230 = getelementptr inbounds %struct.position, ptr %229, i32 0, i32 1
  %231 = load i32, ptr %230, align 8, !tbaa !36
  %232 = sub nsw i32 %228, %231
  %233 = getelementptr inbounds %struct.struct_var, ptr %12, i32 0, i32 1
  %234 = getelementptr inbounds %struct.position, ptr %233, i32 0, i32 2
  %235 = load i32, ptr %234, align 4, !tbaa !34
  %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 !36
  %239 = sub nsw i32 %235, %238
  %240 = add nsw i32 %239, 1
  invoke void @_Z10choose_posSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_St4lessIS5_ESaISt4pairIKS5_S5_EEEiiRSt6vectorI10struct_varSaISE_EE(ptr dead_on_unwind writable sret(%struct.position) align 8 %27, ptr noundef %28, i32 noundef %232, i32 noundef %240, ptr noundef nonnull align 8 dereferenceable(24) %0)
          to label %241 unwind label %266

241:                                              ; preds = %225
  %242 = getelementptr inbounds %struct.struct_var, ptr %12, i32 0, i32 2
  %243 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZN8positionaSEOS_(ptr noundef nonnull align 8 dereferenceable(40) %242, ptr noundef nonnull align 8 dereferenceable(40) %27) #7
  call void @_ZN8positionD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %27) #7
  call void @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_St4lessIS5_ESaISt4pairIKS5_S5_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %28) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr %27) #7
  br label %215, !llvm.loop !42

244:                                              ; preds = %186
  %245 = landingpad { ptr, i32 }
          cleanup
  %246 = extractvalue { ptr, i32 } %245, 0
  store ptr %246, ptr %9, align 8
  %247 = extractvalue { ptr, i32 } %245, 1
  store i32 %247, ptr %10, align 4
  br label %252

248:                                              ; preds = %188
  %249 = landingpad { ptr, i32 }
          cleanup
  %250 = extractvalue { ptr, i32 } %249, 0
  store ptr %250, ptr %9, align 8
  %251 = extractvalue { ptr, i32 } %249, 1
  store i32 %251, ptr %10, align 4
  call void @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_St4lessIS5_ESaISt4pairIKS5_S5_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %24) #7
  br label %252

252:                                              ; preds = %248, %244
  call void @llvm.lifetime.end.p0(i64 40, ptr %23) #7
  br label %314

253:                                              ; preds = %193
  %254 = landingpad { ptr, i32 }
          cleanup
  %255 = extractvalue { ptr, i32 } %254, 0
  store ptr %255, ptr %9, align 8
  %256 = extractvalue { ptr, i32 } %254, 1
  store i32 %256, ptr %10, align 4
  br label %261

257:                                              ; preds = %196
  %258 = landingpad { ptr, i32 }
          cleanup
  %259 = extractvalue { ptr, i32 } %258, 0
  store ptr %259, ptr %9, align 8
  %260 = extractvalue { ptr, i32 } %258, 1
  store i32 %260, ptr %10, align 4
  call void @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_St4lessIS5_ESaISt4pairIKS5_S5_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %26) #7
  br label %261

261:                                              ; preds = %257, %253
  call void @llvm.lifetime.end.p0(i64 40, ptr %25) #7
  br label %314

262:                                              ; preds = %224
  %263 = landingpad { ptr, i32 }
          cleanup
  %264 = extractvalue { ptr, i32 } %263, 0
  store ptr %264, ptr %9, align 8
  %265 = extractvalue { ptr, i32 } %263, 1
  store i32 %265, ptr %10, align 4
  br label %270

266:                                              ; preds = %225
  %267 = landingpad { ptr, i32 }
          cleanup
  %268 = extractvalue { ptr, i32 } %267, 0
  store ptr %268, ptr %9, align 8
  %269 = extractvalue { ptr, i32 } %267, 1
  store i32 %269, ptr %10, align 4
  call void @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_St4lessIS5_ESaISt4pairIKS5_S5_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %28) #7
  br label %270

270:                                              ; preds = %266, %262
  call void @llvm.lifetime.end.p0(i64 40, ptr %27) #7
  br label %314

271:                                              ; preds = %215
  call void @llvm.lifetime.start.p0(i64 4, ptr %29) #7
  %272 = getelementptr inbounds %struct.struct_var, ptr %12, i32 0, i32 1
  %273 = getelementptr inbounds %struct.position, ptr %272, i32 0, i32 2
  %274 = load i32, ptr %273, align 4, !tbaa !34
  %275 = getelementptr inbounds %struct.struct_var, ptr %12, i32 0, i32 1
  %276 = getelementptr inbounds %struct.position, ptr %275, i32 0, i32 1
  %277 = load i32, ptr %276, align 8, !tbaa !36
  %278 = sub nsw i32 %274, %277
  store i32 %278, ptr %29, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %30) #7
  %279 = getelementptr inbounds %struct.struct_var, ptr %12, i32 0, i32 2
  %280 = getelementptr inbounds %struct.position, ptr %279, i32 0, i32 2
  %281 = load i32, ptr %280, align 4, !tbaa !37
  %282 = getelementptr inbounds %struct.struct_var, ptr %12, i32 0, i32 2
  %283 = getelementptr inbounds %struct.position, ptr %282, i32 0, i32 1
  %284 = load i32, ptr %283, align 8, !tbaa !35
  %285 = sub nsw i32 %281, %284
  store i32 %285, ptr %30, align 4, !tbaa !9
  %286 = getelementptr inbounds %struct.struct_var, ptr %12, i32 0, i32 1
  %287 = getelementptr inbounds %struct.position, ptr %286, i32 0, i32 1
  %288 = load i32, ptr %287, align 8, !tbaa !36
  %289 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3minIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %29, ptr noundef nonnull align 4 dereferenceable(4) %30)
          to label %290 unwind label %310

290:                                              ; preds = %271
  %291 = load i32, ptr %289, align 4, !tbaa !9
  %292 = add nsw i32 %288, %291
  %293 = getelementptr inbounds %struct.struct_var, ptr %12, i32 0, i32 1
  %294 = getelementptr inbounds %struct.position, ptr %293, i32 0, i32 2
  store i32 %292, ptr %294, align 4, !tbaa !34
  %295 = getelementptr inbounds %struct.struct_var, ptr %12, i32 0, i32 2
  %296 = getelementptr inbounds %struct.position, ptr %295, i32 0, i32 1
  %297 = load i32, ptr %296, align 8, !tbaa !35
  %298 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3minIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %29, ptr noundef nonnull align 4 dereferenceable(4) %30)
          to label %299 unwind label %310

299:                                              ; preds = %290
  %300 = load i32, ptr %298, align 4, !tbaa !9
  %301 = add nsw i32 %297, %300
  %302 = getelementptr inbounds %struct.struct_var, ptr %12, i32 0, i32 2
  %303 = getelementptr inbounds %struct.position, ptr %302, i32 0, i32 2
  store i32 %301, ptr %303, align 4, !tbaa !37
  %304 = getelementptr inbounds %struct.struct_var, ptr %12, i32 0, i32 6
  store i32 1, ptr %304, align 4, !tbaa !23
  %305 = getelementptr inbounds %struct.struct_var, ptr %12, i32 0, i32 5
  store i8 1, ptr %305, align 8, !tbaa !24
  invoke void @_ZNSt6vectorI10struct_varSaIS0_EE9push_backERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr noundef nonnull align 8 dereferenceable(160) %12)
          to label %306 unwind label %310

306:                                              ; preds = %299
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #7
  br label %307

307:                                              ; preds = %306
  %308 = load i32, ptr %22, align 4, !tbaa !9
  %309 = add nsw i32 %308, 1
  store i32 %309, ptr %22, align 4, !tbaa !9
  br label %180, !llvm.loop !43

310:                                              ; preds = %299, %290, %271
  %311 = landingpad { ptr, i32 }
          cleanup
  %312 = extractvalue { ptr, i32 } %311, 0
  store ptr %312, ptr %9, align 8
  %313 = extractvalue { ptr, i32 } %311, 1
  store i32 %313, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #7
  br label %314

314:                                              ; preds = %310, %270, %261, %252
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #7
  br label %473

315:                                              ; preds = %185
  call void @llvm.lifetime.start.p0(i64 4, ptr %31) #7
  store i32 0, ptr %31, align 4, !tbaa !9
  br label %316

316:                                              ; preds = %412, %315
  %317 = load i32, ptr %31, align 4, !tbaa !9
  %318 = getelementptr inbounds %struct.parameter, ptr %7, i32 0, i32 15
  %319 = load i32, ptr %318, align 4, !tbaa !44
  %320 = icmp slt i32 %317, %319
  br i1 %320, label %322, label %321

321:                                              ; preds = %316
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #7
  br label %434

322:                                              ; preds = %316
  %323 = getelementptr inbounds %struct.struct_var, ptr %12, i32 0, i32 0
  store i32 2, ptr %323, align 8, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 40, ptr %32) #7
  invoke void @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_St4lessIS5_ESaISt4pairIKS5_S5_EEEC2ERKSC_(ptr noundef nonnull align 8 dereferenceable(48) %33, ptr noundef nonnull align 8 dereferenceable(48) %2)
          to label %324 unwind label %415

324:                                              ; preds = %322
  %325 = getelementptr inbounds %struct.parameter, ptr %7, i32 0, i32 13
  %326 = load i32, ptr %325, align 4, !tbaa !45
  %327 = getelementptr inbounds %struct.parameter, ptr %7, i32 0, i32 14
  %328 = load i32, ptr %327, align 4, !tbaa !46
  invoke void @_Z10choose_posSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_St4lessIS5_ESaISt4pairIKS5_S5_EEEiiRSt6vectorI10struct_varSaISE_EE(ptr dead_on_unwind writable sret(%struct.position) align 8 %32, ptr noundef %33, i32 noundef %326, i32 noundef %328, ptr noundef nonnull align 8 dereferenceable(24) %0)
          to label %329 unwind label %419

329:                                              ; preds = %324
  %330 = getelementptr inbounds %struct.struct_var, ptr %12, i32 0, i32 1
  %331 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZN8positionaSEOS_(ptr noundef nonnull align 8 dereferenceable(40) %330, ptr noundef nonnull align 8 dereferenceable(40) %32) #7
  call void @_ZN8positionD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %32) #7
  call void @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_St4lessIS5_ESaISt4pairIKS5_S5_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %33) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr %32) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %34) #7
  %332 = getelementptr inbounds %struct.struct_var, ptr %12, i32 0, i32 1
  %333 = getelementptr inbounds %struct.position, ptr %332, i32 0, i32 2
  %334 = load i32, ptr %333, align 4, !tbaa !34
  %335 = getelementptr inbounds %struct.struct_var, ptr %12, i32 0, i32 1
  %336 = getelementptr inbounds %struct.position, ptr %335, i32 0, i32 1
  %337 = load i32, ptr %336, align 8, !tbaa !36
  %338 = sub nsw i32 %334, %337
  %339 = sdiv i32 %338, 10
  store i32 %339, ptr %34, align 4, !tbaa !9
  %340 = load i32, ptr %34, align 4, !tbaa !9
  %341 = getelementptr inbounds %struct.struct_var, ptr %12, i32 0, i32 1
  %342 = getelementptr inbounds %struct.position, ptr %341, i32 0, i32 1
  %343 = load i32, ptr %342, align 8, !tbaa !36
  %344 = add nsw i32 %343, %340
  store i32 %344, ptr %342, align 8, !tbaa !36
  %345 = load i32, ptr %34, align 4, !tbaa !9
  %346 = getelementptr inbounds %struct.struct_var, ptr %12, i32 0, i32 1
  %347 = getelementptr inbounds %struct.position, ptr %346, i32 0, i32 2
  %348 = load i32, ptr %347, align 4, !tbaa !34
  %349 = sub nsw i32 %348, %345
  store i32 %349, ptr %347, align 4, !tbaa !34
  %350 = getelementptr inbounds %struct.struct_var, ptr %12, i32 0, i32 1
  %351 = getelementptr inbounds %struct.struct_var, ptr %12, i32 0, i32 2
  %352 = invoke noundef nonnull align 8 dereferenceable(40) ptr @_ZN8positionaSERKS_(ptr noundef nonnull align 8 dereferenceable(40) %351, ptr noundef nonnull align 8 dereferenceable(40) %350)
          to label %353 unwind label %424

353:                                              ; preds = %329
  %354 = getelementptr inbounds %struct.struct_var, ptr %12, i32 0, i32 1
  %355 = getelementptr inbounds %struct.position, ptr %354, i32 0, i32 2
  %356 = load i32, ptr %355, align 4, !tbaa !34
  %357 = getelementptr inbounds %struct.struct_var, ptr %12, i32 0, i32 2
  %358 = getelementptr inbounds %struct.position, ptr %357, i32 0, i32 1
  store i32 %356, ptr %358, align 8, !tbaa !35
  %359 = getelementptr inbounds %struct.struct_var, ptr %12, i32 0, i32 1
  %360 = getelementptr inbounds %struct.position, ptr %359, i32 0, i32 1
  %361 = load i32, ptr %360, align 8, !tbaa !36
  %362 = getelementptr inbounds %struct.struct_var, ptr %12, i32 0, i32 2
  %363 = getelementptr inbounds %struct.position, ptr %362, i32 0, i32 2
  store i32 %361, ptr %363, align 4, !tbaa !37
  %364 = getelementptr inbounds %struct.struct_var, ptr %12, i32 0, i32 5
  store i8 1, ptr %364, align 8, !tbaa !24
  %365 = getelementptr inbounds %struct.struct_var, ptr %12, i32 0, i32 6
  store i32 1, ptr %365, 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 %366 unwind label %424

366:                                              ; preds = %353
  call void @llvm.lifetime.start.p0(i64 160, ptr %35) #7
  call void @_ZN10struct_varC2Ev(ptr noundef nonnull align 8 dereferenceable(160) %35) #7
  %367 = getelementptr inbounds %struct.struct_var, ptr %35, i32 0, i32 0
  store i32 4, ptr %367, align 8, !tbaa !15
  %368 = getelementptr inbounds %struct.struct_var, ptr %12, i32 0, i32 1
  %369 = getelementptr inbounds %struct.position, ptr %368, i32 0, i32 0
  %370 = getelementptr inbounds %struct.struct_var, ptr %35, i32 0, i32 1
  %371 = getelementptr inbounds %struct.position, ptr %370, i32 0, i32 0
  %372 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %371, ptr noundef nonnull align 8 dereferenceable(32) %369)
          to label %373 unwind label %428

373:                                              ; preds = %366
  %374 = getelementptr inbounds %struct.struct_var, ptr %12, i32 0, i32 1
  %375 = getelementptr inbounds %struct.position, ptr %374, i32 0, i32 1
  %376 = load i32, ptr %375, align 8, !tbaa !36
  %377 = getelementptr inbounds %struct.struct_var, ptr %35, i32 0, i32 1
  %378 = getelementptr inbounds %struct.position, ptr %377, i32 0, i32 2
  store i32 %376, ptr %378, align 4, !tbaa !34
  %379 = getelementptr inbounds %struct.struct_var, ptr %35, i32 0, i32 1
  %380 = getelementptr inbounds %struct.position, ptr %379, i32 0, i32 2
  %381 = load i32, ptr %380, align 4, !tbaa !34
  %382 = load i32, ptr %34, align 4, !tbaa !9
  %383 = sub nsw i32 %381, %382
  %384 = getelementptr inbounds %struct.struct_var, ptr %35, i32 0, i32 1
  %385 = getelementptr inbounds %struct.position, ptr %384, i32 0, i32 1
  store i32 %383, ptr %385, align 8, !tbaa !36
  %386 = getelementptr inbounds %struct.struct_var, ptr %35, i32 0, i32 1
  %387 = getelementptr inbounds %struct.struct_var, ptr %35, i32 0, i32 2
  %388 = invoke noundef nonnull align 8 dereferenceable(40) ptr @_ZN8positionaSERKS_(ptr noundef nonnull align 8 dereferenceable(40) %387, ptr noundef nonnull align 8 dereferenceable(40) %386)
          to label %389 unwind label %428

389:                                              ; preds = %373
  %390 = getelementptr inbounds %struct.struct_var, ptr %12, i32 0, i32 5
  store i8 1, ptr %390, align 8, !tbaa !24
  %391 = getelementptr inbounds %struct.struct_var, ptr %12, i32 0, i32 6
  store i32 1, ptr %391, 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) %35)
          to label %392 unwind label %428

392:                                              ; preds = %389
  %393 = getelementptr inbounds %struct.struct_var, ptr %12, i32 0, i32 1
  %394 = getelementptr inbounds %struct.position, ptr %393, i32 0, i32 2
  %395 = load i32, ptr %394, align 4, !tbaa !34
  %396 = getelementptr inbounds %struct.struct_var, ptr %35, i32 0, i32 1
  %397 = getelementptr inbounds %struct.position, ptr %396, i32 0, i32 1
  store i32 %395, ptr %397, align 8, !tbaa !36
  %398 = getelementptr inbounds %struct.struct_var, ptr %35, i32 0, i32 1
  %399 = getelementptr inbounds %struct.position, ptr %398, i32 0, i32 1
  %400 = load i32, ptr %399, align 8, !tbaa !36
  %401 = load i32, ptr %34, align 4, !tbaa !9
  %402 = add nsw i32 %400, %401
  %403 = getelementptr inbounds %struct.struct_var, ptr %35, i32 0, i32 1
  %404 = getelementptr inbounds %struct.position, ptr %403, i32 0, i32 2
  store i32 %402, ptr %404, align 4, !tbaa !34
  %405 = getelementptr inbounds %struct.struct_var, ptr %35, i32 0, i32 1
  %406 = getelementptr inbounds %struct.struct_var, ptr %35, i32 0, i32 2
  %407 = invoke noundef nonnull align 8 dereferenceable(40) ptr @_ZN8positionaSERKS_(ptr noundef nonnull align 8 dereferenceable(40) %406, ptr noundef nonnull align 8 dereferenceable(40) %405)
          to label %408 unwind label %428

408:                                              ; preds = %392
  %409 = getelementptr inbounds %struct.struct_var, ptr %12, i32 0, i32 5
  store i8 1, ptr %409, align 8, !tbaa !24
  %410 = getelementptr inbounds %struct.struct_var, ptr %12, i32 0, i32 6
  store i32 1, ptr %410, 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) %35)
          to label %411 unwind label %428

411:                                              ; preds = %408
  call void @_ZN10struct_varD2Ev(ptr noundef nonnull align 8 dereferenceable(160) %35) #7
  call void @llvm.lifetime.end.p0(i64 160, ptr %35) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #7
  br label %412

412:                                              ; preds = %411
  %413 = load i32, ptr %31, align 4, !tbaa !9
  %414 = add nsw i32 %413, 1
  store i32 %414, ptr %31, align 4, !tbaa !9
  br label %316, !llvm.loop !47

415:                                              ; preds = %322
  %416 = landingpad { ptr, i32 }
          cleanup
  %417 = extractvalue { ptr, i32 } %416, 0
  store ptr %417, ptr %9, align 8
  %418 = extractvalue { ptr, i32 } %416, 1
  store i32 %418, ptr %10, align 4
  br label %423

419:                                              ; preds = %324
  %420 = landingpad { ptr, i32 }
          cleanup
  %421 = extractvalue { ptr, i32 } %420, 0
  store ptr %421, ptr %9, align 8
  %422 = extractvalue { ptr, i32 } %420, 1
  store i32 %422, ptr %10, align 4
  call void @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_St4lessIS5_ESaISt4pairIKS5_S5_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %33) #7
  br label %423

423:                                              ; preds = %419, %415
  call void @llvm.lifetime.end.p0(i64 40, ptr %32) #7
  br label %433

424:                                              ; preds = %353, %329
  %425 = landingpad { ptr, i32 }
          cleanup
  %426 = extractvalue { ptr, i32 } %425, 0
  store ptr %426, ptr %9, align 8
  %427 = extractvalue { ptr, i32 } %425, 1
  store i32 %427, ptr %10, align 4
  br label %432

428:                                              ; preds = %408, %392, %389, %373, %366
  %429 = landingpad { ptr, i32 }
          cleanup
  %430 = extractvalue { ptr, i32 } %429, 0
  store ptr %430, ptr %9, align 8
  %431 = extractvalue { ptr, i32 } %429, 1
  store i32 %431, ptr %10, align 4
  call void @_ZN10struct_varD2Ev(ptr noundef nonnull align 8 dereferenceable(160) %35) #7
  call void @llvm.lifetime.end.p0(i64 160, ptr %35) #7
  br label %432

432:                                              ; preds = %428, %424
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #7
  br label %433

433:                                              ; preds = %432, %423
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #7
  br label %473

434:                                              ; preds = %321
  call void @llvm.lifetime.start.p0(i64 4, ptr %36) #7
  store i32 0, ptr %36, align 4, !tbaa !9
  br label %435

435:                                              ; preds = %454, %434
  %436 = load i32, ptr %36, align 4, !tbaa !9
  %437 = getelementptr inbounds %struct.parameter, ptr %7, i32 0, i32 18
  %438 = load i32, ptr %437, align 4, !tbaa !48
  %439 = icmp slt i32 %436, %438
  br i1 %439, label %441, label %440

440:                                              ; preds = %435
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #7
  br label %471

441:                                              ; preds = %435
  %442 = getelementptr inbounds %struct.struct_var, ptr %12, i32 0, i32 0
  store i32 5, ptr %442, align 8, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 40, ptr %37) #7
  invoke void @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_St4lessIS5_ESaISt4pairIKS5_S5_EEEC2ERKSC_(ptr noundef nonnull align 8 dereferenceable(48) %38, ptr noundef nonnull align 8 dereferenceable(48) %2)
          to label %443 unwind label %457

443:                                              ; preds = %441
  %444 = getelementptr inbounds %struct.parameter, ptr %7, i32 0, i32 16
  %445 = load i32, ptr %444, align 4, !tbaa !49
  %446 = getelementptr inbounds %struct.parameter, ptr %7, i32 0, i32 17
  %447 = load i32, ptr %446, align 4, !tbaa !50
  invoke void @_Z10choose_posSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_St4lessIS5_ESaISt4pairIKS5_S5_EEEiiRSt6vectorI10struct_varSaISE_EE(ptr dead_on_unwind writable sret(%struct.position) align 8 %37, ptr noundef %38, i32 noundef %445, i32 noundef %447, ptr noundef nonnull align 8 dereferenceable(24) %0)
          to label %448 unwind label %461

448:                                              ; preds = %443
  %449 = getelementptr inbounds %struct.struct_var, ptr %12, i32 0, i32 1
  %450 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZN8positionaSEOS_(ptr noundef nonnull align 8 dereferenceable(40) %449, ptr noundef nonnull align 8 dereferenceable(40) %37) #7
  call void @_ZN8positionD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %37) #7
  call void @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_St4lessIS5_ESaISt4pairIKS5_S5_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %38) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr %37) #7
  %451 = getelementptr inbounds %struct.struct_var, ptr %12, i32 0, i32 5
  store i8 1, ptr %451, align 8, !tbaa !24
  %452 = getelementptr inbounds %struct.struct_var, ptr %12, i32 0, i32 6
  store i32 1, ptr %452, 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 %453 unwind label %466

453:                                              ; preds = %448
  br label %454

454:                                              ; preds = %453
  %455 = load i32, ptr %36, align 4, !tbaa !9
  %456 = add nsw i32 %455, 1
  store i32 %456, ptr %36, align 4, !tbaa !9
  br label %435, !llvm.loop !51

457:                                              ; preds = %441
  %458 = landingpad { ptr, i32 }
          cleanup
  %459 = extractvalue { ptr, i32 } %458, 0
  store ptr %459, ptr %9, align 8
  %460 = extractvalue { ptr, i32 } %458, 1
  store i32 %460, ptr %10, align 4
  br label %465

461:                                              ; preds = %443
  %462 = landingpad { ptr, i32 }
          cleanup
  %463 = extractvalue { ptr, i32 } %462, 0
  store ptr %463, ptr %9, align 8
  %464 = extractvalue { ptr, i32 } %462, 1
  store i32 %464, ptr %10, align 4
  call void @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_St4lessIS5_ESaISt4pairIKS5_S5_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %38) #7
  br label %465

465:                                              ; preds = %461, %457
  call void @llvm.lifetime.end.p0(i64 40, ptr %37) #7
  br label %470

466:                                              ; preds = %448
  %467 = landingpad { ptr, i32 }
          cleanup
  %468 = extractvalue { ptr, i32 } %467, 0
  store ptr %468, ptr %9, align 8
  %469 = extractvalue { ptr, i32 } %467, 1
  store i32 %469, ptr %10, align 4
  br label %470

470:                                              ; preds = %466, %465
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #7
  br label %473

471:                                              ; preds = %440
  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
  %472 = load i1, ptr %11, align 1
  br i1 %472, label %475, label %474

473:                                              ; preds = %470, %433, %314, %178, %127, %79
  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 %476

474:                                              ; preds = %471
  call void @_ZNSt6vectorI10struct_varSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %0) #7
  br label %475

475:                                              ; preds = %474, %471
  call void @llvm.lifetime.end.p0(i64 96, ptr %7) #7
  ret void

476:                                              ; preds = %473, %46
  call void @llvm.lifetime.end.p0(i64 96, ptr %7) #7
  br label %477

477:                                              ; preds = %476
  %478 = load ptr, ptr %9, align 8
  %479 = load i32, ptr %10, align 4
  %480 = insertvalue { ptr, i32 } poison, ptr %478, 0
  %481 = insertvalue { ptr, i32 } %480, i32 %479, 1
  resume { ptr, i32 } %481
}

; 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

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 12}
!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 0}
!22 = !{!12, !10, i64 4}
!23 = !{!16, !10, i64 156}
!24 = !{!16, !13, i64 152}
!25 = distinct !{!25, !26}
!26 = !{!"llvm.loop.mustprogress"}
!27 = !{!12, !10, i64 24}
!28 = !{!12, !10, i64 16}
!29 = !{!12, !10, i64 20}
!30 = distinct !{!30, !26}
!31 = !{!12, !10, i64 48}
!32 = !{!12, !10, i64 40}
!33 = !{!12, !10, i64 44}
!34 = !{!16, !10, i64 44}
!35 = !{!16, !10, i64 80}
!36 = !{!16, !10, i64 40}
!37 = !{!16, !10, i64 84}
!38 = distinct !{!38, !26}
!39 = !{!12, !10, i64 36}
!40 = !{!12, !10, i64 28}
!41 = !{!12, !10, i64 32}
!42 = distinct !{!42, !26}
!43 = distinct !{!43, !26}
!44 = !{!12, !10, i64 60}
!45 = !{!12, !10, i64 52}
!46 = !{!12, !10, i64 56}
!47 = distinct !{!47, !26}
!48 = !{!12, !10, i64 72}
!49 = !{!12, !10, i64 64}
!50 = !{!12, !10, i64 68}
!51 = distinct !{!51, !26}


; 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 uwtable
declare noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSERKS4_(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #1 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_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: mustprogress uwtable
define dso_local void @_Z18generate_mutationsNSt7__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 %struct.position, align 8
  %18 = alloca %"class.std::map", align 8
  %19 = alloca i32, align 4
  %20 = alloca i32, align 4
  %21 = alloca %struct.position, align 8
  %22 = alloca %"class.std::map", align 8
  %23 = alloca %struct.struct_var, align 8
  %24 = alloca %struct.position, align 8
  %25 = alloca %"class.std::map", align 8
  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 %26 unwind label %43

26:                                               ; 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
  %27 = getelementptr inbounds i8, ptr %4, i64 12
  %28 = load i32, ptr %27, align 4, !tbaa !5
  %29 = icmp sgt i32 %28, 0
  br i1 %29, label %.lr.ph, label %.preheader73

.lr.ph:                                           ; preds = %26
  %30 = getelementptr inbounds i8, ptr %4, i64 4
  %31 = getelementptr inbounds i8, ptr %6, i64 8
  %32 = getelementptr inbounds i8, ptr %6, i64 156
  %33 = getelementptr inbounds i8, ptr %6, i64 152
  br label %45

.preheader73:                                     ; preds = %51, %26
  %34 = getelementptr inbounds i8, ptr %4, i64 24
  %35 = load i32, ptr %34, align 4, !tbaa !12
  %36 = icmp sgt i32 %35, 0
  br i1 %36, label %.lr.ph76, label %.preheader72

.lr.ph76:                                         ; preds = %.preheader73
  %37 = getelementptr inbounds i8, ptr %4, i64 16
  %38 = getelementptr inbounds i8, ptr %4, i64 20
  %39 = getelementptr inbounds i8, ptr %6, i64 8
  %40 = getelementptr inbounds i8, ptr %6, i64 48
  %41 = getelementptr inbounds i8, ptr %6, i64 156
  %42 = getelementptr inbounds i8, ptr %6, i64 152
  br label %73

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

45:                                               ; preds = %.lr.ph, %51
  %.02374 = phi i32 [ 0, %.lr.ph ], [ %52, %51 ]
  store i32 0, 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 %46 unwind label %55

46:                                               ; preds = %45
  %47 = load i32, ptr %4, align 4, !tbaa !20
  %48 = load i32, ptr %30, 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 %47, i32 noundef %48, ptr noundef nonnull align 8 dereferenceable(24) %0)
          to label %49 unwind label %57

49:                                               ; preds = %46
  %50 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZN8positionaSEOS_(ptr noundef nonnull align 8 dereferenceable(40) %31, 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
  store i32 1, ptr %32, align 4, !tbaa !22
  store i8 1, ptr %33, align 8, !tbaa !23
  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 = %49
  %52 = add nuw nsw i32 %.02374, 1
  %53 = load i32, ptr %27, align 4, !tbaa !5
  %54 = icmp slt i32 %52, %53
  br i1 %54, label %45, label %.preheader73, !llvm.loop !24

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

57:                                               ; preds = %46
  %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
  %.pn64 = phi { ptr, i32 } [ %58, %57 ], [ %56, %55 ]
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %7) #7
  br label %273

60:                                               ; preds = %49
  %61 = landingpad { ptr, i32 }
          cleanup
  br label %273

.preheader72:                                     ; preds = %84, %.preheader73
  %62 = getelementptr inbounds i8, ptr %4, i64 48
  %63 = load i32, ptr %62, align 4, !tbaa !26
  %64 = icmp sgt i32 %63, 0
  br i1 %64, label %.lr.ph78, label %.preheader71

.lr.ph78:                                         ; preds = %.preheader72
  %65 = getelementptr inbounds i8, ptr %4, i64 40
  %66 = getelementptr inbounds i8, ptr %4, i64 44
  %67 = getelementptr inbounds i8, ptr %6, i64 8
  %68 = getelementptr inbounds i8, ptr %6, i64 48
  %69 = getelementptr inbounds i8, ptr %6, i64 80
  %70 = getelementptr inbounds i8, ptr %6, i64 40
  %71 = getelementptr inbounds i8, ptr %6, i64 156
  %72 = getelementptr inbounds i8, ptr %6, i64 152
  br label %108

73:                                               ; preds = %.lr.ph76, %84
  %.02275 = phi i32 [ 0, %.lr.ph76 ], [ %85, %84 ]
  %74 = call i32 @rand() #7
  %75 = srem i32 %74, 100
  %76 = icmp slt i32 %75, 51
  %. = select i1 %76, i32 1, i32 4
  store i32 %., 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 %77 unwind label %88

77:                                               ; preds = %73
  %78 = load i32, ptr %37, align 4, !tbaa !27
  %79 = load i32, ptr %38, align 4, !tbaa !28
  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 %78, i32 noundef %79, ptr noundef nonnull align 8 dereferenceable(24) %0)
          to label %80 unwind label %90

80:                                               ; preds = %77
  %81 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZN8positionaSEOS_(ptr noundef nonnull align 8 dereferenceable(40) %39, 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
  %82 = invoke noundef nonnull align 8 dereferenceable(40) ptr @_ZN8positionaSERKS_(ptr noundef nonnull align 8 dereferenceable(40) %40, ptr noundef nonnull align 8 dereferenceable(40) %39)
          to label %83 unwind label %93

83:                                               ; preds = %80
  store i32 1, ptr %41, align 4, !tbaa !22
  store i8 1, ptr %42, align 8, !tbaa !23
  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 = %83
  %85 = add nuw nsw i32 %.02275, 1
  %86 = load i32, ptr %34, align 4, !tbaa !12
  %87 = icmp slt i32 %85, %86
  br i1 %87, label %73, label %.preheader72, !llvm.loop !29

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

90:                                               ; preds = %77
  %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
  %.pn60 = phi { ptr, i32 } [ %91, %90 ], [ %89, %88 ]
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %9) #7
  br label %273

93:                                               ; preds = %83, %80
  %94 = landingpad { ptr, i32 }
          cleanup
  br label %273

.preheader71:                                     ; preds = %118, %.preheader72
  %95 = getelementptr inbounds i8, ptr %4, i64 36
  %96 = load i32, ptr %95, align 4, !tbaa !30
  %97 = icmp sgt i32 %96, 0
  br i1 %97, label %.lr.ph81, label %.preheader70

.lr.ph81:                                         ; preds = %.preheader71
  %98 = getelementptr inbounds i8, ptr %4, i64 28
  %99 = getelementptr inbounds i8, ptr %4, i64 32
  %100 = getelementptr inbounds i8, ptr %6, i64 8
  %101 = getelementptr inbounds i8, ptr %6, i64 44
  %102 = getelementptr inbounds i8, ptr %6, i64 40
  %103 = getelementptr inbounds i8, ptr %6, i64 48
  %104 = getelementptr inbounds i8, ptr %6, i64 84
  %105 = getelementptr inbounds i8, ptr %6, i64 80
  %106 = getelementptr inbounds i8, ptr %6, i64 156
  %107 = getelementptr inbounds i8, ptr %6, i64 152
  br label %145

108:                                              ; preds = %.lr.ph78, %118
  %.02177 = phi i32 [ 0, %.lr.ph78 ], [ %119, %118 ]
  store i32 2, 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 %109 unwind label %122

109:                                              ; preds = %108
  %110 = load i32, ptr %65, align 4, !tbaa !31
  %111 = load i32, ptr %66, align 4, !tbaa !32
  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 %110, i32 noundef %111, ptr noundef nonnull align 8 dereferenceable(24) %0)
          to label %112 unwind label %124

112:                                              ; preds = %109
  %113 = 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
  %114 = invoke noundef nonnull align 8 dereferenceable(40) ptr @_ZN8positionaSERKS_(ptr noundef nonnull align 8 dereferenceable(40) %68, ptr noundef nonnull align 8 dereferenceable(40) %67)
          to label %115 unwind label %127

115:                                              ; preds = %112
  %116 = load <2 x i32>, ptr %70, align 8, !tbaa !33
  %117 = shufflevector <2 x i32> %116, <2 x i32> poison, <2 x i32> <i32 1, i32 0>
  store <2 x i32> %117, ptr %69, align 8, !tbaa !33
  store i32 1, ptr %71, align 4, !tbaa !22
  store i8 1, ptr %72, align 8, !tbaa !23
  invoke void @_ZNSt6vectorI10struct_varSaIS0_EE9push_backERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr noundef nonnull align 8 dereferenceable(160) %6)
          to label %118 unwind label %127

118:                                              ; preds = %115
  %119 = add nuw nsw i32 %.02177, 1
  %120 = load i32, ptr %62, align 4, !tbaa !26
  %121 = icmp slt i32 %119, %120
  br i1 %121, label %108, label %.preheader71, !llvm.loop !34

122:                                              ; preds = %108
  %123 = landingpad { ptr, i32 }
          cleanup
  br label %126

124:                                              ; preds = %109
  %125 = 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 %126

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

127:                                              ; preds = %115, %112
  %128 = landingpad { ptr, i32 }
          cleanup
  br label %273

.preheader70:                                     ; preds = %201, %.preheader71
  %129 = getelementptr inbounds i8, ptr %4, i64 60
  %130 = load i32, ptr %129, align 4, !tbaa !35
  %131 = icmp sgt i32 %130, 0
  br i1 %131, label %.lr.ph83, label %.preheader

.lr.ph83:                                         ; preds = %.preheader70
  %132 = getelementptr inbounds i8, ptr %4, i64 52
  %133 = getelementptr inbounds i8, ptr %4, i64 56
  %134 = getelementptr inbounds i8, ptr %6, i64 8
  %135 = getelementptr inbounds i8, ptr %6, i64 44
  %136 = getelementptr inbounds i8, ptr %6, i64 40
  %137 = getelementptr inbounds i8, ptr %6, i64 48
  %138 = getelementptr inbounds i8, ptr %6, i64 80
  %139 = getelementptr inbounds i8, ptr %6, i64 152
  %140 = getelementptr inbounds i8, ptr %6, i64 156
  %141 = getelementptr inbounds i8, ptr %23, i64 8
  %142 = getelementptr inbounds i8, ptr %23, i64 44
  %143 = getelementptr inbounds i8, ptr %23, i64 40
  %144 = getelementptr inbounds i8, ptr %23, i64 48
  br label %215

145:                                              ; preds = %.lr.ph81, %201
  %.02080 = phi i32 [ 0, %.lr.ph81 ], [ %202, %201 ]
  store i32 3, ptr %6, align 8, !tbaa !13
  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 %146 unwind label %173

146:                                              ; preds = %145
  %147 = load i32, ptr %98, align 4, !tbaa !36
  %148 = load i32, ptr %99, align 4, !tbaa !37
  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 %147, i32 noundef %148, ptr noundef nonnull align 8 dereferenceable(24) %0)
          to label %149 unwind label %175

149:                                              ; preds = %146
  %150 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZN8positionaSEOS_(ptr noundef nonnull align 8 dereferenceable(40) %100, 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
  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 %151 unwind label %178

151:                                              ; preds = %149
  %152 = load i32, ptr %101, align 4, !tbaa !38
  %153 = load i32, ptr %102, align 8, !tbaa !39
  %154 = sub nsw i32 %152, %153
  %155 = add nsw i32 %154, 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 %154, i32 noundef %155, ptr noundef nonnull align 8 dereferenceable(24) %0)
          to label %156 unwind label %180

156:                                              ; preds = %151
  %157 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZN8positionaSEOS_(ptr noundef nonnull align 8 dereferenceable(40) %103, 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
  %158 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %103) #7
  %159 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %100) #7
  %160 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %158, ptr noundef nonnull dereferenceable(1) %159) #8
  %161 = icmp eq i32 %160, 0
  br i1 %161, label %.lr.ph79, label %._crit_edge

.lr.ph79:                                         ; preds = %156, %167
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %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 %162 unwind label %183

162:                                              ; preds = %.lr.ph79
  %163 = load i32, ptr %101, align 4, !tbaa !38
  %164 = load i32, ptr %102, align 8, !tbaa !39
  %165 = sub nsw i32 %163, %164
  %166 = add nsw i32 %165, 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 %17, ptr noundef nonnull %18, i32 noundef %165, i32 noundef %166, ptr noundef nonnull align 8 dereferenceable(24) %0)
          to label %167 unwind label %185

167:                                              ; preds = %162
  %168 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZN8positionaSEOS_(ptr noundef nonnull align 8 dereferenceable(40) %103, 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 nonnull %17) #7
  %169 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %103) #7
  %170 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %100) #7
  %171 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %169, ptr noundef nonnull dereferenceable(1) %170) #8
  %172 = icmp eq i32 %171, 0
  br i1 %172, label %.lr.ph79, label %._crit_edge, !llvm.loop !40

173:                                              ; preds = %145
  %174 = landingpad { ptr, i32 }
          cleanup
  br label %177

175:                                              ; preds = %146
  %176 = 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 %177

177:                                              ; preds = %175, %173
  %.pn49 = phi { ptr, i32 } [ %176, %175 ], [ %174, %173 ]
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %13) #7
  br label %273

178:                                              ; preds = %149
  %179 = landingpad { ptr, i32 }
          cleanup
  br label %182

180:                                              ; preds = %151
  %181 = 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 %182

182:                                              ; preds = %180, %178
  %.pn51 = phi { ptr, i32 } [ %181, %180 ], [ %179, %178 ]
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %15) #7
  br label %273

183:                                              ; preds = %.lr.ph79
  %184 = landingpad { ptr, i32 }
          cleanup
  br label %187

185:                                              ; preds = %162
  %186 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_St4lessIS5_ESaISt4pairIKS5_S5_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %18) #7
  br label %187

187:                                              ; preds = %185, %183
  %.pn53 = phi { ptr, i32 } [ %186, %185 ], [ %184, %183 ]
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %17) #7
  br label %273

._crit_edge:                                      ; preds = %167, %156
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %19) #7
  %188 = load i32, ptr %101, align 4, !tbaa !38
  %189 = load i32, ptr %102, align 8, !tbaa !39
  %190 = sub nsw i32 %188, %189
  store i32 %190, ptr %19, align 4, !tbaa !33
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %20) #7
  %191 = load i32, ptr %104, align 4, !tbaa !41
  %192 = load i32, ptr %105, align 8, !tbaa !42
  %193 = sub nsw i32 %191, %192
  store i32 %193, ptr %20, align 4, !tbaa !33
  %194 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3minIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %19, ptr noundef nonnull align 4 dereferenceable(4) %20)
  %195 = load i32, ptr %194, align 4, !tbaa !33
  %196 = add nsw i32 %195, %189
  store i32 %196, ptr %101, align 4, !tbaa !38
  %197 = load i32, ptr %105, align 8, !tbaa !42
  %198 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3minIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %19, ptr noundef nonnull align 4 dereferenceable(4) %20)
  %199 = load i32, ptr %198, align 4, !tbaa !33
  %200 = add nsw i32 %199, %197
  store i32 %200, ptr %104, align 4, !tbaa !41
  store i32 1, ptr %106, align 4, !tbaa !22
  store i8 1, ptr %107, align 8, !tbaa !23
  invoke void @_ZNSt6vectorI10struct_varSaIS0_EE9push_backERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr noundef nonnull align 8 dereferenceable(160) %6)
          to label %201 unwind label %205

201:                                              ; preds = %._crit_edge
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %20) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %19) #7
  %202 = add nuw nsw i32 %.02080, 1
  %203 = load i32, ptr %95, align 4, !tbaa !30
  %204 = icmp slt i32 %202, %203
  br i1 %204, label %145, label %.preheader70, !llvm.loop !43

205:                                              ; preds = %._crit_edge
  %206 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %20) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %19) #7
  br label %273

.preheader:                                       ; preds = %243, %.preheader70
  %207 = getelementptr inbounds i8, ptr %4, i64 72
  %208 = load i32, ptr %207, align 4, !tbaa !44
  %209 = icmp sgt i32 %208, 0
  br i1 %209, label %.lr.ph85, label %._crit_edge86

.lr.ph85:                                         ; preds = %.preheader
  %210 = getelementptr inbounds i8, ptr %4, i64 64
  %211 = getelementptr inbounds i8, ptr %4, i64 68
  %212 = getelementptr inbounds i8, ptr %6, i64 8
  %213 = getelementptr inbounds i8, ptr %6, i64 152
  %214 = getelementptr inbounds i8, ptr %6, i64 156
  br label %256

215:                                              ; preds = %.lr.ph83, %243
  %.01982 = phi i32 [ 0, %.lr.ph83 ], [ %244, %243 ]
  store i32 2, ptr %6, align 8, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %21) #7
  invoke void @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_St4lessIS5_ESaISt4pairIKS5_S5_EEEC2ERKSC_(ptr noundef nonnull align 8 dereferenceable(48) %22, ptr noundef nonnull align 8 dereferenceable(48) %2)
          to label %216 unwind label %247

216:                                              ; preds = %215
  %217 = load i32, ptr %132, align 4, !tbaa !45
  %218 = load i32, ptr %133, align 4, !tbaa !46
  invoke void @_Z10choose_posSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_St4lessIS5_ESaISt4pairIKS5_S5_EEEiiRSt6vectorI10struct_varSaISE_EE(ptr dead_on_unwind nonnull writable sret(%struct.position) align 8 %21, ptr noundef nonnull %22, i32 noundef %217, i32 noundef %218, ptr noundef nonnull align 8 dereferenceable(24) %0)
          to label %219 unwind label %249

219:                                              ; preds = %216
  %220 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZN8positionaSEOS_(ptr noundef nonnull align 8 dereferenceable(40) %134, ptr noundef nonnull align 8 dereferenceable(40) %21) #7
  call void @_ZN8positionD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %21) #7
  call void @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_St4lessIS5_ESaISt4pairIKS5_S5_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %22) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %21) #7
  %221 = load i32, ptr %135, align 4, !tbaa !38
  %222 = load i32, ptr %136, align 8, !tbaa !39
  %223 = sub nsw i32 %221, %222
  %224 = sdiv i32 %223, 10
  %225 = add nsw i32 %224, %222
  store i32 %225, ptr %136, align 8, !tbaa !39
  %226 = sub nsw i32 %221, %224
  store i32 %226, ptr %135, align 4, !tbaa !38
  %227 = invoke noundef nonnull align 8 dereferenceable(40) ptr @_ZN8positionaSERKS_(ptr noundef nonnull align 8 dereferenceable(40) %137, ptr noundef nonnull align 8 dereferenceable(40) %134)
          to label %228 unwind label %252

228:                                              ; preds = %219
  %229 = load <2 x i32>, ptr %136, align 8, !tbaa !33
  %230 = shufflevector <2 x i32> %229, <2 x i32> poison, <2 x i32> <i32 1, i32 0>
  store <2 x i32> %230, ptr %138, align 8, !tbaa !33
  store i8 1, ptr %139, align 8, !tbaa !23
  store i32 1, ptr %140, 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 %231 unwind label %252

231:                                              ; preds = %228
  call void @llvm.lifetime.start.p0(i64 160, ptr nonnull %23) #7
  call void @_ZN10struct_varC2Ev(ptr noundef nonnull align 8 dereferenceable(160) %23) #7
  store i32 4, ptr %23, align 8, !tbaa !13
  %232 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %141, ptr noundef nonnull align 8 dereferenceable(32) %134)
          to label %233 unwind label %254

233:                                              ; preds = %231
  %234 = load i32, ptr %136, align 8, !tbaa !39
  store i32 %234, ptr %142, align 4, !tbaa !38
  %235 = sub nsw i32 %234, %224
  store i32 %235, ptr %143, align 8, !tbaa !39
  %236 = invoke noundef nonnull align 8 dereferenceable(40) ptr @_ZN8positionaSERKS_(ptr noundef nonnull align 8 dereferenceable(40) %144, ptr noundef nonnull align 8 dereferenceable(40) %141)
          to label %237 unwind label %254

237:                                              ; preds = %233
  store i8 1, ptr %139, align 8, !tbaa !23
  store i32 1, ptr %140, 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) %23)
          to label %238 unwind label %254

238:                                              ; preds = %237
  %239 = load i32, ptr %135, align 4, !tbaa !38
  store i32 %239, ptr %143, align 8, !tbaa !39
  %240 = add nsw i32 %239, %224
  store i32 %240, ptr %142, align 4, !tbaa !38
  %241 = invoke noundef nonnull align 8 dereferenceable(40) ptr @_ZN8positionaSERKS_(ptr noundef nonnull align 8 dereferenceable(40) %144, ptr noundef nonnull align 8 dereferenceable(40) %141)
          to label %242 unwind label %254

242:                                              ; preds = %238
  store i8 1, ptr %139, align 8, !tbaa !23
  store i32 1, ptr %140, 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) %23)
          to label %243 unwind label %254

243:                                              ; preds = %242
  call void @_ZN10struct_varD2Ev(ptr noundef nonnull align 8 dereferenceable(160) %23) #7
  call void @llvm.lifetime.end.p0(i64 160, ptr nonnull %23) #7
  %244 = add nuw nsw i32 %.01982, 1
  %245 = load i32, ptr %129, align 4, !tbaa !35
  %246 = icmp slt i32 %244, %245
  br i1 %246, label %215, label %.preheader, !llvm.loop !47

247:                                              ; preds = %215
  %248 = landingpad { ptr, i32 }
          cleanup
  br label %251

249:                                              ; preds = %216
  %250 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_St4lessIS5_ESaISt4pairIKS5_S5_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %22) #7
  br label %251

251:                                              ; preds = %249, %247
  %.pn44 = phi { ptr, i32 } [ %250, %249 ], [ %248, %247 ]
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %21) #7
  br label %273

252:                                              ; preds = %228, %219
  %253 = landingpad { ptr, i32 }
          cleanup
  br label %273

254:                                              ; preds = %242, %238, %237, %233, %231
  %255 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN10struct_varD2Ev(ptr noundef nonnull align 8 dereferenceable(160) %23) #7
  call void @llvm.lifetime.end.p0(i64 160, ptr nonnull %23) #7
  br label %273

._crit_edge86:                                    ; preds = %262, %.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

256:                                              ; preds = %.lr.ph85, %262
  %.084 = phi i32 [ 0, %.lr.ph85 ], [ %263, %262 ]
  store i32 5, ptr %6, align 8, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %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 %257 unwind label %266

257:                                              ; preds = %256
  %258 = load i32, ptr %210, align 4, !tbaa !48
  %259 = load i32, ptr %211, align 4, !tbaa !49
  invoke void @_Z10choose_posSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_St4lessIS5_ESaISt4pairIKS5_S5_EEEiiRSt6vectorI10struct_varSaISE_EE(ptr dead_on_unwind nonnull writable sret(%struct.position) align 8 %24, ptr noundef nonnull %25, i32 noundef %258, i32 noundef %259, ptr noundef nonnull align 8 dereferenceable(24) %0)
          to label %260 unwind label %268

260:                                              ; preds = %257
  %261 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZN8positionaSEOS_(ptr noundef nonnull align 8 dereferenceable(40) %212, 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 nonnull %24) #7
  store i8 1, ptr %213, align 8, !tbaa !23
  store i32 1, ptr %214, 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 %262 unwind label %271

262:                                              ; preds = %260
  %263 = add nuw nsw i32 %.084, 1
  %264 = load i32, ptr %207, align 4, !tbaa !44
  %265 = icmp slt i32 %263, %264
  br i1 %265, label %256, label %._crit_edge86, !llvm.loop !50

266:                                              ; preds = %256
  %267 = landingpad { ptr, i32 }
          cleanup
  br label %270

268:                                              ; preds = %257
  %269 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_St4lessIS5_ESaISt4pairIKS5_S5_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %25) #7
  br label %270

270:                                              ; preds = %268, %266
  %.pn = phi { ptr, i32 } [ %269, %268 ], [ %267, %266 ]
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %24) #7
  br label %273

271:                                              ; preds = %260
  %272 = landingpad { ptr, i32 }
          cleanup
  br label %273

273:                                              ; preds = %270, %271, %251, %254, %252, %177, %182, %187, %205, %126, %127, %92, %93, %59, %60
  %.pn66.pn = phi { ptr, i32 } [ %61, %60 ], [ %.pn64, %59 ], [ %94, %93 ], [ %.pn60, %92 ], [ %128, %127 ], [ %.pn56, %126 ], [ %.pn53, %187 ], [ %206, %205 ], [ %.pn51, %182 ], [ %.pn49, %177 ], [ %.pn44, %251 ], [ %255, %254 ], [ %253, %252 ], [ %272, %271 ], [ %.pn, %270 ]
  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 %274

274:                                              ; preds = %273, %43
  %.pn66.pn.pn = phi { ptr, i32 } [ %.pn66.pn, %273 ], [ %44, %43 ]
  call void @llvm.lifetime.end.p0(i64 96, ptr nonnull %4) #7
  resume { ptr, i32 } %.pn66.pn.pn
}

; 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

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 12}
!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 24}
!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 0}
!21 = !{!6, !7, i64 4}
!22 = !{!14, !7, i64 156}
!23 = !{!14, !10, i64 152}
!24 = distinct !{!24, !25}
!25 = !{!"llvm.loop.mustprogress"}
!26 = !{!6, !7, i64 48}
!27 = !{!6, !7, i64 16}
!28 = !{!6, !7, i64 20}
!29 = distinct !{!29, !25}
!30 = !{!6, !7, i64 36}
!31 = !{!6, !7, i64 40}
!32 = !{!6, !7, i64 44}
!33 = !{!7, !7, i64 0}
!34 = distinct !{!34, !25}
!35 = !{!6, !7, i64 60}
!36 = !{!6, !7, i64 28}
!37 = !{!6, !7, i64 32}
!38 = !{!14, !7, i64 44}
!39 = !{!14, !7, i64 40}
!40 = distinct !{!40, !25}
!41 = !{!14, !7, i64 84}
!42 = !{!14, !7, i64 80}
!43 = distinct !{!43, !25}
!44 = !{!6, !7, i64 72}
!45 = !{!6, !7, i64 52}
!46 = !{!6, !7, i64 56}
!47 = distinct !{!47, !25}
!48 = !{!6, !7, i64 64}
!49 = !{!6, !7, i64 68}
!50 = distinct !{!50, !25}


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