; LLVM IR from fritzsedlazeck/SURVIVOR :: src/merge_vcf (IntervallTree)

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

%"class.std::basic_ostream" = type { ptr, %"class.std::basic_ios" }
%"class.std::basic_ios" = type { %"class.std::ios_base", ptr, i8, i8, ptr, ptr, ptr, ptr }
%"class.std::ios_base" = type { ptr, i64, i64, i32, i32, i32, ptr, %"struct.std::ios_base::_Words", [8 x %"struct.std::ios_base::_Words"], i32, ptr, %"class.std::locale" }
%"struct.std::ios_base::_Words" = type { ptr, i64 }
%"class.std::locale" = type { ptr }
%"struct.std::pair" = type { i8, i8 }
%struct.breakpoint_str = type <{ %"class.std::__cxx11::basic_string", i32, [4 x i8] }>
%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%struct.meta_data_str = type { i32, i16, %"class.std::__cxx11::basic_string", i32, %"class.std::__cxx11::basic_string", i32, %"struct.std::pair.3", %"class.std::__cxx11::basic_string", %"struct.std::pair.5" }
%"struct.std::pair.3" = type { i32, i32 }
%"struct.std::pair.5" = type { %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string" }
%class.SVS_Node = type <{ i16, [6 x i8], %struct.breakpoint_str, %struct.breakpoint_str, %"class.std::vector", %"class.std::__cxx11::basic_string", %"struct.std::pair.3", %"struct.std::pair", [6 x i8], %"class.std::__cxx11::basic_string", [5 x i8], [4 x i8], [7 x i8] }>
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<Support_Node *, std::allocator<Support_Node *>>::_Vector_impl" }
%"struct.std::_Vector_base<Support_Node *, std::allocator<Support_Node *>>::_Vector_impl" = type { %"struct.std::_Vector_base<Support_Node *, std::allocator<Support_Node *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<Support_Node *, std::allocator<Support_Node *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%class.Parameter = type <{ %"class.std::__cxx11::basic_string", double, i32, i8, i8, i8, i8, i32, float, i32, [4 x i8] }>
%class.TNode = type { ptr, i32, ptr, ptr, ptr }

@_ZSt4cout = external global %"class.std::basic_ostream", align 8
@.str.1 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [2 x i8], align 1

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i32 @llvm.abs.i32(i32, i1 immarg) #0

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef ptr @_ZN9Parameter8InstanceEv() #3 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_ZN13IntervallTree7overlapE14breakpoint_strS0_sSt4pairIbbEP8SVS_Node(ptr noundef nonnull align 1 dereferenceable(1), ptr noundef, ptr noundef, i16 noundef signext, i16, ptr noundef) #3 align 2

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

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

declare i32 @__gxx_personality_v0(...)

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN14breakpoint_strD2Ev(ptr noundef nonnull align 8 dereferenceable(36)) unnamed_addr #5 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN13IntervallTree17careful_screeningER14breakpoint_strS1_sSt4pairIbbE13meta_data_strRP5TNode(ptr noundef nonnull align 1 dereferenceable(1), ptr noundef nonnull align 8 dereferenceable(36), ptr noundef nonnull align 8 dereferenceable(36), i16 noundef signext, i16, ptr noundef, ptr noundef nonnull align 8 dereferenceable(8)) #3 align 2

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN13meta_data_strD2Ev(ptr noundef nonnull align 8 dereferenceable(192)) unnamed_addr #5 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN5TNode3addE14breakpoint_strS0_sSt4pairIbbE13meta_data_str(ptr noundef nonnull align 8 dereferenceable(40), ptr noundef, ptr noundef, i16 noundef signext, i16, ptr noundef) #3 align 2

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN13IntervallTree6insertER14breakpoint_strS1_sSt4pairIbbE13meta_data_strRP5TNode(ptr noundef nonnull align 1 dereferenceable(1) %0, ptr noundef nonnull align 8 dereferenceable(36) %1, ptr noundef nonnull align 8 dereferenceable(36) %2, i16 noundef signext %3, i16 %4, ptr noundef %5, ptr noundef nonnull align 8 dereferenceable(8) %6) #3 align 2 personality ptr @__gxx_personality_v0 {
  %8 = alloca %"struct.std::pair", align 1
  %9 = alloca ptr, align 8
  %10 = alloca ptr, align 8
  %11 = alloca ptr, align 8
  %12 = alloca i16, align 2
  %13 = alloca ptr, align 8
  %14 = alloca ptr, align 8
  %15 = alloca %struct.breakpoint_str, align 8
  %16 = alloca ptr, align 8
  %17 = alloca i32, align 4
  %18 = alloca %struct.breakpoint_str, align 8
  %19 = alloca %"struct.std::pair", align 1
  %20 = alloca %struct.meta_data_str, align 8
  %21 = alloca i1, align 1
  %22 = alloca i32, align 4
  %23 = alloca %struct.breakpoint_str, align 8
  %24 = alloca %struct.breakpoint_str, align 8
  %25 = alloca %"struct.std::pair", align 1
  %26 = alloca %struct.breakpoint_str, align 8
  %27 = alloca %struct.breakpoint_str, align 8
  %28 = alloca %"struct.std::pair", align 1
  %29 = alloca %struct.meta_data_str, align 8
  %30 = alloca i32, align 4
  %31 = alloca %"struct.std::pair", align 1
  %32 = alloca %struct.meta_data_str, align 8
  %33 = alloca %"struct.std::pair", align 1
  %34 = alloca %struct.meta_data_str, align 8
  %35 = alloca %struct.breakpoint_str, align 8
  %36 = alloca %struct.breakpoint_str, align 8
  %37 = alloca %"struct.std::pair", align 1
  %38 = alloca %"struct.std::pair", align 1
  %39 = alloca %struct.meta_data_str, align 8
  %40 = alloca %struct.breakpoint_str, align 8
  %41 = alloca %struct.breakpoint_str, align 8
  %42 = alloca %"struct.std::pair", align 1
  %43 = alloca i32, align 4
  %44 = alloca i32, align 4
  %45 = alloca i32, align 4
  store i16 %4, ptr %8, align 1
  store ptr %0, ptr %9, align 8, !tbaa !5
  store ptr %1, ptr %10, align 8, !tbaa !5
  store ptr %2, ptr %11, align 8, !tbaa !5
  store i16 %3, ptr %12, align 2, !tbaa !9
  store ptr %5, ptr %13, align 8, !tbaa !5
  store ptr %6, ptr %14, align 8, !tbaa !5
  %46 = load ptr, ptr %9, align 8
  %47 = load ptr, ptr %10, align 8, !tbaa !5
  %48 = getelementptr inbounds %struct.breakpoint_str, ptr %47, i32 0, i32 1
  %49 = load i32, ptr %48, align 8, !tbaa !11
  %50 = icmp eq i32 %49, -1
  br i1 %50, label %51, label %57

51:                                               ; preds = %7
  %52 = load ptr, ptr %11, align 8, !tbaa !5
  %53 = getelementptr inbounds %struct.breakpoint_str, ptr %52, i32 0, i32 1
  %54 = load i32, ptr %53, align 8, !tbaa !11
  %55 = icmp eq i32 %54, -1
  br i1 %55, label %56, label %57

56:                                               ; preds = %51
  br label %351

57:                                               ; preds = %51, %7
  %58 = load ptr, ptr %14, align 8, !tbaa !5
  %59 = load ptr, ptr %58, align 8, !tbaa !5
  %60 = icmp eq ptr %59, null
  br i1 %60, label %61, label %101

61:                                               ; preds = %57
  %62 = call noalias noundef nonnull ptr @_Znwm(i64 noundef 40) #10
  store i1 true, ptr %21, align 1
  %63 = load ptr, ptr %10, align 8, !tbaa !5
  invoke void @_ZN14breakpoint_strC2ERKS_(ptr noundef nonnull align 8 dereferenceable(36) %15, ptr noundef nonnull align 8 dereferenceable(36) %63)
          to label %64 unwind label %78

64:                                               ; preds = %61
  %65 = load ptr, ptr %11, align 8, !tbaa !5
  invoke void @_ZN14breakpoint_strC2ERKS_(ptr noundef nonnull align 8 dereferenceable(36) %18, ptr noundef nonnull align 8 dereferenceable(36) %65)
          to label %66 unwind label %82

66:                                               ; preds = %64
  %67 = load i16, ptr %12, align 2, !tbaa !9
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %19, ptr align 1 %8, i64 2, i1 false)
  invoke void @_ZN13meta_data_strC2ERKS_(ptr noundef nonnull align 8 dereferenceable(192) %20, ptr noundef nonnull align 8 dereferenceable(192) %5)
          to label %68 unwind label %86

68:                                               ; preds = %66
  %69 = load i16, ptr %19, align 1
  invoke void @_ZN5TNodeC2E14breakpoint_strS0_sSt4pairIbbE13meta_data_str(ptr noundef nonnull align 8 dereferenceable(40) %62, ptr noundef %15, ptr noundef %18, i16 noundef signext %67, i16 %69, ptr noundef %20)
          to label %70 unwind label %90

70:                                               ; preds = %68
  store i1 false, ptr %21, align 1
  %71 = load ptr, ptr %14, align 8, !tbaa !5
  store ptr %62, ptr %71, align 8, !tbaa !5
  call void @_ZN13meta_data_strD2Ev(ptr noundef nonnull align 8 dereferenceable(192) %20) #11
  call void @_ZN14breakpoint_strD2Ev(ptr noundef nonnull align 8 dereferenceable(36) %18) #11
  call void @_ZN14breakpoint_strD2Ev(ptr noundef nonnull align 8 dereferenceable(36) %15) #11
  %72 = load ptr, ptr %14, align 8, !tbaa !5
  %73 = load ptr, ptr %72, align 8, !tbaa !5
  %74 = icmp eq ptr %73, null
  br i1 %74, label %75, label %100

75:                                               ; preds = %70
  %76 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef @.str.1)
  %77 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %76, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  br label %100

78:                                               ; preds = %61
  %79 = landingpad { ptr, i32 }
          cleanup
  %80 = extractvalue { ptr, i32 } %79, 0
  store ptr %80, ptr %16, align 8
  %81 = extractvalue { ptr, i32 } %79, 1
  store i32 %81, ptr %17, align 4
  br label %96

82:                                               ; preds = %64
  %83 = landingpad { ptr, i32 }
          cleanup
  %84 = extractvalue { ptr, i32 } %83, 0
  store ptr %84, ptr %16, align 8
  %85 = extractvalue { ptr, i32 } %83, 1
  store i32 %85, ptr %17, align 4
  br label %95

86:                                               ; preds = %66
  %87 = landingpad { ptr, i32 }
          cleanup
  %88 = extractvalue { ptr, i32 } %87, 0
  store ptr %88, ptr %16, align 8
  %89 = extractvalue { ptr, i32 } %87, 1
  store i32 %89, ptr %17, align 4
  br label %94

90:                                               ; preds = %68
  %91 = landingpad { ptr, i32 }
          cleanup
  %92 = extractvalue { ptr, i32 } %91, 0
  store ptr %92, ptr %16, align 8
  %93 = extractvalue { ptr, i32 } %91, 1
  store i32 %93, ptr %17, align 4
  call void @_ZN13meta_data_strD2Ev(ptr noundef nonnull align 8 dereferenceable(192) %20) #11
  br label %94

94:                                               ; preds = %90, %86
  call void @_ZN14breakpoint_strD2Ev(ptr noundef nonnull align 8 dereferenceable(36) %18) #11
  br label %95

95:                                               ; preds = %94, %82
  call void @_ZN14breakpoint_strD2Ev(ptr noundef nonnull align 8 dereferenceable(36) %15) #11
  br label %96

96:                                               ; preds = %95, %78
  %97 = load i1, ptr %21, align 1
  br i1 %97, label %98, label %99

98:                                               ; preds = %96
  call void @_ZdlPvm(ptr noundef %62, i64 noundef 40) #12
  br label %99

99:                                               ; preds = %98, %96
  br label %352

100:                                              ; preds = %75, %70
  br label %333

101:                                              ; preds = %57
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #11
  %102 = load ptr, ptr %10, align 8, !tbaa !5
  call void @_ZN14breakpoint_strC2ERKS_(ptr noundef nonnull align 8 dereferenceable(36) %23, ptr noundef nonnull align 8 dereferenceable(36) %102)
  %103 = load ptr, ptr %11, align 8, !tbaa !5
  invoke void @_ZN14breakpoint_strC2ERKS_(ptr noundef nonnull align 8 dereferenceable(36) %24, ptr noundef nonnull align 8 dereferenceable(36) %103)
          to label %104 unwind label %132

104:                                              ; preds = %101
  %105 = load i16, ptr %12, align 2, !tbaa !9
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %25, ptr align 1 %8, i64 2, i1 false)
  %106 = load ptr, ptr %14, align 8, !tbaa !5
  %107 = load ptr, ptr %106, align 8, !tbaa !5
  %108 = invoke noundef ptr @_ZN5TNode8get_dataEv(ptr noundef nonnull align 8 dereferenceable(40) %107)
          to label %109 unwind label %136

109:                                              ; preds = %104
  %110 = load i16, ptr %25, align 1
  %111 = invoke noundef i32 @_ZN13IntervallTree7overlapE14breakpoint_strS0_sSt4pairIbbEP8SVS_Node(ptr noundef nonnull align 1 dereferenceable(1) %46, ptr noundef %23, ptr noundef %24, i16 noundef signext %105, i16 %110, ptr noundef %108)
          to label %112 unwind label %136

112:                                              ; preds = %109
  call void @_ZN14breakpoint_strD2Ev(ptr noundef nonnull align 8 dereferenceable(36) %24) #11
  call void @_ZN14breakpoint_strD2Ev(ptr noundef nonnull align 8 dereferenceable(36) %23) #11
  store i32 %111, ptr %22, align 4, !tbaa !17
  %113 = load i32, ptr %22, align 4, !tbaa !17
  %114 = icmp eq i32 %113, 0
  br i1 %114, label %115, label %169

115:                                              ; preds = %112
  %116 = load ptr, ptr %10, align 8, !tbaa !5
  %117 = getelementptr inbounds %struct.breakpoint_str, ptr %116, i32 0, i32 1
  %118 = load i32, ptr %117, align 8, !tbaa !11
  %119 = icmp eq i32 %118, 55986511
  br i1 %119, label %120, label %141

120:                                              ; preds = %115
  %121 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef @.str.2)
  %122 = load i16, ptr %12, align 2, !tbaa !9
  %123 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEs(ptr noundef nonnull align 8 dereferenceable(8) %121, i16 noundef signext %122)
  %124 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %123, ptr noundef @.str.3)
  %125 = load ptr, ptr %14, align 8, !tbaa !5
  %126 = load ptr, ptr %125, align 8, !tbaa !5
  %127 = call noundef ptr @_ZN5TNode8get_dataEv(ptr noundef nonnull align 8 dereferenceable(40) %126)
  %128 = getelementptr inbounds %class.SVS_Node, ptr %127, i32 0, i32 0
  %129 = load i16, ptr %128, align 8, !tbaa !18
  %130 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEs(ptr noundef nonnull align 8 dereferenceable(8) %124, i16 noundef signext %129)
  %131 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %130, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  br label %141

132:                                              ; preds = %101
  %133 = landingpad { ptr, i32 }
          cleanup
  %134 = extractvalue { ptr, i32 } %133, 0
  store ptr %134, ptr %16, align 8
  %135 = extractvalue { ptr, i32 } %133, 1
  store i32 %135, ptr %17, align 4
  br label %140

136:                                              ; preds = %109, %104
  %137 = landingpad { ptr, i32 }
          cleanup
  %138 = extractvalue { ptr, i32 } %137, 0
  store ptr %138, ptr %16, align 8
  %139 = extractvalue { ptr, i32 } %137, 1
  store i32 %139, ptr %17, align 4
  call void @_ZN14breakpoint_strD2Ev(ptr noundef nonnull align 8 dereferenceable(36) %24) #11
  br label %140

140:                                              ; preds = %136, %132
  call void @_ZN14breakpoint_strD2Ev(ptr noundef nonnull align 8 dereferenceable(36) %23) #11
  br label %332

141:                                              ; preds = %120, %115
  %142 = load ptr, ptr %14, align 8, !tbaa !5
  %143 = load ptr, ptr %142, align 8, !tbaa !5
  %144 = load ptr, ptr %10, align 8, !tbaa !5
  call void @_ZN14breakpoint_strC2ERKS_(ptr noundef nonnull align 8 dereferenceable(36) %26, ptr noundef nonnull align 8 dereferenceable(36) %144)
  %145 = load ptr, ptr %11, align 8, !tbaa !5
  invoke void @_ZN14breakpoint_strC2ERKS_(ptr noundef nonnull align 8 dereferenceable(36) %27, ptr noundef nonnull align 8 dereferenceable(36) %145)
          to label %146 unwind label %155

146:                                              ; preds = %141
  %147 = load i16, ptr %12, align 2, !tbaa !9
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %28, ptr align 1 %8, i64 2, i1 false)
  invoke void @_ZN13meta_data_strC2ERKS_(ptr noundef nonnull align 8 dereferenceable(192) %29, ptr noundef nonnull align 8 dereferenceable(192) %5)
          to label %148 unwind label %159

148:                                              ; preds = %146
  %149 = load i16, ptr %28, align 1
  invoke void @_ZN5TNode3addE14breakpoint_strS0_sSt4pairIbbE13meta_data_str(ptr noundef nonnull align 8 dereferenceable(40) %143, ptr noundef %26, ptr noundef %27, i16 noundef signext %147, i16 %149, ptr noundef %29)
          to label %150 unwind label %163

150:                                              ; preds = %148
  call void @_ZN13meta_data_strD2Ev(ptr noundef nonnull align 8 dereferenceable(192) %29) #11
  call void @_ZN14breakpoint_strD2Ev(ptr noundef nonnull align 8 dereferenceable(36) %27) #11
  call void @_ZN14breakpoint_strD2Ev(ptr noundef nonnull align 8 dereferenceable(36) %26) #11
  %151 = load ptr, ptr %10, align 8, !tbaa !5
  %152 = getelementptr inbounds %struct.breakpoint_str, ptr %151, i32 0, i32 1
  store i32 -1, ptr %152, align 8, !tbaa !11
  %153 = load ptr, ptr %11, align 8, !tbaa !5
  %154 = getelementptr inbounds %struct.breakpoint_str, ptr %153, i32 0, i32 1
  store i32 -1, ptr %154, align 8, !tbaa !11
  store i32 1, ptr %30, align 4
  br label %329

155:                                              ; preds = %141
  %156 = landingpad { ptr, i32 }
          cleanup
  %157 = extractvalue { ptr, i32 } %156, 0
  store ptr %157, ptr %16, align 8
  %158 = extractvalue { ptr, i32 } %156, 1
  store i32 %158, ptr %17, align 4
  br label %168

159:                                              ; preds = %146
  %160 = landingpad { ptr, i32 }
          cleanup
  %161 = extractvalue { ptr, i32 } %160, 0
  store ptr %161, ptr %16, align 8
  %162 = extractvalue { ptr, i32 } %160, 1
  store i32 %162, ptr %17, align 4
  br label %167

163:                                              ; preds = %148
  %164 = landingpad { ptr, i32 }
          cleanup
  %165 = extractvalue { ptr, i32 } %164, 0
  store ptr %165, ptr %16, align 8
  %166 = extractvalue { ptr, i32 } %164, 1
  store i32 %166, ptr %17, align 4
  call void @_ZN13meta_data_strD2Ev(ptr noundef nonnull align 8 dereferenceable(192) %29) #11
  br label %167

167:                                              ; preds = %163, %159
  call void @_ZN14breakpoint_strD2Ev(ptr noundef nonnull align 8 dereferenceable(36) %27) #11
  br label %168

168:                                              ; preds = %167, %155
  call void @_ZN14breakpoint_strD2Ev(ptr noundef nonnull align 8 dereferenceable(36) %26) #11
  br label %332

169:                                              ; preds = %112
  %170 = load i32, ptr %22, align 4, !tbaa !17
  %171 = call i32 @llvm.abs.i32(i32 %170, i1 true)
  %172 = sext i32 %171 to i64
  %173 = call noundef ptr @_ZN9Parameter8InstanceEv()
  %174 = getelementptr inbounds %class.Parameter, ptr %173, i32 0, i32 1
  %175 = load double, ptr %174, align 8, !tbaa !27
  %176 = fptosi double %175 to i64
  %177 = icmp slt i64 %172, %176
  br i1 %177, label %178, label %200

178:                                              ; preds = %169
  %179 = load ptr, ptr %10, align 8, !tbaa !5
  %180 = load ptr, ptr %11, align 8, !tbaa !5
  %181 = load i16, ptr %12, align 2, !tbaa !9
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %31, ptr align 1 %8, i64 2, i1 false)
  call void @_ZN13meta_data_strC2ERKS_(ptr noundef nonnull align 8 dereferenceable(192) %32, ptr noundef nonnull align 8 dereferenceable(192) %5)
  %182 = load ptr, ptr %14, align 8, !tbaa !5
  %183 = load i16, ptr %31, align 1
  invoke void @_ZN13IntervallTree17careful_screeningER14breakpoint_strS1_sSt4pairIbbE13meta_data_strRP5TNode(ptr noundef nonnull align 1 dereferenceable(1) %46, ptr noundef nonnull align 8 dereferenceable(36) %179, ptr noundef nonnull align 8 dereferenceable(36) %180, i16 noundef signext %181, i16 %183, ptr noundef %32, ptr noundef nonnull align 8 dereferenceable(8) %182)
          to label %184 unwind label %195

184:                                              ; preds = %178
  call void @_ZN13meta_data_strD2Ev(ptr noundef nonnull align 8 dereferenceable(192) %32) #11
  %185 = load ptr, ptr %10, align 8, !tbaa !5
  %186 = getelementptr inbounds %struct.breakpoint_str, ptr %185, i32 0, i32 1
  %187 = load i32, ptr %186, align 8, !tbaa !11
  %188 = icmp eq i32 %187, -1
  br i1 %188, label %189, label %199

189:                                              ; preds = %184
  %190 = load ptr, ptr %11, align 8, !tbaa !5
  %191 = getelementptr inbounds %struct.breakpoint_str, ptr %190, i32 0, i32 1
  %192 = load i32, ptr %191, align 8, !tbaa !11
  %193 = icmp eq i32 %192, -1
  br i1 %193, label %194, label %199

194:                                              ; preds = %189
  store i32 1, ptr %30, align 4
  br label %329

195:                                              ; preds = %178
  %196 = landingpad { ptr, i32 }
          cleanup
  %197 = extractvalue { ptr, i32 } %196, 0
  store ptr %197, ptr %16, align 8
  %198 = extractvalue { ptr, i32 } %196, 1
  store i32 %198, ptr %17, align 4
  call void @_ZN13meta_data_strD2Ev(ptr noundef nonnull align 8 dereferenceable(192) %32) #11
  br label %332

199:                                              ; preds = %189, %184
  br label %200

200:                                              ; preds = %199, %169
  br label %201

201:                                              ; preds = %200
  %202 = load i32, ptr %22, align 4, !tbaa !17
  %203 = icmp sgt i32 %202, 0
  br i1 %203, label %204, label %264

204:                                              ; preds = %201
  %205 = load ptr, ptr %10, align 8, !tbaa !5
  %206 = load ptr, ptr %11, align 8, !tbaa !5
  %207 = load i16, ptr %12, align 2, !tbaa !9
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %33, ptr align 1 %8, i64 2, i1 false)
  call void @_ZN13meta_data_strC2ERKS_(ptr noundef nonnull align 8 dereferenceable(192) %34, ptr noundef nonnull align 8 dereferenceable(192) %5)
  %208 = load ptr, ptr %14, align 8, !tbaa !5
  %209 = load ptr, ptr %208, align 8, !tbaa !5
  %210 = getelementptr inbounds %class.TNode, ptr %209, i32 0, i32 3
  %211 = load i16, ptr %33, align 1
  invoke void @_ZN13IntervallTree6insertER14breakpoint_strS1_sSt4pairIbbE13meta_data_strRP5TNode(ptr noundef nonnull align 1 dereferenceable(1) %46, ptr noundef nonnull align 8 dereferenceable(36) %205, ptr noundef nonnull align 8 dereferenceable(36) %206, i16 noundef signext %207, i16 %211, ptr noundef %34, ptr noundef nonnull align 8 dereferenceable(8) %210)
          to label %212 unwind label %245

212:                                              ; preds = %204
  call void @_ZN13meta_data_strD2Ev(ptr noundef nonnull align 8 dereferenceable(192) %34) #11
  %213 = load ptr, ptr %14, align 8, !tbaa !5
  %214 = load ptr, ptr %213, align 8, !tbaa !5
  %215 = getelementptr inbounds %class.TNode, ptr %214, i32 0, i32 3
  %216 = load ptr, ptr %215, align 8, !tbaa !31
  %217 = call noundef i32 @_ZN13IntervallTree8bsheightEP5TNode(ptr noundef nonnull align 1 dereferenceable(1) %46, ptr noundef %216)
  %218 = load ptr, ptr %14, align 8, !tbaa !5
  %219 = load ptr, ptr %218, align 8, !tbaa !5
  %220 = getelementptr inbounds %class.TNode, ptr %219, i32 0, i32 4
  %221 = load ptr, ptr %220, align 8, !tbaa !33
  %222 = call noundef i32 @_ZN13IntervallTree8bsheightEP5TNode(ptr noundef nonnull align 1 dereferenceable(1) %46, ptr noundef %221)
  %223 = sub nsw i32 %217, %222
  %224 = icmp eq i32 %223, 2
  br i1 %224, label %225, label %263

225:                                              ; preds = %212
  %226 = load ptr, ptr %10, align 8, !tbaa !5
  call void @_ZN14breakpoint_strC2ERKS_(ptr noundef nonnull align 8 dereferenceable(36) %35, ptr noundef nonnull align 8 dereferenceable(36) %226)
  %227 = load ptr, ptr %11, align 8, !tbaa !5
  invoke void @_ZN14breakpoint_strC2ERKS_(ptr noundef nonnull align 8 dereferenceable(36) %36, ptr noundef nonnull align 8 dereferenceable(36) %227)
          to label %228 unwind label %249

228:                                              ; preds = %225
  %229 = load i16, ptr %12, align 2, !tbaa !9
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %37, ptr align 1 %8, i64 2, i1 false)
  %230 = load ptr, ptr %14, align 8, !tbaa !5
  %231 = load ptr, ptr %230, align 8, !tbaa !5
  %232 = getelementptr inbounds %class.TNode, ptr %231, i32 0, i32 3
  %233 = load ptr, ptr %232, align 8, !tbaa !31
  %234 = invoke noundef ptr @_ZN5TNode8get_dataEv(ptr noundef nonnull align 8 dereferenceable(40) %233)
          to label %235 unwind label %253

235:                                              ; preds = %228
  %236 = load i16, ptr %37, align 1
  %237 = invoke noundef i32 @_ZN13IntervallTree7overlapE14breakpoint_strS0_sSt4pairIbbEP8SVS_Node(ptr noundef nonnull align 1 dereferenceable(1) %46, ptr noundef %35, ptr noundef %36, i16 noundef signext %229, i16 %236, ptr noundef %234)
          to label %238 unwind label %253

238:                                              ; preds = %235
  store i32 %237, ptr %22, align 4, !tbaa !17
  call void @_ZN14breakpoint_strD2Ev(ptr noundef nonnull align 8 dereferenceable(36) %36) #11
  call void @_ZN14breakpoint_strD2Ev(ptr noundef nonnull align 8 dereferenceable(36) %35) #11
  %239 = load i32, ptr %22, align 4, !tbaa !17
  %240 = icmp sgt i32 %239, 0
  br i1 %240, label %241, label %258

241:                                              ; preds = %238
  %242 = load ptr, ptr %14, align 8, !tbaa !5
  %243 = call noundef ptr @_ZN13IntervallTree3srlERP5TNode(ptr noundef nonnull align 1 dereferenceable(1) %46, ptr noundef nonnull align 8 dereferenceable(8) %242)
  %244 = load ptr, ptr %14, align 8, !tbaa !5
  store ptr %243, ptr %244, align 8, !tbaa !5
  br label %262

245:                                              ; preds = %204
  %246 = landingpad { ptr, i32 }
          cleanup
  %247 = extractvalue { ptr, i32 } %246, 0
  store ptr %247, ptr %16, align 8
  %248 = extractvalue { ptr, i32 } %246, 1
  store i32 %248, ptr %17, align 4
  call void @_ZN13meta_data_strD2Ev(ptr noundef nonnull align 8 dereferenceable(192) %34) #11
  br label %332

249:                                              ; preds = %225
  %250 = landingpad { ptr, i32 }
          cleanup
  %251 = extractvalue { ptr, i32 } %250, 0
  store ptr %251, ptr %16, align 8
  %252 = extractvalue { ptr, i32 } %250, 1
  store i32 %252, ptr %17, align 4
  br label %257

253:                                              ; preds = %235, %228
  %254 = landingpad { ptr, i32 }
          cleanup
  %255 = extractvalue { ptr, i32 } %254, 0
  store ptr %255, ptr %16, align 8
  %256 = extractvalue { ptr, i32 } %254, 1
  store i32 %256, ptr %17, align 4
  call void @_ZN14breakpoint_strD2Ev(ptr noundef nonnull align 8 dereferenceable(36) %36) #11
  br label %257

257:                                              ; preds = %253, %249
  call void @_ZN14breakpoint_strD2Ev(ptr noundef nonnull align 8 dereferenceable(36) %35) #11
  br label %332

258:                                              ; preds = %238
  %259 = load ptr, ptr %14, align 8, !tbaa !5
  %260 = call noundef ptr @_ZN13IntervallTree3drlERP5TNode(ptr noundef nonnull align 1 dereferenceable(1) %46, ptr noundef nonnull align 8 dereferenceable(8) %259)
  %261 = load ptr, ptr %14, align 8, !tbaa !5
  store ptr %260, ptr %261, align 8, !tbaa !5
  br label %262

262:                                              ; preds = %258, %241
  br label %263

263:                                              ; preds = %262, %212
  br label %328

264:                                              ; preds = %201
  %265 = load i32, ptr %22, align 4, !tbaa !17
  %266 = icmp slt i32 %265, 0
  br i1 %266, label %267, label %327

267:                                              ; preds = %264
  %268 = load ptr, ptr %10, align 8, !tbaa !5
  %269 = load ptr, ptr %11, align 8, !tbaa !5
  %270 = load i16, ptr %12, align 2, !tbaa !9
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %38, ptr align 1 %8, i64 2, i1 false)
  call void @_ZN13meta_data_strC2ERKS_(ptr noundef nonnull align 8 dereferenceable(192) %39, ptr noundef nonnull align 8 dereferenceable(192) %5)
  %271 = load ptr, ptr %14, align 8, !tbaa !5
  %272 = load ptr, ptr %271, align 8, !tbaa !5
  %273 = getelementptr inbounds %class.TNode, ptr %272, i32 0, i32 4
  %274 = load i16, ptr %38, align 1
  invoke void @_ZN13IntervallTree6insertER14breakpoint_strS1_sSt4pairIbbE13meta_data_strRP5TNode(ptr noundef nonnull align 1 dereferenceable(1) %46, ptr noundef nonnull align 8 dereferenceable(36) %268, ptr noundef nonnull align 8 dereferenceable(36) %269, i16 noundef signext %270, i16 %274, ptr noundef %39, ptr noundef nonnull align 8 dereferenceable(8) %273)
          to label %275 unwind label %308

275:                                              ; preds = %267
  call void @_ZN13meta_data_strD2Ev(ptr noundef nonnull align 8 dereferenceable(192) %39) #11
  %276 = load ptr, ptr %14, align 8, !tbaa !5
  %277 = load ptr, ptr %276, align 8, !tbaa !5
  %278 = getelementptr inbounds %class.TNode, ptr %277, i32 0, i32 4
  %279 = load ptr, ptr %278, align 8, !tbaa !33
  %280 = call noundef i32 @_ZN13IntervallTree8bsheightEP5TNode(ptr noundef nonnull align 1 dereferenceable(1) %46, ptr noundef %279)
  %281 = load ptr, ptr %14, align 8, !tbaa !5
  %282 = load ptr, ptr %281, align 8, !tbaa !5
  %283 = getelementptr inbounds %class.TNode, ptr %282, i32 0, i32 3
  %284 = load ptr, ptr %283, align 8, !tbaa !31
  %285 = call noundef i32 @_ZN13IntervallTree8bsheightEP5TNode(ptr noundef nonnull align 1 dereferenceable(1) %46, ptr noundef %284)
  %286 = sub nsw i32 %280, %285
  %287 = icmp eq i32 %286, 2
  br i1 %287, label %288, label %326

288:                                              ; preds = %275
  %289 = load ptr, ptr %10, align 8, !tbaa !5
  call void @_ZN14breakpoint_strC2ERKS_(ptr noundef nonnull align 8 dereferenceable(36) %40, ptr noundef nonnull align 8 dereferenceable(36) %289)
  %290 = load ptr, ptr %11, align 8, !tbaa !5
  invoke void @_ZN14breakpoint_strC2ERKS_(ptr noundef nonnull align 8 dereferenceable(36) %41, ptr noundef nonnull align 8 dereferenceable(36) %290)
          to label %291 unwind label %312

291:                                              ; preds = %288
  %292 = load i16, ptr %12, align 2, !tbaa !9
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %42, ptr align 1 %8, i64 2, i1 false)
  %293 = load ptr, ptr %14, align 8, !tbaa !5
  %294 = load ptr, ptr %293, align 8, !tbaa !5
  %295 = getelementptr inbounds %class.TNode, ptr %294, i32 0, i32 4
  %296 = load ptr, ptr %295, align 8, !tbaa !33
  %297 = invoke noundef ptr @_ZN5TNode8get_dataEv(ptr noundef nonnull align 8 dereferenceable(40) %296)
          to label %298 unwind label %316

298:                                              ; preds = %291
  %299 = load i16, ptr %42, align 1
  %300 = invoke noundef i32 @_ZN13IntervallTree7overlapE14breakpoint_strS0_sSt4pairIbbEP8SVS_Node(ptr noundef nonnull align 1 dereferenceable(1) %46, ptr noundef %40, ptr noundef %41, i16 noundef signext %292, i16 %299, ptr noundef %297)
          to label %301 unwind label %316

301:                                              ; preds = %298
  store i32 %300, ptr %22, align 4, !tbaa !17
  call void @_ZN14breakpoint_strD2Ev(ptr noundef nonnull align 8 dereferenceable(36) %41) #11
  call void @_ZN14breakpoint_strD2Ev(ptr noundef nonnull align 8 dereferenceable(36) %40) #11
  %302 = load i32, ptr %22, align 4, !tbaa !17
  %303 = icmp slt i32 %302, 0
  br i1 %303, label %304, label %321

304:                                              ; preds = %301
  %305 = load ptr, ptr %14, align 8, !tbaa !5
  %306 = call noundef ptr @_ZN13IntervallTree3srrERP5TNode(ptr noundef nonnull align 1 dereferenceable(1) %46, ptr noundef nonnull align 8 dereferenceable(8) %305)
  %307 = load ptr, ptr %14, align 8, !tbaa !5
  store ptr %306, ptr %307, align 8, !tbaa !5
  br label %325

308:                                              ; preds = %267
  %309 = landingpad { ptr, i32 }
          cleanup
  %310 = extractvalue { ptr, i32 } %309, 0
  store ptr %310, ptr %16, align 8
  %311 = extractvalue { ptr, i32 } %309, 1
  store i32 %311, ptr %17, align 4
  call void @_ZN13meta_data_strD2Ev(ptr noundef nonnull align 8 dereferenceable(192) %39) #11
  br label %332

312:                                              ; preds = %288
  %313 = landingpad { ptr, i32 }
          cleanup
  %314 = extractvalue { ptr, i32 } %313, 0
  store ptr %314, ptr %16, align 8
  %315 = extractvalue { ptr, i32 } %313, 1
  store i32 %315, ptr %17, align 4
  br label %320

316:                                              ; preds = %298, %291
  %317 = landingpad { ptr, i32 }
          cleanup
  %318 = extractvalue { ptr, i32 } %317, 0
  store ptr %318, ptr %16, align 8
  %319 = extractvalue { ptr, i32 } %317, 1
  store i32 %319, ptr %17, align 4
  call void @_ZN14breakpoint_strD2Ev(ptr noundef nonnull align 8 dereferenceable(36) %41) #11
  br label %320

320:                                              ; preds = %316, %312
  call void @_ZN14breakpoint_strD2Ev(ptr noundef nonnull align 8 dereferenceable(36) %40) #11
  br label %332

321:                                              ; preds = %301
  %322 = load ptr, ptr %14, align 8, !tbaa !5
  %323 = call noundef ptr @_ZN13IntervallTree3drrERP5TNode(ptr noundef nonnull align 1 dereferenceable(1) %46, ptr noundef nonnull align 8 dereferenceable(8) %322)
  %324 = load ptr, ptr %14, align 8, !tbaa !5
  store ptr %323, ptr %324, align 8, !tbaa !5
  br label %325

325:                                              ; preds = %321, %304
  br label %326

326:                                              ; preds = %325, %275
  br label %327

327:                                              ; preds = %326, %264
  br label %328

328:                                              ; preds = %327, %263
  store i32 0, ptr %30, align 4
  br label %329

329:                                              ; preds = %328, %194, %150
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #11
  %330 = load i32, ptr %30, align 4
  switch i32 %330, label %357 [
    i32 0, label %331
    i32 1, label %351
  ]

331:                                              ; preds = %329
  br label %333

332:                                              ; preds = %320, %308, %257, %245, %195, %168, %140
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #11
  br label %352

333:                                              ; preds = %331, %100
  call void @llvm.lifetime.start.p0(i64 4, ptr %43) #11
  call void @llvm.lifetime.start.p0(i64 4, ptr %44) #11
  call void @llvm.lifetime.start.p0(i64 4, ptr %45) #11
  %334 = load ptr, ptr %14, align 8, !tbaa !5
  %335 = load ptr, ptr %334, align 8, !tbaa !5
  %336 = getelementptr inbounds %class.TNode, ptr %335, i32 0, i32 3
  %337 = load ptr, ptr %336, align 8, !tbaa !31
  %338 = call noundef i32 @_ZN13IntervallTree8bsheightEP5TNode(ptr noundef nonnull align 1 dereferenceable(1) %46, ptr noundef %337)
  store i32 %338, ptr %43, align 4, !tbaa !17
  %339 = load ptr, ptr %14, align 8, !tbaa !5
  %340 = load ptr, ptr %339, align 8, !tbaa !5
  %341 = getelementptr inbounds %class.TNode, ptr %340, i32 0, i32 4
  %342 = load ptr, ptr %341, align 8, !tbaa !33
  %343 = call noundef i32 @_ZN13IntervallTree8bsheightEP5TNode(ptr noundef nonnull align 1 dereferenceable(1) %46, ptr noundef %342)
  store i32 %343, ptr %44, align 4, !tbaa !17
  %344 = load i32, ptr %43, align 4, !tbaa !17
  %345 = load i32, ptr %44, align 4, !tbaa !17
  %346 = call noundef i32 @_ZN13IntervallTree3maxEii(ptr noundef nonnull align 1 dereferenceable(1) %46, i32 noundef %344, i32 noundef %345)
  store i32 %346, ptr %45, align 4, !tbaa !17
  %347 = load ptr, ptr %14, align 8, !tbaa !5
  %348 = load ptr, ptr %347, align 8, !tbaa !5
  %349 = load i32, ptr %45, align 4, !tbaa !17
  %350 = add nsw i32 %349, 1
  call void @_ZN5TNode10set_heightEi(ptr noundef nonnull align 8 dereferenceable(40) %348, i32 noundef %350)
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #11
  br label %351

351:                                              ; preds = %333, %329, %56
  ret void

352:                                              ; preds = %332, %99
  %353 = load ptr, ptr %16, align 8
  %354 = load i32, ptr %17, align 4
  %355 = insertvalue { ptr, i32 } poison, ptr %353, 0
  %356 = insertvalue { ptr, i32 } %355, i32 %354, 1
  resume { ptr, i32 } %356

357:                                              ; preds = %329
  unreachable
}

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN5TNodeC2E14breakpoint_strS0_sSt4pairIbbE13meta_data_str(ptr noundef nonnull align 8 dereferenceable(40), ptr noundef, ptr noundef, i16 noundef signext, i16, ptr noundef) unnamed_addr #3 align 2

; Function Attrs: nobuiltin nounwind
declare void @_ZdlPvm(ptr noundef, i64 noundef) #8

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEs(ptr noundef nonnull align 8 dereferenceable(8), i16 noundef signext) #9

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_ZN13IntervallTree8bsheightEP5TNode(ptr noundef nonnull align 1 dereferenceable(1), ptr noundef) #3 align 2

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZN13IntervallTree3maxEii(ptr noundef nonnull align 1 dereferenceable(1), i32 noundef, i32 noundef) #6 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN5TNode10set_heightEi(ptr noundef nonnull align 8 dereferenceable(40), i32 noundef) #6 align 2

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"short", !7, i64 0}
!11 = !{!12, !16, i64 32}
!12 = !{!"_ZTS14breakpoint_str", !13, i64 0, !16, i64 32}
!13 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !14, i64 0, !15, i64 8, !7, i64 16}
!14 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !6, i64 0}
!15 = !{!"long", !7, i64 0}
!16 = !{!"int", !7, i64 0}
!17 = !{!16, !16, i64 0}
!18 = !{!19, !10, i64 0}
!19 = !{!"_ZTS8SVS_Node", !10, i64 0, !12, i64 8, !12, i64 48, !20, i64 88, !13, i64 112, !24, i64 144, !25, i64 152, !13, i64 160, !7, i64 192, !7, i64 197}
!20 = !{!"_ZTSSt6vectorIP12Support_NodeSaIS1_EE", !21, i64 0}
!21 = !{!"_ZTSSt12_Vector_baseIP12Support_NodeSaIS1_EE", !22, i64 0}
!22 = !{!"_ZTSNSt12_Vector_baseIP12Support_NodeSaIS1_EE12_Vector_implE", !23, i64 0}
!23 = !{!"_ZTSNSt12_Vector_baseIP12Support_NodeSaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!24 = !{!"_ZTSSt4pairIiiE", !16, i64 0, !16, i64 4}
!25 = !{!"_ZTSSt4pairIbbE", !26, i64 0, !26, i64 1}
!26 = !{!"bool", !7, i64 0}
!27 = !{!28, !29, i64 32}
!28 = !{!"_ZTS9Parameter", !13, i64 0, !29, i64 32, !16, i64 40, !26, i64 44, !26, i64 45, !26, i64 46, !16, i64 48, !30, i64 52, !16, i64 56}
!29 = !{!"double", !7, i64 0}
!30 = !{!"float", !7, i64 0}
!31 = !{!32, !6, i64 24}
!32 = !{!"_ZTS5TNode", !6, i64 0, !16, i64 8, !6, i64 16, !6, i64 24, !6, i64 32}
!33 = !{!32, !6, i64 32}


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

%"class.std::basic_ostream" = type { ptr, %"class.std::basic_ios" }
%"class.std::basic_ios" = type { %"class.std::ios_base", ptr, i8, i8, ptr, ptr, ptr, ptr }
%"class.std::ios_base" = type { ptr, i64, i64, i32, i32, i32, ptr, %"struct.std::ios_base::_Words", [8 x %"struct.std::ios_base::_Words"], i32, ptr, %"class.std::locale" }
%"struct.std::ios_base::_Words" = type { ptr, i64 }
%"class.std::locale" = type { ptr }
%struct.breakpoint_str = type <{ %"class.std::__cxx11::basic_string", i32, [4 x i8] }>
%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%struct.meta_data_str = type { i32, i16, %"class.std::__cxx11::basic_string", i32, %"class.std::__cxx11::basic_string", i32, %"struct.std::pair.3", %"class.std::__cxx11::basic_string", %"struct.std::pair.5" }
%"struct.std::pair.3" = type { i32, i32 }
%"struct.std::pair.5" = type { %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string" }

@_ZSt4cout = external global %"class.std::basic_ostream", align 8
@.str.1 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [2 x i8], align 1

; Function Attrs: mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i32 @llvm.abs.i32(i32, i1 immarg) #0

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef ptr @_ZN9Parameter8InstanceEv() local_unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_ZN13IntervallTree7overlapE14breakpoint_strS0_sSt4pairIbbEP8SVS_Node(ptr noundef nonnull align 1 dereferenceable(1), ptr noundef, ptr noundef, i16 noundef signext, i16, ptr noundef) local_unnamed_addr #2 align 2

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

declare i32 @__gxx_personality_v0(...)

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN13IntervallTree17careful_screeningER14breakpoint_strS1_sSt4pairIbbE13meta_data_strRP5TNode(ptr noundef nonnull align 1 dereferenceable(1), ptr noundef nonnull align 8 dereferenceable(36), ptr noundef nonnull align 8 dereferenceable(36), i16 noundef signext, i16, ptr noundef, ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #2 align 2

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN13IntervallTree6insertER14breakpoint_strS1_sSt4pairIbbE13meta_data_strRP5TNode(ptr noundef nonnull align 1 dereferenceable(1) %0, ptr noundef nonnull align 8 dereferenceable(36) %1, ptr noundef nonnull align 8 dereferenceable(36) %2, i16 noundef signext %3, i16 %4, ptr noundef %5, ptr noundef nonnull align 8 dereferenceable(8) %6) local_unnamed_addr #2 align 2 personality ptr @__gxx_personality_v0 {
  %8 = alloca %struct.breakpoint_str, align 8
  %9 = alloca %struct.breakpoint_str, align 8
  %10 = alloca %struct.meta_data_str, align 8
  %11 = alloca %struct.breakpoint_str, align 8
  %12 = alloca %struct.breakpoint_str, align 8
  %13 = alloca %struct.breakpoint_str, align 8
  %14 = alloca %struct.breakpoint_str, align 8
  %15 = alloca %struct.meta_data_str, align 8
  %16 = alloca %struct.meta_data_str, align 8
  %17 = alloca %struct.meta_data_str, align 8
  %18 = alloca %struct.breakpoint_str, align 8
  %19 = alloca %struct.breakpoint_str, align 8
  %20 = alloca %struct.meta_data_str, align 8
  %21 = alloca %struct.breakpoint_str, align 8
  %22 = alloca %struct.breakpoint_str, align 8
  %23 = getelementptr inbounds i8, ptr %1, i64 32
  %24 = load i32, ptr %23, align 8, !tbaa !5
  %25 = icmp eq i32 %24, -1
  %26 = getelementptr inbounds i8, ptr %2, i64 32
  %27 = load i32, ptr %26, align 8
  %28 = icmp eq i32 %27, -1
  %or.cond = select i1 %25, i1 %28, i1 false
  br i1 %or.cond, label %188, label %29

29:                                               ; preds = %7
  %30 = load ptr, ptr %6, align 8, !tbaa !14
  %31 = icmp eq ptr %30, null
  br i1 %31, label %32, label %54

32:                                               ; preds = %29
  %33 = tail call noalias noundef nonnull dereferenceable(40) ptr @_Znwm(i64 noundef 40) #8
  invoke void @_ZN14breakpoint_strC2ERKS_(ptr noundef nonnull align 8 dereferenceable(36) %8, ptr noundef nonnull align 8 dereferenceable(36) %1)
          to label %34 unwind label %43

34:                                               ; preds = %32
  invoke void @_ZN14breakpoint_strC2ERKS_(ptr noundef nonnull align 8 dereferenceable(36) %9, ptr noundef nonnull align 8 dereferenceable(36) %2)
          to label %35 unwind label %45

35:                                               ; preds = %34
  invoke void @_ZN13meta_data_strC2ERKS_(ptr noundef nonnull align 8 dereferenceable(192) %10, ptr noundef nonnull align 8 dereferenceable(192) %5)
          to label %36 unwind label %47

36:                                               ; preds = %35
  invoke void @_ZN5TNodeC2E14breakpoint_strS0_sSt4pairIbbE13meta_data_str(ptr noundef nonnull align 8 dereferenceable(40) %33, ptr noundef nonnull %8, ptr noundef nonnull %9, i16 noundef signext %3, i16 %4, ptr noundef nonnull %10)
          to label %37 unwind label %49

37:                                               ; preds = %36
  store ptr %33, ptr %6, align 8, !tbaa !14
  call void @_ZN13meta_data_strD2Ev(ptr noundef nonnull align 8 dereferenceable(192) %10) #9
  call void @_ZN14breakpoint_strD2Ev(ptr noundef nonnull align 8 dereferenceable(36) %9) #9
  call void @_ZN14breakpoint_strD2Ev(ptr noundef nonnull align 8 dereferenceable(36) %8) #9
  %38 = load ptr, ptr %6, align 8, !tbaa !14
  %39 = icmp eq ptr %38, null
  br i1 %39, label %40, label %.thread

40:                                               ; preds = %37
  %41 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull @.str.1)
  %42 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %41, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  br label %.thread

43:                                               ; preds = %32
  %44 = landingpad { ptr, i32 }
          cleanup
  br label %53

45:                                               ; preds = %34
  %46 = landingpad { ptr, i32 }
          cleanup
  br label %52

47:                                               ; preds = %35
  %48 = landingpad { ptr, i32 }
          cleanup
  br label %51

49:                                               ; preds = %36
  %50 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN13meta_data_strD2Ev(ptr noundef nonnull align 8 dereferenceable(192) %10) #9
  br label %51

51:                                               ; preds = %49, %47
  %.pn107 = phi { ptr, i32 } [ %50, %49 ], [ %48, %47 ]
  call void @_ZN14breakpoint_strD2Ev(ptr noundef nonnull align 8 dereferenceable(36) %9) #9
  br label %52

52:                                               ; preds = %51, %45
  %.pn107.pn = phi { ptr, i32 } [ %.pn107, %51 ], [ %46, %45 ]
  call void @_ZN14breakpoint_strD2Ev(ptr noundef nonnull align 8 dereferenceable(36) %8) #9
  br label %53

53:                                               ; preds = %43, %52
  %.pn107.pn.pn = phi { ptr, i32 } [ %.pn107.pn, %52 ], [ %44, %43 ]
  call void @_ZdlPvm(ptr noundef nonnull %33, i64 noundef 40) #10
  br label %189

54:                                               ; preds = %29
  call void @_ZN14breakpoint_strC2ERKS_(ptr noundef nonnull align 8 dereferenceable(36) %11, ptr noundef nonnull align 8 dereferenceable(36) %1)
  invoke void @_ZN14breakpoint_strC2ERKS_(ptr noundef nonnull align 8 dereferenceable(36) %12, ptr noundef nonnull align 8 dereferenceable(36) %2)
          to label %55 unwind label %73

55:                                               ; preds = %54
  %56 = load ptr, ptr %6, align 8, !tbaa !14
  %57 = call noundef ptr @_ZN5TNode8get_dataEv(ptr noundef nonnull align 8 dereferenceable(40) %56)
  %58 = invoke noundef i32 @_ZN13IntervallTree7overlapE14breakpoint_strS0_sSt4pairIbbEP8SVS_Node(ptr noundef nonnull align 1 dereferenceable(1) %0, ptr noundef nonnull %11, ptr noundef nonnull %12, i16 noundef signext %3, i16 %4, ptr noundef %57)
          to label %59 unwind label %75

59:                                               ; preds = %55
  call void @_ZN14breakpoint_strD2Ev(ptr noundef nonnull align 8 dereferenceable(36) %12) #9
  call void @_ZN14breakpoint_strD2Ev(ptr noundef nonnull align 8 dereferenceable(36) %11) #9
  %60 = icmp eq i32 %58, 0
  br i1 %60, label %61, label %91

61:                                               ; preds = %59
  %62 = load i32, ptr %23, align 8, !tbaa !5
  %63 = icmp eq i32 %62, 55986511
  br i1 %63, label %64, label %78

64:                                               ; preds = %61
  %65 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull @.str.2)
  %66 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEs(ptr noundef nonnull align 8 dereferenceable(8) %65, i16 noundef signext %3)
  %67 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %66, ptr noundef nonnull @.str.3)
  %68 = load ptr, ptr %6, align 8, !tbaa !14
  %69 = call noundef ptr @_ZN5TNode8get_dataEv(ptr noundef nonnull align 8 dereferenceable(40) %68)
  %70 = load i16, ptr %69, align 8, !tbaa !15
  %71 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEs(ptr noundef nonnull align 8 dereferenceable(8) %67, i16 noundef signext %70)
  %72 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %71, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  br label %78

73:                                               ; preds = %54
  %74 = landingpad { ptr, i32 }
          cleanup
  br label %77

75:                                               ; preds = %55
  %76 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN14breakpoint_strD2Ev(ptr noundef nonnull align 8 dereferenceable(36) %12) #9
  br label %77

77:                                               ; preds = %75, %73
  %.pn = phi { ptr, i32 } [ %76, %75 ], [ %74, %73 ]
  call void @_ZN14breakpoint_strD2Ev(ptr noundef nonnull align 8 dereferenceable(36) %11) #9
  br label %189

78:                                               ; preds = %64, %61
  %79 = load ptr, ptr %6, align 8, !tbaa !14
  call void @_ZN14breakpoint_strC2ERKS_(ptr noundef nonnull align 8 dereferenceable(36) %13, ptr noundef nonnull align 8 dereferenceable(36) %1)
  invoke void @_ZN14breakpoint_strC2ERKS_(ptr noundef nonnull align 8 dereferenceable(36) %14, ptr noundef nonnull align 8 dereferenceable(36) %2)
          to label %80 unwind label %83

80:                                               ; preds = %78
  invoke void @_ZN13meta_data_strC2ERKS_(ptr noundef nonnull align 8 dereferenceable(192) %15, ptr noundef nonnull align 8 dereferenceable(192) %5)
          to label %81 unwind label %85

81:                                               ; preds = %80
  invoke void @_ZN5TNode3addE14breakpoint_strS0_sSt4pairIbbE13meta_data_str(ptr noundef nonnull align 8 dereferenceable(40) %79, ptr noundef nonnull %13, ptr noundef nonnull %14, i16 noundef signext %3, i16 %4, ptr noundef nonnull %15)
          to label %82 unwind label %87

82:                                               ; preds = %81
  call void @_ZN13meta_data_strD2Ev(ptr noundef nonnull align 8 dereferenceable(192) %15) #9
  call void @_ZN14breakpoint_strD2Ev(ptr noundef nonnull align 8 dereferenceable(36) %14) #9
  call void @_ZN14breakpoint_strD2Ev(ptr noundef nonnull align 8 dereferenceable(36) %13) #9
  store i32 -1, ptr %23, align 8, !tbaa !5
  store i32 -1, ptr %26, align 8, !tbaa !5
  br label %188

83:                                               ; preds = %78
  %84 = landingpad { ptr, i32 }
          cleanup
  br label %90

85:                                               ; preds = %80
  %86 = landingpad { ptr, i32 }
          cleanup
  br label %89

87:                                               ; preds = %81
  %88 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN13meta_data_strD2Ev(ptr noundef nonnull align 8 dereferenceable(192) %15) #9
  br label %89

89:                                               ; preds = %87, %85
  %.pn103 = phi { ptr, i32 } [ %88, %87 ], [ %86, %85 ]
  call void @_ZN14breakpoint_strD2Ev(ptr noundef nonnull align 8 dereferenceable(36) %14) #9
  br label %90

90:                                               ; preds = %89, %83
  %.pn103.pn = phi { ptr, i32 } [ %.pn103, %89 ], [ %84, %83 ]
  call void @_ZN14breakpoint_strD2Ev(ptr noundef nonnull align 8 dereferenceable(36) %13) #9
  br label %189

91:                                               ; preds = %59
  %92 = call i32 @llvm.abs.i32(i32 %58, i1 true)
  %93 = zext nneg i32 %92 to i64
  %94 = call noundef ptr @_ZN9Parameter8InstanceEv()
  %95 = getelementptr inbounds i8, ptr %94, i64 32
  %96 = load double, ptr %95, align 8, !tbaa !25
  %97 = fptosi double %96 to i64
  %98 = icmp slt i64 %93, %97
  br i1 %98, label %99, label %107

99:                                               ; preds = %91
  call void @_ZN13meta_data_strC2ERKS_(ptr noundef nonnull align 8 dereferenceable(192) %16, ptr noundef nonnull align 8 dereferenceable(192) %5)
  invoke void @_ZN13IntervallTree17careful_screeningER14breakpoint_strS1_sSt4pairIbbE13meta_data_strRP5TNode(ptr noundef nonnull align 1 dereferenceable(1) %0, ptr noundef nonnull align 8 dereferenceable(36) %1, ptr noundef nonnull align 8 dereferenceable(36) %2, i16 noundef signext %3, i16 %4, ptr noundef nonnull %16, ptr noundef nonnull align 8 dereferenceable(8) %6)
          to label %100 unwind label %105

100:                                              ; preds = %99
  call void @_ZN13meta_data_strD2Ev(ptr noundef nonnull align 8 dereferenceable(192) %16) #9
  %101 = load i32, ptr %23, align 8, !tbaa !5
  %102 = icmp eq i32 %101, -1
  %103 = load i32, ptr %26, align 8
  %104 = icmp eq i32 %103, -1
  %or.cond116 = select i1 %102, i1 %104, i1 false
  br i1 %or.cond116, label %188, label %107

105:                                              ; preds = %99
  %106 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN13meta_data_strD2Ev(ptr noundef nonnull align 8 dereferenceable(192) %16) #9
  br label %189

107:                                              ; preds = %91, %100
  %108 = icmp sgt i32 %58, 0
  br i1 %108, label %109, label %143

109:                                              ; preds = %107
  call void @_ZN13meta_data_strC2ERKS_(ptr noundef nonnull align 8 dereferenceable(192) %17, ptr noundef nonnull align 8 dereferenceable(192) %5)
  %110 = load ptr, ptr %6, align 8, !tbaa !14
  %111 = getelementptr inbounds i8, ptr %110, i64 24
  invoke void @_ZN13IntervallTree6insertER14breakpoint_strS1_sSt4pairIbbE13meta_data_strRP5TNode(ptr noundef nonnull align 1 dereferenceable(1) %0, ptr noundef nonnull align 8 dereferenceable(36) %1, ptr noundef nonnull align 8 dereferenceable(36) %2, i16 noundef signext %3, i16 %4, ptr noundef nonnull %17, ptr noundef nonnull align 8 dereferenceable(8) %111)
          to label %112 unwind label %134

112:                                              ; preds = %109
  call void @_ZN13meta_data_strD2Ev(ptr noundef nonnull align 8 dereferenceable(192) %17) #9
  %113 = load ptr, ptr %6, align 8, !tbaa !14
  %114 = getelementptr inbounds i8, ptr %113, i64 24
  %115 = load ptr, ptr %114, align 8, !tbaa !29
  %116 = call noundef i32 @_ZN13IntervallTree8bsheightEP5TNode(ptr noundef nonnull align 1 dereferenceable(1) %0, ptr noundef %115)
  %117 = load ptr, ptr %6, align 8, !tbaa !14
  %118 = getelementptr inbounds i8, ptr %117, i64 32
  %119 = load ptr, ptr %118, align 8, !tbaa !31
  %120 = call noundef i32 @_ZN13IntervallTree8bsheightEP5TNode(ptr noundef nonnull align 1 dereferenceable(1) %0, ptr noundef %119)
  %121 = sub nsw i32 %116, %120
  %122 = icmp eq i32 %121, 2
  br i1 %122, label %123, label %.thread

123:                                              ; preds = %112
  call void @_ZN14breakpoint_strC2ERKS_(ptr noundef nonnull align 8 dereferenceable(36) %18, ptr noundef nonnull align 8 dereferenceable(36) %1)
  invoke void @_ZN14breakpoint_strC2ERKS_(ptr noundef nonnull align 8 dereferenceable(36) %19, ptr noundef nonnull align 8 dereferenceable(36) %2)
          to label %124 unwind label %136

124:                                              ; preds = %123
  %125 = load ptr, ptr %6, align 8, !tbaa !14
  %126 = getelementptr inbounds i8, ptr %125, i64 24
  %127 = load ptr, ptr %126, align 8, !tbaa !29
  %128 = call noundef ptr @_ZN5TNode8get_dataEv(ptr noundef nonnull align 8 dereferenceable(40) %127)
  %129 = invoke noundef i32 @_ZN13IntervallTree7overlapE14breakpoint_strS0_sSt4pairIbbEP8SVS_Node(ptr noundef nonnull align 1 dereferenceable(1) %0, ptr noundef nonnull %18, ptr noundef nonnull %19, i16 noundef signext %3, i16 %4, ptr noundef %128)
          to label %130 unwind label %138

130:                                              ; preds = %124
  call void @_ZN14breakpoint_strD2Ev(ptr noundef nonnull align 8 dereferenceable(36) %19) #9
  call void @_ZN14breakpoint_strD2Ev(ptr noundef nonnull align 8 dereferenceable(36) %18) #9
  %131 = icmp sgt i32 %129, 0
  br i1 %131, label %132, label %141

132:                                              ; preds = %130
  %133 = call noundef ptr @_ZN13IntervallTree3srlERP5TNode(ptr noundef nonnull align 1 dereferenceable(1) %0, ptr noundef nonnull align 8 dereferenceable(8) %6)
  store ptr %133, ptr %6, align 8, !tbaa !14
  br label %.thread

134:                                              ; preds = %109
  %135 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN13meta_data_strD2Ev(ptr noundef nonnull align 8 dereferenceable(192) %17) #9
  br label %189

136:                                              ; preds = %123
  %137 = landingpad { ptr, i32 }
          cleanup
  br label %140

138:                                              ; preds = %124
  %139 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN14breakpoint_strD2Ev(ptr noundef nonnull align 8 dereferenceable(36) %19) #9
  br label %140

140:                                              ; preds = %138, %136
  %.pn101 = phi { ptr, i32 } [ %139, %138 ], [ %137, %136 ]
  call void @_ZN14breakpoint_strD2Ev(ptr noundef nonnull align 8 dereferenceable(36) %18) #9
  br label %189

141:                                              ; preds = %130
  %142 = call noundef ptr @_ZN13IntervallTree3drlERP5TNode(ptr noundef nonnull align 1 dereferenceable(1) %0, ptr noundef nonnull align 8 dereferenceable(8) %6)
  store ptr %142, ptr %6, align 8, !tbaa !14
  br label %.thread

143:                                              ; preds = %107
  call void @_ZN13meta_data_strC2ERKS_(ptr noundef nonnull align 8 dereferenceable(192) %20, ptr noundef nonnull align 8 dereferenceable(192) %5)
  %144 = load ptr, ptr %6, align 8, !tbaa !14
  %145 = getelementptr inbounds i8, ptr %144, i64 32
  invoke void @_ZN13IntervallTree6insertER14breakpoint_strS1_sSt4pairIbbE13meta_data_strRP5TNode(ptr noundef nonnull align 1 dereferenceable(1) %0, ptr noundef nonnull align 8 dereferenceable(36) %1, ptr noundef nonnull align 8 dereferenceable(36) %2, i16 noundef signext %3, i16 %4, ptr noundef nonnull %20, ptr noundef nonnull align 8 dereferenceable(8) %145)
          to label %146 unwind label %168

146:                                              ; preds = %143
  call void @_ZN13meta_data_strD2Ev(ptr noundef nonnull align 8 dereferenceable(192) %20) #9
  %147 = load ptr, ptr %6, align 8, !tbaa !14
  %148 = getelementptr inbounds i8, ptr %147, i64 32
  %149 = load ptr, ptr %148, align 8, !tbaa !31
  %150 = call noundef i32 @_ZN13IntervallTree8bsheightEP5TNode(ptr noundef nonnull align 1 dereferenceable(1) %0, ptr noundef %149)
  %151 = load ptr, ptr %6, align 8, !tbaa !14
  %152 = getelementptr inbounds i8, ptr %151, i64 24
  %153 = load ptr, ptr %152, align 8, !tbaa !29
  %154 = call noundef i32 @_ZN13IntervallTree8bsheightEP5TNode(ptr noundef nonnull align 1 dereferenceable(1) %0, ptr noundef %153)
  %155 = sub nsw i32 %150, %154
  %156 = icmp eq i32 %155, 2
  br i1 %156, label %157, label %.thread

157:                                              ; preds = %146
  call void @_ZN14breakpoint_strC2ERKS_(ptr noundef nonnull align 8 dereferenceable(36) %21, ptr noundef nonnull align 8 dereferenceable(36) %1)
  invoke void @_ZN14breakpoint_strC2ERKS_(ptr noundef nonnull align 8 dereferenceable(36) %22, ptr noundef nonnull align 8 dereferenceable(36) %2)
          to label %158 unwind label %170

158:                                              ; preds = %157
  %159 = load ptr, ptr %6, align 8, !tbaa !14
  %160 = getelementptr inbounds i8, ptr %159, i64 32
  %161 = load ptr, ptr %160, align 8, !tbaa !31
  %162 = call noundef ptr @_ZN5TNode8get_dataEv(ptr noundef nonnull align 8 dereferenceable(40) %161)
  %163 = invoke noundef i32 @_ZN13IntervallTree7overlapE14breakpoint_strS0_sSt4pairIbbEP8SVS_Node(ptr noundef nonnull align 1 dereferenceable(1) %0, ptr noundef nonnull %21, ptr noundef nonnull %22, i16 noundef signext %3, i16 %4, ptr noundef %162)
          to label %164 unwind label %172

164:                                              ; preds = %158
  call void @_ZN14breakpoint_strD2Ev(ptr noundef nonnull align 8 dereferenceable(36) %22) #9
  call void @_ZN14breakpoint_strD2Ev(ptr noundef nonnull align 8 dereferenceable(36) %21) #9
  %165 = icmp slt i32 %163, 0
  br i1 %165, label %166, label %175

166:                                              ; preds = %164
  %167 = call noundef ptr @_ZN13IntervallTree3srrERP5TNode(ptr noundef nonnull align 1 dereferenceable(1) %0, ptr noundef nonnull align 8 dereferenceable(8) %6)
  store ptr %167, ptr %6, align 8, !tbaa !14
  br label %.thread

168:                                              ; preds = %143
  %169 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN13meta_data_strD2Ev(ptr noundef nonnull align 8 dereferenceable(192) %20) #9
  br label %189

170:                                              ; preds = %157
  %171 = landingpad { ptr, i32 }
          cleanup
  br label %174

172:                                              ; preds = %158
  %173 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN14breakpoint_strD2Ev(ptr noundef nonnull align 8 dereferenceable(36) %22) #9
  br label %174

174:                                              ; preds = %172, %170
  %.pn99 = phi { ptr, i32 } [ %173, %172 ], [ %171, %170 ]
  call void @_ZN14breakpoint_strD2Ev(ptr noundef nonnull align 8 dereferenceable(36) %21) #9
  br label %189

175:                                              ; preds = %164
  %176 = call noundef ptr @_ZN13IntervallTree3drrERP5TNode(ptr noundef nonnull align 1 dereferenceable(1) %0, ptr noundef nonnull align 8 dereferenceable(8) %6)
  store ptr %176, ptr %6, align 8, !tbaa !14
  br label %.thread

.thread:                                          ; preds = %132, %141, %112, %146, %175, %166, %37, %40
  %177 = load ptr, ptr %6, align 8, !tbaa !14
  %178 = getelementptr inbounds i8, ptr %177, i64 24
  %179 = load ptr, ptr %178, align 8, !tbaa !29
  %180 = call noundef i32 @_ZN13IntervallTree8bsheightEP5TNode(ptr noundef nonnull align 1 dereferenceable(1) %0, ptr noundef %179)
  %181 = load ptr, ptr %6, align 8, !tbaa !14
  %182 = getelementptr inbounds i8, ptr %181, i64 32
  %183 = load ptr, ptr %182, align 8, !tbaa !31
  %184 = call noundef i32 @_ZN13IntervallTree8bsheightEP5TNode(ptr noundef nonnull align 1 dereferenceable(1) %0, ptr noundef %183)
  %185 = call noundef i32 @_ZN13IntervallTree3maxEii(ptr noundef nonnull align 1 dereferenceable(1) %0, i32 noundef %180, i32 noundef %184)
  %186 = load ptr, ptr %6, align 8, !tbaa !14
  %187 = add nsw i32 %185, 1
  call void @_ZN5TNode10set_heightEi(ptr noundef nonnull align 8 dereferenceable(40) %186, i32 noundef %187)
  br label %188

188:                                              ; preds = %82, %100, %7, %.thread
  ret void

189:                                              ; preds = %77, %90, %105, %134, %140, %168, %174, %53
  %.pn107.pn.pn.pn = phi { ptr, i32 } [ %.pn107.pn.pn, %53 ], [ %.pn103.pn, %90 ], [ %.pn101, %140 ], [ %135, %134 ], [ %.pn99, %174 ], [ %169, %168 ], [ %106, %105 ], [ %.pn, %77 ]
  resume { ptr, i32 } %.pn107.pn.pn.pn
}

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN5TNodeC2E14breakpoint_strS0_sSt4pairIbbE13meta_data_str(ptr noundef nonnull align 8 dereferenceable(40), ptr noundef, ptr noundef, i16 noundef signext, i16, ptr noundef) unnamed_addr #2 align 2

; Function Attrs: nobuiltin nounwind
declare void @_ZdlPvm(ptr noundef, i64 noundef) local_unnamed_addr #6

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEs(ptr noundef nonnull align 8 dereferenceable(8), i16 noundef signext) local_unnamed_addr #7

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_ZN13IntervallTree8bsheightEP5TNode(ptr noundef nonnull align 1 dereferenceable(1), ptr noundef) local_unnamed_addr #2 align 2

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZN13IntervallTree3maxEii(ptr noundef nonnull align 1 dereferenceable(1), i32 noundef, i32 noundef) local_unnamed_addr #4 align 2

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !13, i64 32}
!6 = !{!"_ZTS14breakpoint_str", !7, i64 0, !13, i64 32}
!7 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !8, i64 0, !12, i64 8, !10, i64 16}
!8 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !9, i64 0}
!9 = !{!"any pointer", !10, i64 0}
!10 = !{!"omnipotent char", !11, i64 0}
!11 = !{!"Simple C++ TBAA"}
!12 = !{!"long", !10, i64 0}
!13 = !{!"int", !10, i64 0}
!14 = !{!9, !9, i64 0}
!15 = !{!16, !17, i64 0}
!16 = !{!"_ZTS8SVS_Node", !17, i64 0, !6, i64 8, !6, i64 48, !18, i64 88, !7, i64 112, !22, i64 144, !23, i64 152, !7, i64 160, !10, i64 192, !10, i64 197}
!17 = !{!"short", !10, i64 0}
!18 = !{!"_ZTSSt6vectorIP12Support_NodeSaIS1_EE", !19, i64 0}
!19 = !{!"_ZTSSt12_Vector_baseIP12Support_NodeSaIS1_EE", !20, i64 0}
!20 = !{!"_ZTSNSt12_Vector_baseIP12Support_NodeSaIS1_EE12_Vector_implE", !21, i64 0}
!21 = !{!"_ZTSNSt12_Vector_baseIP12Support_NodeSaIS1_EE17_Vector_impl_dataE", !9, i64 0, !9, i64 8, !9, i64 16}
!22 = !{!"_ZTSSt4pairIiiE", !13, i64 0, !13, i64 4}
!23 = !{!"_ZTSSt4pairIbbE", !24, i64 0, !24, i64 1}
!24 = !{!"bool", !10, i64 0}
!25 = !{!26, !27, i64 32}
!26 = !{!"_ZTS9Parameter", !7, i64 0, !27, i64 32, !13, i64 40, !24, i64 44, !24, i64 45, !24, i64 46, !13, i64 48, !28, i64 52, !13, i64 56}
!27 = !{!"double", !10, i64 0}
!28 = !{!"float", !10, i64 0}
!29 = !{!30, !9, i64 24}
!30 = !{!"_ZTS5TNode", !9, i64 0, !13, i64 8, !9, i64 16, !9, i64 24, !9, i64 32}
!31 = !{!30, !9, i64 32}


; Effective O3 passes: CorrelatedValuePropagationPass,EarlyCSEPass,GlobalOptPass,IPSCCPPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,SROAPass,SimplifyCFGPass,TailCallElimPass