; 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::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 }
%class.UnorderedMap.54 = type { %"class.std::unordered_map.56" }
%"class.std::unordered_map.56" = type { %"class.std::_Hashtable.57" }
%"class.std::_Hashtable.57" = 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.anon = type { ptr, ptr, ptr }
%"class.std::function.70" = type { %"class.std::_Function_base", ptr }
%"class.std::_Function_base" = type { %"union.std::_Any_data", ptr }
%"union.std::_Any_data" = type { %"union.std::_Nocopy_types" }
%"union.std::_Nocopy_types" = type { { i64, i64 } }
%"class.std::vector.72" = type { %"struct.std::_Vector_base.73" }
%"struct.std::_Vector_base.73" = type { %"struct.std::_Vector_base<std::pair<cfg::Edge *, cfg::Block *>, std::allocator<std::pair<cfg::Edge *, cfg::Block *>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::pair<cfg::Edge *, cfg::Block *>, std::allocator<std::pair<cfg::Edge *, cfg::Block *>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::pair<cfg::Edge *, cfg::Block *>, std::allocator<std::pair<cfg::Edge *, cfg::Block *>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::pair<cfg::Edge *, cfg::Block *>, std::allocator<std::pair<cfg::Edge *, cfg::Block *>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%class.UnorderedMap.77 = type { %"class.std::unordered_map.79" }
%"class.std::unordered_map.79" = type { %"class.std::_Hashtable.80" }
%"class.std::_Hashtable.80" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%class.anon.93 = type { ptr, ptr, ptr, ptr, ptr, ptr }
%class.anon.94 = type { ptr, ptr, ptr }
%"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" }
%"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.std::vector.101" = type { %"struct.std::_Vector_base.102" }
%"struct.std::_Vector_base.102" = type { %"struct.std::_Vector_base<SourceBlock *, std::allocator<SourceBlock *>>::_Vector_impl" }
%"struct.std::_Vector_base<SourceBlock *, std::allocator<SourceBlock *>>::_Vector_impl" = type { %"struct.std::_Vector_base<SourceBlock *, std::allocator<SourceBlock *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<SourceBlock *, std::allocator<SourceBlock *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.UnorderedMap<cfg::Block *, unsigned short>::UnorderedIterable" = type { ptr }
%"struct.std::__detail::_Node_iterator" = type { %"struct.std::__detail::_Node_iterator_base" }
%"struct.std::__detail::_Node_iterator_base" = type { ptr }
%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"class.UnorderedMap<cfg::Block *, std::vector<SourceBlock *>>::UnorderedIterable" = type { ptr }
%"struct.std::__detail::_Node_iterator.137" = type { %"struct.std::__detail::_Node_iterator_base.138" }
%"struct.std::__detail::_Node_iterator_base.138" = type { ptr }
%"class.boost::intrusive::list_iterator" = type { %"struct.boost::intrusive::iiterator_members" }
%"struct.boost::intrusive::iiterator_members" = type { ptr }
%"class.__gnu_cxx::__normal_iterator" = type { ptr }
%"class.std::unique_ptr.41" = type { %"struct.std::__uniq_ptr_data.42" }
%"struct.std::__uniq_ptr_data.42" = type { %"class.std::__uniq_ptr_impl.43" }
%"class.std::__uniq_ptr_impl.43" = type { %"class.std::tuple.44" }
%"class.std::tuple.44" = type { %"struct.std::_Tuple_impl.45" }
%"struct.std::_Tuple_impl.45" = type { %"struct.std::_Head_base.48" }
%"struct.std::_Head_base.48" = type { 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" }
%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 }
%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" = type <{ ptr, i16, [6 x i8] }>

@.str.13 = external hidden unnamed_addr constant [48 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [49 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [32 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [3 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: mustprogress uwtable
define dso_local void @_ZN17SwitchEquivFinder11find_leavesESt8functionIFbPN3cfg5BlockEEE(ptr dead_on_unwind noalias writable sret(%"class.std::vector") align 8 %0, ptr noundef nonnull align 8 dereferenceable(233) %1, ptr noundef %2) #2 align 2 personality ptr @__gxx_personality_v0 {
  %4 = alloca ptr, align 8
  %5 = alloca ptr, align 8
  %6 = alloca ptr, align 8
  %7 = alloca %"class.std::vector", align 8
  %8 = alloca %class.UnorderedMap.54, align 8
  %9 = alloca ptr, align 8
  %10 = alloca i32, align 4
  %11 = alloca %class.anon, align 8
  %12 = alloca %"class.std::function.70", align 8
  %13 = alloca %"class.std::vector.72", align 8
  %14 = alloca %class.UnorderedMap.77, align 8
  %15 = alloca %class.anon.93, align 8
  %16 = alloca ptr, align 8
  %17 = alloca %class.anon.94, align 8
  %18 = alloca i8, align 1
  %19 = alloca %"class.std::map.95", align 8
  %20 = alloca %"class.std::vector.101", align 8
  %21 = alloca i32, align 4
  %22 = alloca ptr, align 8
  %23 = alloca %"class.UnorderedMap<cfg::Block *, unsigned short>::UnorderedIterable", align 8
  %24 = alloca %"struct.std::__detail::_Node_iterator", align 8
  %25 = alloca %"struct.std::__detail::_Node_iterator", align 8
  %26 = alloca ptr, align 8
  %27 = alloca ptr, align 8
  %28 = alloca i16, align 2
  %29 = alloca %"class.std::__cxx11::basic_string", align 8
  %30 = alloca ptr, align 8
  %31 = alloca %"class.UnorderedMap<cfg::Block *, std::vector<SourceBlock *>>::UnorderedIterable", align 8
  %32 = alloca %"struct.std::__detail::_Node_iterator.137", align 8
  %33 = alloca %"struct.std::__detail::_Node_iterator.137", align 8
  %34 = alloca ptr, align 8
  %35 = alloca ptr, align 8
  %36 = alloca ptr, align 8
  %37 = alloca %"class.boost::intrusive::list_iterator", align 8
  %38 = alloca ptr, align 8
  %39 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %40 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %41 = alloca ptr, align 8
  %42 = alloca %"class.std::unique_ptr.41", align 8
  %43 = alloca %"class.std::__cxx11::basic_string", align 8
  store ptr %0, ptr %4, align 8
  store ptr %1, ptr %5, align 8, !tbaa !5
  store ptr %2, ptr %6, align 8, !tbaa !5
  %44 = load ptr, ptr %5, align 8
  call void @llvm.lifetime.start.p0(i64 24, ptr %7) #7
  call void @_ZNSt6vectorIPN3cfg4EdgeESaIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %7) #7
  call void @llvm.lifetime.start.p0(i64 56, ptr %8) #7
  invoke void @_ZN12UnorderedMapIPN3cfg5BlockEbSt4hashIS2_ESt8equal_toIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(56) %8)
          to label %45 unwind label %73

45:                                               ; preds = %3
  call void @llvm.lifetime.start.p0(i64 24, ptr %11) #7
  %46 = getelementptr inbounds %class.anon, ptr %11, i32 0, i32 0
  store ptr %8, ptr %46, align 8, !tbaa !5
  %47 = getelementptr inbounds %class.anon, ptr %11, i32 0, i32 1
  store ptr %44, ptr %47, align 8, !tbaa !9
  %48 = getelementptr inbounds %class.anon, ptr %11, i32 0, i32 2
  store ptr %2, ptr %48, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %12) #7
  call void @_ZNSt8functionIFbPN3cfg5BlockESt3mapIjP13IRInstructionSt4lessIjESaISt4pairIKjS5_EEERKSt6vectorIP11SourceBlockSaISF_EEEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr %13) #7
  call void @_ZNSt6vectorISt4pairIPN3cfg4EdgeEPNS1_5BlockEESaIS6_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %13) #7
  call void @llvm.lifetime.start.p0(i64 56, ptr %14) #7
  invoke void @_ZN12UnorderedMapIPN3cfg5BlockESt6vectorIP11SourceBlockSaIS5_EESt4hashIS2_ESt8equal_toIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(56) %14)
          to label %49 unwind label %77

49:                                               ; preds = %45
  call void @llvm.lifetime.start.p0(i64 48, ptr %15) #7
  %50 = getelementptr inbounds %class.anon.93, ptr %15, i32 0, i32 0
  store ptr %11, ptr %50, align 8, !tbaa !5
  %51 = getelementptr inbounds %class.anon.93, ptr %15, i32 0, i32 1
  store ptr %44, ptr %51, align 8, !tbaa !11
  %52 = getelementptr inbounds %class.anon.93, ptr %15, i32 0, i32 2
  store ptr %7, ptr %52, align 8, !tbaa !5
  %53 = getelementptr inbounds %class.anon.93, ptr %15, i32 0, i32 3
  store ptr %14, ptr %53, align 8, !tbaa !5
  %54 = getelementptr inbounds %class.anon.93, ptr %15, i32 0, i32 4
  store ptr %13, ptr %54, align 8, !tbaa !5
  %55 = getelementptr inbounds %class.anon.93, ptr %15, i32 0, i32 5
  store ptr %12, ptr %55, align 8, !tbaa !5
  %56 = invoke noundef nonnull align 8 dereferenceable(32) ptr @"_ZNSt8functionIFbPN3cfg5BlockESt3mapIjP13IRInstructionSt4lessIjESaISt4pairIKjS5_EEERKSt6vectorIP11SourceBlockSaISF_EEEEaSIZN17SwitchEquivFinder11find_leavesES_IFbS2_EEE3$_0EENSt9enable_ifIXsrNSL_9_CallableIT_NSR_IXntsr7is_sameINSt9remove_cvINSt16remove_referenceIST_E4typeEE4typeESL_EE5valueESt5decayIST_EE4type4typeESt15__invoke_resultIRS14_JS2_SC_SJ_EEEE5valueERSL_E4typeEOST_"(ptr noundef nonnull align 8 dereferenceable(32) %12, ptr noundef nonnull align 8 dereferenceable(48) %15)
          to label %57 unwind label %81

57:                                               ; preds = %49
  call void @llvm.lifetime.end.p0(i64 48, ptr %15) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr %17) #7
  %58 = getelementptr inbounds %class.anon.94, ptr %17, i32 0, i32 0
  store ptr %7, ptr %58, align 8, !tbaa !5
  %59 = getelementptr inbounds %class.anon.94, ptr %17, i32 0, i32 1
  store ptr %44, ptr %59, align 8, !tbaa !13
  %60 = getelementptr inbounds %class.anon.94, ptr %17, i32 0, i32 2
  store ptr %13, ptr %60, align 8, !tbaa !5
  store ptr %17, ptr %16, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %18) #7
  %61 = getelementptr inbounds %class.SwitchEquivFinder, ptr %44, i32 0, i32 1
  %62 = load ptr, ptr %61, align 8, !tbaa !15
  %63 = invoke noundef ptr @_ZNK3cfg23InstructionIteratorImplILb0EE5blockEv(ptr noundef nonnull align 8 dereferenceable(32) %62)
          to label %64 unwind label %85

64:                                               ; preds = %57
  call void @llvm.memset.p0.i64(ptr align 8 %19, i8 0, i64 48, i1 false)
  call void @_ZNSt3mapIjP13IRInstructionSt4lessIjESaISt4pairIKjS1_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(48) %19) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr %20) #7
  call void @llvm.memset.p0.i64(ptr align 8 %20, i8 0, i64 24, i1 false)
  call void @_ZNSt6vectorIP11SourceBlockSaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %20) #7
  %65 = invoke noundef zeroext i1 @_ZNKSt8functionIFbPN3cfg5BlockESt3mapIjP13IRInstructionSt4lessIjESaISt4pairIKjS5_EEERKSt6vectorIP11SourceBlockSaISF_EEEEclES2_SC_SJ_(ptr noundef nonnull align 8 dereferenceable(32) %12, ptr noundef %63, ptr noundef %19, ptr noundef nonnull align 8 dereferenceable(24) %20)
          to label %66 unwind label %89

66:                                               ; preds = %64
  call void @_ZNSt6vectorIP11SourceBlockSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %20) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %20) #7
  call void @_ZNSt3mapIjP13IRInstructionSt4lessIjESaISt4pairIKjS1_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %19) #7
  %67 = zext i1 %65 to i8
  store i8 %67, ptr %18, align 1, !tbaa !43
  %68 = load i8, ptr %18, align 1, !tbaa !43, !range !44, !noundef !45
  %69 = trunc i8 %68 to i1
  br i1 %69, label %93, label %70

70:                                               ; preds = %66
  %71 = load ptr, ptr %16, align 8, !tbaa !5
  invoke void @"_ZZN17SwitchEquivFinder11find_leavesESt8functionIFbPN3cfg5BlockEEEENK3$_2clEv"(ptr dead_on_unwind writable sret(%"class.std::vector") align 8 %0, ptr noundef nonnull align 8 dereferenceable(24) %71)
          to label %72 unwind label %85

72:                                               ; preds = %70
  store i32 1, ptr %21, align 4
  br label %324

73:                                               ; preds = %3
  %74 = landingpad { ptr, i32 }
          cleanup
  %75 = extractvalue { ptr, i32 } %74, 0
  store ptr %75, ptr %9, align 8
  %76 = extractvalue { ptr, i32 } %74, 1
  store i32 %76, ptr %10, align 4
  br label %328

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

81:                                               ; preds = %49
  %82 = landingpad { ptr, i32 }
          cleanup
  %83 = extractvalue { ptr, i32 } %82, 0
  store ptr %83, ptr %9, align 8
  %84 = extractvalue { ptr, i32 } %82, 1
  store i32 %84, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 48, ptr %15) #7
  br label %326

85:                                               ; preds = %302, %297, %294, %210, %204, %94, %93, %70, %57
  %86 = landingpad { ptr, i32 }
          cleanup
  %87 = extractvalue { ptr, i32 } %86, 0
  store ptr %87, ptr %9, align 8
  %88 = extractvalue { ptr, i32 } %86, 1
  store i32 %88, ptr %10, align 4
  br label %325

89:                                               ; preds = %64
  %90 = landingpad { ptr, i32 }
          cleanup
  %91 = extractvalue { ptr, i32 } %90, 0
  store ptr %91, ptr %9, align 8
  %92 = extractvalue { ptr, i32 } %90, 1
  store i32 %92, ptr %10, align 4
  call void @_ZNSt6vectorIP11SourceBlockSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %20) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %20) #7
  call void @_ZNSt3mapIjP13IRInstructionSt4lessIjESaISt4pairIKjS1_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %19) #7
  br label %325

93:                                               ; preds = %66
  invoke void @_ZN17SwitchEquivFinder21normalize_extra_loadsERK12UnorderedMapIPN3cfg5BlockEbSt4hashIS3_ESt8equal_toIS3_EE(ptr noundef nonnull align 8 dereferenceable(233) %44, ptr noundef nonnull align 8 dereferenceable(56) %8)
          to label %94 unwind label %85

94:                                               ; preds = %93
  %95 = getelementptr inbounds %class.SwitchEquivFinder, ptr %44, i32 0, i32 11
  %96 = invoke noundef zeroext i1 @_ZNK12UnorderedMapIPN3cfg5BlockESt3mapIjP13IRInstructionSt4lessIjESaISt4pairIKjS5_EEESt4hashIS2_ESt8equal_toIS2_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(56) %95)
          to label %97 unwind label %85

97:                                               ; preds = %94
  br i1 %96, label %204, label %98

98:                                               ; preds = %97
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #7
  %99 = getelementptr inbounds %class.SwitchEquivFinder, ptr %44, i32 0, i32 12
  %100 = invoke ptr @_Z17UnorderedIterableI12UnorderedMapIPN3cfg5BlockEtSt4hashIS3_ESt8equal_toIS3_EETnNSt9enable_ifIXsr3stdE12is_base_of_vI13UnorderedBaseIT_ESB_EEbE4typeELb1EEDaRSB_(ptr noundef nonnull align 8 dereferenceable(56) %99)
          to label %101 unwind label %116

101:                                              ; preds = %98
  %102 = getelementptr inbounds %"class.UnorderedMap<cfg::Block *, unsigned short>::UnorderedIterable", ptr %23, i32 0, i32 0
  store ptr %100, ptr %102, align 8
  store ptr %23, ptr %22, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #7
  %103 = load ptr, ptr %22, align 8, !tbaa !5
  %104 = invoke ptr @_ZN12UnorderedMapIPN3cfg5BlockEtSt4hashIS2_ESt8equal_toIS2_EE17UnorderedIterable5beginEv(ptr noundef nonnull align 8 dereferenceable(8) %103)
          to label %105 unwind label %120

105:                                              ; preds = %101
  %106 = getelementptr inbounds %"struct.std::__detail::_Node_iterator", ptr %24, i32 0, i32 0
  %107 = getelementptr inbounds %"struct.std::__detail::_Node_iterator_base", ptr %106, i32 0, i32 0
  store ptr %104, ptr %107, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #7
  %108 = load ptr, ptr %22, align 8, !tbaa !5
  %109 = invoke ptr @_ZN12UnorderedMapIPN3cfg5BlockEtSt4hashIS2_ESt8equal_toIS2_EE17UnorderedIterable3endEv(ptr noundef nonnull align 8 dereferenceable(8) %108)
          to label %110 unwind label %124

110:                                              ; preds = %105
  %111 = getelementptr inbounds %"struct.std::__detail::_Node_iterator", ptr %25, i32 0, i32 0
  %112 = getelementptr inbounds %"struct.std::__detail::_Node_iterator_base", ptr %111, i32 0, i32 0
  store ptr %109, ptr %112, align 8
  br label %113

113:                                              ; preds = %195, %110
  %114 = call noundef zeroext i1 @_ZNSt8__detailneERKNS_19_Node_iterator_baseISt4pairIKPN3cfg5BlockEtELb0EEES9_(ptr noundef nonnull align 8 dereferenceable(8) %24, ptr noundef nonnull align 8 dereferenceable(8) %25) #7
  br i1 %114, label %128, label %115

115:                                              ; preds = %113
  store i32 2, ptr %21, align 4
  br label %198

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

120:                                              ; preds = %101
  %121 = landingpad { ptr, i32 }
          cleanup
  %122 = extractvalue { ptr, i32 } %121, 0
  store ptr %122, ptr %9, align 8
  %123 = extractvalue { ptr, i32 } %121, 1
  store i32 %123, ptr %10, align 4
  br label %201

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

128:                                              ; preds = %113
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #7
  %129 = call noundef nonnull align 8 dereferenceable(10) ptr @_ZNKSt8__detail14_Node_iteratorISt4pairIKPN3cfg5BlockEtELb0ELb0EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %24) #7
  store ptr %129, ptr %26, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #7
  %130 = load ptr, ptr %26, align 8, !tbaa !5
  %131 = getelementptr inbounds %"struct.std::pair", ptr %130, i32 0, i32 0
  %132 = load ptr, ptr %131, align 8, !tbaa !46
  store ptr %132, ptr %27, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 2, ptr %28) #7
  %133 = load ptr, ptr %26, align 8, !tbaa !5
  %134 = getelementptr inbounds %"struct.std::pair", ptr %133, i32 0, i32 1
  %135 = load i16, ptr %134, align 8, !tbaa !49
  store i16 %135, ptr %28, align 2, !tbaa !50
  %136 = load ptr, ptr %27, align 8, !tbaa !5
  %137 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3cfg5Block5predsEv(ptr noundef nonnull align 8 dereferenceable(104) %136)
          to label %138 unwind label %149

138:                                              ; preds = %128
  %139 = call noundef i64 @_ZNKSt6vectorIPN3cfg4EdgeESaIS2_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %137) #7
  %140 = load i16, ptr %28, align 2, !tbaa !50
  %141 = zext i16 %140 to i64
  %142 = icmp ugt i64 %139, %141
  br i1 %142, label %143, label %188

143:                                              ; preds = %138
  br label %144

144:                                              ; preds = %143
  %145 = invoke noundef zeroext i1 @_Z12traceEnabled11TraceModulei(i32 noundef 140, i32 noundef 2)
          to label %146 unwind label %149

146:                                              ; preds = %144
  br i1 %145, label %147, label %153

147:                                              ; preds = %146
  invoke void (i32, i32, i1, ptr, ...) @_Z5trace11TraceModuleibPKcz(i32 noundef 140, i32 noundef 2, i1 noundef zeroext false, ptr noundef @.str.13)
          to label %148 unwind label %149

148:                                              ; preds = %147
  br label %153

149:                                              ; preds = %185, %162, %159, %156, %147, %144, %128
  %150 = landingpad { ptr, i32 }
          cleanup
  %151 = extractvalue { ptr, i32 } %150, 0
  store ptr %151, ptr %9, align 8
  %152 = extractvalue { ptr, i32 } %150, 1
  store i32 %152, ptr %10, align 4
  br label %197

153:                                              ; preds = %148, %146
  br label %154

154:                                              ; preds = %153
  br label %155

155:                                              ; preds = %154
  br label %156

156:                                              ; preds = %155
  %157 = invoke noundef zeroext i1 @_Z12traceEnabled11TraceModulei(i32 noundef 140, i32 noundef 3)
          to label %158 unwind label %149

158:                                              ; preds = %156
  br i1 %157, label %159, label %183

159:                                              ; preds = %158
  %160 = load ptr, ptr %27, align 8, !tbaa !5
  %161 = invoke noundef i64 @_ZNK3cfg5Block2idEv(ptr noundef nonnull align 8 dereferenceable(104) %160)
          to label %162 unwind label %149

162:                                              ; preds = %159
  %163 = load ptr, ptr %27, align 8, !tbaa !5
  %164 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3cfg5Block5predsEv(ptr noundef nonnull align 8 dereferenceable(104) %163)
          to label %165 unwind label %149

165:                                              ; preds = %162
  %166 = call noundef i64 @_ZNKSt6vectorIPN3cfg4EdgeESaIS2_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %164) #7
  %167 = load i16, ptr %28, align 2, !tbaa !50
  %168 = zext i16 %167 to i32
  call void @llvm.lifetime.start.p0(i64 32, ptr %29) #7
  %169 = getelementptr inbounds %class.SwitchEquivFinder, ptr %44, i32 0, i32 0
  %170 = load ptr, ptr %169, align 8, !tbaa !51
  invoke void @_Z4showB5cxx11RKN3cfg16ControlFlowGraphEb(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %29, ptr noundef nonnull align 8 dereferenceable(160) %170, i1 noundef zeroext false)
          to label %171 unwind label %174

171:                                              ; preds = %165
  %172 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %29) #7
  invoke void (i32, i32, i1, ptr, ...) @_Z5trace11TraceModuleibPKcz(i32 noundef 140, i32 noundef 3, i1 noundef zeroext false, ptr noundef @.str.14, i64 noundef %161, i64 noundef %166, i32 noundef %168, ptr noundef %172)
          to label %173 unwind label %178

173:                                              ; preds = %171
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %29) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %29) #7
  br label %183

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

178:                                              ; preds = %171
  %179 = landingpad { ptr, i32 }
          cleanup
  %180 = extractvalue { ptr, i32 } %179, 0
  store ptr %180, ptr %9, align 8
  %181 = extractvalue { ptr, i32 } %179, 1
  store i32 %181, ptr %10, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %29) #7
  br label %182

182:                                              ; preds = %178, %174
  call void @llvm.lifetime.end.p0(i64 32, ptr %29) #7
  br label %197

183:                                              ; preds = %173, %158
  br label %184

184:                                              ; preds = %183
  br label %185

185:                                              ; preds = %184
  %186 = load ptr, ptr %16, align 8, !tbaa !5
  invoke void @"_ZZN17SwitchEquivFinder11find_leavesESt8functionIFbPN3cfg5BlockEEEENK3$_2clEv"(ptr dead_on_unwind writable sret(%"class.std::vector") align 8 %0, ptr noundef nonnull align 8 dereferenceable(24) %186)
          to label %187 unwind label %149

187:                                              ; preds = %185
  store i32 1, ptr %21, align 4
  br label %189

188:                                              ; preds = %138
  store i32 0, ptr %21, align 4
  br label %189

189:                                              ; preds = %188, %187
  call void @llvm.lifetime.end.p0(i64 2, ptr %28) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #7
  %190 = load i32, ptr %21, align 4
  switch i32 %190, label %192 [
    i32 0, label %191
  ]

191:                                              ; preds = %189
  store i32 0, ptr %21, align 4
  br label %192

192:                                              ; preds = %191, %189
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #7
  %193 = load i32, ptr %21, align 4
  switch i32 %193, label %198 [
    i32 0, label %194
  ]

194:                                              ; preds = %192
  br label %195

195:                                              ; preds = %194
  %196 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8__detail14_Node_iteratorISt4pairIKPN3cfg5BlockEtELb0ELb0EEppEv(ptr noundef nonnull align 8 dereferenceable(8) %24) #7
  br label %113

197:                                              ; preds = %182, %149
  call void @llvm.lifetime.end.p0(i64 2, ptr %28) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #7
  br label %200

198:                                              ; preds = %192, %115
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #7
  %199 = load i32, ptr %21, align 4
  switch i32 %199, label %324 [
    i32 2, label %203
  ]

200:                                              ; preds = %197, %124
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #7
  br label %201

201:                                              ; preds = %200, %120
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #7
  br label %202

202:                                              ; preds = %201, %116
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #7
  br label %325

203:                                              ; preds = %198
  br label %204

204:                                              ; preds = %203, %97
  %205 = invoke noundef zeroext i1 @_ZN17SwitchEquivFinder10move_edgesERKSt6vectorISt4pairIPN3cfg4EdgeEPNS2_5BlockEESaIS7_EE(ptr noundef nonnull align 8 dereferenceable(233) %44, ptr noundef nonnull align 8 dereferenceable(24) %13)
          to label %206 unwind label %85

206:                                              ; preds = %204
  %207 = zext i1 %205 to i8
  store i8 %207, ptr %18, align 1, !tbaa !43
  %208 = load i8, ptr %18, align 1, !tbaa !43, !range !44, !noundef !45
  %209 = trunc i8 %208 to i1
  br i1 %209, label %213, label %210

210:                                              ; preds = %206
  %211 = load ptr, ptr %16, align 8, !tbaa !5
  invoke void @"_ZZN17SwitchEquivFinder11find_leavesESt8functionIFbPN3cfg5BlockEEEENK3$_2clEv"(ptr dead_on_unwind writable sret(%"class.std::vector") align 8 %0, ptr noundef nonnull align 8 dereferenceable(24) %211)
          to label %212 unwind label %85

212:                                              ; preds = %210
  store i32 1, ptr %21, align 4
  br label %324

213:                                              ; preds = %206
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #7
  %214 = invoke ptr @_Z17UnorderedIterableI12UnorderedMapIPN3cfg5BlockESt6vectorIP11SourceBlockSaIS6_EESt4hashIS3_ESt8equal_toIS3_EETnNSt9enable_ifIXsr3stdE12is_base_of_vI13UnorderedBaseIT_ESG_EEbE4typeELb1EEDaRSG_(ptr noundef nonnull align 8 dereferenceable(56) %14)
          to label %215 unwind label %230

215:                                              ; preds = %213
  %216 = getelementptr inbounds %"class.UnorderedMap<cfg::Block *, std::vector<SourceBlock *>>::UnorderedIterable", ptr %31, i32 0, i32 0
  store ptr %214, ptr %216, align 8
  store ptr %31, ptr %30, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #7
  %217 = load ptr, ptr %30, align 8, !tbaa !5
  %218 = invoke ptr @_ZN12UnorderedMapIPN3cfg5BlockESt6vectorIP11SourceBlockSaIS5_EESt4hashIS2_ESt8equal_toIS2_EE17UnorderedIterable5beginEv(ptr noundef nonnull align 8 dereferenceable(8) %217)
          to label %219 unwind label %234

219:                                              ; preds = %215
  %220 = getelementptr inbounds %"struct.std::__detail::_Node_iterator.137", ptr %32, i32 0, i32 0
  %221 = getelementptr inbounds %"struct.std::__detail::_Node_iterator_base.138", ptr %220, i32 0, i32 0
  store ptr %218, ptr %221, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #7
  %222 = load ptr, ptr %30, align 8, !tbaa !5
  %223 = invoke ptr @_ZN12UnorderedMapIPN3cfg5BlockESt6vectorIP11SourceBlockSaIS5_EESt4hashIS2_ESt8equal_toIS2_EE17UnorderedIterable3endEv(ptr noundef nonnull align 8 dereferenceable(8) %222)
          to label %224 unwind label %238

224:                                              ; preds = %219
  %225 = getelementptr inbounds %"struct.std::__detail::_Node_iterator.137", ptr %33, i32 0, i32 0
  %226 = getelementptr inbounds %"struct.std::__detail::_Node_iterator_base.138", ptr %225, i32 0, i32 0
  store ptr %223, ptr %226, align 8
  br label %227

227:                                              ; preds = %285, %224
  %228 = call noundef zeroext i1 @_ZNSt8__detailneERKNS_19_Node_iterator_baseISt4pairIKPN3cfg5BlockESt6vectorIP11SourceBlockSaIS8_EEELb0EEESE_(ptr noundef nonnull align 8 dereferenceable(8) %32, ptr noundef nonnull align 8 dereferenceable(8) %33) #7
  br i1 %228, label %242, label %229

229:                                              ; preds = %227
  store i32 8, ptr %21, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #7
  br label %291

230:                                              ; preds = %213
  %231 = landingpad { ptr, i32 }
          cleanup
  %232 = extractvalue { ptr, i32 } %231, 0
  store ptr %232, ptr %9, align 8
  %233 = extractvalue { ptr, i32 } %231, 1
  store i32 %233, ptr %10, align 4
  br label %290

234:                                              ; preds = %215
  %235 = landingpad { ptr, i32 }
          cleanup
  %236 = extractvalue { ptr, i32 } %235, 0
  store ptr %236, ptr %9, align 8
  %237 = extractvalue { ptr, i32 } %235, 1
  store i32 %237, ptr %10, align 4
  br label %289

238:                                              ; preds = %219
  %239 = landingpad { ptr, i32 }
          cleanup
  %240 = extractvalue { ptr, i32 } %239, 0
  store ptr %240, ptr %9, align 8
  %241 = extractvalue { ptr, i32 } %239, 1
  store i32 %241, ptr %10, align 4
  br label %288

242:                                              ; preds = %227
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #7
  %243 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNKSt8__detail14_Node_iteratorISt4pairIKPN3cfg5BlockESt6vectorIP11SourceBlockSaIS8_EEELb0ELb0EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %32) #7
  store ptr %243, ptr %34, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #7
  %244 = load ptr, ptr %34, align 8, !tbaa !5
  %245 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3getILm0EKPN3cfg5BlockESt6vectorIP11SourceBlockSaIS6_EEERNSt13tuple_elementIXT_ESt4pairIT0_T1_EE4typeERSD_(ptr noundef nonnull align 8 dereferenceable(32) %244) #7
  store ptr %245, ptr %35, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #7
  %246 = load ptr, ptr %34, align 8, !tbaa !5
  %247 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZSt3getILm1EKPN3cfg5BlockESt6vectorIP11SourceBlockSaIS6_EEERNSt13tuple_elementIXT_ESt4pairIT0_T1_EE4typeERSD_(ptr noundef nonnull align 8 dereferenceable(32) %246) #7
  store ptr %247, ptr %36, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #7
  %248 = load ptr, ptr %35, align 8, !tbaa !5
  %249 = load ptr, ptr %248, align 8, !tbaa !5
  invoke void @_ZN13source_blocks29find_first_block_insert_pointEPN3cfg5BlockE(ptr dead_on_unwind writable sret(%"class.boost::intrusive::list_iterator") align 8 %37, ptr noundef %249)
          to label %250 unwind label %261

250:                                              ; preds = %242
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #7
  %251 = load ptr, ptr %36, align 8, !tbaa !5
  store ptr %251, ptr %38, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #7
  %252 = load ptr, ptr %38, align 8, !tbaa !5
  %253 = call ptr @_ZNSt6vectorIP11SourceBlockSaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %252) #7
  %254 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %39, i32 0, i32 0
  store ptr %253, ptr %254, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #7
  %255 = load ptr, ptr %38, align 8, !tbaa !5
  %256 = call ptr @_ZNSt6vectorIP11SourceBlockSaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %255) #7
  %257 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %40, i32 0, i32 0
  store ptr %256, ptr %257, align 8
  br label %258

258:                                              ; preds = %273, %250
  %259 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPP11SourceBlockSt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %39, ptr noundef nonnull align 8 dereferenceable(8) %40) #7
  br i1 %259, label %265, label %260

260:                                              ; preds = %258
  store i32 10, ptr %21, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #7
  br label %284

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

265:                                              ; preds = %258
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #7
  %266 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPP11SourceBlockSt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %39) #7
  %267 = load ptr, ptr %266, align 8, !tbaa !5
  store ptr %267, ptr %41, align 8, !tbaa !5
  %268 = load ptr, ptr %35, align 8, !tbaa !5
  %269 = load ptr, ptr %268, align 8, !tbaa !5
  %270 = load ptr, ptr %41, align 8, !tbaa !5
  invoke void @_ZSt11make_uniqueI11SourceBlockJRS0_EENSt8__detail9_MakeUniqIT_E15__single_objectEDpOT0_(ptr dead_on_unwind writable sret(%"class.std::unique_ptr.41") align 8 %42, ptr noundef nonnull align 8 dereferenceable(32) %270)
          to label %271 unwind label %275

271:                                              ; preds = %265
  invoke void @_ZN3cfg5Block13insert_beforeERKN5boost9intrusive13list_iteratorINS2_8mhtraitsI15MethodItemEntryNS2_16list_member_hookIJEEEXadL_ZNS5_10list_hook_EEEEELb0EEESt10unique_ptrI11SourceBlockSt14default_deleteISD_EE(ptr noundef nonnull align 8 dereferenceable(104) %269, ptr noundef nonnull align 8 dereferenceable(8) %37, ptr noundef %42)
          to label %272 unwind label %279

272:                                              ; preds = %271
  call void @_ZNSt10unique_ptrI11SourceBlockSt14default_deleteIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %42) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #7
  br label %273

273:                                              ; preds = %272
  %274 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPP11SourceBlockSt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %39) #7
  br label %258

275:                                              ; preds = %265
  %276 = landingpad { ptr, i32 }
          cleanup
  %277 = extractvalue { ptr, i32 } %276, 0
  store ptr %277, ptr %9, align 8
  %278 = extractvalue { ptr, i32 } %276, 1
  store i32 %278, ptr %10, align 4
  br label %283

279:                                              ; preds = %271
  %280 = landingpad { ptr, i32 }
          cleanup
  %281 = extractvalue { ptr, i32 } %280, 0
  store ptr %281, ptr %9, align 8
  %282 = extractvalue { ptr, i32 } %280, 1
  store i32 %282, ptr %10, align 4
  call void @_ZNSt10unique_ptrI11SourceBlockSt14default_deleteIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %42) #7
  br label %283

283:                                              ; preds = %279, %275
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #7
  br label %287

284:                                              ; preds = %260
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #7
  br label %285

285:                                              ; preds = %284
  %286 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8__detail14_Node_iteratorISt4pairIKPN3cfg5BlockESt6vectorIP11SourceBlockSaIS8_EEELb0ELb0EEppEv(ptr noundef nonnull align 8 dereferenceable(8) %32) #7
  br label %227

287:                                              ; preds = %283, %261
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #7
  br label %288

288:                                              ; preds = %287, %238
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #7
  br label %289

289:                                              ; preds = %288, %234
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #7
  br label %290

290:                                              ; preds = %289, %230
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #7
  br label %325

291:                                              ; preds = %229
  %292 = call noundef zeroext i1 @_ZNKSt6vectorIPN3cfg4EdgeESaIS2_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %7) #7
  br i1 %292, label %293, label %323

293:                                              ; preds = %291
  br label %294

294:                                              ; preds = %293
  %295 = invoke noundef zeroext i1 @_Z12traceEnabled11TraceModulei(i32 noundef 140, i32 noundef 2)
          to label %296 unwind label %85

296:                                              ; preds = %294
  br i1 %295, label %297, label %299

297:                                              ; preds = %296
  invoke void (i32, i32, i1, ptr, ...) @_Z5trace11TraceModuleibPKcz(i32 noundef 140, i32 noundef 2, i1 noundef zeroext false, ptr noundef @.str.15)
          to label %298 unwind label %85

298:                                              ; preds = %297
  br label %299

299:                                              ; preds = %298, %296
  br label %300

300:                                              ; preds = %299
  br label %301

301:                                              ; preds = %300
  br label %302

302:                                              ; preds = %301
  %303 = invoke noundef zeroext i1 @_Z12traceEnabled11TraceModulei(i32 noundef 140, i32 noundef 3)
          to label %304 unwind label %85

304:                                              ; preds = %302
  br i1 %303, label %305, label %320

305:                                              ; preds = %304
  call void @llvm.lifetime.start.p0(i64 32, ptr %43) #7
  %306 = getelementptr inbounds %class.SwitchEquivFinder, ptr %44, i32 0, i32 0
  %307 = load ptr, ptr %306, align 8, !tbaa !51
  invoke void @_Z4showB5cxx11RKN3cfg16ControlFlowGraphEb(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %43, ptr noundef nonnull align 8 dereferenceable(160) %307, i1 noundef zeroext false)
          to label %308 unwind label %311

308:                                              ; preds = %305
  %309 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %43) #7
  invoke void (i32, i32, i1, ptr, ...) @_Z5trace11TraceModuleibPKcz(i32 noundef 140, i32 noundef 3, i1 noundef zeroext false, ptr noundef @.str.16, ptr noundef %309)
          to label %310 unwind label %315

310:                                              ; preds = %308
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %43) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %43) #7
  br label %320

311:                                              ; preds = %305
  %312 = landingpad { ptr, i32 }
          cleanup
  %313 = extractvalue { ptr, i32 } %312, 0
  store ptr %313, ptr %9, align 8
  %314 = extractvalue { ptr, i32 } %312, 1
  store i32 %314, ptr %10, align 4
  br label %319

315:                                              ; preds = %308
  %316 = landingpad { ptr, i32 }
          cleanup
  %317 = extractvalue { ptr, i32 } %316, 0
  store ptr %317, ptr %9, align 8
  %318 = extractvalue { ptr, i32 } %316, 1
  store i32 %318, ptr %10, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %43) #7
  br label %319

319:                                              ; preds = %315, %311
  call void @llvm.lifetime.end.p0(i64 32, ptr %43) #7
  br label %325

320:                                              ; preds = %310, %304
  br label %321

321:                                              ; preds = %320
  br label %322

322:                                              ; preds = %321
  br label %323

323:                                              ; preds = %322, %291
  call void @_ZNSt6vectorIPN3cfg4EdgeESaIS2_EEC2EOS4_(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr noundef nonnull align 8 dereferenceable(24) %7) #7
  store i32 1, ptr %21, align 4
  br label %324

324:                                              ; preds = %323, %212, %198, %72
  call void @llvm.lifetime.end.p0(i64 1, ptr %18) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %17) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #7
  call void @_ZN12UnorderedMapIPN3cfg5BlockESt6vectorIP11SourceBlockSaIS5_EESt4hashIS2_ESt8equal_toIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %14) #7
  call void @llvm.lifetime.end.p0(i64 56, ptr %14) #7
  call void @_ZNSt6vectorISt4pairIPN3cfg4EdgeEPNS1_5BlockEESaIS6_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %13) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %13) #7
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %12) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %11) #7
  call void @_ZN12UnorderedMapIPN3cfg5BlockEbSt4hashIS2_ESt8equal_toIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %8) #7
  call void @llvm.lifetime.end.p0(i64 56, ptr %8) #7
  call void @_ZNSt6vectorIPN3cfg4EdgeESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %7) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %7) #7
  ret void

325:                                              ; preds = %319, %290, %202, %89, %85
  call void @llvm.lifetime.end.p0(i64 1, ptr %18) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %17) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #7
  br label %326

326:                                              ; preds = %325, %81
  call void @_ZN12UnorderedMapIPN3cfg5BlockESt6vectorIP11SourceBlockSaIS5_EESt4hashIS2_ESt8equal_toIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %14) #7
  br label %327

327:                                              ; preds = %326, %77
  call void @llvm.lifetime.end.p0(i64 56, ptr %14) #7
  call void @_ZNSt6vectorISt4pairIPN3cfg4EdgeEPNS1_5BlockEESaIS6_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %13) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %13) #7
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %12) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %11) #7
  call void @_ZN12UnorderedMapIPN3cfg5BlockEbSt4hashIS2_ESt8equal_toIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %8) #7
  br label %328

328:                                              ; preds = %327, %73
  call void @llvm.lifetime.end.p0(i64 56, ptr %8) #7
  call void @_ZNSt6vectorIPN3cfg4EdgeESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %7) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %7) #7
  br label %329

329:                                              ; preds = %328
  %330 = load ptr, ptr %9, align 8
  %331 = load i32, ptr %10, align 4
  %332 = insertvalue { ptr, i32 } poison, ptr %330, 0
  %333 = insertvalue { ptr, i32 } %332, i32 %331, 1
  resume { ptr, i32 } %333
}

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare hidden noundef nonnull align 8 dereferenceable(32) ptr @"_ZNSt8functionIFbPN3cfg5BlockESt3mapIjP13IRInstructionSt4lessIjESaISt4pairIKjS5_EEERKSt6vectorIP11SourceBlockSaISF_EEEEaSIZN17SwitchEquivFinder11find_leavesES_IFbS2_EEE3$_0EENSt9enable_ifIXsrNSL_9_CallableIT_NSR_IXntsr7is_sameINSt9remove_cvINSt16remove_referenceIST_E4typeEE4typeESL_EE5valueESt5decayIST_EE4type4typeESt15__invoke_resultIRS14_JS2_SC_SJ_EEEE5valueERSL_E4typeEOST_"(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(48)) #2 align 2

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

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

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write)
declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #3

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare hidden void @"_ZZN17SwitchEquivFinder11find_leavesESt8functionIFbPN3cfg5BlockEEEENK3$_2clEv"(ptr dead_on_unwind noalias writable sret(%"class.std::vector") align 8, ptr noundef nonnull align 8 dereferenceable(24)) #4 align 2

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

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

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

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

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

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

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

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

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

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

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

; 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) #5

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN17SwitchEquivFinder10move_edgesERKSt6vectorISt4pairIPN3cfg4EdgeEPNS2_5BlockEESaIS7_EE(ptr noundef nonnull align 8 dereferenceable(233), ptr noundef nonnull align 8 dereferenceable(24)) #2 align 2

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(32) ptr @_ZNKSt8__detail14_Node_iteratorISt4pairIKPN3cfg5BlockESt6vectorIP11SourceBlockSaIS8_EEELb0ELb0EEdeEv(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 @_ZSt3getILm0EKPN3cfg5BlockESt6vectorIP11SourceBlockSaIS6_EEERNSt13tuple_elementIXT_ESt4pairIT0_T1_EE4typeERSD_(ptr noundef nonnull align 8 dereferenceable(32)) #1

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

declare void @_ZN13source_blocks29find_first_block_insert_pointEPN3cfg5BlockE(ptr dead_on_unwind writable sret(%"class.boost::intrusive::list_iterator") align 8, ptr noundef) #5

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local ptr @_ZNSt6vectorIP11SourceBlockSaIS1_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_cxxneIPP11SourceBlockSt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) #6

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

declare void @_ZN3cfg5Block13insert_beforeERKN5boost9intrusive13list_iteratorINS2_8mhtraitsI15MethodItemEntryNS2_16list_member_hookIJEEEXadL_ZNS5_10list_hook_EEEEELb0EEESt10unique_ptrI11SourceBlockSt14default_deleteISD_EE(ptr noundef nonnull align 8 dereferenceable(104), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) #5

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZSt11make_uniqueI11SourceBlockJRS0_EENSt8__detail9_MakeUniqIT_E15__single_objectEDpOT0_(ptr dead_on_unwind noalias writable sret(%"class.std::unique_ptr.41") align 8, ptr noundef nonnull align 8 dereferenceable(32)) #4

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPP11SourceBlockSt6vectorIS2_SaIS2_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 @_ZNSt8__detail14_Node_iteratorISt4pairIKPN3cfg5BlockESt6vectorIP11SourceBlockSaIS8_EEELb0ELb0EEppEv(ptr noundef nonnull align 8 dereferenceable(8)) #1 align 2

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN12UnorderedMapIPN3cfg5BlockESt6vectorIP11SourceBlockSaIS5_EESt4hashIS2_ESt8equal_toIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(56)) unnamed_addr #6 align 2

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN12UnorderedMapIPN3cfg5BlockEbSt4hashIS2_ESt8equal_toIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(56)) unnamed_addr #6 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt14_Function_baseD2Ev(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 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #4 = { inlinehint mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { inlinehint mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #7 = { 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 8}
!10 = !{!"_ZTSZN17SwitchEquivFinder11find_leavesESt8functionIFbPN3cfg5BlockEEEE3$_1", !6, i64 0, !6, i64 8, !6, i64 16}
!11 = !{!12, !6, i64 8}
!12 = !{!"_ZTSZN17SwitchEquivFinder11find_leavesESt8functionIFbPN3cfg5BlockEEEE3$_0", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40}
!13 = !{!14, !6, i64 8}
!14 = !{!"_ZTSZN17SwitchEquivFinder11find_leavesESt8functionIFbPN3cfg5BlockEEEE3$_2", !6, i64 0, !6, i64 8, !6, i64 16}
!15 = !{!16, !6, i64 8}
!16 = !{!"_ZTS17SwitchEquivFinder", !6, i64 0, !6, i64 8, !17, i64 16, !17, i64 20, !18, i64 24, !21, i64 40, !22, i64 48, !24, i64 64, !25, i64 72, !34, i64 120, !40, i64 176, !24, i64 232}
!17 = !{!"int", !7, i64 0}
!18 = !{!"_ZTSSt10shared_ptrIN20constant_propagation15intraprocedural16FixpointIteratorEE", !19, i64 0}
!19 = !{!"_ZTSSt12__shared_ptrIN20constant_propagation15intraprocedural16FixpointIteratorELN9__gnu_cxx12_Lock_policyE2EE", !6, i64 0, !20, i64 8}
!20 = !{!"_ZTSSt14__shared_countILN9__gnu_cxx12_Lock_policyE2EE", !6, i64 0}
!21 = !{!"_ZTSN17SwitchEquivFinder21DuplicateCaseStrategyE", !7, i64 0}
!22 = !{!"_ZTSSt10shared_ptrI12UnorderedMapIP13IRInstruction12UnorderedSetIPN3cfg5BlockESt4hashIS6_ESt8equal_toIS6_EES7_IS2_ES9_IS2_EEE", !23, i64 0}
!23 = !{!"_ZTSSt12__shared_ptrI12UnorderedMapIP13IRInstruction12UnorderedSetIPN3cfg5BlockESt4hashIS6_ESt8equal_toIS6_EES7_IS2_ES9_IS2_EELN9__gnu_cxx12_Lock_policyE2EE", !6, i64 0, !20, i64 8}
!24 = !{!"bool", !7, i64 0}
!25 = !{!"_ZTSSt3mapIN5boost7variantIN17SwitchEquivFinder11DefaultCaseEJiPK7DexTypeEEEPN3cfg5BlockENS2_14key_comparatorESaISt4pairIKS7_SA_EEE", !26, i64 0}
!26 = !{!"_ZTSSt8_Rb_treeIN5boost7variantIN17SwitchEquivFinder11DefaultCaseEJiPK7DexTypeEEESt4pairIKS7_PN3cfg5BlockEESt10_Select1stISD_ENS2_14key_comparatorESaISD_EE", !27, i64 0}
!27 = !{!"_ZTSNSt8_Rb_treeIN5boost7variantIN17SwitchEquivFinder11DefaultCaseEJiPK7DexTypeEEESt4pairIKS7_PN3cfg5BlockEESt10_Select1stISD_ENS2_14key_comparatorESaISD_EE13_Rb_tree_implISG_Lb1EEE", !28, i64 0, !30, i64 8}
!28 = !{!"_ZTSSt20_Rb_tree_key_compareIN17SwitchEquivFinder14key_comparatorEE", !29, i64 0}
!29 = !{!"_ZTSN17SwitchEquivFinder14key_comparatorE"}
!30 = !{!"_ZTSSt15_Rb_tree_header", !31, i64 0, !33, i64 32}
!31 = !{!"_ZTSSt18_Rb_tree_node_base", !32, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!32 = !{!"_ZTSSt14_Rb_tree_color", !7, i64 0}
!33 = !{!"long", !7, i64 0}
!34 = !{!"_ZTS12UnorderedMapIPN3cfg5BlockESt3mapIjP13IRInstructionSt4lessIjESaISt4pairIKjS5_EEESt4hashIS2_ESt8equal_toIS2_EE", !35, i64 0}
!35 = !{!"_ZTSSt13unordered_mapIPN3cfg5BlockESt3mapIjP13IRInstructionSt4lessIjESaISt4pairIKjS5_EEESt4hashIS2_ESt8equal_toIS2_ESaIS8_IKS2_SC_EEE", !36, i64 0}
!36 = !{!"_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, !33, i64 8, !37, i64 16, !33, i64 24, !38, i64 32, !6, i64 48}
!37 = !{!"_ZTSNSt8__detail15_Hash_node_baseE", !6, i64 0}
!38 = !{!"_ZTSNSt8__detail20_Prime_rehash_policyE", !39, i64 0, !33, i64 8}
!39 = !{!"float", !7, i64 0}
!40 = !{!"_ZTS12UnorderedMapIPN3cfg5BlockEtSt4hashIS2_ESt8equal_toIS2_EE", !41, i64 0}
!41 = !{!"_ZTSSt13unordered_mapIPN3cfg5BlockEtSt4hashIS2_ESt8equal_toIS2_ESaISt4pairIKS2_tEEE", !42, i64 0}
!42 = !{!"_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, !33, i64 8, !37, i64 16, !33, i64 24, !38, i64 32, !6, i64 48}
!43 = !{!24, !24, i64 0}
!44 = !{i8 0, i8 2}
!45 = !{}
!46 = !{!47, !6, i64 0}
!47 = !{!"_ZTSSt4pairIKPN3cfg5BlockEtE", !6, i64 0, !48, i64 8}
!48 = !{!"short", !7, i64 0}
!49 = !{!47, !48, i64 8}
!50 = !{!48, !48, i64 0}
!51 = !{!16, !6, i64 0}


; 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::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 }
%class.UnorderedMap.54 = type { %"class.std::unordered_map.56" }
%"class.std::unordered_map.56" = type { %"class.std::_Hashtable.57" }
%"class.std::_Hashtable.57" = 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.anon = type { ptr, ptr, ptr }
%"class.std::function.70" = type { %"class.std::_Function_base", ptr }
%"class.std::_Function_base" = type { %"union.std::_Any_data", ptr }
%"union.std::_Any_data" = type { %"union.std::_Nocopy_types" }
%"union.std::_Nocopy_types" = type { { i64, i64 } }
%"class.std::vector.72" = type { %"struct.std::_Vector_base.73" }
%"struct.std::_Vector_base.73" = type { %"struct.std::_Vector_base<std::pair<cfg::Edge *, cfg::Block *>, std::allocator<std::pair<cfg::Edge *, cfg::Block *>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::pair<cfg::Edge *, cfg::Block *>, std::allocator<std::pair<cfg::Edge *, cfg::Block *>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::pair<cfg::Edge *, cfg::Block *>, std::allocator<std::pair<cfg::Edge *, cfg::Block *>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::pair<cfg::Edge *, cfg::Block *>, std::allocator<std::pair<cfg::Edge *, cfg::Block *>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%class.UnorderedMap.77 = type { %"class.std::unordered_map.79" }
%"class.std::unordered_map.79" = type { %"class.std::_Hashtable.80" }
%"class.std::_Hashtable.80" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%class.anon.93 = type { ptr, ptr, ptr, ptr, ptr, ptr }
%class.anon.94 = type { ptr, ptr, ptr }
%"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" }
%"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.std::vector.101" = type { %"struct.std::_Vector_base.102" }
%"struct.std::_Vector_base.102" = type { %"struct.std::_Vector_base<SourceBlock *, std::allocator<SourceBlock *>>::_Vector_impl" }
%"struct.std::_Vector_base<SourceBlock *, std::allocator<SourceBlock *>>::_Vector_impl" = type { %"struct.std::_Vector_base<SourceBlock *, std::allocator<SourceBlock *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<SourceBlock *, std::allocator<SourceBlock *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.UnorderedMap<cfg::Block *, unsigned short>::UnorderedIterable" = type { ptr }
%"struct.std::__detail::_Node_iterator" = type { %"struct.std::__detail::_Node_iterator_base" }
%"struct.std::__detail::_Node_iterator_base" = type { ptr }
%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"class.UnorderedMap<cfg::Block *, std::vector<SourceBlock *>>::UnorderedIterable" = type { ptr }
%"struct.std::__detail::_Node_iterator.137" = type { %"struct.std::__detail::_Node_iterator_base.138" }
%"struct.std::__detail::_Node_iterator_base.138" = type { ptr }
%"class.boost::intrusive::list_iterator" = type { %"struct.boost::intrusive::iiterator_members" }
%"struct.boost::intrusive::iiterator_members" = type { ptr }
%"class.__gnu_cxx::__normal_iterator" = type { ptr }
%"class.std::unique_ptr.41" = type { %"struct.std::__uniq_ptr_data.42" }
%"struct.std::__uniq_ptr_data.42" = type { %"class.std::__uniq_ptr_impl.43" }
%"class.std::__uniq_ptr_impl.43" = type { %"class.std::tuple.44" }
%"class.std::tuple.44" = type { %"struct.std::_Tuple_impl.45" }
%"struct.std::_Tuple_impl.45" = type { %"struct.std::_Head_base.48" }
%"struct.std::_Head_base.48" = type { ptr }

@.str.13 = external hidden unnamed_addr constant [48 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [49 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [32 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [3 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: mustprogress uwtable
define dso_local void @_ZN17SwitchEquivFinder11find_leavesESt8functionIFbPN3cfg5BlockEEE(ptr dead_on_unwind noalias writable sret(%"class.std::vector") align 8 %0, ptr noundef nonnull align 8 dereferenceable(233) %1, ptr noundef %2) local_unnamed_addr #2 align 2 personality ptr @__gxx_personality_v0 {
  %4 = alloca %"class.std::vector", align 8
  %5 = alloca %class.UnorderedMap.54, align 8
  %6 = alloca %class.anon, align 8
  %7 = alloca %"class.std::function.70", align 8
  %8 = alloca %"class.std::vector.72", align 8
  %9 = alloca %class.UnorderedMap.77, align 8
  %10 = alloca %class.anon.93, align 8
  %11 = alloca %class.anon.94, align 8
  %12 = alloca %"class.std::map.95", align 8
  %13 = alloca %"class.std::vector.101", align 8
  %14 = alloca %"class.UnorderedMap<cfg::Block *, unsigned short>::UnorderedIterable", align 8
  %15 = alloca %"struct.std::__detail::_Node_iterator", align 8
  %16 = alloca %"struct.std::__detail::_Node_iterator", align 8
  %17 = alloca %"class.std::__cxx11::basic_string", align 8
  %18 = alloca %"class.UnorderedMap<cfg::Block *, std::vector<SourceBlock *>>::UnorderedIterable", align 8
  %19 = alloca %"struct.std::__detail::_Node_iterator.137", align 8
  %20 = alloca %"struct.std::__detail::_Node_iterator.137", align 8
  %21 = alloca %"class.boost::intrusive::list_iterator", align 8
  %22 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %23 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %24 = alloca %"class.std::unique_ptr.41", align 8
  %25 = alloca %"class.std::__cxx11::basic_string", align 8
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %4) #7
  call void @_ZNSt6vectorIPN3cfg4EdgeESaIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %4) #7
  call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %5) #7
  call void @_ZN12UnorderedMapIPN3cfg5BlockEbSt4hashIS2_ESt8equal_toIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(56) %5)
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %6) #7
  store ptr %5, ptr %6, align 8, !tbaa !5
  %26 = getelementptr inbounds i8, ptr %6, i64 8
  store ptr %1, ptr %26, align 8, !tbaa !9
  %27 = getelementptr inbounds i8, ptr %6, i64 16
  store ptr %2, ptr %27, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %7) #7
  call void @_ZNSt8functionIFbPN3cfg5BlockESt3mapIjP13IRInstructionSt4lessIjESaISt4pairIKjS5_EEERKSt6vectorIP11SourceBlockSaISF_EEEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %7) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %8) #7
  call void @_ZNSt6vectorISt4pairIPN3cfg4EdgeEPNS1_5BlockEESaIS6_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %8) #7
  call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %9) #7
  call void @_ZN12UnorderedMapIPN3cfg5BlockESt6vectorIP11SourceBlockSaIS5_EESt4hashIS2_ESt8equal_toIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(56) %9)
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %10) #7
  store ptr %6, ptr %10, align 8, !tbaa !5
  %28 = getelementptr inbounds i8, ptr %10, i64 8
  store ptr %1, ptr %28, align 8, !tbaa !11
  %29 = getelementptr inbounds i8, ptr %10, i64 16
  store ptr %4, ptr %29, align 8, !tbaa !5
  %30 = getelementptr inbounds i8, ptr %10, i64 24
  store ptr %9, ptr %30, align 8, !tbaa !5
  %31 = getelementptr inbounds i8, ptr %10, i64 32
  store ptr %8, ptr %31, align 8, !tbaa !5
  %32 = getelementptr inbounds i8, ptr %10, i64 40
  store ptr %7, ptr %32, align 8, !tbaa !5
  %33 = invoke noundef nonnull align 8 dereferenceable(32) ptr @"_ZNSt8functionIFbPN3cfg5BlockESt3mapIjP13IRInstructionSt4lessIjESaISt4pairIKjS5_EEERKSt6vectorIP11SourceBlockSaISF_EEEEaSIZN17SwitchEquivFinder11find_leavesES_IFbS2_EEE3$_0EENSt9enable_ifIXsrNSL_9_CallableIT_NSR_IXntsr7is_sameINSt9remove_cvINSt16remove_referenceIST_E4typeEE4typeESL_EE5valueESt5decayIST_EE4type4typeESt15__invoke_resultIRS14_JS2_SC_SJ_EEEE5valueERSL_E4typeEOST_"(ptr noundef nonnull align 8 dereferenceable(32) %7, ptr noundef nonnull align 8 dereferenceable(48) %10)
          to label %34 unwind label %43

34:                                               ; preds = %3
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %10) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %11) #7
  store ptr %4, ptr %11, align 8, !tbaa !5
  %35 = getelementptr inbounds i8, ptr %11, i64 8
  store ptr %1, ptr %35, align 8, !tbaa !13
  %36 = getelementptr inbounds i8, ptr %11, i64 16
  store ptr %8, ptr %36, align 8, !tbaa !5
  %37 = getelementptr inbounds i8, ptr %1, i64 8
  %38 = load ptr, ptr %37, align 8, !tbaa !15
  %39 = invoke noundef ptr @_ZNK3cfg23InstructionIteratorImplILb0EE5blockEv(ptr noundef nonnull align 8 dereferenceable(32) %38)
          to label %40 unwind label %45

40:                                               ; preds = %34
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(48) %12, i8 0, i64 48, i1 false)
  call void @_ZNSt3mapIjP13IRInstructionSt4lessIjESaISt4pairIKjS1_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(48) %12) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %13) #7
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %13, i8 0, i64 24, i1 false)
  call void @_ZNSt6vectorIP11SourceBlockSaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %13) #7
  %41 = invoke noundef zeroext i1 @_ZNKSt8functionIFbPN3cfg5BlockESt3mapIjP13IRInstructionSt4lessIjESaISt4pairIKjS5_EEERKSt6vectorIP11SourceBlockSaISF_EEEEclES2_SC_SJ_(ptr noundef nonnull align 8 dereferenceable(32) %7, ptr noundef %39, ptr noundef nonnull %12, ptr noundef nonnull align 8 dereferenceable(24) %13)
          to label %42 unwind label %47

42:                                               ; preds = %40
  call void @_ZNSt6vectorIP11SourceBlockSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %13) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %13) #7
  call void @_ZNSt3mapIjP13IRInstructionSt4lessIjESaISt4pairIKjS1_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %12) #7
  br i1 %41, label %49, label %.invoke

43:                                               ; preds = %3
  %44 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %10) #7
  br label %154

45:                                               ; preds = %.invoke, %138, %137, %134, %97, %49, %34
  %46 = landingpad { ptr, i32 }
          cleanup
  br label %153

47:                                               ; preds = %40
  %48 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorIP11SourceBlockSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %13) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %13) #7
  call void @_ZNSt3mapIjP13IRInstructionSt4lessIjESaISt4pairIKjS1_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %12) #7
  br label %153

49:                                               ; preds = %42
  invoke void @_ZN17SwitchEquivFinder21normalize_extra_loadsERK12UnorderedMapIPN3cfg5BlockEbSt4hashIS3_ESt8equal_toIS3_EE(ptr noundef nonnull align 8 dereferenceable(233) %1, ptr noundef nonnull align 8 dereferenceable(56) %5)
          to label %50 unwind label %45

50:                                               ; preds = %49
  %51 = getelementptr inbounds i8, ptr %1, i64 120
  %52 = call noundef zeroext i1 @_ZNK12UnorderedMapIPN3cfg5BlockESt3mapIjP13IRInstructionSt4lessIjESaISt4pairIKjS5_EEESt4hashIS2_ESt8equal_toIS2_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(56) %51)
  br i1 %52, label %97, label %53

53:                                               ; preds = %50
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %14) #7
  %54 = getelementptr inbounds i8, ptr %1, i64 176
  %55 = invoke ptr @_Z17UnorderedIterableI12UnorderedMapIPN3cfg5BlockEtSt4hashIS3_ESt8equal_toIS3_EETnNSt9enable_ifIXsr3stdE12is_base_of_vI13UnorderedBaseIT_ESB_EEbE4typeELb1EEDaRSB_(ptr noundef nonnull align 8 dereferenceable(56) %54)
          to label %56 unwind label %60

56:                                               ; preds = %53
  store ptr %55, ptr %14, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %15) #7
  %57 = call ptr @_ZN12UnorderedMapIPN3cfg5BlockEtSt4hashIS2_ESt8equal_toIS2_EE17UnorderedIterable5beginEv(ptr noundef nonnull align 8 dereferenceable(8) %14)
  store ptr %57, ptr %15, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %16) #7
  %58 = call ptr @_ZN12UnorderedMapIPN3cfg5BlockEtSt4hashIS2_ESt8equal_toIS2_EE17UnorderedIterable3endEv(ptr noundef nonnull align 8 dereferenceable(8) %14)
  store ptr %58, ptr %16, align 8
  %59 = call noundef zeroext i1 @_ZNSt8__detailneERKNS_19_Node_iterator_baseISt4pairIKPN3cfg5BlockEtELb0EEES9_(ptr noundef nonnull align 8 dereferenceable(8) %15, ptr noundef nonnull align 8 dereferenceable(8) %16) #7
  br i1 %59, label %.lr.ph, label %.critedge55

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

.lr.ph:                                           ; preds = %56, %.critedge
  %62 = call noundef nonnull align 8 dereferenceable(10) ptr @_ZNKSt8__detail14_Node_iteratorISt4pairIKPN3cfg5BlockEtELb0ELb0EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %15) #7
  %63 = load ptr, ptr %62, align 8, !tbaa !43
  %64 = getelementptr inbounds i8, ptr %62, i64 8
  %65 = load i16, ptr %64, align 8, !tbaa !46
  %66 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3cfg5Block5predsEv(ptr noundef nonnull align 8 dereferenceable(104) %63)
  %67 = call noundef i64 @_ZNKSt6vectorIPN3cfg4EdgeESaIS2_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %66) #7
  %68 = zext i16 %65 to i64
  %.not = icmp ugt i64 %67, %68
  br i1 %.not, label %69, label %.critedge

69:                                               ; preds = %.lr.ph
  %70 = invoke noundef zeroext i1 @_Z12traceEnabled11TraceModulei(i32 noundef 140, i32 noundef 2)
          to label %71 unwind label %73

71:                                               ; preds = %69
  br i1 %70, label %72, label %75

72:                                               ; preds = %71
  invoke void (i32, i32, i1, ptr, ...) @_Z5trace11TraceModuleibPKcz(i32 noundef 140, i32 noundef 2, i1 noundef zeroext false, ptr noundef nonnull @.str.13)
          to label %75 unwind label %73

73:                                               ; preds = %92, %75, %72, %69
  %74 = landingpad { ptr, i32 }
          cleanup
  br label %95

75:                                               ; preds = %71, %72
  %76 = invoke noundef zeroext i1 @_Z12traceEnabled11TraceModulei(i32 noundef 140, i32 noundef 3)
          to label %77 unwind label %73

77:                                               ; preds = %75
  br i1 %76, label %78, label %92

78:                                               ; preds = %77
  %79 = call noundef i64 @_ZNK3cfg5Block2idEv(ptr noundef nonnull align 8 dereferenceable(104) %63)
  %80 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3cfg5Block5predsEv(ptr noundef nonnull align 8 dereferenceable(104) %63)
  %81 = call noundef i64 @_ZNKSt6vectorIPN3cfg4EdgeESaIS2_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %80) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %17) #7
  %82 = load ptr, ptr %1, align 8, !tbaa !47
  invoke void @_Z4showB5cxx11RKN3cfg16ControlFlowGraphEb(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %17, ptr noundef nonnull align 8 dereferenceable(160) %82, i1 noundef zeroext false)
          to label %83 unwind label %87

83:                                               ; preds = %78
  %84 = zext i16 %65 to i32
  %85 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %17) #7
  invoke void (i32, i32, i1, ptr, ...) @_Z5trace11TraceModuleibPKcz(i32 noundef 140, i32 noundef 3, i1 noundef zeroext false, ptr noundef nonnull @.str.14, i64 noundef %79, i64 noundef %81, i32 noundef %84, ptr noundef %85)
          to label %86 unwind label %89

86:                                               ; preds = %83
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %17) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %17) #7
  br label %92

87:                                               ; preds = %78
  %88 = landingpad { ptr, i32 }
          cleanup
  br label %91

89:                                               ; preds = %83
  %90 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %17) #7
  br label %91

91:                                               ; preds = %89, %87
  %.pn = phi { ptr, i32 } [ %90, %89 ], [ %88, %87 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %17) #7
  br label %95

92:                                               ; preds = %86, %77
  invoke void @"_ZZN17SwitchEquivFinder11find_leavesESt8functionIFbPN3cfg5BlockEEEENK3$_2clEv"(ptr dead_on_unwind writable sret(%"class.std::vector") align 8 %0, ptr noundef nonnull align 8 dereferenceable(24) %11)
          to label %96 unwind label %73

.critedge:                                        ; preds = %.lr.ph
  %93 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8__detail14_Node_iteratorISt4pairIKPN3cfg5BlockEtELb0ELb0EEppEv(ptr noundef nonnull align 8 dereferenceable(8) %15) #7
  %94 = call noundef zeroext i1 @_ZNSt8__detailneERKNS_19_Node_iterator_baseISt4pairIKPN3cfg5BlockEtELb0EEES9_(ptr noundef nonnull align 8 dereferenceable(8) %15, ptr noundef nonnull align 8 dereferenceable(8) %16) #7
  br i1 %94, label %.lr.ph, label %.critedge55

95:                                               ; preds = %91, %73
  %.pn43 = phi { ptr, i32 } [ %74, %73 ], [ %.pn, %91 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #7
  br label %153

96:                                               ; preds = %92
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #7
  br label %152

.critedge55:                                      ; preds = %.critedge, %56
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #7
  br label %97

97:                                               ; preds = %.critedge55, %50
  %98 = invoke noundef zeroext i1 @_ZN17SwitchEquivFinder10move_edgesERKSt6vectorISt4pairIPN3cfg4EdgeEPNS2_5BlockEESaIS7_EE(ptr noundef nonnull align 8 dereferenceable(233) %1, ptr noundef nonnull align 8 dereferenceable(24) %8)
          to label %99 unwind label %45

99:                                               ; preds = %97
  br i1 %98, label %100, label %.invoke

.invoke:                                          ; preds = %42, %99
  invoke void @"_ZZN17SwitchEquivFinder11find_leavesESt8functionIFbPN3cfg5BlockEEEENK3$_2clEv"(ptr dead_on_unwind writable sret(%"class.std::vector") align 8 %0, ptr noundef nonnull align 8 dereferenceable(24) %11)
          to label %152 unwind label %45

100:                                              ; preds = %99
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %18) #7
  %101 = invoke ptr @_Z17UnorderedIterableI12UnorderedMapIPN3cfg5BlockESt6vectorIP11SourceBlockSaIS6_EESt4hashIS3_ESt8equal_toIS3_EETnNSt9enable_ifIXsr3stdE12is_base_of_vI13UnorderedBaseIT_ESG_EEbE4typeELb1EEDaRSG_(ptr noundef nonnull align 8 dereferenceable(56) %9)
          to label %102 unwind label %107

102:                                              ; preds = %100
  store ptr %101, ptr %18, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %19) #7
  %103 = call ptr @_ZN12UnorderedMapIPN3cfg5BlockESt6vectorIP11SourceBlockSaIS5_EESt4hashIS2_ESt8equal_toIS2_EE17UnorderedIterable5beginEv(ptr noundef nonnull align 8 dereferenceable(8) %18)
  store ptr %103, ptr %19, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %20) #7
  %104 = call ptr @_ZN12UnorderedMapIPN3cfg5BlockESt6vectorIP11SourceBlockSaIS5_EESt4hashIS2_ESt8equal_toIS2_EE17UnorderedIterable3endEv(ptr noundef nonnull align 8 dereferenceable(8) %18)
  store ptr %104, ptr %20, align 8
  %105 = call noundef zeroext i1 @_ZNSt8__detailneERKNS_19_Node_iterator_baseISt4pairIKPN3cfg5BlockESt6vectorIP11SourceBlockSaIS8_EEELb0EEESE_(ptr noundef nonnull align 8 dereferenceable(8) %19, ptr noundef nonnull align 8 dereferenceable(8) %20) #7
  br i1 %105, label %.lr.ph59, label %._crit_edge60

._crit_edge60:                                    ; preds = %._crit_edge, %102
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #7
  %106 = call noundef zeroext i1 @_ZNKSt6vectorIPN3cfg4EdgeESaIS2_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %4) #7
  br i1 %106, label %134, label %151

107:                                              ; preds = %100
  %108 = landingpad { ptr, i32 }
          cleanup
  br label %153

.lr.ph59:                                         ; preds = %102, %._crit_edge
  %109 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNKSt8__detail14_Node_iteratorISt4pairIKPN3cfg5BlockESt6vectorIP11SourceBlockSaIS8_EEELb0ELb0EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %19) #7
  %110 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3getILm0EKPN3cfg5BlockESt6vectorIP11SourceBlockSaIS6_EEERNSt13tuple_elementIXT_ESt4pairIT0_T1_EE4typeERSD_(ptr noundef nonnull align 8 dereferenceable(32) %109) #7
  %111 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZSt3getILm1EKPN3cfg5BlockESt6vectorIP11SourceBlockSaIS6_EEERNSt13tuple_elementIXT_ESt4pairIT0_T1_EE4typeERSD_(ptr noundef nonnull align 8 dereferenceable(32) %109) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %21) #7
  %112 = load ptr, ptr %110, align 8, !tbaa !5
  invoke void @_ZN13source_blocks29find_first_block_insert_pointEPN3cfg5BlockE(ptr dead_on_unwind nonnull writable sret(%"class.boost::intrusive::list_iterator") align 8 %21, ptr noundef %112)
          to label %113 unwind label %119

113:                                              ; preds = %.lr.ph59
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %22) #7
  %114 = call ptr @_ZNSt6vectorIP11SourceBlockSaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %111) #7
  store ptr %114, ptr %22, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %23) #7
  %115 = call ptr @_ZNSt6vectorIP11SourceBlockSaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %111) #7
  store ptr %115, ptr %23, align 8
  %116 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPP11SourceBlockSt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %22, ptr noundef nonnull align 8 dereferenceable(8) %23) #7
  br i1 %116, label %.lr.ph57, label %._crit_edge

._crit_edge:                                      ; preds = %125, %113
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #7
  %117 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8__detail14_Node_iteratorISt4pairIKPN3cfg5BlockESt6vectorIP11SourceBlockSaIS8_EEELb0ELb0EEppEv(ptr noundef nonnull align 8 dereferenceable(8) %19) #7
  %118 = call noundef zeroext i1 @_ZNSt8__detailneERKNS_19_Node_iterator_baseISt4pairIKPN3cfg5BlockESt6vectorIP11SourceBlockSaIS8_EEELb0EEESE_(ptr noundef nonnull align 8 dereferenceable(8) %19, ptr noundef nonnull align 8 dereferenceable(8) %20) #7
  br i1 %118, label %.lr.ph59, label %._crit_edge60

119:                                              ; preds = %.lr.ph59
  %120 = landingpad { ptr, i32 }
          cleanup
  br label %133

.lr.ph57:                                         ; preds = %113, %125
  %121 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPP11SourceBlockSt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %22) #7
  %122 = load ptr, ptr %121, align 8, !tbaa !5
  %123 = load ptr, ptr %110, align 8, !tbaa !5
  invoke void @_ZSt11make_uniqueI11SourceBlockJRS0_EENSt8__detail9_MakeUniqIT_E15__single_objectEDpOT0_(ptr dead_on_unwind nonnull writable sret(%"class.std::unique_ptr.41") align 8 %24, ptr noundef nonnull align 8 dereferenceable(32) %122)
          to label %124 unwind label %128

124:                                              ; preds = %.lr.ph57
  invoke void @_ZN3cfg5Block13insert_beforeERKN5boost9intrusive13list_iteratorINS2_8mhtraitsI15MethodItemEntryNS2_16list_member_hookIJEEEXadL_ZNS5_10list_hook_EEEEELb0EEESt10unique_ptrI11SourceBlockSt14default_deleteISD_EE(ptr noundef nonnull align 8 dereferenceable(104) %123, ptr noundef nonnull align 8 dereferenceable(8) %21, ptr noundef nonnull %24)
          to label %125 unwind label %130

125:                                              ; preds = %124
  call void @_ZNSt10unique_ptrI11SourceBlockSt14default_deleteIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %24) #7
  %126 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPP11SourceBlockSt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %22) #7
  %127 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPP11SourceBlockSt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %22, ptr noundef nonnull align 8 dereferenceable(8) %23) #7
  br i1 %127, label %.lr.ph57, label %._crit_edge

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

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

132:                                              ; preds = %130, %128
  %.pn48 = phi { ptr, i32 } [ %131, %130 ], [ %129, %128 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #7
  br label %133

133:                                              ; preds = %132, %119
  %.pn48.pn = phi { ptr, i32 } [ %.pn48, %132 ], [ %120, %119 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #7
  br label %153

134:                                              ; preds = %._crit_edge60
  %135 = invoke noundef zeroext i1 @_Z12traceEnabled11TraceModulei(i32 noundef 140, i32 noundef 2)
          to label %136 unwind label %45

136:                                              ; preds = %134
  br i1 %135, label %137, label %138

137:                                              ; preds = %136
  invoke void (i32, i32, i1, ptr, ...) @_Z5trace11TraceModuleibPKcz(i32 noundef 140, i32 noundef 2, i1 noundef zeroext false, ptr noundef nonnull @.str.15)
          to label %138 unwind label %45

138:                                              ; preds = %136, %137
  %139 = invoke noundef zeroext i1 @_Z12traceEnabled11TraceModulei(i32 noundef 140, i32 noundef 3)
          to label %140 unwind label %45

140:                                              ; preds = %138
  br i1 %139, label %141, label %151

141:                                              ; preds = %140
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %25) #7
  %142 = load ptr, ptr %1, align 8, !tbaa !47
  invoke void @_Z4showB5cxx11RKN3cfg16ControlFlowGraphEb(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %25, ptr noundef nonnull align 8 dereferenceable(160) %142, i1 noundef zeroext false)
          to label %143 unwind label %146

143:                                              ; preds = %141
  %144 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %25) #7
  invoke void (i32, i32, i1, ptr, ...) @_Z5trace11TraceModuleibPKcz(i32 noundef 140, i32 noundef 3, i1 noundef zeroext false, ptr noundef nonnull @.str.16, ptr noundef %144)
          to label %145 unwind label %148

145:                                              ; preds = %143
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %25) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %25) #7
  br label %151

146:                                              ; preds = %141
  %147 = landingpad { ptr, i32 }
          cleanup
  br label %150

148:                                              ; preds = %143
  %149 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %25) #7
  br label %150

150:                                              ; preds = %148, %146
  %.pn46 = phi { ptr, i32 } [ %149, %148 ], [ %147, %146 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %25) #7
  br label %153

151:                                              ; preds = %140, %145, %._crit_edge60
  call void @_ZNSt6vectorIPN3cfg4EdgeESaIS2_EEC2EOS4_(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr noundef nonnull align 8 dereferenceable(24) %4) #7
  br label %152

152:                                              ; preds = %.invoke, %96, %151
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %11) #7
  call void @_ZN12UnorderedMapIPN3cfg5BlockESt6vectorIP11SourceBlockSaIS5_EESt4hashIS2_ESt8equal_toIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %9) #7
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %9) #7
  call void @_ZNSt6vectorISt4pairIPN3cfg4EdgeEPNS1_5BlockEESaIS6_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %8) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %8) #7
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %7) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %7) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %6) #7
  call void @_ZN12UnorderedMapIPN3cfg5BlockEbSt4hashIS2_ESt8equal_toIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %5) #7
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %5) #7
  call void @_ZNSt6vectorIPN3cfg4EdgeESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %4) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %4) #7
  ret void

153:                                              ; preds = %107, %133, %60, %95, %150, %47, %45
  %.pn48.pn.pn.pn = phi { ptr, i32 } [ %.pn46, %150 ], [ %46, %45 ], [ %48, %47 ], [ %.pn43, %95 ], [ %61, %60 ], [ %.pn48.pn, %133 ], [ %108, %107 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %11) #7
  br label %154

154:                                              ; preds = %153, %43
  %.pn48.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn48.pn.pn.pn, %153 ], [ %44, %43 ]
  call void @_ZN12UnorderedMapIPN3cfg5BlockESt6vectorIP11SourceBlockSaIS5_EESt4hashIS2_ESt8equal_toIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %9) #7
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %9) #7
  call void @_ZNSt6vectorISt4pairIPN3cfg4EdgeEPNS1_5BlockEESaIS6_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %8) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %8) #7
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %7) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %7) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %6) #7
  call void @_ZN12UnorderedMapIPN3cfg5BlockEbSt4hashIS2_ESt8equal_toIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %5) #7
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %5) #7
  call void @_ZNSt6vectorIPN3cfg4EdgeESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %4) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %4) #7
  resume { ptr, i32 } %.pn48.pn.pn.pn.pn
}

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare hidden noundef nonnull align 8 dereferenceable(32) ptr @"_ZNSt8functionIFbPN3cfg5BlockESt3mapIjP13IRInstructionSt4lessIjESaISt4pairIKjS5_EEERKSt6vectorIP11SourceBlockSaISF_EEEEaSIZN17SwitchEquivFinder11find_leavesES_IFbS2_EEE3$_0EENSt9enable_ifIXsrNSL_9_CallableIT_NSR_IXntsr7is_sameINSt9remove_cvINSt16remove_referenceIST_E4typeEE4typeESL_EE5valueESt5decayIST_EE4type4typeESt15__invoke_resultIRS14_JS2_SC_SJ_EEEE5valueERSL_E4typeEOST_"(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(48)) local_unnamed_addr #2 align 2

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

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

; Function Attrs: mustprogress nocallback nofree nounwind willreturn memory(argmem: write)
declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #3

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare hidden void @"_ZZN17SwitchEquivFinder11find_leavesESt8functionIFbPN3cfg5BlockEEEENK3$_2clEv"(ptr dead_on_unwind noalias writable sret(%"class.std::vector") align 8, ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #4 align 2

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

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(10) ptr @_ZNKSt8__detail14_Node_iteratorISt4pairIKPN3cfg5BlockEtELb0ELb0EEdeEv(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(24) ptr @_ZNK3cfg5Block5predsEv(ptr noundef nonnull align 8 dereferenceable(104)) local_unnamed_addr #1 align 2

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

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

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

; 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 #5

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN17SwitchEquivFinder10move_edgesERKSt6vectorISt4pairIPN3cfg4EdgeEPNS2_5BlockEESaIS7_EE(ptr noundef nonnull align 8 dereferenceable(233), ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #2 align 2

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(32) ptr @_ZNKSt8__detail14_Node_iteratorISt4pairIKPN3cfg5BlockESt6vectorIP11SourceBlockSaIS8_EEELb0ELb0EEdeEv(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 @_ZSt3getILm0EKPN3cfg5BlockESt6vectorIP11SourceBlockSaIS6_EEERNSt13tuple_elementIXT_ESt4pairIT0_T1_EE4typeERSD_(ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #1

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

declare void @_ZN13source_blocks29find_first_block_insert_pointEPN3cfg5BlockE(ptr dead_on_unwind writable sret(%"class.boost::intrusive::list_iterator") align 8, ptr noundef) local_unnamed_addr #5

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local ptr @_ZNSt6vectorIP11SourceBlockSaIS1_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_cxxneIPP11SourceBlockSt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #6

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

declare void @_ZN3cfg5Block13insert_beforeERKN5boost9intrusive13list_iteratorINS2_8mhtraitsI15MethodItemEntryNS2_16list_member_hookIJEEEXadL_ZNS5_10list_hook_EEEEELb0EEESt10unique_ptrI11SourceBlockSt14default_deleteISD_EE(ptr noundef nonnull align 8 dereferenceable(104), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) local_unnamed_addr #5

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZSt11make_uniqueI11SourceBlockJRS0_EENSt8__detail9_MakeUniqIT_E15__single_objectEDpOT0_(ptr dead_on_unwind noalias writable sret(%"class.std::unique_ptr.41") align 8, ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #4

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPP11SourceBlockSt6vectorIS2_SaIS2_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 @_ZNSt8__detail14_Node_iteratorISt4pairIKPN3cfg5BlockESt6vectorIP11SourceBlockSaIS8_EEELb0ELb0EEppEv(ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #1 align 2

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN12UnorderedMapIPN3cfg5BlockESt6vectorIP11SourceBlockSaIS5_EESt4hashIS2_ESt8equal_toIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(56)) unnamed_addr #6 align 2

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN12UnorderedMapIPN3cfg5BlockEbSt4hashIS2_ESt8equal_toIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(56)) unnamed_addr #6 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt14_Function_baseD2Ev(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 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #4 = { inlinehint mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { inlinehint mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #7 = { 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 8}
!10 = !{!"_ZTSZN17SwitchEquivFinder11find_leavesESt8functionIFbPN3cfg5BlockEEEE3$_1", !6, i64 0, !6, i64 8, !6, i64 16}
!11 = !{!12, !6, i64 8}
!12 = !{!"_ZTSZN17SwitchEquivFinder11find_leavesESt8functionIFbPN3cfg5BlockEEEE3$_0", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40}
!13 = !{!14, !6, i64 8}
!14 = !{!"_ZTSZN17SwitchEquivFinder11find_leavesESt8functionIFbPN3cfg5BlockEEEE3$_2", !6, i64 0, !6, i64 8, !6, i64 16}
!15 = !{!16, !6, i64 8}
!16 = !{!"_ZTS17SwitchEquivFinder", !6, i64 0, !6, i64 8, !17, i64 16, !17, i64 20, !18, i64 24, !21, i64 40, !22, i64 48, !24, i64 64, !25, i64 72, !34, i64 120, !40, i64 176, !24, i64 232}
!17 = !{!"int", !7, i64 0}
!18 = !{!"_ZTSSt10shared_ptrIN20constant_propagation15intraprocedural16FixpointIteratorEE", !19, i64 0}
!19 = !{!"_ZTSSt12__shared_ptrIN20constant_propagation15intraprocedural16FixpointIteratorELN9__gnu_cxx12_Lock_policyE2EE", !6, i64 0, !20, i64 8}
!20 = !{!"_ZTSSt14__shared_countILN9__gnu_cxx12_Lock_policyE2EE", !6, i64 0}
!21 = !{!"_ZTSN17SwitchEquivFinder21DuplicateCaseStrategyE", !7, i64 0}
!22 = !{!"_ZTSSt10shared_ptrI12UnorderedMapIP13IRInstruction12UnorderedSetIPN3cfg5BlockESt4hashIS6_ESt8equal_toIS6_EES7_IS2_ES9_IS2_EEE", !23, i64 0}
!23 = !{!"_ZTSSt12__shared_ptrI12UnorderedMapIP13IRInstruction12UnorderedSetIPN3cfg5BlockESt4hashIS6_ESt8equal_toIS6_EES7_IS2_ES9_IS2_EELN9__gnu_cxx12_Lock_policyE2EE", !6, i64 0, !20, i64 8}
!24 = !{!"bool", !7, i64 0}
!25 = !{!"_ZTSSt3mapIN5boost7variantIN17SwitchEquivFinder11DefaultCaseEJiPK7DexTypeEEEPN3cfg5BlockENS2_14key_comparatorESaISt4pairIKS7_SA_EEE", !26, i64 0}
!26 = !{!"_ZTSSt8_Rb_treeIN5boost7variantIN17SwitchEquivFinder11DefaultCaseEJiPK7DexTypeEEESt4pairIKS7_PN3cfg5BlockEESt10_Select1stISD_ENS2_14key_comparatorESaISD_EE", !27, i64 0}
!27 = !{!"_ZTSNSt8_Rb_treeIN5boost7variantIN17SwitchEquivFinder11DefaultCaseEJiPK7DexTypeEEESt4pairIKS7_PN3cfg5BlockEESt10_Select1stISD_ENS2_14key_comparatorESaISD_EE13_Rb_tree_implISG_Lb1EEE", !28, i64 0, !30, i64 8}
!28 = !{!"_ZTSSt20_Rb_tree_key_compareIN17SwitchEquivFinder14key_comparatorEE", !29, i64 0}
!29 = !{!"_ZTSN17SwitchEquivFinder14key_comparatorE"}
!30 = !{!"_ZTSSt15_Rb_tree_header", !31, i64 0, !33, i64 32}
!31 = !{!"_ZTSSt18_Rb_tree_node_base", !32, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!32 = !{!"_ZTSSt14_Rb_tree_color", !7, i64 0}
!33 = !{!"long", !7, i64 0}
!34 = !{!"_ZTS12UnorderedMapIPN3cfg5BlockESt3mapIjP13IRInstructionSt4lessIjESaISt4pairIKjS5_EEESt4hashIS2_ESt8equal_toIS2_EE", !35, i64 0}
!35 = !{!"_ZTSSt13unordered_mapIPN3cfg5BlockESt3mapIjP13IRInstructionSt4lessIjESaISt4pairIKjS5_EEESt4hashIS2_ESt8equal_toIS2_ESaIS8_IKS2_SC_EEE", !36, i64 0}
!36 = !{!"_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, !33, i64 8, !37, i64 16, !33, i64 24, !38, i64 32, !6, i64 48}
!37 = !{!"_ZTSNSt8__detail15_Hash_node_baseE", !6, i64 0}
!38 = !{!"_ZTSNSt8__detail20_Prime_rehash_policyE", !39, i64 0, !33, i64 8}
!39 = !{!"float", !7, i64 0}
!40 = !{!"_ZTS12UnorderedMapIPN3cfg5BlockEtSt4hashIS2_ESt8equal_toIS2_EE", !41, i64 0}
!41 = !{!"_ZTSSt13unordered_mapIPN3cfg5BlockEtSt4hashIS2_ESt8equal_toIS2_ESaISt4pairIKS2_tEEE", !42, i64 0}
!42 = !{!"_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, !33, i64 8, !37, i64 16, !33, i64 24, !38, i64 32, !6, i64 48}
!43 = !{!44, !6, i64 0}
!44 = !{!"_ZTSSt4pairIKPN3cfg5BlockEtE", !6, i64 0, !45, i64 8}
!45 = !{!"short", !7, i64 0}
!46 = !{!44, !45, i64 8}
!47 = !{!16, !6, i64 0}


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