; LLVM IR from facebook/redex :: service/switch-partitioning (SwitchEquivFinder)

; 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::__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.__gnu_cxx::__normal_iterator.149" = type { ptr }
%"class.__gnu_cxx::__normal_iterator.153" = type { ptr }
%"class.std::vector.154" = type { %"struct.std::_Vector_base.155" }
%"struct.std::_Vector_base.155" = type { %"struct.std::_Vector_base<cfg::Block *, std::allocator<cfg::Block *>>::_Vector_impl" }
%"struct.std::_Vector_base<cfg::Block *, std::allocator<cfg::Block *>>::_Vector_impl" = type { %"struct.std::_Vector_base<cfg::Block *, std::allocator<cfg::Block *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<cfg::Block *, std::allocator<cfg::Block *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.UnorderedMap<cfg::Block *, std::map<unsigned int, IRInstruction *>>::FixedIterator" = type { %"struct.std::__detail::_Node_iterator.159" }
%"struct.std::__detail::_Node_iterator.159" = type { %"struct.std::__detail::_Node_iterator_base.160" }
%"struct.std::__detail::_Node_iterator_base.160" = type { ptr }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<cfg::Edge *, std::allocator<cfg::Edge *>>::_Vector_impl" }
%"struct.std::_Vector_base<cfg::Edge *, std::allocator<cfg::Edge *>>::_Vector_impl" = type { %"struct.std::_Vector_base<cfg::Edge *, std::allocator<cfg::Edge *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<cfg::Edge *, std::allocator<cfg::Edge *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.std::pair.150" = type { ptr, ptr }
%class.SwitchEquivFinder = type <{ ptr, ptr, i32, i32, %"class.std::shared_ptr.0", i32, [4 x i8], %"class.std::shared_ptr.3", i8, [7 x i8], %"class.std::map", %class.UnorderedMap, %class.UnorderedMap.14, i8, [7 x i8] }>
%"class.std::shared_ptr.0" = type { %"class.std::__shared_ptr.1" }
%"class.std::__shared_ptr.1" = type { ptr, %"class.std::__shared_count" }
%"class.std::__shared_count" = type { ptr }
%"class.std::shared_ptr.3" = type { %"class.std::__shared_ptr.4" }
%"class.std::__shared_ptr.4" = type { ptr, %"class.std::__shared_count" }
%"class.std::map" = type { %"class.std::_Rb_tree" }
%"class.std::_Rb_tree" = type { %"struct.std::_Rb_tree<boost::variant<SwitchEquivFinder::DefaultCase, int, const DexType *>, std::pair<const boost::variant<SwitchEquivFinder::DefaultCase, int, const DexType *>, cfg::Block *>, std::_Select1st<std::pair<const boost::variant<SwitchEquivFinder::DefaultCase, int, const DexType *>, cfg::Block *>>, SwitchEquivFinder::key_comparator>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<boost::variant<SwitchEquivFinder::DefaultCase, int, const DexType *>, std::pair<const boost::variant<SwitchEquivFinder::DefaultCase, int, const DexType *>, cfg::Block *>, std::_Select1st<std::pair<const boost::variant<SwitchEquivFinder::DefaultCase, int, const DexType *>, cfg::Block *>>, SwitchEquivFinder::key_comparator>::_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 }
%class.UnorderedMap = type { %"class.std::unordered_map" }
%"class.std::unordered_map" = type { %"class.std::_Hashtable" }
%"class.std::_Hashtable" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"struct.std::__detail::_Hash_node_base" = type { ptr }
%"struct.std::__detail::_Prime_rehash_policy" = type { float, i64 }
%class.UnorderedMap.14 = type { %"class.std::unordered_map.16" }
%"class.std::unordered_map.16" = type { %"class.std::_Hashtable.17" }
%"class.std::_Hashtable.17" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"struct.std::pair.161" = type { ptr, %"class.std::map.95" }
%"class.std::map.95" = type { %"class.std::_Rb_tree.96" }
%"class.std::_Rb_tree.96" = type { %"struct.std::_Rb_tree<unsigned int, std::pair<const unsigned int, IRInstruction *>, std::_Select1st<std::pair<const unsigned int, IRInstruction *>>, std::less<unsigned int>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<unsigned int, std::pair<const unsigned int, IRInstruction *>, std::_Select1st<std::pair<const unsigned int, IRInstruction *>>, std::less<unsigned int>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }

@.str.10 = external hidden unnamed_addr constant [98 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [21 x i8], align 1
@__PRETTY_FUNCTION__._ZN17SwitchEquivFinder10move_edgesERKSt6vectorISt4pairIPN3cfg4EdgeEPNS2_5BlockEESaIS7_EE = external hidden unnamed_addr constant [94 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [47 x i8], align 1

declare i32 @__gxx_personality_v0(...)

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

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

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

; Function Attrs: noreturn
declare void @_Z11assert_failPKcS0_jS0_10RedexErrorS0_z(ptr noundef, ptr noundef, i32 noundef, ptr noundef, i32 noundef, ptr noundef, ...) #2

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

declare noundef zeroext i1 @_Z12traceEnabled11TraceModulei(i32 noundef, i32 noundef) #3

declare void @_Z5trace11TraceModuleibPKcz(i32 noundef, i32 noundef, i1 noundef zeroext, ptr noundef, ...) #3

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZNK3cfg5Block2idEv(ptr noundef nonnull align 8 dereferenceable(104)) #1 align 2

declare void @_Z4showB5cxx11RKN3cfg16ControlFlowGraphEb(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(160), i1 noundef zeroext) #3

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

; Function Attrs: mustprogress uwtable
define dso_local noundef zeroext i1 @_ZN17SwitchEquivFinder10move_edgesERKSt6vectorISt4pairIPN3cfg4EdgeEPNS2_5BlockEESaIS7_EE(ptr noundef nonnull align 8 dereferenceable(233) %0, ptr noundef nonnull align 8 dereferenceable(24) %1) #4 align 2 personality ptr @__gxx_personality_v0 {
  %3 = alloca i1, align 1
  %4 = alloca ptr, align 8
  %5 = alloca ptr, align 8
  %6 = alloca ptr, align 8
  %7 = alloca %"class.__gnu_cxx::__normal_iterator.149", align 8
  %8 = alloca %"class.__gnu_cxx::__normal_iterator.149", align 8
  %9 = alloca i32, align 4
  %10 = alloca ptr, align 8
  %11 = alloca ptr, align 8
  %12 = alloca ptr, align 8
  %13 = alloca ptr, align 8
  %14 = alloca %"class.__gnu_cxx::__normal_iterator.153", align 8
  %15 = alloca %"class.__gnu_cxx::__normal_iterator.153", align 8
  %16 = alloca ptr, align 8
  %17 = alloca %"class.std::__cxx11::basic_string", align 8
  %18 = alloca i1, align 1
  %19 = alloca i1, align 1
  %20 = alloca ptr, align 8
  %21 = alloca i32, align 4
  %22 = alloca %"class.std::__cxx11::basic_string", align 8
  %23 = alloca %"class.std::vector.154", align 8
  %24 = alloca ptr, align 8
  %25 = alloca %"class.__gnu_cxx::__normal_iterator.149", align 8
  %26 = alloca %"class.__gnu_cxx::__normal_iterator.149", align 8
  %27 = alloca ptr, align 8
  %28 = alloca ptr, align 8
  %29 = alloca ptr, align 8
  %30 = alloca ptr, align 8
  %31 = alloca ptr, align 8
  %32 = alloca %"class.UnorderedMap<cfg::Block *, std::map<unsigned int, IRInstruction *>>::FixedIterator", align 8
  %33 = alloca ptr, align 8
  %34 = alloca %"class.UnorderedMap<cfg::Block *, std::map<unsigned int, IRInstruction *>>::FixedIterator", align 8
  %35 = alloca ptr, align 8
  %36 = alloca i8, align 1
  %37 = alloca %"class.UnorderedMap<cfg::Block *, std::map<unsigned int, IRInstruction *>>::FixedIterator", align 8
  %38 = alloca ptr, align 8
  %39 = alloca i8, align 1
  %40 = alloca %"class.UnorderedMap<cfg::Block *, std::map<unsigned int, IRInstruction *>>::FixedIterator", align 8
  %41 = alloca i8, align 1
  %42 = alloca i8, align 1
  %43 = alloca %"class.std::vector", align 8
  %44 = alloca ptr, align 8
  %45 = alloca %"class.__gnu_cxx::__normal_iterator.153", align 8
  %46 = alloca %"class.__gnu_cxx::__normal_iterator.153", align 8
  %47 = alloca ptr, align 8
  %48 = alloca ptr, align 8
  store ptr %0, ptr %4, align 8, !tbaa !5
  store ptr %1, ptr %5, align 8, !tbaa !5
  %49 = load ptr, ptr %4, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %6) #8
  %50 = load ptr, ptr %5, align 8, !tbaa !5
  store ptr %50, ptr %6, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %7) #8
  %51 = load ptr, ptr %6, align 8, !tbaa !5
  %52 = call ptr @_ZNKSt6vectorISt4pairIPN3cfg4EdgeEPNS1_5BlockEESaIS6_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %51) #8
  %53 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.149", ptr %7, i32 0, i32 0
  store ptr %52, ptr %53, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %8) #8
  %54 = load ptr, ptr %6, align 8, !tbaa !5
  %55 = call ptr @_ZNKSt6vectorISt4pairIPN3cfg4EdgeEPNS1_5BlockEESaIS6_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %54) #8
  %56 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.149", ptr %8, i32 0, i32 0
  store ptr %55, ptr %56, align 8
  br label %57

57:                                               ; preds = %154, %2
  %58 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKSt4pairIPN3cfg4EdgeEPNS2_5BlockEESt6vectorIS7_SaIS7_EEEEbRKNS_17__normal_iteratorIT_T0_EESI_(ptr noundef nonnull align 8 dereferenceable(8) %7, ptr noundef nonnull align 8 dereferenceable(8) %8) #8
  br i1 %58, label %60, label %59

59:                                               ; preds = %57
  store i32 2, ptr %9, align 4
  br label %156

60:                                               ; preds = %57
  call void @llvm.lifetime.start.p0(i64 8, ptr %10) #8
  %61 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKSt4pairIPN3cfg4EdgeEPNS2_5BlockEESt6vectorIS7_SaIS7_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %7) #8
  store ptr %61, ptr %10, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #8
  %62 = load ptr, ptr %10, align 8, !tbaa !5
  %63 = getelementptr inbounds %"struct.std::pair.150", ptr %62, i32 0, i32 0
  %64 = load ptr, ptr %63, align 8, !tbaa !9
  store ptr %64, ptr %11, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #8
  %65 = load ptr, ptr %11, align 8, !tbaa !5
  %66 = call noundef ptr @_ZNK3cfg4Edge6targetEv(ptr noundef nonnull align 8 dereferenceable(32) %65)
  store ptr %66, ptr %12, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %13) #8
  %67 = load ptr, ptr %12, align 8, !tbaa !5
  %68 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3cfg5Block5succsEv(ptr noundef nonnull align 8 dereferenceable(104) %67)
  store ptr %68, ptr %13, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #8
  %69 = load ptr, ptr %13, align 8, !tbaa !5
  %70 = call ptr @_ZNKSt6vectorIPN3cfg4EdgeESaIS2_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %69) #8
  %71 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.153", ptr %14, i32 0, i32 0
  store ptr %70, ptr %71, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #8
  %72 = load ptr, ptr %13, align 8, !tbaa !5
  %73 = call ptr @_ZNKSt6vectorIPN3cfg4EdgeESaIS2_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %72) #8
  %74 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.153", ptr %15, i32 0, i32 0
  store ptr %73, ptr %74, align 8
  br label %75

75:                                               ; preds = %142, %60
  %76 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKPN3cfg4EdgeESt6vectorIS3_SaIS3_EEEEbRKNS_17__normal_iteratorIT_T0_EESE_(ptr noundef nonnull align 8 dereferenceable(8) %14, ptr noundef nonnull align 8 dereferenceable(8) %15) #8
  br i1 %76, label %78, label %77

77:                                               ; preds = %75
  store i32 4, ptr %9, align 4
  br label %145

78:                                               ; preds = %75
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #8
  %79 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKPN3cfg4EdgeESt6vectorIS3_SaIS3_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %14) #8
  %80 = load ptr, ptr %79, align 8, !tbaa !5
  store ptr %80, ptr %16, align 8, !tbaa !5
  %81 = load ptr, ptr %16, align 8, !tbaa !5
  %82 = icmp ne ptr %81, null
  store i1 false, ptr %18, align 1
  store i1 false, ptr %19, align 1
  br i1 %82, label %83, label %84

83:                                               ; preds = %78
  br label %97

84:                                               ; preds = %78
  %85 = load ptr, ptr %12, align 8, !tbaa !5
  %86 = call noundef i64 @_ZNK3cfg5Block2idEv(ptr noundef nonnull align 8 dereferenceable(104) %85)
  call void @llvm.lifetime.start.p0(i64 32, ptr %17) #8
  store i1 true, ptr %18, align 1
  %87 = getelementptr inbounds %class.SwitchEquivFinder, ptr %49, i32 0, i32 0
  %88 = load ptr, ptr %87, align 8, !tbaa !11
  call void @_Z4showB5cxx11RKN3cfg16ControlFlowGraphEb(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %17, ptr noundef nonnull align 8 dereferenceable(160) %88, i1 noundef zeroext false)
  store i1 true, ptr %19, align 1
  %89 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %17) #8
  invoke void (ptr, ptr, i32, ptr, i32, ptr, ...) @_Z11assert_failPKcS0_jS0_10RedexErrorS0_z(ptr noundef @.str.17, ptr noundef @.str.10, i32 noundef 440, ptr noundef @__PRETTY_FUNCTION__._ZN17SwitchEquivFinder10move_edgesERKSt6vectorISt4pairIPN3cfg4EdgeEPNS2_5BlockEESaIS7_EE, i32 noundef 2, ptr noundef @.str.18, i64 noundef %86, ptr noundef %89) #9
          to label %90 unwind label %91

90:                                               ; preds = %84
  unreachable

91:                                               ; preds = %84
  %92 = landingpad { ptr, i32 }
          cleanup
  %93 = extractvalue { ptr, i32 } %92, 0
  store ptr %93, ptr %20, align 8
  %94 = extractvalue { ptr, i32 } %92, 1
  store i32 %94, ptr %21, align 4
  %95 = load i1, ptr %19, align 1
  br i1 %95, label %116, label %117

96:                                               ; No predecessors!
  br label %97

97:                                               ; preds = %96, %83
  %98 = load i1, ptr %19, align 1
  br i1 %98, label %99, label %100

99:                                               ; preds = %97
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %17) #8
  br label %100

100:                                              ; preds = %99, %97
  %101 = load i1, ptr %18, align 1
  br i1 %101, label %102, label %103

102:                                              ; preds = %100
  call void @llvm.lifetime.end.p0(i64 32, ptr %17) #8
  br label %103

103:                                              ; preds = %102, %100
  %104 = load ptr, ptr %16, align 8, !tbaa !5
  %105 = call noundef zeroext i8 @_ZNK3cfg4Edge4typeEv(ptr noundef nonnull align 8 dereferenceable(32) %104)
  %106 = zext i8 %105 to i32
  %107 = icmp eq i32 %106, 0
  br i1 %107, label %108, label %138

108:                                              ; preds = %103
  %109 = load ptr, ptr %16, align 8, !tbaa !5
  %110 = call noundef ptr @_ZNK3cfg4Edge6targetEv(ptr noundef nonnull align 8 dereferenceable(32) %109)
  %111 = call noundef zeroext i1 @_ZNK3cfg5Block23starts_with_move_resultEv(ptr noundef nonnull align 8 dereferenceable(104) %110)
  br i1 %111, label %112, label %138

112:                                              ; preds = %108
  br label %113

113:                                              ; preds = %112
  %114 = call noundef zeroext i1 @_Z12traceEnabled11TraceModulei(i32 noundef 140, i32 noundef 2)
  br i1 %114, label %115, label %121

115:                                              ; preds = %113
  call void (i32, i32, i1, ptr, ...) @_Z5trace11TraceModuleibPKcz(i32 noundef 140, i32 noundef 2, i1 noundef zeroext false, ptr noundef @.str.19)
  br label %121

116:                                              ; preds = %91
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %17) #8
  br label %117

117:                                              ; preds = %116, %91
  %118 = load i1, ptr %18, align 1
  br i1 %118, label %119, label %120

119:                                              ; preds = %117
  call void @llvm.lifetime.end.p0(i64 32, ptr %17) #8
  br label %120

120:                                              ; preds = %119, %117
  br label %144

121:                                              ; preds = %115, %113
  br label %122

122:                                              ; preds = %121
  br label %123

123:                                              ; preds = %122
  br label %124

124:                                              ; preds = %123
  %125 = call noundef zeroext i1 @_Z12traceEnabled11TraceModulei(i32 noundef 140, i32 noundef 3)
  br i1 %125, label %126, label %135

126:                                              ; preds = %124
  call void @llvm.lifetime.start.p0(i64 32, ptr %22) #8
  %127 = getelementptr inbounds %class.SwitchEquivFinder, ptr %49, i32 0, i32 0
  %128 = load ptr, ptr %127, align 8, !tbaa !11
  call void @_Z4showB5cxx11RKN3cfg16ControlFlowGraphEb(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %22, ptr noundef nonnull align 8 dereferenceable(160) %128, i1 noundef zeroext false)
  %129 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %22) #8
  invoke void (i32, i32, i1, ptr, ...) @_Z5trace11TraceModuleibPKcz(i32 noundef 140, i32 noundef 3, i1 noundef zeroext false, ptr noundef @.str.16, ptr noundef %129)
          to label %130 unwind label %131

130:                                              ; preds = %126
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %22) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %22) #8
  br label %135

131:                                              ; preds = %126
  %132 = landingpad { ptr, i32 }
          cleanup
  %133 = extractvalue { ptr, i32 } %132, 0
  store ptr %133, ptr %20, align 8
  %134 = extractvalue { ptr, i32 } %132, 1
  store i32 %134, ptr %21, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %22) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %22) #8
  br label %144

135:                                              ; preds = %130, %124
  br label %136

136:                                              ; preds = %135
  br label %137

137:                                              ; preds = %136
  store i1 false, ptr %3, align 1
  store i32 1, ptr %9, align 4
  br label %139

138:                                              ; preds = %108, %103
  store i32 0, ptr %9, align 4
  br label %139

139:                                              ; preds = %138, %137
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #8
  %140 = load i32, ptr %9, align 4
  switch i32 %140, label %145 [
    i32 0, label %141
  ]

141:                                              ; preds = %139
  br label %142

142:                                              ; preds = %141
  %143 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKPN3cfg4EdgeESt6vectorIS3_SaIS3_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %14) #8
  br label %75

144:                                              ; preds = %131, %120
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %7) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %6) #8
  br label %358

145:                                              ; preds = %139, %77
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #8
  %146 = load i32, ptr %9, align 4
  switch i32 %146, label %148 [
    i32 4, label %147
  ]

147:                                              ; preds = %145
  store i32 0, ptr %9, align 4
  br label %148

148:                                              ; preds = %147, %145
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #8
  %149 = load i32, ptr %9, align 4
  switch i32 %149, label %151 [
    i32 0, label %150
  ]

150:                                              ; preds = %148
  store i32 0, ptr %9, align 4
  br label %151

151:                                              ; preds = %150, %148
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #8
  %152 = load i32, ptr %9, align 4
  switch i32 %152, label %156 [
    i32 0, label %153
  ]

153:                                              ; preds = %151
  br label %154

154:                                              ; preds = %153
  %155 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKSt4pairIPN3cfg4EdgeEPNS2_5BlockEESt6vectorIS7_SaIS7_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %7) #8
  br label %57

156:                                              ; preds = %151, %59
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %7) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %6) #8
  %157 = load i32, ptr %9, align 4
  switch i32 %157, label %363 [
    i32 2, label %158
    i32 1, label %356
  ]

158:                                              ; preds = %156
  call void @llvm.lifetime.start.p0(i64 24, ptr %23) #8
  call void @_ZNSt6vectorIPN3cfg5BlockESaIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %23) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #8
  %159 = load ptr, ptr %5, align 8, !tbaa !5
  store ptr %159, ptr %24, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #8
  %160 = load ptr, ptr %24, align 8, !tbaa !5
  %161 = call ptr @_ZNKSt6vectorISt4pairIPN3cfg4EdgeEPNS1_5BlockEESaIS6_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %160) #8
  %162 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.149", ptr %25, i32 0, i32 0
  store ptr %161, ptr %162, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #8
  %163 = load ptr, ptr %24, align 8, !tbaa !5
  %164 = call ptr @_ZNKSt6vectorISt4pairIPN3cfg4EdgeEPNS1_5BlockEESaIS6_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %163) #8
  %165 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.149", ptr %26, i32 0, i32 0
  store ptr %164, ptr %165, align 8
  br label %166

166:                                              ; preds = %332, %158
  %167 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKSt4pairIPN3cfg4EdgeEPNS2_5BlockEESt6vectorIS7_SaIS7_EEEEbRKNS_17__normal_iteratorIT_T0_EESI_(ptr noundef nonnull align 8 dereferenceable(8) %25, ptr noundef nonnull align 8 dereferenceable(8) %26) #8
  br i1 %167, label %169, label %168

168:                                              ; preds = %166
  store i32 10, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #8
  br label %346

169:                                              ; preds = %166
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #8
  %170 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKSt4pairIPN3cfg4EdgeEPNS2_5BlockEESt6vectorIS7_SaIS7_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %25) #8
  store ptr %170, ptr %27, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #8
  %171 = load ptr, ptr %27, align 8, !tbaa !5
  %172 = getelementptr inbounds %"struct.std::pair.150", ptr %171, i32 0, i32 0
  %173 = load ptr, ptr %172, align 8, !tbaa !9
  store ptr %173, ptr %28, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #8
  %174 = load ptr, ptr %28, align 8, !tbaa !5
  %175 = invoke noundef ptr @_ZNK3cfg4Edge6targetEv(ptr noundef nonnull align 8 dereferenceable(32) %174)
          to label %176 unwind label %251

176:                                              ; preds = %169
  store ptr %175, ptr %29, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #8
  %177 = load ptr, ptr %27, align 8, !tbaa !5
  %178 = getelementptr inbounds %"struct.std::pair.150", ptr %177, i32 0, i32 1
  %179 = load ptr, ptr %178, align 8, !tbaa !39
  store ptr %179, ptr %30, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #8
  %180 = getelementptr inbounds %class.SwitchEquivFinder, ptr %49, i32 0, i32 11
  %181 = invoke ptr @_ZN12UnorderedMapIPN3cfg5BlockESt3mapIjP13IRInstructionSt4lessIjESaISt4pairIKjS5_EEESt4hashIS2_ESt8equal_toIS2_EE4findERKS2_(ptr noundef nonnull align 8 dereferenceable(56) %180, ptr noundef nonnull align 8 dereferenceable(8) %30)
          to label %182 unwind label %255

182:                                              ; preds = %176
  %183 = getelementptr inbounds %"class.UnorderedMap<cfg::Block *, std::map<unsigned int, IRInstruction *>>::FixedIterator", ptr %32, i32 0, i32 0
  %184 = getelementptr inbounds %"struct.std::__detail::_Node_iterator.159", ptr %183, i32 0, i32 0
  %185 = getelementptr inbounds %"struct.std::__detail::_Node_iterator_base.160", ptr %184, i32 0, i32 0
  store ptr %181, ptr %185, align 8
  store ptr %32, ptr %31, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #8
  %186 = getelementptr inbounds %class.SwitchEquivFinder, ptr %49, i32 0, i32 11
  %187 = invoke ptr @_ZN12UnorderedMapIPN3cfg5BlockESt3mapIjP13IRInstructionSt4lessIjESaISt4pairIKjS5_EEESt4hashIS2_ESt8equal_toIS2_EE4findERKS2_(ptr noundef nonnull align 8 dereferenceable(56) %186, ptr noundef nonnull align 8 dereferenceable(8) %29)
          to label %188 unwind label %259

188:                                              ; preds = %182
  %189 = getelementptr inbounds %"class.UnorderedMap<cfg::Block *, std::map<unsigned int, IRInstruction *>>::FixedIterator", ptr %34, i32 0, i32 0
  %190 = getelementptr inbounds %"struct.std::__detail::_Node_iterator.159", ptr %189, i32 0, i32 0
  %191 = getelementptr inbounds %"struct.std::__detail::_Node_iterator_base.160", ptr %190, i32 0, i32 0
  store ptr %187, ptr %191, align 8
  store ptr %34, ptr %33, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %36) #8
  %192 = load ptr, ptr %31, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #8
  %193 = getelementptr inbounds %class.SwitchEquivFinder, ptr %49, i32 0, i32 11
  %194 = invoke ptr @_ZN12UnorderedMapIPN3cfg5BlockESt3mapIjP13IRInstructionSt4lessIjESaISt4pairIKjS5_EEESt4hashIS2_ESt8equal_toIS2_EE3endEv(ptr noundef nonnull align 8 dereferenceable(56) %193)
          to label %195 unwind label %263

195:                                              ; preds = %188
  %196 = getelementptr inbounds %"class.UnorderedMap<cfg::Block *, std::map<unsigned int, IRInstruction *>>::FixedIterator", ptr %37, i32 0, i32 0
  %197 = getelementptr inbounds %"struct.std::__detail::_Node_iterator.159", ptr %196, i32 0, i32 0
  %198 = getelementptr inbounds %"struct.std::__detail::_Node_iterator_base.160", ptr %197, i32 0, i32 0
  store ptr %194, ptr %198, align 8
  %199 = invoke noundef zeroext i1 @_ZNK12UnorderedMapIPN3cfg5BlockESt3mapIjP13IRInstructionSt4lessIjESaISt4pairIKjS5_EEESt4hashIS2_ESt8equal_toIS2_EE13FixedIteratorneERKSI_(ptr noundef nonnull align 8 dereferenceable(8) %192, ptr noundef nonnull align 8 dereferenceable(8) %37)
          to label %200 unwind label %263

200:                                              ; preds = %195
  %201 = zext i1 %199 to i8
  store i8 %201, ptr %36, align 1, !tbaa !40
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #8
  store ptr %36, ptr %35, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %39) #8
  %202 = load ptr, ptr %33, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #8
  %203 = getelementptr inbounds %class.SwitchEquivFinder, ptr %49, i32 0, i32 11
  %204 = invoke ptr @_ZN12UnorderedMapIPN3cfg5BlockESt3mapIjP13IRInstructionSt4lessIjESaISt4pairIKjS5_EEESt4hashIS2_ESt8equal_toIS2_EE3endEv(ptr noundef nonnull align 8 dereferenceable(56) %203)
          to label %205 unwind label %267

205:                                              ; preds = %200
  %206 = getelementptr inbounds %"class.UnorderedMap<cfg::Block *, std::map<unsigned int, IRInstruction *>>::FixedIterator", ptr %40, i32 0, i32 0
  %207 = getelementptr inbounds %"struct.std::__detail::_Node_iterator.159", ptr %206, i32 0, i32 0
  %208 = getelementptr inbounds %"struct.std::__detail::_Node_iterator_base.160", ptr %207, i32 0, i32 0
  store ptr %204, ptr %208, align 8
  %209 = invoke noundef zeroext i1 @_ZNK12UnorderedMapIPN3cfg5BlockESt3mapIjP13IRInstructionSt4lessIjESaISt4pairIKjS5_EEESt4hashIS2_ESt8equal_toIS2_EE13FixedIteratorneERKSI_(ptr noundef nonnull align 8 dereferenceable(8) %202, ptr noundef nonnull align 8 dereferenceable(8) %40)
          to label %210 unwind label %267

210:                                              ; preds = %205
  %211 = zext i1 %209 to i8
  store i8 %211, ptr %39, align 1, !tbaa !40
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #8
  store ptr %39, ptr %38, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %41) #8
  %212 = load ptr, ptr %35, align 8, !tbaa !5
  %213 = load i8, ptr %212, align 1, !tbaa !40, !range !41, !noundef !42
  %214 = trunc i8 %213 to i1
  %215 = zext i1 %214 to i32
  %216 = load ptr, ptr %38, align 8, !tbaa !5
  %217 = load i8, ptr %216, align 1, !tbaa !40, !range !41, !noundef !42
  %218 = trunc i8 %217 to i1
  %219 = zext i1 %218 to i32
  %220 = icmp ne i32 %215, %219
  %221 = zext i1 %220 to i8
  store i8 %221, ptr %41, align 1, !tbaa !40
  call void @llvm.lifetime.start.p0(i64 1, ptr %42) #8
  %222 = load ptr, ptr %35, align 8, !tbaa !5
  %223 = load i8, ptr %222, align 1, !tbaa !40, !range !41, !noundef !42
  %224 = trunc i8 %223 to i1
  br i1 %224, label %230, label %225

225:                                              ; preds = %210
  %226 = load ptr, ptr %38, align 8, !tbaa !5
  %227 = load i8, ptr %226, align 1, !tbaa !40, !range !41, !noundef !42
  %228 = trunc i8 %227 to i1
  %229 = xor i1 %228, true
  br label %230

230:                                              ; preds = %225, %210
  %231 = phi i1 [ false, %210 ], [ %229, %225 ]
  %232 = zext i1 %231 to i8
  store i8 %232, ptr %42, align 1, !tbaa !40
  %233 = load i8, ptr %41, align 1, !tbaa !40, !range !41, !noundef !42
  %234 = trunc i8 %233 to i1
  br i1 %234, label %275, label %235

235:                                              ; preds = %230
  %236 = load i8, ptr %42, align 1, !tbaa !40, !range !41, !noundef !42
  %237 = trunc i8 %236 to i1
  br i1 %237, label %249, label %238

238:                                              ; preds = %235
  %239 = load ptr, ptr %31, align 8, !tbaa !5
  %240 = invoke noundef ptr @_ZNK12UnorderedMapIPN3cfg5BlockESt3mapIjP13IRInstructionSt4lessIjESaISt4pairIKjS5_EEESt4hashIS2_ESt8equal_toIS2_EE13FixedIteratorptEv(ptr noundef nonnull align 8 dereferenceable(8) %239)
          to label %241 unwind label %271

241:                                              ; preds = %238
  %242 = getelementptr inbounds %"struct.std::pair.161", ptr %240, i32 0, i32 1
  %243 = load ptr, ptr %33, align 8, !tbaa !5
  %244 = invoke noundef ptr @_ZNK12UnorderedMapIPN3cfg5BlockESt3mapIjP13IRInstructionSt4lessIjESaISt4pairIKjS5_EEESt4hashIS2_ESt8equal_toIS2_EE13FixedIteratorptEv(ptr noundef nonnull align 8 dereferenceable(8) %243)
          to label %245 unwind label %271

245:                                              ; preds = %241
  %246 = getelementptr inbounds %"struct.std::pair.161", ptr %244, i32 0, i32 1
  %247 = invoke noundef zeroext i1 @_ZN12_GLOBAL__N_16equalsERKSt3mapIjP13IRInstructionSt4lessIjESaISt4pairIKjS2_EEESB_(ptr noundef nonnull align 8 dereferenceable(48) %242, ptr noundef nonnull align 8 dereferenceable(48) %246)
          to label %248 unwind label %271

248:                                              ; preds = %245
  br i1 %247, label %249, label %275

249:                                              ; preds = %248, %235
  invoke void @_ZNSt6vectorIPN3cfg5BlockESaIS2_EE9push_backERKS2_(ptr noundef nonnull align 8 dereferenceable(24) %23, ptr noundef nonnull align 8 dereferenceable(8) %30)
          to label %250 unwind label %271

250:                                              ; preds = %249
  store i32 11, ptr %9, align 4
  br label %326

251:                                              ; preds = %169
  %252 = landingpad { ptr, i32 }
          cleanup
  %253 = extractvalue { ptr, i32 } %252, 0
  store ptr %253, ptr %20, align 8
  %254 = extractvalue { ptr, i32 } %252, 1
  store i32 %254, ptr %21, align 4
  br label %345

255:                                              ; preds = %176
  %256 = landingpad { ptr, i32 }
          cleanup
  %257 = extractvalue { ptr, i32 } %256, 0
  store ptr %257, ptr %20, align 8
  %258 = extractvalue { ptr, i32 } %256, 1
  store i32 %258, ptr %21, align 4
  br label %344

259:                                              ; preds = %182
  %260 = landingpad { ptr, i32 }
          cleanup
  %261 = extractvalue { ptr, i32 } %260, 0
  store ptr %261, ptr %20, align 8
  %262 = extractvalue { ptr, i32 } %260, 1
  store i32 %262, ptr %21, align 4
  br label %343

263:                                              ; preds = %195, %188
  %264 = landingpad { ptr, i32 }
          cleanup
  %265 = extractvalue { ptr, i32 } %264, 0
  store ptr %265, ptr %20, align 8
  %266 = extractvalue { ptr, i32 } %264, 1
  store i32 %266, ptr %21, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #8
  br label %342

267:                                              ; preds = %205, %200
  %268 = landingpad { ptr, i32 }
          cleanup
  %269 = extractvalue { ptr, i32 } %268, 0
  store ptr %269, ptr %20, align 8
  %270 = extractvalue { ptr, i32 } %268, 1
  store i32 %270, ptr %21, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #8
  br label %341

271:                                              ; preds = %249, %245, %241, %238
  %272 = landingpad { ptr, i32 }
          cleanup
  %273 = extractvalue { ptr, i32 } %272, 0
  store ptr %273, ptr %20, align 8
  %274 = extractvalue { ptr, i32 } %272, 1
  store i32 %274, ptr %21, align 4
  br label %340

275:                                              ; preds = %248, %230
  call void @llvm.lifetime.start.p0(i64 24, ptr %43) #8
  %276 = load ptr, ptr %29, align 8, !tbaa !5
  %277 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3cfg5Block5succsEv(ptr noundef nonnull align 8 dereferenceable(104) %276)
          to label %278 unwind label %289

278:                                              ; preds = %275
  invoke void @_ZNSt6vectorIPN3cfg4EdgeESaIS2_EEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(24) %43, ptr noundef nonnull align 8 dereferenceable(24) %277)
          to label %279 unwind label %289

279:                                              ; preds = %278
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #8
  store ptr %43, ptr %44, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %45) #8
  %280 = load ptr, ptr %44, align 8, !tbaa !5
  %281 = call ptr @_ZNKSt6vectorIPN3cfg4EdgeESaIS2_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %280) #8
  %282 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.153", ptr %45, i32 0, i32 0
  store ptr %281, ptr %282, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #8
  %283 = load ptr, ptr %44, align 8, !tbaa !5
  %284 = call ptr @_ZNKSt6vectorIPN3cfg4EdgeESaIS2_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %283) #8
  %285 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.153", ptr %46, i32 0, i32 0
  store ptr %284, ptr %285, align 8
  br label %286

286:                                              ; preds = %309, %279
  %287 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKPN3cfg4EdgeESt6vectorIS3_SaIS3_EEEEbRKNS_17__normal_iteratorIT_T0_EESE_(ptr noundef nonnull align 8 dereferenceable(8) %45, ptr noundef nonnull align 8 dereferenceable(8) %46) #8
  br i1 %287, label %293, label %288

288:                                              ; preds = %286
  store i32 12, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #8
  br label %320

289:                                              ; preds = %278, %275
  %290 = landingpad { ptr, i32 }
          cleanup
  %291 = extractvalue { ptr, i32 } %290, 0
  store ptr %291, ptr %20, align 8
  %292 = extractvalue { ptr, i32 } %290, 1
  store i32 %292, ptr %21, align 4
  br label %339

293:                                              ; preds = %286
  call void @llvm.lifetime.start.p0(i64 8, ptr %47) #8
  %294 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKPN3cfg4EdgeESt6vectorIS3_SaIS3_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %45) #8
  %295 = load ptr, ptr %294, align 8, !tbaa !5
  store ptr %295, ptr %47, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %48) #8
  %296 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 32) #10
          to label %297 unwind label %311

297:                                              ; preds = %293
  %298 = load ptr, ptr %47, align 8, !tbaa !5
  invoke void @_ZN3cfg4EdgeC2ERKS0_(ptr noundef nonnull align 8 dereferenceable(32) %296, ptr noundef nonnull align 8 dereferenceable(32) %298)
          to label %299 unwind label %315

299:                                              ; preds = %297
  store ptr %296, ptr %48, align 8, !tbaa !5
  %300 = getelementptr inbounds %class.SwitchEquivFinder, ptr %49, i32 0, i32 0
  %301 = load ptr, ptr %300, align 8, !tbaa !11
  %302 = load ptr, ptr %48, align 8, !tbaa !5
  invoke void @_ZN3cfg16ControlFlowGraph8add_edgeEPNS_4EdgeE(ptr noundef nonnull align 8 dereferenceable(160) %301, ptr noundef %302)
          to label %303 unwind label %311

303:                                              ; preds = %299
  %304 = getelementptr inbounds %class.SwitchEquivFinder, ptr %49, i32 0, i32 0
  %305 = load ptr, ptr %304, align 8, !tbaa !11
  %306 = load ptr, ptr %48, align 8, !tbaa !5
  %307 = load ptr, ptr %30, align 8, !tbaa !5
  invoke void @_ZN3cfg16ControlFlowGraph15set_edge_sourceEPNS_4EdgeEPNS_5BlockE(ptr noundef nonnull align 8 dereferenceable(160) %305, ptr noundef %306, ptr noundef %307)
          to label %308 unwind label %311

308:                                              ; preds = %303
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #8
  br label %309

309:                                              ; preds = %308
  %310 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKPN3cfg4EdgeESt6vectorIS3_SaIS3_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %45) #8
  br label %286

311:                                              ; preds = %303, %299, %293
  %312 = landingpad { ptr, i32 }
          cleanup
  %313 = extractvalue { ptr, i32 } %312, 0
  store ptr %313, ptr %20, align 8
  %314 = extractvalue { ptr, i32 } %312, 1
  store i32 %314, ptr %21, align 4
  br label %319

315:                                              ; preds = %297
  %316 = landingpad { ptr, i32 }
          cleanup
  %317 = extractvalue { ptr, i32 } %316, 0
  store ptr %317, ptr %20, align 8
  %318 = extractvalue { ptr, i32 } %316, 1
  store i32 %318, ptr %21, align 4
  call void @_ZdlPvm(ptr noundef %296, i64 noundef 32) #11
  br label %319

319:                                              ; preds = %315, %311
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #8
  br label %338

320:                                              ; preds = %288
  %321 = getelementptr inbounds %class.SwitchEquivFinder, ptr %49, i32 0, i32 0
  %322 = load ptr, ptr %321, align 8, !tbaa !11
  %323 = load ptr, ptr %28, align 8, !tbaa !5
  %324 = load ptr, ptr %30, align 8, !tbaa !5
  invoke void @_ZN3cfg16ControlFlowGraph15set_edge_targetEPNS_4EdgeEPNS_5BlockE(ptr noundef nonnull align 8 dereferenceable(160) %322, ptr noundef %323, ptr noundef %324)
          to label %325 unwind label %334

325:                                              ; preds = %320
  call void @_ZNSt6vectorIPN3cfg4EdgeESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %43) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %43) #8
  store i32 0, ptr %9, align 4
  br label %326

326:                                              ; preds = %325, %250
  call void @llvm.lifetime.end.p0(i64 1, ptr %42) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %41) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %39) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %36) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #8
  %327 = load i32, ptr %9, align 4
  switch i32 %327, label %329 [
    i32 0, label %328
  ]

328:                                              ; preds = %326
  store i32 0, ptr %9, align 4
  br label %329

329:                                              ; preds = %328, %326
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #8
  %330 = load i32, ptr %9, align 4
  switch i32 %330, label %363 [
    i32 0, label %331
    i32 11, label %332
  ]

331:                                              ; preds = %329
  br label %332

332:                                              ; preds = %331, %329
  %333 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKSt4pairIPN3cfg4EdgeEPNS2_5BlockEESt6vectorIS7_SaIS7_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %25) #8
  br label %166

334:                                              ; preds = %320
  %335 = landingpad { ptr, i32 }
          cleanup
  %336 = extractvalue { ptr, i32 } %335, 0
  store ptr %336, ptr %20, align 8
  %337 = extractvalue { ptr, i32 } %335, 1
  store i32 %337, ptr %21, align 4
  br label %338

338:                                              ; preds = %334, %319
  call void @_ZNSt6vectorIPN3cfg4EdgeESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %43) #8
  br label %339

339:                                              ; preds = %338, %289
  call void @llvm.lifetime.end.p0(i64 24, ptr %43) #8
  br label %340

340:                                              ; preds = %339, %271
  call void @llvm.lifetime.end.p0(i64 1, ptr %42) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %41) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %39) #8
  br label %341

341:                                              ; preds = %340, %267
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %36) #8
  br label %342

342:                                              ; preds = %341, %263
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #8
  br label %343

343:                                              ; preds = %342, %259
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #8
  br label %344

344:                                              ; preds = %343, %255
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #8
  br label %345

345:                                              ; preds = %344, %251
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #8
  br label %355

346:                                              ; preds = %168
  %347 = getelementptr inbounds %class.SwitchEquivFinder, ptr %49, i32 0, i32 0
  %348 = load ptr, ptr %347, align 8, !tbaa !11
  %349 = invoke noundef i32 @_ZN3cfg16ControlFlowGraph13remove_blocksERKSt6vectorIPNS_5BlockESaIS3_EE(ptr noundef nonnull align 8 dereferenceable(160) %348, ptr noundef nonnull align 8 dereferenceable(24) %23)
          to label %350 unwind label %351

350:                                              ; preds = %346
  store i1 true, ptr %3, align 1
  store i32 1, ptr %9, align 4
  call void @_ZNSt6vectorIPN3cfg5BlockESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %23) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %23) #8
  br label %356

351:                                              ; preds = %346
  %352 = landingpad { ptr, i32 }
          cleanup
  %353 = extractvalue { ptr, i32 } %352, 0
  store ptr %353, ptr %20, align 8
  %354 = extractvalue { ptr, i32 } %352, 1
  store i32 %354, ptr %21, align 4
  br label %355

355:                                              ; preds = %351, %345
  call void @_ZNSt6vectorIPN3cfg5BlockESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %23) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %23) #8
  br label %358

356:                                              ; preds = %350, %156
  %357 = load i1, ptr %3, align 1
  ret i1 %357

358:                                              ; preds = %355, %144
  %359 = load ptr, ptr %20, align 8
  %360 = load i32, ptr %21, align 4
  %361 = insertvalue { ptr, i32 } poison, ptr %359, 0
  %362 = insertvalue { ptr, i32 } %361, i32 %360, 1
  resume { ptr, i32 } %362

363:                                              ; preds = %329, %156
  unreachable
}

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN9__gnu_cxxneIPKSt4pairIPN3cfg4EdgeEPNS2_5BlockEESt6vectorIS7_SaIS7_EEEEbRKNS_17__normal_iteratorIT_T0_EESI_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) #5

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(16) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKSt4pairIPN3cfg4EdgeEPNS2_5BlockEESt6vectorIS7_SaIS7_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8)) #1 align 2

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

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN9__gnu_cxxneIPKPN3cfg4EdgeESt6vectorIS3_SaIS3_EEEEbRKNS_17__normal_iteratorIT_T0_EESE_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) #5

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i8 @_ZNK3cfg4Edge4typeEv(ptr noundef nonnull align 8 dereferenceable(32)) #1 align 2

declare noundef zeroext i1 @_ZNK3cfg5Block23starts_with_move_resultEv(ptr noundef nonnull align 8 dereferenceable(104)) #3

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK12UnorderedMapIPN3cfg5BlockESt3mapIjP13IRInstructionSt4lessIjESaISt4pairIKjS5_EEESt4hashIS2_ESt8equal_toIS2_EE13FixedIteratorneERKSI_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local ptr @_ZN12UnorderedMapIPN3cfg5BlockESt3mapIjP13IRInstructionSt4lessIjESaISt4pairIKjS5_EEESt4hashIS2_ESt8equal_toIS2_EE3endEv(ptr noundef nonnull align 8 dereferenceable(56)) #4 align 2

; Function Attrs: mustprogress uwtable
declare hidden noundef zeroext i1 @_ZN12_GLOBAL__N_16equalsERKSt3mapIjP13IRInstructionSt4lessIjESaISt4pairIKjS2_EEESB_(ptr noundef nonnull align 8 dereferenceable(48), ptr noundef nonnull align 8 dereferenceable(48)) #4

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

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

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

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

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

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

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

declare void @_ZN3cfg16ControlFlowGraph15set_edge_sourceEPNS_4EdgeEPNS_5BlockE(ptr noundef nonnull align 8 dereferenceable(160), ptr noundef, ptr noundef) #3

declare void @_ZN3cfg16ControlFlowGraph15set_edge_targetEPNS_4EdgeEPNS_5BlockE(ptr noundef nonnull align 8 dereferenceable(160), ptr noundef, ptr noundef) #3

declare noundef i32 @_ZN3cfg16ControlFlowGraph13remove_blocksERKSt6vectorIPNS_5BlockESaIS3_EE(ptr noundef nonnull align 8 dereferenceable(160), ptr noundef nonnull align 8 dereferenceable(24)) #3

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

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { 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 #2 = { noreturn "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 = { "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 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 = { 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 = { 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 #7 = { 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 #8 = { nounwind }
attributes #9 = { noreturn }
attributes #10 = { builtin allocsize(0) }
attributes #11 = { 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, !6, i64 0}
!10 = !{!"_ZTSSt4pairIPN3cfg4EdgeEPNS0_5BlockEE", !6, i64 0, !6, i64 8}
!11 = !{!12, !6, i64 0}
!12 = !{!"_ZTS17SwitchEquivFinder", !6, i64 0, !6, i64 8, !13, i64 16, !13, i64 20, !14, i64 24, !17, i64 40, !18, i64 48, !20, i64 64, !21, i64 72, !30, i64 120, !36, i64 176, !20, i64 232}
!13 = !{!"int", !7, i64 0}
!14 = !{!"_ZTSSt10shared_ptrIN20constant_propagation15intraprocedural16FixpointIteratorEE", !15, i64 0}
!15 = !{!"_ZTSSt12__shared_ptrIN20constant_propagation15intraprocedural16FixpointIteratorELN9__gnu_cxx12_Lock_policyE2EE", !6, i64 0, !16, i64 8}
!16 = !{!"_ZTSSt14__shared_countILN9__gnu_cxx12_Lock_policyE2EE", !6, i64 0}
!17 = !{!"_ZTSN17SwitchEquivFinder21DuplicateCaseStrategyE", !7, i64 0}
!18 = !{!"_ZTSSt10shared_ptrI12UnorderedMapIP13IRInstruction12UnorderedSetIPN3cfg5BlockESt4hashIS6_ESt8equal_toIS6_EES7_IS2_ES9_IS2_EEE", !19, i64 0}
!19 = !{!"_ZTSSt12__shared_ptrI12UnorderedMapIP13IRInstruction12UnorderedSetIPN3cfg5BlockESt4hashIS6_ESt8equal_toIS6_EES7_IS2_ES9_IS2_EELN9__gnu_cxx12_Lock_policyE2EE", !6, i64 0, !16, i64 8}
!20 = !{!"bool", !7, i64 0}
!21 = !{!"_ZTSSt3mapIN5boost7variantIN17SwitchEquivFinder11DefaultCaseEJiPK7DexTypeEEEPN3cfg5BlockENS2_14key_comparatorESaISt4pairIKS7_SA_EEE", !22, i64 0}
!22 = !{!"_ZTSSt8_Rb_treeIN5boost7variantIN17SwitchEquivFinder11DefaultCaseEJiPK7DexTypeEEESt4pairIKS7_PN3cfg5BlockEESt10_Select1stISD_ENS2_14key_comparatorESaISD_EE", !23, i64 0}
!23 = !{!"_ZTSNSt8_Rb_treeIN5boost7variantIN17SwitchEquivFinder11DefaultCaseEJiPK7DexTypeEEESt4pairIKS7_PN3cfg5BlockEESt10_Select1stISD_ENS2_14key_comparatorESaISD_EE13_Rb_tree_implISG_Lb1EEE", !24, i64 0, !26, i64 8}
!24 = !{!"_ZTSSt20_Rb_tree_key_compareIN17SwitchEquivFinder14key_comparatorEE", !25, i64 0}
!25 = !{!"_ZTSN17SwitchEquivFinder14key_comparatorE"}
!26 = !{!"_ZTSSt15_Rb_tree_header", !27, i64 0, !29, i64 32}
!27 = !{!"_ZTSSt18_Rb_tree_node_base", !28, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!28 = !{!"_ZTSSt14_Rb_tree_color", !7, i64 0}
!29 = !{!"long", !7, i64 0}
!30 = !{!"_ZTS12UnorderedMapIPN3cfg5BlockESt3mapIjP13IRInstructionSt4lessIjESaISt4pairIKjS5_EEESt4hashIS2_ESt8equal_toIS2_EE", !31, i64 0}
!31 = !{!"_ZTSSt13unordered_mapIPN3cfg5BlockESt3mapIjP13IRInstructionSt4lessIjESaISt4pairIKjS5_EEESt4hashIS2_ESt8equal_toIS2_ESaIS8_IKS2_SC_EEE", !32, i64 0}
!32 = !{!"_ZTSSt10_HashtableIPN3cfg5BlockESt4pairIKS2_St3mapIjP13IRInstructionSt4lessIjESaIS3_IKjS7_EEEESaISE_ENSt8__detail10_Select1stESt8equal_toIS2_ESt4hashIS2_ENSG_18_Mod_range_hashingENSG_20_Default_ranged_hashENSG_20_Prime_rehash_policyENSG_17_Hashtable_traitsILb0ELb0ELb1EEEE", !6, i64 0, !29, i64 8, !33, i64 16, !29, i64 24, !34, i64 32, !6, i64 48}
!33 = !{!"_ZTSNSt8__detail15_Hash_node_baseE", !6, i64 0}
!34 = !{!"_ZTSNSt8__detail20_Prime_rehash_policyE", !35, i64 0, !29, i64 8}
!35 = !{!"float", !7, i64 0}
!36 = !{!"_ZTS12UnorderedMapIPN3cfg5BlockEtSt4hashIS2_ESt8equal_toIS2_EE", !37, i64 0}
!37 = !{!"_ZTSSt13unordered_mapIPN3cfg5BlockEtSt4hashIS2_ESt8equal_toIS2_ESaISt4pairIKS2_tEEE", !38, i64 0}
!38 = !{!"_ZTSSt10_HashtableIPN3cfg5BlockESt4pairIKS2_tESaIS5_ENSt8__detail10_Select1stESt8equal_toIS2_ESt4hashIS2_ENS7_18_Mod_range_hashingENS7_20_Default_ranged_hashENS7_20_Prime_rehash_policyENS7_17_Hashtable_traitsILb0ELb0ELb1EEEE", !6, i64 0, !29, i64 8, !33, i64 16, !29, i64 24, !34, i64 32, !6, i64 48}
!39 = !{!10, !6, i64 8}
!40 = !{!20, !20, i64 0}
!41 = !{i8 0, i8 2}
!42 = !{}


; 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::__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.__gnu_cxx::__normal_iterator.149" = type { ptr }
%"class.__gnu_cxx::__normal_iterator.153" = type { ptr }
%"class.std::vector.154" = type { %"struct.std::_Vector_base.155" }
%"struct.std::_Vector_base.155" = type { %"struct.std::_Vector_base<cfg::Block *, std::allocator<cfg::Block *>>::_Vector_impl" }
%"struct.std::_Vector_base<cfg::Block *, std::allocator<cfg::Block *>>::_Vector_impl" = type { %"struct.std::_Vector_base<cfg::Block *, std::allocator<cfg::Block *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<cfg::Block *, std::allocator<cfg::Block *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.UnorderedMap<cfg::Block *, std::map<unsigned int, IRInstruction *>>::FixedIterator" = type { %"struct.std::__detail::_Node_iterator.159" }
%"struct.std::__detail::_Node_iterator.159" = type { %"struct.std::__detail::_Node_iterator_base.160" }
%"struct.std::__detail::_Node_iterator_base.160" = type { ptr }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<cfg::Edge *, std::allocator<cfg::Edge *>>::_Vector_impl" }
%"struct.std::_Vector_base<cfg::Edge *, std::allocator<cfg::Edge *>>::_Vector_impl" = type { %"struct.std::_Vector_base<cfg::Edge *, std::allocator<cfg::Edge *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<cfg::Edge *, std::allocator<cfg::Edge *>>::_Vector_impl_data" = type { ptr, ptr, ptr }

@.str.10 = external hidden unnamed_addr constant [98 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [21 x i8], align 1
@__PRETTY_FUNCTION__._ZN17SwitchEquivFinder10move_edgesERKSt6vectorISt4pairIPN3cfg4EdgeEPNS2_5BlockEESaIS7_EE = external hidden unnamed_addr constant [94 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [47 x i8], align 1

declare i32 @__gxx_personality_v0(...)

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

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

; Function Attrs: noreturn
declare void @_Z11assert_failPKcS0_jS0_10RedexErrorS0_z(ptr noundef, ptr noundef, i32 noundef, ptr noundef, i32 noundef, ptr noundef, ...) local_unnamed_addr #2

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

declare noundef zeroext i1 @_Z12traceEnabled11TraceModulei(i32 noundef, i32 noundef) local_unnamed_addr #3

declare void @_Z5trace11TraceModuleibPKcz(i32 noundef, i32 noundef, i1 noundef zeroext, ptr noundef, ...) local_unnamed_addr #3

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZNK3cfg5Block2idEv(ptr noundef nonnull align 8 dereferenceable(104)) local_unnamed_addr #1 align 2

declare void @_Z4showB5cxx11RKN3cfg16ControlFlowGraphEb(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(160), i1 noundef zeroext) local_unnamed_addr #3

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

; Function Attrs: mustprogress uwtable
define dso_local noundef zeroext i1 @_ZN17SwitchEquivFinder10move_edgesERKSt6vectorISt4pairIPN3cfg4EdgeEPNS2_5BlockEESaIS7_EE(ptr noundef nonnull align 8 dereferenceable(233) %0, ptr noundef nonnull align 8 dereferenceable(24) %1) local_unnamed_addr #4 align 2 personality ptr @__gxx_personality_v0 {
  %3 = alloca %"class.__gnu_cxx::__normal_iterator.149", align 8
  %4 = alloca %"class.__gnu_cxx::__normal_iterator.149", align 8
  %5 = alloca %"class.__gnu_cxx::__normal_iterator.153", align 8
  %6 = alloca %"class.__gnu_cxx::__normal_iterator.153", align 8
  %7 = alloca %"class.std::__cxx11::basic_string", align 8
  %8 = alloca %"class.std::__cxx11::basic_string", align 8
  %9 = alloca %"class.std::vector.154", align 8
  %10 = alloca %"class.__gnu_cxx::__normal_iterator.149", align 8
  %11 = alloca %"class.__gnu_cxx::__normal_iterator.149", align 8
  %12 = alloca ptr, align 8
  %13 = alloca ptr, align 8
  %14 = alloca %"class.UnorderedMap<cfg::Block *, std::map<unsigned int, IRInstruction *>>::FixedIterator", align 8
  %15 = alloca %"class.UnorderedMap<cfg::Block *, std::map<unsigned int, IRInstruction *>>::FixedIterator", align 8
  %16 = alloca %"class.UnorderedMap<cfg::Block *, std::map<unsigned int, IRInstruction *>>::FixedIterator", align 8
  %17 = alloca %"class.UnorderedMap<cfg::Block *, std::map<unsigned int, IRInstruction *>>::FixedIterator", align 8
  %18 = alloca %"class.std::vector", align 8
  %19 = alloca %"class.__gnu_cxx::__normal_iterator.153", align 8
  %20 = alloca %"class.__gnu_cxx::__normal_iterator.153", align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %3) #8
  %21 = tail call ptr @_ZNKSt6vectorISt4pairIPN3cfg4EdgeEPNS1_5BlockEESaIS6_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %1) #8
  store ptr %21, ptr %3, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %4) #8
  %22 = tail call ptr @_ZNKSt6vectorISt4pairIPN3cfg4EdgeEPNS1_5BlockEESaIS6_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %1) #8
  store ptr %22, ptr %4, align 8
  %23 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKSt4pairIPN3cfg4EdgeEPNS2_5BlockEESt6vectorIS7_SaIS7_EEEEbRKNS_17__normal_iteratorIT_T0_EESI_(ptr noundef nonnull align 8 dereferenceable(8) %3, ptr noundef nonnull align 8 dereferenceable(8) %4) #8
  br i1 %23, label %.lr.ph101, label %._crit_edge102

.lr.ph101:                                        ; preds = %2, %._crit_edge
  %24 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKSt4pairIPN3cfg4EdgeEPNS2_5BlockEESt6vectorIS7_SaIS7_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %3) #8
  %25 = load ptr, ptr %24, align 8, !tbaa !5
  %26 = call noundef ptr @_ZNK3cfg4Edge6targetEv(ptr noundef nonnull align 8 dereferenceable(32) %25)
  %27 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3cfg5Block5succsEv(ptr noundef nonnull align 8 dereferenceable(104) %26)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %5) #8
  %28 = call ptr @_ZNKSt6vectorIPN3cfg4EdgeESaIS2_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %27) #8
  store ptr %28, ptr %5, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %6) #8
  %29 = call ptr @_ZNKSt6vectorIPN3cfg4EdgeESaIS2_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %27) #8
  store ptr %29, ptr %6, align 8
  %30 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKPN3cfg4EdgeESt6vectorIS3_SaIS3_EEEEbRKNS_17__normal_iteratorIT_T0_EESE_(ptr noundef nonnull align 8 dereferenceable(8) %5, ptr noundef nonnull align 8 dereferenceable(8) %6) #8
  br i1 %30, label %.lr.ph, label %._crit_edge

.lr.ph:                                           ; preds = %.lr.ph101, %57
  %31 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKPN3cfg4EdgeESt6vectorIS3_SaIS3_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %5) #8
  %32 = load ptr, ptr %31, align 8, !tbaa !10
  %.not = icmp eq ptr %32, null
  br i1 %.not, label %33, label %40

33:                                               ; preds = %.lr.ph
  %34 = call noundef i64 @_ZNK3cfg5Block2idEv(ptr noundef nonnull align 8 dereferenceable(104) %26)
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %7) #8
  %35 = load ptr, ptr %0, align 8, !tbaa !11
  call void @_Z4showB5cxx11RKN3cfg16ControlFlowGraphEb(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %7, ptr noundef nonnull align 8 dereferenceable(160) %35, i1 noundef zeroext false)
  %36 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %7) #8
  invoke void (ptr, ptr, i32, ptr, i32, ptr, ...) @_Z11assert_failPKcS0_jS0_10RedexErrorS0_z(ptr noundef nonnull @.str.17, ptr noundef nonnull @.str.10, i32 noundef 440, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN17SwitchEquivFinder10move_edgesERKSt6vectorISt4pairIPN3cfg4EdgeEPNS2_5BlockEESaIS7_EE, i32 noundef 2, ptr noundef nonnull @.str.18, i64 noundef %34, ptr noundef %36) #9
          to label %37 unwind label %38

37:                                               ; preds = %33
  unreachable

38:                                               ; preds = %33
  %39 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %7) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %7) #8
  br label %60

40:                                               ; preds = %.lr.ph
  %41 = call noundef zeroext i8 @_ZNK3cfg4Edge4typeEv(ptr noundef nonnull align 8 dereferenceable(32) %32)
  %42 = icmp eq i8 %41, 0
  br i1 %42, label %43, label %57

43:                                               ; preds = %40
  %44 = call noundef ptr @_ZNK3cfg4Edge6targetEv(ptr noundef nonnull align 8 dereferenceable(32) %32)
  %45 = call noundef zeroext i1 @_ZNK3cfg5Block23starts_with_move_resultEv(ptr noundef nonnull align 8 dereferenceable(104) %44)
  br i1 %45, label %46, label %57

46:                                               ; preds = %43
  %47 = call noundef zeroext i1 @_Z12traceEnabled11TraceModulei(i32 noundef 140, i32 noundef 2)
  br i1 %47, label %48, label %49

48:                                               ; preds = %46
  call void (i32, i32, i1, ptr, ...) @_Z5trace11TraceModuleibPKcz(i32 noundef 140, i32 noundef 2, i1 noundef zeroext false, ptr noundef nonnull @.str.19)
  br label %49

49:                                               ; preds = %46, %48
  %50 = call noundef zeroext i1 @_Z12traceEnabled11TraceModulei(i32 noundef 140, i32 noundef 3)
  br i1 %50, label %51, label %63

51:                                               ; preds = %49
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %8) #8
  %52 = load ptr, ptr %0, align 8, !tbaa !11
  call void @_Z4showB5cxx11RKN3cfg16ControlFlowGraphEb(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %8, ptr noundef nonnull align 8 dereferenceable(160) %52, i1 noundef zeroext false)
  %53 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %8) #8
  invoke void (i32, i32, i1, ptr, ...) @_Z5trace11TraceModuleibPKcz(i32 noundef 140, i32 noundef 3, i1 noundef zeroext false, ptr noundef nonnull @.str.16, ptr noundef %53)
          to label %54 unwind label %55

54:                                               ; preds = %51
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %8) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %8) #8
  br label %63

55:                                               ; preds = %51
  %56 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %8) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %8) #8
  br label %60

57:                                               ; preds = %43, %40
  %58 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKPN3cfg4EdgeESt6vectorIS3_SaIS3_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %5) #8
  %59 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKPN3cfg4EdgeESt6vectorIS3_SaIS3_EEEEbRKNS_17__normal_iteratorIT_T0_EESE_(ptr noundef nonnull align 8 dereferenceable(8) %5, ptr noundef nonnull align 8 dereferenceable(8) %6) #8
  br i1 %59, label %.lr.ph, label %._crit_edge

60:                                               ; preds = %38, %55
  %.pn = phi { ptr, i32 } [ %56, %55 ], [ %39, %38 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %3) #8
  br label %150

._crit_edge:                                      ; preds = %57, %.lr.ph101
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #8
  %61 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKSt4pairIPN3cfg4EdgeEPNS2_5BlockEESt6vectorIS7_SaIS7_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %3) #8
  %62 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKSt4pairIPN3cfg4EdgeEPNS2_5BlockEESt6vectorIS7_SaIS7_EEEEbRKNS_17__normal_iteratorIT_T0_EESI_(ptr noundef nonnull align 8 dereferenceable(8) %3, ptr noundef nonnull align 8 dereferenceable(8) %4) #8
  br i1 %62, label %.lr.ph101, label %._crit_edge102

63:                                               ; preds = %54, %49
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %3) #8
  br label %149

._crit_edge102:                                   ; preds = %._crit_edge, %2
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %3) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %9) #8
  call void @_ZNSt6vectorIPN3cfg5BlockESaIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %9) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %10) #8
  %64 = call ptr @_ZNKSt6vectorISt4pairIPN3cfg4EdgeEPNS1_5BlockEESaIS6_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %1) #8
  store ptr %64, ptr %10, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %11) #8
  %65 = call ptr @_ZNKSt6vectorISt4pairIPN3cfg4EdgeEPNS1_5BlockEESaIS6_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %1) #8
  store ptr %65, ptr %11, align 8
  %66 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKSt4pairIPN3cfg4EdgeEPNS2_5BlockEESt6vectorIS7_SaIS7_EEEEbRKNS_17__normal_iteratorIT_T0_EESI_(ptr noundef nonnull align 8 dereferenceable(8) %10, ptr noundef nonnull align 8 dereferenceable(8) %11) #8
  br i1 %66, label %.lr.ph107, label %._crit_edge108

.lr.ph107:                                        ; preds = %._crit_edge102
  %67 = getelementptr inbounds i8, ptr %0, i64 120
  br label %70

._crit_edge108:                                   ; preds = %135, %._crit_edge102
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #8
  %68 = load ptr, ptr %0, align 8, !tbaa !11
  %69 = invoke noundef i32 @_ZN3cfg16ControlFlowGraph13remove_blocksERKSt6vectorIPNS_5BlockESaIS3_EE(ptr noundef nonnull align 8 dereferenceable(160) %68, ptr noundef nonnull align 8 dereferenceable(24) %9)
          to label %145 unwind label %146

70:                                               ; preds = %.lr.ph107, %135
  %71 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKSt4pairIPN3cfg4EdgeEPNS2_5BlockEESt6vectorIS7_SaIS7_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %10) #8
  %72 = load ptr, ptr %71, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %12) #8
  %73 = call noundef ptr @_ZNK3cfg4Edge6targetEv(ptr noundef nonnull align 8 dereferenceable(32) %72)
  store ptr %73, ptr %12, align 8, !tbaa !10
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %13) #8
  %74 = getelementptr inbounds i8, ptr %71, i64 8
  %75 = load ptr, ptr %74, align 8, !tbaa !39
  store ptr %75, ptr %13, align 8, !tbaa !10
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %14) #8
  %76 = invoke ptr @_ZN12UnorderedMapIPN3cfg5BlockESt3mapIjP13IRInstructionSt4lessIjESaISt4pairIKjS5_EEESt4hashIS2_ESt8equal_toIS2_EE4findERKS2_(ptr noundef nonnull align 8 dereferenceable(56) %67, ptr noundef nonnull align 8 dereferenceable(8) %13)
          to label %77 unwind label %96

77:                                               ; preds = %70
  store ptr %76, ptr %14, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %15) #8
  %78 = invoke ptr @_ZN12UnorderedMapIPN3cfg5BlockESt3mapIjP13IRInstructionSt4lessIjESaISt4pairIKjS5_EEESt4hashIS2_ESt8equal_toIS2_EE4findERKS2_(ptr noundef nonnull align 8 dereferenceable(56) %67, ptr noundef nonnull align 8 dereferenceable(8) %12)
          to label %79 unwind label %98

79:                                               ; preds = %77
  store ptr %78, ptr %15, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %16) #8
  %80 = invoke ptr @_ZN12UnorderedMapIPN3cfg5BlockESt3mapIjP13IRInstructionSt4lessIjESaISt4pairIKjS5_EEESt4hashIS2_ESt8equal_toIS2_EE3endEv(ptr noundef nonnull align 8 dereferenceable(56) %67)
          to label %81 unwind label %100

81:                                               ; preds = %79
  store ptr %80, ptr %16, align 8
  %82 = call noundef zeroext i1 @_ZNK12UnorderedMapIPN3cfg5BlockESt3mapIjP13IRInstructionSt4lessIjESaISt4pairIKjS5_EEESt4hashIS2_ESt8equal_toIS2_EE13FixedIteratorneERKSI_(ptr noundef nonnull align 8 dereferenceable(8) %14, ptr noundef nonnull align 8 dereferenceable(8) %16)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %17) #8
  %83 = invoke ptr @_ZN12UnorderedMapIPN3cfg5BlockESt3mapIjP13IRInstructionSt4lessIjESaISt4pairIKjS5_EEESt4hashIS2_ESt8equal_toIS2_EE3endEv(ptr noundef nonnull align 8 dereferenceable(56) %67)
          to label %84 unwind label %102

84:                                               ; preds = %81
  store ptr %83, ptr %17, align 8
  %85 = call noundef zeroext i1 @_ZNK12UnorderedMapIPN3cfg5BlockESt3mapIjP13IRInstructionSt4lessIjESaISt4pairIKjS5_EEESt4hashIS2_ESt8equal_toIS2_EE13FixedIteratorneERKSI_(ptr noundef nonnull align 8 dereferenceable(8) %15, ptr noundef nonnull align 8 dereferenceable(8) %17)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #8
  %86 = xor i1 %82, %85
  br i1 %86, label %106, label %87

87:                                               ; preds = %84
  %spec.select.demorgan = or i1 %82, %85
  br i1 %spec.select.demorgan, label %88, label %95

88:                                               ; preds = %87
  %89 = call noundef ptr @_ZNK12UnorderedMapIPN3cfg5BlockESt3mapIjP13IRInstructionSt4lessIjESaISt4pairIKjS5_EEESt4hashIS2_ESt8equal_toIS2_EE13FixedIteratorptEv(ptr noundef nonnull align 8 dereferenceable(8) %14)
  %90 = getelementptr inbounds i8, ptr %89, i64 8
  %91 = call noundef ptr @_ZNK12UnorderedMapIPN3cfg5BlockESt3mapIjP13IRInstructionSt4lessIjESaISt4pairIKjS5_EEESt4hashIS2_ESt8equal_toIS2_EE13FixedIteratorptEv(ptr noundef nonnull align 8 dereferenceable(8) %15)
  %92 = getelementptr inbounds i8, ptr %91, i64 8
  %93 = invoke noundef zeroext i1 @_ZN12_GLOBAL__N_16equalsERKSt3mapIjP13IRInstructionSt4lessIjESaISt4pairIKjS2_EEESB_(ptr noundef nonnull align 8 dereferenceable(48) %90, ptr noundef nonnull align 8 dereferenceable(48) %92)
          to label %94 unwind label %104

94:                                               ; preds = %88
  br i1 %93, label %95, label %106

95:                                               ; preds = %94, %87
  invoke void @_ZNSt6vectorIPN3cfg5BlockESaIS2_EE9push_backERKS2_(ptr noundef nonnull align 8 dereferenceable(24) %9, ptr noundef nonnull align 8 dereferenceable(8) %13)
          to label %135 unwind label %104

96:                                               ; preds = %70
  %97 = landingpad { ptr, i32 }
          cleanup
  br label %144

98:                                               ; preds = %77
  %99 = landingpad { ptr, i32 }
          cleanup
  br label %143

100:                                              ; preds = %79
  %101 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #8
  br label %142

102:                                              ; preds = %81
  %103 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #8
  br label %142

104:                                              ; preds = %95, %88
  %105 = landingpad { ptr, i32 }
          cleanup
  br label %142

106:                                              ; preds = %94, %84
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %18) #8
  %107 = load ptr, ptr %12, align 8, !tbaa !10
  %108 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3cfg5Block5succsEv(ptr noundef nonnull align 8 dereferenceable(104) %107)
  invoke void @_ZNSt6vectorIPN3cfg4EdgeESaIS2_EEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(24) %18, ptr noundef nonnull align 8 dereferenceable(24) %108)
          to label %109 unwind label %115

109:                                              ; preds = %106
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %19) #8
  %110 = call ptr @_ZNKSt6vectorIPN3cfg4EdgeESaIS2_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %18) #8
  store ptr %110, ptr %19, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %20) #8
  %111 = call ptr @_ZNKSt6vectorIPN3cfg4EdgeESaIS2_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %18) #8
  store ptr %111, ptr %20, align 8
  %112 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKPN3cfg4EdgeESt6vectorIS3_SaIS3_EEEEbRKNS_17__normal_iteratorIT_T0_EESE_(ptr noundef nonnull align 8 dereferenceable(8) %19, ptr noundef nonnull align 8 dereferenceable(8) %20) #8
  br i1 %112, label %.lr.ph104, label %._crit_edge105

._crit_edge105:                                   ; preds = %126, %109
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #8
  %113 = load ptr, ptr %0, align 8, !tbaa !11
  %114 = load ptr, ptr %13, align 8, !tbaa !10
  invoke void @_ZN3cfg16ControlFlowGraph15set_edge_targetEPNS_4EdgeEPNS_5BlockE(ptr noundef nonnull align 8 dereferenceable(160) %113, ptr noundef nonnull %72, ptr noundef %114)
          to label %134 unwind label %138

115:                                              ; preds = %106
  %116 = landingpad { ptr, i32 }
          cleanup
  br label %141

.lr.ph104:                                        ; preds = %109, %126
  %117 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKPN3cfg4EdgeESt6vectorIS3_SaIS3_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %19) #8
  %118 = load ptr, ptr %117, align 8, !tbaa !10
  %119 = invoke noalias noundef nonnull dereferenceable(32) ptr @_Znwm(i64 noundef 32) #10
          to label %120 unwind label %129

120:                                              ; preds = %.lr.ph104
  invoke void @_ZN3cfg4EdgeC2ERKS0_(ptr noundef nonnull align 8 dereferenceable(32) %119, ptr noundef nonnull align 8 dereferenceable(32) %118)
          to label %121 unwind label %131

121:                                              ; preds = %120
  %122 = load ptr, ptr %0, align 8, !tbaa !11
  invoke void @_ZN3cfg16ControlFlowGraph8add_edgeEPNS_4EdgeE(ptr noundef nonnull align 8 dereferenceable(160) %122, ptr noundef nonnull %119)
          to label %123 unwind label %129

123:                                              ; preds = %121
  %124 = load ptr, ptr %0, align 8, !tbaa !11
  %125 = load ptr, ptr %13, align 8, !tbaa !10
  invoke void @_ZN3cfg16ControlFlowGraph15set_edge_sourceEPNS_4EdgeEPNS_5BlockE(ptr noundef nonnull align 8 dereferenceable(160) %124, ptr noundef nonnull %119, ptr noundef %125)
          to label %126 unwind label %129

126:                                              ; preds = %123
  %127 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKPN3cfg4EdgeESt6vectorIS3_SaIS3_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %19) #8
  %128 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKPN3cfg4EdgeESt6vectorIS3_SaIS3_EEEEbRKNS_17__normal_iteratorIT_T0_EESE_(ptr noundef nonnull align 8 dereferenceable(8) %19, ptr noundef nonnull align 8 dereferenceable(8) %20) #8
  br i1 %128, label %.lr.ph104, label %._crit_edge105

129:                                              ; preds = %123, %121, %.lr.ph104
  %130 = landingpad { ptr, i32 }
          cleanup
  br label %133

131:                                              ; preds = %120
  %132 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %119, i64 noundef 32) #11
  br label %133

133:                                              ; preds = %131, %129
  %.pn80 = phi { ptr, i32 } [ %130, %129 ], [ %132, %131 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #8
  br label %140

134:                                              ; preds = %._crit_edge105
  call void @_ZNSt6vectorIPN3cfg4EdgeESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %18) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %18) #8
  br label %135

135:                                              ; preds = %95, %134
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #8
  %136 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKSt4pairIPN3cfg4EdgeEPNS2_5BlockEESt6vectorIS7_SaIS7_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %10) #8
  %137 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKSt4pairIPN3cfg4EdgeEPNS2_5BlockEESt6vectorIS7_SaIS7_EEEEbRKNS_17__normal_iteratorIT_T0_EESI_(ptr noundef nonnull align 8 dereferenceable(8) %10, ptr noundef nonnull align 8 dereferenceable(8) %11) #8
  br i1 %137, label %70, label %._crit_edge108

138:                                              ; preds = %._crit_edge105
  %139 = landingpad { ptr, i32 }
          cleanup
  br label %140

140:                                              ; preds = %138, %133
  %.pn80.pn = phi { ptr, i32 } [ %.pn80, %133 ], [ %139, %138 ]
  call void @_ZNSt6vectorIPN3cfg4EdgeESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %18) #8
  br label %141

141:                                              ; preds = %140, %115
  %.pn80.pn.pn = phi { ptr, i32 } [ %.pn80.pn, %140 ], [ %116, %115 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %18) #8
  br label %142

142:                                              ; preds = %102, %141, %104, %100
  %.pn80.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %101, %100 ], [ %103, %102 ], [ %.pn80.pn.pn, %141 ], [ %105, %104 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #8
  br label %143

143:                                              ; preds = %142, %98
  %.pn80.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn80.pn.pn.pn.pn.pn, %142 ], [ %99, %98 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #8
  br label %144

144:                                              ; preds = %143, %96
  %.pn80.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn80.pn.pn.pn.pn.pn.pn, %143 ], [ %97, %96 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #8
  br label %148

145:                                              ; preds = %._crit_edge108
  call void @_ZNSt6vectorIPN3cfg5BlockESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %9) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %9) #8
  br label %149

146:                                              ; preds = %._crit_edge108
  %147 = landingpad { ptr, i32 }
          cleanup
  br label %148

148:                                              ; preds = %146, %144
  %.pn80.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn80.pn.pn.pn.pn.pn.pn.pn, %144 ], [ %147, %146 ]
  call void @_ZNSt6vectorIPN3cfg5BlockESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %9) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %9) #8
  br label %150

149:                                              ; preds = %63, %145
  %.5 = phi i1 [ false, %63 ], [ true, %145 ]
  ret i1 %.5

150:                                              ; preds = %148, %60
  %.pn80.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn80.pn.pn.pn.pn.pn.pn.pn.pn, %148 ], [ %.pn, %60 ]
  resume { ptr, i32 } %.pn80.pn.pn.pn.pn.pn.pn.pn.pn.pn
}

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN9__gnu_cxxneIPKSt4pairIPN3cfg4EdgeEPNS2_5BlockEESt6vectorIS7_SaIS7_EEEEbRKNS_17__normal_iteratorIT_T0_EESI_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #5

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

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

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN9__gnu_cxxneIPKPN3cfg4EdgeESt6vectorIS3_SaIS3_EEEEbRKNS_17__normal_iteratorIT_T0_EESE_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #5

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i8 @_ZNK3cfg4Edge4typeEv(ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #1 align 2

declare noundef zeroext i1 @_ZNK3cfg5Block23starts_with_move_resultEv(ptr noundef nonnull align 8 dereferenceable(104)) local_unnamed_addr #3

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare hidden noundef zeroext i1 @_ZN12_GLOBAL__N_16equalsERKSt3mapIjP13IRInstructionSt4lessIjESaISt4pairIKjS2_EEESB_(ptr noundef nonnull align 8 dereferenceable(48), ptr noundef nonnull align 8 dereferenceable(48)) local_unnamed_addr #4

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

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

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

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

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

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

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

declare void @_ZN3cfg16ControlFlowGraph15set_edge_sourceEPNS_4EdgeEPNS_5BlockE(ptr noundef nonnull align 8 dereferenceable(160), ptr noundef, ptr noundef) local_unnamed_addr #3

declare void @_ZN3cfg16ControlFlowGraph15set_edge_targetEPNS_4EdgeEPNS_5BlockE(ptr noundef nonnull align 8 dereferenceable(160), ptr noundef, ptr noundef) local_unnamed_addr #3

declare noundef i32 @_ZN3cfg16ControlFlowGraph13remove_blocksERKSt6vectorIPNS_5BlockESaIS3_EE(ptr noundef nonnull align 8 dereferenceable(160), ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #3

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

attributes #0 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { 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 #2 = { noreturn "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 = { "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 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 = { 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 = { 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 #7 = { 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 #8 = { nounwind }
attributes #9 = { noreturn }
attributes #10 = { builtin allocsize(0) }
attributes #11 = { 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, !7, i64 0}
!6 = !{!"_ZTSSt4pairIPN3cfg4EdgeEPNS0_5BlockEE", !7, i64 0, !7, i64 8}
!7 = !{!"any pointer", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C++ TBAA"}
!10 = !{!7, !7, i64 0}
!11 = !{!12, !7, i64 0}
!12 = !{!"_ZTS17SwitchEquivFinder", !7, i64 0, !7, i64 8, !13, i64 16, !13, i64 20, !14, i64 24, !17, i64 40, !18, i64 48, !20, i64 64, !21, i64 72, !30, i64 120, !36, i64 176, !20, i64 232}
!13 = !{!"int", !8, i64 0}
!14 = !{!"_ZTSSt10shared_ptrIN20constant_propagation15intraprocedural16FixpointIteratorEE", !15, i64 0}
!15 = !{!"_ZTSSt12__shared_ptrIN20constant_propagation15intraprocedural16FixpointIteratorELN9__gnu_cxx12_Lock_policyE2EE", !7, i64 0, !16, i64 8}
!16 = !{!"_ZTSSt14__shared_countILN9__gnu_cxx12_Lock_policyE2EE", !7, i64 0}
!17 = !{!"_ZTSN17SwitchEquivFinder21DuplicateCaseStrategyE", !8, i64 0}
!18 = !{!"_ZTSSt10shared_ptrI12UnorderedMapIP13IRInstruction12UnorderedSetIPN3cfg5BlockESt4hashIS6_ESt8equal_toIS6_EES7_IS2_ES9_IS2_EEE", !19, i64 0}
!19 = !{!"_ZTSSt12__shared_ptrI12UnorderedMapIP13IRInstruction12UnorderedSetIPN3cfg5BlockESt4hashIS6_ESt8equal_toIS6_EES7_IS2_ES9_IS2_EELN9__gnu_cxx12_Lock_policyE2EE", !7, i64 0, !16, i64 8}
!20 = !{!"bool", !8, i64 0}
!21 = !{!"_ZTSSt3mapIN5boost7variantIN17SwitchEquivFinder11DefaultCaseEJiPK7DexTypeEEEPN3cfg5BlockENS2_14key_comparatorESaISt4pairIKS7_SA_EEE", !22, i64 0}
!22 = !{!"_ZTSSt8_Rb_treeIN5boost7variantIN17SwitchEquivFinder11DefaultCaseEJiPK7DexTypeEEESt4pairIKS7_PN3cfg5BlockEESt10_Select1stISD_ENS2_14key_comparatorESaISD_EE", !23, i64 0}
!23 = !{!"_ZTSNSt8_Rb_treeIN5boost7variantIN17SwitchEquivFinder11DefaultCaseEJiPK7DexTypeEEESt4pairIKS7_PN3cfg5BlockEESt10_Select1stISD_ENS2_14key_comparatorESaISD_EE13_Rb_tree_implISG_Lb1EEE", !24, i64 0, !26, i64 8}
!24 = !{!"_ZTSSt20_Rb_tree_key_compareIN17SwitchEquivFinder14key_comparatorEE", !25, i64 0}
!25 = !{!"_ZTSN17SwitchEquivFinder14key_comparatorE"}
!26 = !{!"_ZTSSt15_Rb_tree_header", !27, i64 0, !29, i64 32}
!27 = !{!"_ZTSSt18_Rb_tree_node_base", !28, i64 0, !7, i64 8, !7, i64 16, !7, i64 24}
!28 = !{!"_ZTSSt14_Rb_tree_color", !8, i64 0}
!29 = !{!"long", !8, i64 0}
!30 = !{!"_ZTS12UnorderedMapIPN3cfg5BlockESt3mapIjP13IRInstructionSt4lessIjESaISt4pairIKjS5_EEESt4hashIS2_ESt8equal_toIS2_EE", !31, i64 0}
!31 = !{!"_ZTSSt13unordered_mapIPN3cfg5BlockESt3mapIjP13IRInstructionSt4lessIjESaISt4pairIKjS5_EEESt4hashIS2_ESt8equal_toIS2_ESaIS8_IKS2_SC_EEE", !32, i64 0}
!32 = !{!"_ZTSSt10_HashtableIPN3cfg5BlockESt4pairIKS2_St3mapIjP13IRInstructionSt4lessIjESaIS3_IKjS7_EEEESaISE_ENSt8__detail10_Select1stESt8equal_toIS2_ESt4hashIS2_ENSG_18_Mod_range_hashingENSG_20_Default_ranged_hashENSG_20_Prime_rehash_policyENSG_17_Hashtable_traitsILb0ELb0ELb1EEEE", !7, i64 0, !29, i64 8, !33, i64 16, !29, i64 24, !34, i64 32, !7, i64 48}
!33 = !{!"_ZTSNSt8__detail15_Hash_node_baseE", !7, i64 0}
!34 = !{!"_ZTSNSt8__detail20_Prime_rehash_policyE", !35, i64 0, !29, i64 8}
!35 = !{!"float", !8, i64 0}
!36 = !{!"_ZTS12UnorderedMapIPN3cfg5BlockEtSt4hashIS2_ESt8equal_toIS2_EE", !37, i64 0}
!37 = !{!"_ZTSSt13unordered_mapIPN3cfg5BlockEtSt4hashIS2_ESt8equal_toIS2_ESaISt4pairIKS2_tEEE", !38, i64 0}
!38 = !{!"_ZTSSt10_HashtableIPN3cfg5BlockESt4pairIKS2_tESaIS5_ENSt8__detail10_Select1stESt8equal_toIS2_ESt4hashIS2_ENS7_18_Mod_range_hashingENS7_20_Default_ranged_hashENS7_20_Prime_rehash_policyENS7_17_Hashtable_traitsILb0ELb0ELb1EEEE", !7, i64 0, !29, i64 8, !33, i64 16, !29, i64 24, !34, i64 32, !7, i64 48}
!39 = !{!6, !7, i64 8}


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