; LLVM IR from facebook/redex :: service/regalloc-fast (LiveInterval)

; 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.UnorderedMap.101 = type { %"class.std::unordered_map.103" }
%"class.std::unordered_map.103" = type { %"class.std::_Hashtable.104" }
%"class.std::_Hashtable.104" = 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 }
%"struct.fastregalloc::LiveIntervalPoint" = type { i8, %union.anon.173 }
%union.anon.173 = type { ptr }
%"class.sparta::pt_core::PatriciaTreeIterator" = type { %"class.sparta::pt_core::PatriciaTreePostOrder" }
%"class.sparta::pt_core::PatriciaTreePostOrder" = type { %"class.boost::intrusive_ptr", %"class.std::stack", ptr }
%"class.boost::intrusive_ptr" = type { ptr }
%"class.std::stack" = type { %"class.std::deque" }
%"class.std::deque" = type { %"class.std::_Deque_base" }
%"class.std::_Deque_base" = type { %"struct.std::_Deque_base<const sparta::pt_core::PatriciaTreeBranch<unsigned int, sparta::pt_core::EmptyValue> *, std::allocator<const sparta::pt_core::PatriciaTreeBranch<unsigned int, sparta::pt_core::EmptyValue> *>>::_Deque_impl" }
%"struct.std::_Deque_base<const sparta::pt_core::PatriciaTreeBranch<unsigned int, sparta::pt_core::EmptyValue> *, std::allocator<const sparta::pt_core::PatriciaTreeBranch<unsigned int, sparta::pt_core::EmptyValue> *>>::_Deque_impl" = type { %"struct.std::_Deque_base<const sparta::pt_core::PatriciaTreeBranch<unsigned int, sparta::pt_core::EmptyValue> *, std::allocator<const sparta::pt_core::PatriciaTreeBranch<unsigned int, sparta::pt_core::EmptyValue> *>>::_Deque_impl_data" }
%"struct.std::_Deque_base<const sparta::pt_core::PatriciaTreeBranch<unsigned int, sparta::pt_core::EmptyValue> *, std::allocator<const sparta::pt_core::PatriciaTreeBranch<unsigned int, sparta::pt_core::EmptyValue> *>>::_Deque_impl_data" = type { ptr, i64, %"struct.std::_Deque_iterator", %"struct.std::_Deque_iterator" }
%"struct.std::_Deque_iterator" = type { ptr, ptr, ptr, ptr }
%"struct.std::pair.188" = type { %"struct.fastregalloc::LiveIntervalPoint", %"struct.fastregalloc::LiveIntervalPoint" }
%"struct.std::pair.193" = type <{ %"class.UnorderedMap<unsigned short, std::pair<fastregalloc::LiveIntervalPoint, fastregalloc::LiveIntervalPoint>>::FixedIterator", i8, [7 x i8] }>
%"class.UnorderedMap<unsigned short, std::pair<fastregalloc::LiveIntervalPoint, fastregalloc::LiveIntervalPoint>>::FixedIterator" = type { %"struct.std::__detail::_Node_iterator.195" }
%"struct.std::__detail::_Node_iterator.195" = type { %"struct.std::__detail::_Node_iterator_base.196" }
%"struct.std::__detail::_Node_iterator_base.196" = type { ptr }
%"class.ir_list::InstructionIterableImpl" = type { %"class.boost::intrusive::list_iterator", %"class.boost::intrusive::list_iterator" }
%"class.boost::intrusive::list_iterator" = type { %"struct.boost::intrusive::iiterator_members" }
%"struct.boost::intrusive::iiterator_members" = type { ptr }
%"class.ir_list::InstructionIteratorImpl" = type { %"class.boost::intrusive::list_iterator", %"class.boost::intrusive::list_iterator" }
%"class.cfg::InstructionIteratorImpl" = type { ptr, %"struct.std::_Rb_tree_const_iterator", %"class.ir_list::InstructionIteratorImpl" }
%"struct.std::_Rb_tree_const_iterator" = type { ptr }
%"class.std::vector.199" = type { %"struct.std::_Vector_base.200" }
%"struct.std::_Vector_base.200" = 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.__gnu_cxx::__normal_iterator.204" = type { ptr }
%"struct.std::pair.206" = type <{ %"class.UnorderedSet<unsigned short>::FixedIterator", i8, [7 x i8] }>
%"class.UnorderedSet<unsigned short>::FixedIterator" = type { %"struct.std::__detail::_Node_iterator.208" }
%"struct.std::__detail::_Node_iterator.208" = type { %"struct.std::__detail::_Node_iterator_base.209" }
%"struct.std::__detail::_Node_iterator_base.209" = type { ptr }
%"class.boost::intrusive::reverse_iterator" = type { %"class.boost::intrusive::list_iterator" }
%"class.IRInstruction::reg_range" = type { %"class.boost::iterator_range" }
%"class.boost::iterator_range" = type { %"class.boost::iterator_range_detail::iterator_range_base" }
%"class.boost::iterator_range_detail::iterator_range_base" = type { %"class.boost::iterator_range_detail::iterator_range_base.211" }
%"class.boost::iterator_range_detail::iterator_range_base.211" = type { %"class.boost::iterator_range_detail::iterator_range_base.212" }
%"class.boost::iterator_range_detail::iterator_range_base.212" = type { ptr, ptr }
%struct.MethodItemEntry = type { %"class.boost::intrusive::list_member_hook", i32, %union.anon.154 }
%"class.boost::intrusive::list_member_hook" = type { %"class.boost::intrusive::generic_hook" }
%"class.boost::intrusive::generic_hook" = type { %"struct.boost::intrusive::list_node" }
%"struct.boost::intrusive::list_node" = type { ptr, ptr }
%union.anon.154 = type { ptr }
%"struct.std::pair.213" = type { i16, %"struct.std::pair.188" }

@.str.8 = external hidden unnamed_addr constant [87 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [9 x i8], align 1
@__PRETTY_FUNCTION__._ZN12fastregalloc23get_live_range_in_blockERK24LivenessFixpointIteratorPN3cfg5BlockEP12UnorderedMapIS5_12UnorderedSetItSt4hashItESt8equal_toItEES8_IS5_ESA_IS5_EE = external hidden unnamed_addr constant [160 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: 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 @_ZN12fastregalloc23get_live_range_in_blockERK24LivenessFixpointIteratorPN3cfg5BlockEP12UnorderedMapIS5_12UnorderedSetItSt4hashItESt8equal_toItEES8_IS5_ESA_IS5_EE(ptr dead_on_unwind noalias writable sret(%class.UnorderedMap.101) align 8 %0, ptr noundef nonnull align 8 dereferenceable(256) %1, ptr noundef %2, ptr noundef %3) #1 personality ptr @__gxx_personality_v0 {
  %5 = alloca ptr, align 8
  %6 = alloca ptr, align 8
  %7 = alloca ptr, align 8
  %8 = alloca ptr, align 8
  %9 = alloca i1, align 1
  %10 = alloca ptr, align 8
  %11 = alloca ptr, align 8
  %12 = alloca i32, align 4
  %13 = alloca ptr, align 8
  %14 = alloca %"struct.fastregalloc::LiveIntervalPoint", align 8
  %15 = alloca ptr, align 8
  %16 = alloca %"class.sparta::pt_core::PatriciaTreeIterator", align 8
  %17 = alloca %"class.sparta::pt_core::PatriciaTreeIterator", align 8
  %18 = alloca i32, align 4
  %19 = alloca %"struct.std::pair.188", align 8
  %20 = alloca %"struct.fastregalloc::LiveIntervalPoint", align 8
  %21 = alloca i8, align 1
  %22 = alloca %"struct.std::pair.193", align 8
  %23 = alloca { ptr, i8 }, align 8
  %24 = alloca %"class.ir_list::InstructionIterableImpl", align 8
  %25 = alloca %"class.ir_list::InstructionIteratorImpl", align 8
  %26 = alloca %"class.ir_list::InstructionIteratorImpl", align 8
  %27 = alloca i32, align 4
  %28 = alloca ptr, align 8
  %29 = alloca i16, align 2
  %30 = alloca %"struct.fastregalloc::LiveIntervalPoint", align 8
  %31 = alloca %"class.ir_list::InstructionIteratorImpl", align 8
  %32 = alloca %"class.ir_list::InstructionIteratorImpl", align 8
  %33 = alloca %"class.ir_list::InstructionIteratorImpl", align 8
  %34 = alloca %"class.ir_list::InstructionIteratorImpl", align 8
  %35 = alloca %"class.ir_list::InstructionIteratorImpl", align 8
  %36 = alloca %"struct.std::pair.188", align 8
  %37 = alloca %"struct.fastregalloc::LiveIntervalPoint", align 8
  %38 = alloca %"struct.std::pair.193", align 8
  %39 = alloca ptr, align 8
  %40 = alloca %"class.cfg::InstructionIteratorImpl", align 8
  %41 = alloca %"class.cfg::InstructionIteratorImpl", align 8
  %42 = alloca %"class.boost::intrusive::list_iterator", align 8
  %43 = alloca ptr, align 8
  %44 = alloca ptr, align 8
  %45 = alloca %"class.std::vector.199", align 8
  %46 = alloca %"class.__gnu_cxx::__normal_iterator.204", align 8
  %47 = alloca %"class.__gnu_cxx::__normal_iterator.204", align 8
  %48 = alloca ptr, align 8
  %49 = alloca ptr, align 8
  %50 = alloca %"struct.std::pair.206", align 8
  %51 = alloca %"class.ir_list::InstructionIteratorImpl", align 8
  %52 = alloca %"struct.fastregalloc::LiveIntervalPoint", align 8
  %53 = alloca ptr, align 8
  %54 = alloca %"class.sparta::pt_core::PatriciaTreeIterator", align 8
  %55 = alloca %"class.sparta::pt_core::PatriciaTreeIterator", align 8
  %56 = alloca i32, align 4
  %57 = alloca i16, align 2
  %58 = alloca %"class.boost::intrusive::reverse_iterator", align 8
  %59 = alloca %"class.boost::intrusive::reverse_iterator", align 8
  %60 = alloca ptr, align 8
  %61 = alloca ptr, align 8
  %62 = alloca %"class.IRInstruction::reg_range", align 8
  %63 = alloca ptr, align 8
  %64 = alloca ptr, align 8
  %65 = alloca i16, align 2
  %66 = alloca %"class.UnorderedMap<unsigned short, std::pair<fastregalloc::LiveIntervalPoint, fastregalloc::LiveIntervalPoint>>::FixedIterator", align 8
  %67 = alloca %"class.UnorderedMap<unsigned short, std::pair<fastregalloc::LiveIntervalPoint, fastregalloc::LiveIntervalPoint>>::FixedIterator", align 8
  %68 = alloca %"struct.fastregalloc::LiveIntervalPoint", align 8
  store ptr %0, ptr %5, align 8
  store ptr %1, ptr %6, align 8, !tbaa !5
  store ptr %2, ptr %7, align 8, !tbaa !5
  store ptr %3, ptr %8, align 8, !tbaa !5
  store i1 false, ptr %9, align 1
  call void @_ZN12UnorderedMapItSt4pairIN12fastregalloc17LiveIntervalPointES2_ESt4hashItESt8equal_toItEEC2Ev(ptr noundef nonnull align 8 dereferenceable(56) %0)
  call void @llvm.lifetime.start.p0(i64 8, ptr %10) #8
  %69 = load ptr, ptr %6, align 8, !tbaa !5
  %70 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNK24LivenessFixpointIterator19get_live_in_vars_atERKPN3cfg5BlockE(ptr noundef nonnull align 8 dereferenceable(256) %69, ptr noundef nonnull align 8 dereferenceable(8) %7)
          to label %71 unwind label %93

71:                                               ; preds = %4
  store ptr %70, ptr %10, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %13) #8
  %72 = load ptr, ptr %6, align 8, !tbaa !5
  %73 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNK24LivenessFixpointIterator20get_live_out_vars_atERKPN3cfg5BlockE(ptr noundef nonnull align 8 dereferenceable(256) %72, ptr noundef nonnull align 8 dereferenceable(8) %7)
          to label %74 unwind label %97

74:                                               ; preds = %71
  store ptr %73, ptr %13, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %14) #8
  %75 = load ptr, ptr %7, align 8, !tbaa !5
  %76 = invoke { i8, ptr } @_ZN12fastregalloc17LiveIntervalPoint15get_block_beginEPN3cfg5BlockE(ptr noundef %75)
          to label %77 unwind label %101

77:                                               ; preds = %74
  %78 = getelementptr inbounds { i8, ptr }, ptr %14, i32 0, i32 0
  %79 = extractvalue { i8, ptr } %76, 0
  store i8 %79, ptr %78, align 8
  %80 = getelementptr inbounds { i8, ptr }, ptr %14, i32 0, i32 1
  %81 = extractvalue { i8, ptr } %76, 1
  store ptr %81, ptr %80, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #8
  %82 = load ptr, ptr %10, align 8, !tbaa !5
  %83 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK6sparta22PowersetAbstractDomainIjNS_8set_impl8SetValueINS_15PatriciaTreeSetIjEEEERKS4_NS_17SetAbstractDomainIS4_EEE8elementsEv(ptr noundef nonnull align 8 dereferenceable(16) %82)
          to label %84 unwind label %105

84:                                               ; preds = %77
  store ptr %83, ptr %15, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 96, ptr %16) #8
  %85 = load ptr, ptr %15, align 8, !tbaa !5
  invoke void @_ZNK6sparta15PatriciaTreeSetIjE5beginEv(ptr dead_on_unwind writable sret(%"class.sparta::pt_core::PatriciaTreeIterator") align 8 %16, ptr noundef nonnull align 8 dereferenceable(8) %85)
          to label %86 unwind label %109

86:                                               ; preds = %84
  call void @llvm.lifetime.start.p0(i64 96, ptr %17) #8
  %87 = load ptr, ptr %15, align 8, !tbaa !5
  invoke void @_ZNK6sparta15PatriciaTreeSetIjE3endEv(ptr dead_on_unwind writable sret(%"class.sparta::pt_core::PatriciaTreeIterator") align 8 %17, ptr noundef nonnull align 8 dereferenceable(8) %87)
          to label %88 unwind label %113

88:                                               ; preds = %86
  br label %89

89:                                               ; preds = %163, %88
  %90 = invoke noundef zeroext i1 @_ZNK6sparta7pt_core20PatriciaTreeIteratorIjNS0_10EmptyValueEEneERKS3_(ptr noundef nonnull align 8 dereferenceable(96) %16, ptr noundef nonnull align 8 dereferenceable(96) %17)
          to label %91 unwind label %117

91:                                               ; preds = %89
  br i1 %90, label %121, label %92

92:                                               ; preds = %91
  call void @_ZN6sparta7pt_core20PatriciaTreeIteratorIjNS0_10EmptyValueEED2Ev(ptr noundef nonnull align 8 dereferenceable(96) %17) #8
  call void @llvm.lifetime.end.p0(i64 96, ptr %17) #8
  call void @_ZN6sparta7pt_core20PatriciaTreeIteratorIjNS0_10EmptyValueEED2Ev(ptr noundef nonnull align 8 dereferenceable(96) %16) #8
  call void @llvm.lifetime.end.p0(i64 96, ptr %16) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #8
  br label %171

93:                                               ; preds = %4
  %94 = landingpad { ptr, i32 }
          cleanup
  %95 = extractvalue { ptr, i32 } %94, 0
  store ptr %95, ptr %11, align 8
  %96 = extractvalue { ptr, i32 } %94, 1
  store i32 %96, ptr %12, align 4
  br label %577

97:                                               ; preds = %71
  %98 = landingpad { ptr, i32 }
          cleanup
  %99 = extractvalue { ptr, i32 } %98, 0
  store ptr %99, ptr %11, align 8
  %100 = extractvalue { ptr, i32 } %98, 1
  store i32 %100, ptr %12, align 4
  br label %576

101:                                              ; preds = %74
  %102 = landingpad { ptr, i32 }
          cleanup
  %103 = extractvalue { ptr, i32 } %102, 0
  store ptr %103, ptr %11, align 8
  %104 = extractvalue { ptr, i32 } %102, 1
  store i32 %104, ptr %12, align 4
  br label %575

105:                                              ; preds = %77
  %106 = landingpad { ptr, i32 }
          cleanup
  %107 = extractvalue { ptr, i32 } %106, 0
  store ptr %107, ptr %11, align 8
  %108 = extractvalue { ptr, i32 } %106, 1
  store i32 %108, ptr %12, align 4
  br label %170

109:                                              ; preds = %84
  %110 = landingpad { ptr, i32 }
          cleanup
  %111 = extractvalue { ptr, i32 } %110, 0
  store ptr %111, ptr %11, align 8
  %112 = extractvalue { ptr, i32 } %110, 1
  store i32 %112, ptr %12, align 4
  br label %169

113:                                              ; preds = %86
  %114 = landingpad { ptr, i32 }
          cleanup
  %115 = extractvalue { ptr, i32 } %114, 0
  store ptr %115, ptr %11, align 8
  %116 = extractvalue { ptr, i32 } %114, 1
  store i32 %116, ptr %12, align 4
  br label %168

117:                                              ; preds = %161, %89
  %118 = landingpad { ptr, i32 }
          cleanup
  %119 = extractvalue { ptr, i32 } %118, 0
  store ptr %119, ptr %11, align 8
  %120 = extractvalue { ptr, i32 } %118, 1
  store i32 %120, ptr %12, align 4
  br label %167

121:                                              ; preds = %91
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #8
  %122 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNK6sparta7pt_core20PatriciaTreeIteratorIjNS0_10EmptyValueEEdeEv(ptr noundef nonnull align 8 dereferenceable(96) %16)
          to label %123 unwind label %143

123:                                              ; preds = %121
  %124 = load i32, ptr %122, align 4, !tbaa !9
  store i32 %124, ptr %18, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 32, ptr %19) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %20) #8
  %125 = invoke { i8, ptr } @_ZN12fastregalloc17LiveIntervalPoint3getEv()
          to label %126 unwind label %147

126:                                              ; preds = %123
  %127 = getelementptr inbounds { i8, ptr }, ptr %20, i32 0, i32 0
  %128 = extractvalue { i8, ptr } %125, 0
  store i8 %128, ptr %127, align 8
  %129 = getelementptr inbounds { i8, ptr }, ptr %20, i32 0, i32 1
  %130 = extractvalue { i8, ptr } %125, 1
  store ptr %130, ptr %129, align 8
  invoke void @_ZSt9make_pairIRN12fastregalloc17LiveIntervalPointES1_ESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS4_INS5_IT0_E4typeEE6__typeEEOS6_OSB_(ptr dead_on_unwind writable sret(%"struct.std::pair.188") align 8 %19, ptr noundef nonnull align 8 dereferenceable(16) %14, ptr noundef nonnull align 8 dereferenceable(16) %20)
          to label %131 unwind label %147

131:                                              ; preds = %126
  call void @llvm.lifetime.end.p0(i64 16, ptr %20) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %21) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %22) #8
  %132 = invoke { ptr, i8 } @_ZN12UnorderedMapItSt4pairIN12fastregalloc17LiveIntervalPointES2_ESt4hashItESt8equal_toItEE7emplaceIJRjRS3_EEES0_INS8_13FixedIteratorEbEDpOT_(ptr noundef nonnull align 8 dereferenceable(56) %0, ptr noundef nonnull align 4 dereferenceable(4) %18, ptr noundef nonnull align 8 dereferenceable(32) %19)
          to label %133 unwind label %151

133:                                              ; preds = %131
  store { ptr, i8 } %132, ptr %23, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %22, ptr align 8 %23, i64 9, i1 false)
  %134 = getelementptr inbounds %"struct.std::pair.193", ptr %22, i32 0, i32 1
  %135 = load i8, ptr %134, align 8, !tbaa !11, !range !17, !noundef !18
  %136 = trunc i8 %135 to i1
  call void @llvm.lifetime.end.p0(i64 16, ptr %22) #8
  %137 = zext i1 %136 to i8
  store i8 %137, ptr %21, align 1, !tbaa !19
  %138 = load i8, ptr %21, align 1, !tbaa !19, !range !17, !noundef !18
  %139 = trunc i8 %138 to i1
  br i1 %139, label %140, label %141

140:                                              ; preds = %133
  br label %160

141:                                              ; preds = %133
  invoke void (ptr, ptr, i32, ptr, i32, ptr, ...) @_Z11assert_failPKcS0_jS0_10RedexErrorS0_z(ptr noundef @.str.12, ptr noundef @.str.8, i32 noundef 105, ptr noundef @__PRETTY_FUNCTION__._ZN12fastregalloc23get_live_range_in_blockERK24LivenessFixpointIteratorPN3cfg5BlockEP12UnorderedMapIS5_12UnorderedSetItSt4hashItESt8equal_toItEES8_IS5_ESA_IS5_EE, i32 noundef 2, ptr noundef @.str.9) #9
          to label %142 unwind label %155

142:                                              ; preds = %141
  unreachable

143:                                              ; preds = %121
  %144 = landingpad { ptr, i32 }
          cleanup
  %145 = extractvalue { ptr, i32 } %144, 0
  store ptr %145, ptr %11, align 8
  %146 = extractvalue { ptr, i32 } %144, 1
  store i32 %146, ptr %12, align 4
  br label %166

147:                                              ; preds = %126, %123
  %148 = landingpad { ptr, i32 }
          cleanup
  %149 = extractvalue { ptr, i32 } %148, 0
  store ptr %149, ptr %11, align 8
  %150 = extractvalue { ptr, i32 } %148, 1
  store i32 %150, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %20) #8
  br label %165

151:                                              ; preds = %131
  %152 = landingpad { ptr, i32 }
          cleanup
  %153 = extractvalue { ptr, i32 } %152, 0
  store ptr %153, ptr %11, align 8
  %154 = extractvalue { ptr, i32 } %152, 1
  store i32 %154, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %22) #8
  br label %164

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

159:                                              ; No predecessors!
  br label %160

160:                                              ; preds = %159, %140
  call void @llvm.lifetime.end.p0(i64 1, ptr %21) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %19) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #8
  br label %161

161:                                              ; preds = %160
  %162 = invoke noundef nonnull align 8 dereferenceable(96) ptr @_ZN6sparta7pt_core20PatriciaTreeIteratorIjNS0_10EmptyValueEEppEv(ptr noundef nonnull align 8 dereferenceable(96) %16)
          to label %163 unwind label %117

163:                                              ; preds = %161
  br label %89

164:                                              ; preds = %155, %151
  call void @llvm.lifetime.end.p0(i64 1, ptr %21) #8
  br label %165

165:                                              ; preds = %164, %147
  call void @llvm.lifetime.end.p0(i64 32, ptr %19) #8
  br label %166

166:                                              ; preds = %165, %143
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #8
  br label %167

167:                                              ; preds = %166, %117
  call void @_ZN6sparta7pt_core20PatriciaTreeIteratorIjNS0_10EmptyValueEED2Ev(ptr noundef nonnull align 8 dereferenceable(96) %17) #8
  br label %168

168:                                              ; preds = %167, %113
  call void @llvm.lifetime.end.p0(i64 96, ptr %17) #8
  call void @_ZN6sparta7pt_core20PatriciaTreeIteratorIjNS0_10EmptyValueEED2Ev(ptr noundef nonnull align 8 dereferenceable(96) %16) #8
  br label %169

169:                                              ; preds = %168, %109
  call void @llvm.lifetime.end.p0(i64 96, ptr %16) #8
  br label %170

170:                                              ; preds = %169, %105
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #8
  br label %575

171:                                              ; preds = %92
  call void @llvm.lifetime.start.p0(i64 16, ptr %24) #8
  %172 = load ptr, ptr %7, align 8, !tbaa !5
  invoke void @_Z19InstructionIterableIN3cfg5BlockEEN7ir_list23InstructionIterableImplILb0EEEPT_(ptr dead_on_unwind writable sret(%"class.ir_list::InstructionIterableImpl") align 8 %24, ptr noundef %172)
          to label %173 unwind label %180

173:                                              ; preds = %171
  call void @llvm.lifetime.start.p0(i64 16, ptr %25) #8
  invoke void @_ZNK7ir_list23InstructionIterableImplILb0EE5beginEv(ptr dead_on_unwind writable sret(%"class.ir_list::InstructionIteratorImpl") align 8 %25, ptr noundef nonnull align 8 dereferenceable(16) %24)
          to label %174 unwind label %184

174:                                              ; preds = %173
  br label %175

175:                                              ; preds = %364, %174
  call void @llvm.lifetime.start.p0(i64 16, ptr %26) #8
  invoke void @_ZNK7ir_list23InstructionIterableImplILb0EE3endEv(ptr dead_on_unwind writable sret(%"class.ir_list::InstructionIteratorImpl") align 8 %26, ptr noundef nonnull align 8 dereferenceable(16) %24)
          to label %176 unwind label %188

176:                                              ; preds = %175
  %177 = invoke noundef zeroext i1 @_ZNK7ir_list23InstructionIteratorImplILb0EEneERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %25, ptr noundef nonnull align 8 dereferenceable(16) %26)
          to label %178 unwind label %188

178:                                              ; preds = %176
  call void @llvm.lifetime.end.p0(i64 16, ptr %26) #8
  br i1 %177, label %192, label %179

179:                                              ; preds = %178
  store i32 4, ptr %27, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %25) #8
  br label %377

180:                                              ; preds = %171
  %181 = landingpad { ptr, i32 }
          cleanup
  %182 = extractvalue { ptr, i32 } %181, 0
  store ptr %182, ptr %11, align 8
  %183 = extractvalue { ptr, i32 } %181, 1
  store i32 %183, ptr %12, align 4
  br label %574

184:                                              ; preds = %173
  %185 = landingpad { ptr, i32 }
          cleanup
  %186 = extractvalue { ptr, i32 } %185, 0
  store ptr %186, ptr %11, align 8
  %187 = extractvalue { ptr, i32 } %185, 1
  store i32 %187, ptr %12, align 4
  br label %376

188:                                              ; preds = %176, %175
  %189 = landingpad { ptr, i32 }
          cleanup
  %190 = extractvalue { ptr, i32 } %189, 0
  store ptr %190, ptr %11, align 8
  %191 = extractvalue { ptr, i32 } %189, 1
  store i32 %191, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %26) #8
  br label %376

192:                                              ; preds = %178
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #8
  %193 = invoke noundef ptr @_ZNK7ir_list23InstructionIteratorImplILb0EEptEv(ptr noundef nonnull align 8 dereferenceable(16) %25)
          to label %194 unwind label %201

194:                                              ; preds = %192
  %195 = getelementptr inbounds %struct.MethodItemEntry, ptr %193, i32 0, i32 2
  %196 = load ptr, ptr %195, align 8, !tbaa !20
  store ptr %196, ptr %28, align 8, !tbaa !5
  %197 = load ptr, ptr %28, align 8, !tbaa !5
  %198 = invoke noundef zeroext i1 @_ZNK13IRInstruction8has_destEv(ptr noundef nonnull align 8 dereferenceable(32) %197)
          to label %199 unwind label %201

199:                                              ; preds = %194
  br i1 %198, label %205, label %200

200:                                              ; preds = %199
  store i32 6, ptr %27, align 4
  br label %360

201:                                              ; preds = %194, %192
  %202 = landingpad { ptr, i32 }
          cleanup
  %203 = extractvalue { ptr, i32 } %202, 0
  store ptr %203, ptr %11, align 8
  %204 = extractvalue { ptr, i32 } %202, 1
  store i32 %204, ptr %12, align 4
  br label %371

205:                                              ; preds = %199
  call void @llvm.lifetime.start.p0(i64 2, ptr %29) #8
  %206 = load ptr, ptr %28, align 8, !tbaa !5
  %207 = invoke noundef i32 @_ZNK13IRInstruction4destEv(ptr noundef nonnull align 8 dereferenceable(32) %206)
          to label %208 unwind label %256

208:                                              ; preds = %205
  %209 = trunc i32 %207 to i16
  store i16 %209, ptr %29, align 2, !tbaa !21
  call void @llvm.lifetime.start.p0(i64 16, ptr %30) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %31) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %34) #8
  invoke void @_ZN7ir_list23InstructionIteratorImplILb0EEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %32, ptr noundef nonnull align 8 dereferenceable(16) %25)
          to label %210 unwind label %260

210:                                              ; preds = %208
  invoke void @_ZSt4nextIN7ir_list23InstructionIteratorImplILb0EEEET_S3_NSt15iterator_traitsIS3_E15difference_typeE(ptr dead_on_unwind writable sret(%"class.ir_list::InstructionIteratorImpl") align 8 %31, ptr noundef %32, i64 noundef 1)
          to label %211 unwind label %260

211:                                              ; preds = %210
  call void @llvm.lifetime.start.p0(i64 16, ptr %33) #8
  invoke void @_ZNK7ir_list23InstructionIterableImplILb0EE3endEv(ptr dead_on_unwind writable sret(%"class.ir_list::InstructionIteratorImpl") align 8 %33, ptr noundef nonnull align 8 dereferenceable(16) %24)
          to label %212 unwind label %264

212:                                              ; preds = %211
  %213 = invoke noundef zeroext i1 @_ZNK7ir_list23InstructionIteratorImplILb0EEeqERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %31, ptr noundef nonnull align 8 dereferenceable(16) %33)
          to label %214 unwind label %264

214:                                              ; preds = %212
  br i1 %213, label %215, label %223

215:                                              ; preds = %214
  %216 = load ptr, ptr %7, align 8, !tbaa !5
  %217 = invoke { i8, ptr } @_ZN12fastregalloc17LiveIntervalPoint13get_block_endEPN3cfg5BlockE(ptr noundef %216)
          to label %218 unwind label %264

218:                                              ; preds = %215
  %219 = getelementptr inbounds { i8, ptr }, ptr %30, i32 0, i32 0
  %220 = extractvalue { i8, ptr } %217, 0
  store i8 %220, ptr %219, align 8
  %221 = getelementptr inbounds { i8, ptr }, ptr %30, i32 0, i32 1
  %222 = extractvalue { i8, ptr } %217, 1
  store ptr %222, ptr %221, align 8
  br label %236

223:                                              ; preds = %214
  invoke void @_ZN7ir_list23InstructionIteratorImplILb0EEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %35, ptr noundef nonnull align 8 dereferenceable(16) %25)
          to label %224 unwind label %268

224:                                              ; preds = %223
  invoke void @_ZSt4nextIN7ir_list23InstructionIteratorImplILb0EEEET_S3_NSt15iterator_traitsIS3_E15difference_typeE(ptr dead_on_unwind writable sret(%"class.ir_list::InstructionIteratorImpl") align 8 %34, ptr noundef %35, i64 noundef 1)
          to label %225 unwind label %268

225:                                              ; preds = %224
  %226 = invoke noundef ptr @_ZNK7ir_list23InstructionIteratorImplILb0EEptEv(ptr noundef nonnull align 8 dereferenceable(16) %34)
          to label %227 unwind label %268

227:                                              ; preds = %225
  %228 = getelementptr inbounds %struct.MethodItemEntry, ptr %226, i32 0, i32 2
  %229 = load ptr, ptr %228, align 8, !tbaa !20
  %230 = invoke { i8, ptr } @_ZN12fastregalloc17LiveIntervalPoint3getEP13IRInstruction(ptr noundef %229)
          to label %231 unwind label %268

231:                                              ; preds = %227
  %232 = getelementptr inbounds { i8, ptr }, ptr %30, i32 0, i32 0
  %233 = extractvalue { i8, ptr } %230, 0
  store i8 %233, ptr %232, align 8
  %234 = getelementptr inbounds { i8, ptr }, ptr %30, i32 0, i32 1
  %235 = extractvalue { i8, ptr } %230, 1
  store ptr %235, ptr %234, align 8
  br label %236

236:                                              ; preds = %231, %218
  call void @llvm.lifetime.end.p0(i64 16, ptr %34) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %33) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %31) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %36) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %37) #8
  %237 = invoke { i8, ptr } @_ZN12fastregalloc17LiveIntervalPoint3getEv()
          to label %238 unwind label %274

238:                                              ; preds = %236
  %239 = getelementptr inbounds { i8, ptr }, ptr %37, i32 0, i32 0
  %240 = extractvalue { i8, ptr } %237, 0
  store i8 %240, ptr %239, align 8
  %241 = getelementptr inbounds { i8, ptr }, ptr %37, i32 0, i32 1
  %242 = extractvalue { i8, ptr } %237, 1
  store ptr %242, ptr %241, align 8
  invoke void @_ZSt9make_pairIRN12fastregalloc17LiveIntervalPointES1_ESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS4_INS5_IT0_E4typeEE6__typeEEOS6_OSB_(ptr dead_on_unwind writable sret(%"struct.std::pair.188") align 8 %36, ptr noundef nonnull align 8 dereferenceable(16) %30, ptr noundef nonnull align 8 dereferenceable(16) %37)
          to label %243 unwind label %274

243:                                              ; preds = %238
  call void @llvm.lifetime.end.p0(i64 16, ptr %37) #8
  %244 = invoke { ptr, i8 } @_ZN12UnorderedMapItSt4pairIN12fastregalloc17LiveIntervalPointES2_ESt4hashItESt8equal_toItEE7emplaceIJRtRS3_EEES0_INS8_13FixedIteratorEbEDpOT_(ptr noundef nonnull align 8 dereferenceable(56) %0, ptr noundef nonnull align 2 dereferenceable(2) %29, ptr noundef nonnull align 8 dereferenceable(32) %36)
          to label %245 unwind label %278

245:                                              ; preds = %243
  %246 = getelementptr inbounds { ptr, i8 }, ptr %38, i32 0, i32 0
  %247 = extractvalue { ptr, i8 } %244, 0
  store ptr %247, ptr %246, align 8
  %248 = getelementptr inbounds { ptr, i8 }, ptr %38, i32 0, i32 1
  %249 = extractvalue { ptr, i8 } %244, 1
  store i8 %249, ptr %248, align 8
  %250 = load ptr, ptr %28, align 8, !tbaa !5
  %251 = invoke noundef zeroext i16 @_ZNK13IRInstruction6opcodeEv(ptr noundef nonnull align 8 dereferenceable(32) %250)
          to label %252 unwind label %278

252:                                              ; preds = %245
  %253 = zext i16 %251 to i32
  %254 = icmp ne i32 %253, 164
  br i1 %254, label %255, label %282

255:                                              ; preds = %252
  store i32 6, ptr %27, align 4
  br label %359

256:                                              ; preds = %205
  %257 = landingpad { ptr, i32 }
          cleanup
  %258 = extractvalue { ptr, i32 } %257, 0
  store ptr %258, ptr %11, align 8
  %259 = extractvalue { ptr, i32 } %257, 1
  store i32 %259, ptr %12, align 4
  br label %370

260:                                              ; preds = %210, %208
  %261 = landingpad { ptr, i32 }
          cleanup
  %262 = extractvalue { ptr, i32 } %261, 0
  store ptr %262, ptr %11, align 8
  %263 = extractvalue { ptr, i32 } %261, 1
  store i32 %263, ptr %12, align 4
  br label %273

264:                                              ; preds = %215, %212, %211
  %265 = landingpad { ptr, i32 }
          cleanup
  %266 = extractvalue { ptr, i32 } %265, 0
  store ptr %266, ptr %11, align 8
  %267 = extractvalue { ptr, i32 } %265, 1
  store i32 %267, ptr %12, align 4
  br label %272

268:                                              ; preds = %227, %225, %224, %223
  %269 = landingpad { ptr, i32 }
          cleanup
  %270 = extractvalue { ptr, i32 } %269, 0
  store ptr %270, ptr %11, align 8
  %271 = extractvalue { ptr, i32 } %269, 1
  store i32 %271, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %34) #8
  br label %272

272:                                              ; preds = %268, %264
  call void @llvm.lifetime.end.p0(i64 16, ptr %33) #8
  br label %273

273:                                              ; preds = %272, %260
  call void @llvm.lifetime.end.p0(i64 16, ptr %31) #8
  br label %369

274:                                              ; preds = %238, %236
  %275 = landingpad { ptr, i32 }
          cleanup
  %276 = extractvalue { ptr, i32 } %275, 0
  store ptr %276, ptr %11, align 8
  %277 = extractvalue { ptr, i32 } %275, 1
  store i32 %277, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %37) #8
  br label %368

278:                                              ; preds = %245, %243
  %279 = landingpad { ptr, i32 }
          cleanup
  %280 = extractvalue { ptr, i32 } %279, 0
  store ptr %280, ptr %11, align 8
  %281 = extractvalue { ptr, i32 } %279, 1
  store i32 %281, ptr %12, align 4
  br label %368

282:                                              ; preds = %252
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #8
  %283 = load ptr, ptr %7, align 8, !tbaa !5
  %284 = invoke noundef nonnull align 8 dereferenceable(160) ptr @_ZNK3cfg5Block3cfgEv(ptr noundef nonnull align 8 dereferenceable(104) %283)
          to label %285 unwind label %300

285:                                              ; preds = %282
  store ptr %284, ptr %39, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %40) #8
  %286 = load ptr, ptr %39, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %41) #8
  %287 = load ptr, ptr %7, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #8
  invoke void @_ZNK7ir_list23InstructionIteratorImplILb0EE6unwrapEv(ptr dead_on_unwind writable sret(%"class.boost::intrusive::list_iterator") align 8 %42, ptr noundef nonnull align 8 dereferenceable(16) %25)
          to label %288 unwind label %304

288:                                              ; preds = %285
  invoke void @_ZN3cfg5Block27to_cfg_instruction_iteratorERKN5boost9intrusive13list_iteratorINS2_8mhtraitsI15MethodItemEntryNS2_16list_member_hookIJEEEXadL_ZNS5_10list_hook_EEEEELb0EEEb(ptr dead_on_unwind writable sret(%"class.cfg::InstructionIteratorImpl") align 8 %41, ptr noundef nonnull align 8 dereferenceable(104) %287, ptr noundef nonnull align 8 dereferenceable(8) %42, i1 noundef zeroext false)
          to label %289 unwind label %304

289:                                              ; preds = %288
  invoke void @_ZN3cfg16ControlFlowGraph34primary_instruction_of_move_resultERKNS_23InstructionIteratorImplILb0EEE(ptr dead_on_unwind writable sret(%"class.cfg::InstructionIteratorImpl") align 8 %40, ptr noundef nonnull align 8 dereferenceable(160) %286, ptr noundef nonnull align 8 dereferenceable(32) %41)
          to label %290 unwind label %304

290:                                              ; preds = %289
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %41) #8
  %291 = invoke noundef ptr @_ZNK3cfg23InstructionIteratorImplILb0EEptEv(ptr noundef nonnull align 8 dereferenceable(32) %40)
          to label %292 unwind label %308

292:                                              ; preds = %290
  %293 = getelementptr inbounds %struct.MethodItemEntry, ptr %291, i32 0, i32 2
  %294 = load ptr, ptr %293, align 8, !tbaa !20
  %295 = invoke noundef zeroext i16 @_ZNK13IRInstruction6opcodeEv(ptr noundef nonnull align 8 dereferenceable(32) %294)
          to label %296 unwind label %308

296:                                              ; preds = %292
  %297 = zext i16 %295 to i32
  %298 = icmp ne i32 %297, 18
  br i1 %298, label %299, label %312

299:                                              ; preds = %296
  store i32 6, ptr %27, align 4
  br label %358

300:                                              ; preds = %282
  %301 = landingpad { ptr, i32 }
          cleanup
  %302 = extractvalue { ptr, i32 } %301, 0
  store ptr %302, ptr %11, align 8
  %303 = extractvalue { ptr, i32 } %301, 1
  store i32 %303, ptr %12, align 4
  br label %367

304:                                              ; preds = %289, %288, %285
  %305 = landingpad { ptr, i32 }
          cleanup
  %306 = extractvalue { ptr, i32 } %305, 0
  store ptr %306, ptr %11, align 8
  %307 = extractvalue { ptr, i32 } %305, 1
  store i32 %307, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %41) #8
  br label %366

308:                                              ; preds = %292, %290
  %309 = landingpad { ptr, i32 }
          cleanup
  %310 = extractvalue { ptr, i32 } %309, 0
  store ptr %310, ptr %11, align 8
  %311 = extractvalue { ptr, i32 } %309, 1
  store i32 %311, ptr %12, align 4
  br label %366

312:                                              ; preds = %296
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #8
  %313 = invoke noundef ptr @_ZNK3cfg23InstructionIteratorImplILb0EE5blockEv(ptr noundef nonnull align 8 dereferenceable(32) %40)
          to label %314 unwind label %327

314:                                              ; preds = %312
  store ptr %313, ptr %43, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr %45) #8
  %315 = load ptr, ptr %39, align 8, !tbaa !5
  %316 = load ptr, ptr %43, align 8, !tbaa !5
  invoke void @_ZNK3cfg16ControlFlowGraph22get_succ_edges_of_typeEPKNS_5BlockENS_8EdgeTypeE(ptr dead_on_unwind writable sret(%"class.std::vector.199") align 8 %45, ptr noundef nonnull align 8 dereferenceable(160) %315, ptr noundef %316, i8 noundef zeroext 2)
          to label %317 unwind label %331

317:                                              ; preds = %314
  store ptr %45, ptr %44, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #8
  %318 = load ptr, ptr %44, align 8, !tbaa !5
  %319 = call ptr @_ZNSt6vectorIPN3cfg4EdgeESaIS2_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %318) #8
  %320 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.204", ptr %46, i32 0, i32 0
  store ptr %319, ptr %320, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %47) #8
  %321 = load ptr, ptr %44, align 8, !tbaa !5
  %322 = call ptr @_ZNSt6vectorIPN3cfg4EdgeESaIS2_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %321) #8
  %323 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.204", ptr %47, i32 0, i32 0
  store ptr %322, ptr %323, align 8
  br label %324

324:                                              ; preds = %350, %317
  %325 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPPN3cfg4EdgeESt6vectorIS3_SaIS3_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %46, ptr noundef nonnull align 8 dereferenceable(8) %47) #8
  br i1 %325, label %335, label %326

326:                                              ; preds = %324
  store i32 7, ptr %27, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #8
  call void @_ZNSt6vectorIPN3cfg4EdgeESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %45) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %45) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #8
  br label %357

327:                                              ; preds = %312
  %328 = landingpad { ptr, i32 }
          cleanup
  %329 = extractvalue { ptr, i32 } %328, 0
  store ptr %329, ptr %11, align 8
  %330 = extractvalue { ptr, i32 } %328, 1
  store i32 %330, ptr %12, align 4
  br label %365

331:                                              ; preds = %314
  %332 = landingpad { ptr, i32 }
          cleanup
  %333 = extractvalue { ptr, i32 } %332, 0
  store ptr %333, ptr %11, align 8
  %334 = extractvalue { ptr, i32 } %332, 1
  store i32 %334, ptr %12, align 4
  br label %356

335:                                              ; preds = %324
  call void @llvm.lifetime.start.p0(i64 8, ptr %48) #8
  %336 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPPN3cfg4EdgeESt6vectorIS3_SaIS3_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %46) #8
  %337 = load ptr, ptr %336, align 8, !tbaa !5
  store ptr %337, ptr %48, align 8, !tbaa !5
  %338 = load ptr, ptr %8, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %49) #8
  %339 = load ptr, ptr %48, align 8, !tbaa !5
  %340 = invoke noundef ptr @_ZNK3cfg4Edge6targetEv(ptr noundef nonnull align 8 dereferenceable(32) %339)
          to label %341 unwind label %352

341:                                              ; preds = %335
  store ptr %340, ptr %49, align 8, !tbaa !5
  %342 = invoke noundef nonnull align 8 dereferenceable(56) ptr @_ZN12UnorderedMapIPN3cfg5BlockE12UnorderedSetItSt4hashItESt8equal_toItEES4_IS2_ES6_IS2_EEixEOS2_(ptr noundef nonnull align 8 dereferenceable(56) %338, ptr noundef nonnull align 8 dereferenceable(8) %49)
          to label %343 unwind label %352

343:                                              ; preds = %341
  %344 = invoke { ptr, i8 } @_ZN12UnorderedSetItSt4hashItESt8equal_toItEE6insertERKt(ptr noundef nonnull align 8 dereferenceable(56) %342, ptr noundef nonnull align 2 dereferenceable(2) %29)
          to label %345 unwind label %352

345:                                              ; preds = %343
  %346 = getelementptr inbounds { ptr, i8 }, ptr %50, i32 0, i32 0
  %347 = extractvalue { ptr, i8 } %344, 0
  store ptr %347, ptr %346, align 8
  %348 = getelementptr inbounds { ptr, i8 }, ptr %50, i32 0, i32 1
  %349 = extractvalue { ptr, i8 } %344, 1
  store i8 %349, ptr %348, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #8
  br label %350

350:                                              ; preds = %345
  %351 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPPN3cfg4EdgeESt6vectorIS3_SaIS3_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %46) #8
  br label %324

352:                                              ; preds = %343, %341, %335
  %353 = landingpad { ptr, i32 }
          cleanup
  %354 = extractvalue { ptr, i32 } %353, 0
  store ptr %354, ptr %11, align 8
  %355 = extractvalue { ptr, i32 } %353, 1
  store i32 %355, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #8
  call void @_ZNSt6vectorIPN3cfg4EdgeESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %45) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %45) #8
  br label %356

356:                                              ; preds = %352, %331
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #8
  br label %365

357:                                              ; preds = %326
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #8
  store i32 0, ptr %27, align 4
  br label %358

358:                                              ; preds = %357, %299
  call void @llvm.lifetime.end.p0(i64 32, ptr %40) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #8
  br label %359

359:                                              ; preds = %358, %255
  call void @llvm.lifetime.end.p0(i64 32, ptr %36) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %30) #8
  call void @llvm.lifetime.end.p0(i64 2, ptr %29) #8
  br label %360

360:                                              ; preds = %359, %200
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #8
  %361 = load i32, ptr %27, align 4
  switch i32 %361, label %585 [
    i32 0, label %362
    i32 6, label %363
  ]

362:                                              ; preds = %360
  br label %363

363:                                              ; preds = %362, %360
  call void @llvm.lifetime.start.p0(i64 16, ptr %51) #8
  invoke void @_ZN7ir_list23InstructionIteratorImplILb0EEppEi(ptr dead_on_unwind writable sret(%"class.ir_list::InstructionIteratorImpl") align 8 %51, ptr noundef nonnull align 8 dereferenceable(16) %25, i32 noundef 0)
          to label %364 unwind label %372

364:                                              ; preds = %363
  call void @llvm.lifetime.end.p0(i64 16, ptr %51) #8
  br label %175, !llvm.loop !23

365:                                              ; preds = %356, %327
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #8
  br label %366

366:                                              ; preds = %365, %308, %304
  call void @llvm.lifetime.end.p0(i64 32, ptr %40) #8
  br label %367

367:                                              ; preds = %366, %300
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #8
  br label %368

368:                                              ; preds = %367, %278, %274
  call void @llvm.lifetime.end.p0(i64 32, ptr %36) #8
  br label %369

369:                                              ; preds = %368, %273
  call void @llvm.lifetime.end.p0(i64 16, ptr %30) #8
  br label %370

370:                                              ; preds = %369, %256
  call void @llvm.lifetime.end.p0(i64 2, ptr %29) #8
  br label %371

371:                                              ; preds = %370, %201
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #8
  br label %376

372:                                              ; preds = %363
  %373 = landingpad { ptr, i32 }
          cleanup
  %374 = extractvalue { ptr, i32 } %373, 0
  store ptr %374, ptr %11, align 8
  %375 = extractvalue { ptr, i32 } %373, 1
  store i32 %375, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %51) #8
  br label %376

376:                                              ; preds = %372, %371, %188, %184
  call void @llvm.lifetime.end.p0(i64 16, ptr %25) #8
  br label %574

377:                                              ; preds = %179
  call void @llvm.lifetime.start.p0(i64 16, ptr %52) #8
  %378 = load ptr, ptr %7, align 8, !tbaa !5
  %379 = invoke { i8, ptr } @_ZN12fastregalloc17LiveIntervalPoint13get_block_endEPN3cfg5BlockE(ptr noundef %378)
          to label %380 unwind label %396

380:                                              ; preds = %377
  %381 = getelementptr inbounds { i8, ptr }, ptr %52, i32 0, i32 0
  %382 = extractvalue { i8, ptr } %379, 0
  store i8 %382, ptr %381, align 8
  %383 = getelementptr inbounds { i8, ptr }, ptr %52, i32 0, i32 1
  %384 = extractvalue { i8, ptr } %379, 1
  store ptr %384, ptr %383, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %53) #8
  %385 = load ptr, ptr %13, align 8, !tbaa !5
  %386 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK6sparta22PowersetAbstractDomainIjNS_8set_impl8SetValueINS_15PatriciaTreeSetIjEEEERKS4_NS_17SetAbstractDomainIS4_EEE8elementsEv(ptr noundef nonnull align 8 dereferenceable(16) %385)
          to label %387 unwind label %400

387:                                              ; preds = %380
  store ptr %386, ptr %53, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 96, ptr %54) #8
  %388 = load ptr, ptr %53, align 8, !tbaa !5
  invoke void @_ZNK6sparta15PatriciaTreeSetIjE5beginEv(ptr dead_on_unwind writable sret(%"class.sparta::pt_core::PatriciaTreeIterator") align 8 %54, ptr noundef nonnull align 8 dereferenceable(8) %388)
          to label %389 unwind label %404

389:                                              ; preds = %387
  call void @llvm.lifetime.start.p0(i64 96, ptr %55) #8
  %390 = load ptr, ptr %53, align 8, !tbaa !5
  invoke void @_ZNK6sparta15PatriciaTreeSetIjE3endEv(ptr dead_on_unwind writable sret(%"class.sparta::pt_core::PatriciaTreeIterator") align 8 %55, ptr noundef nonnull align 8 dereferenceable(8) %390)
          to label %391 unwind label %408

391:                                              ; preds = %389
  br label %392

392:                                              ; preds = %427, %391
  %393 = invoke noundef zeroext i1 @_ZNK6sparta7pt_core20PatriciaTreeIteratorIjNS0_10EmptyValueEEneERKS3_(ptr noundef nonnull align 8 dereferenceable(96) %54, ptr noundef nonnull align 8 dereferenceable(96) %55)
          to label %394 unwind label %412

394:                                              ; preds = %392
  br i1 %393, label %416, label %395

395:                                              ; preds = %394
  store i32 9, ptr %27, align 4
  call void @_ZN6sparta7pt_core20PatriciaTreeIteratorIjNS0_10EmptyValueEED2Ev(ptr noundef nonnull align 8 dereferenceable(96) %55) #8
  call void @llvm.lifetime.end.p0(i64 96, ptr %55) #8
  call void @_ZN6sparta7pt_core20PatriciaTreeIteratorIjNS0_10EmptyValueEED2Ev(ptr noundef nonnull align 8 dereferenceable(96) %54) #8
  call void @llvm.lifetime.end.p0(i64 96, ptr %54) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #8
  br label %441

396:                                              ; preds = %377
  %397 = landingpad { ptr, i32 }
          cleanup
  %398 = extractvalue { ptr, i32 } %397, 0
  store ptr %398, ptr %11, align 8
  %399 = extractvalue { ptr, i32 } %397, 1
  store i32 %399, ptr %12, align 4
  br label %573

400:                                              ; preds = %380
  %401 = landingpad { ptr, i32 }
          cleanup
  %402 = extractvalue { ptr, i32 } %401, 0
  store ptr %402, ptr %11, align 8
  %403 = extractvalue { ptr, i32 } %401, 1
  store i32 %403, ptr %12, align 4
  br label %440

404:                                              ; preds = %387
  %405 = landingpad { ptr, i32 }
          cleanup
  %406 = extractvalue { ptr, i32 } %405, 0
  store ptr %406, ptr %11, align 8
  %407 = extractvalue { ptr, i32 } %405, 1
  store i32 %407, ptr %12, align 4
  br label %439

408:                                              ; preds = %389
  %409 = landingpad { ptr, i32 }
          cleanup
  %410 = extractvalue { ptr, i32 } %409, 0
  store ptr %410, ptr %11, align 8
  %411 = extractvalue { ptr, i32 } %409, 1
  store i32 %411, ptr %12, align 4
  br label %438

412:                                              ; preds = %425, %392
  %413 = landingpad { ptr, i32 }
          cleanup
  %414 = extractvalue { ptr, i32 } %413, 0
  store ptr %414, ptr %11, align 8
  %415 = extractvalue { ptr, i32 } %413, 1
  store i32 %415, ptr %12, align 4
  br label %437

416:                                              ; preds = %394
  call void @llvm.lifetime.start.p0(i64 4, ptr %56) #8
  %417 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNK6sparta7pt_core20PatriciaTreeIteratorIjNS0_10EmptyValueEEdeEv(ptr noundef nonnull align 8 dereferenceable(96) %54)
          to label %418 unwind label %428

418:                                              ; preds = %416
  %419 = load i32, ptr %417, align 4, !tbaa !9
  store i32 %419, ptr %56, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 2, ptr %57) #8
  %420 = load i32, ptr %56, align 4, !tbaa !9
  %421 = trunc i32 %420 to i16
  store i16 %421, ptr %57, align 2, !tbaa !21
  %422 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN12UnorderedMapItSt4pairIN12fastregalloc17LiveIntervalPointES2_ESt4hashItESt8equal_toItEE2atERKt(ptr noundef nonnull align 8 dereferenceable(56) %0, ptr noundef nonnull align 2 dereferenceable(2) %57)
          to label %423 unwind label %432

423:                                              ; preds = %418
  %424 = getelementptr inbounds %"struct.std::pair.188", ptr %422, i32 0, i32 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %424, ptr align 8 %52, i64 16, i1 false), !tbaa.struct !25
  call void @llvm.lifetime.end.p0(i64 2, ptr %57) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %56) #8
  br label %425

425:                                              ; preds = %423
  %426 = invoke noundef nonnull align 8 dereferenceable(96) ptr @_ZN6sparta7pt_core20PatriciaTreeIteratorIjNS0_10EmptyValueEEppEv(ptr noundef nonnull align 8 dereferenceable(96) %54)
          to label %427 unwind label %412

427:                                              ; preds = %425
  br label %392

428:                                              ; preds = %416
  %429 = landingpad { ptr, i32 }
          cleanup
  %430 = extractvalue { ptr, i32 } %429, 0
  store ptr %430, ptr %11, align 8
  %431 = extractvalue { ptr, i32 } %429, 1
  store i32 %431, ptr %12, align 4
  br label %436

432:                                              ; preds = %418
  %433 = landingpad { ptr, i32 }
          cleanup
  %434 = extractvalue { ptr, i32 } %433, 0
  store ptr %434, ptr %11, align 8
  %435 = extractvalue { ptr, i32 } %433, 1
  store i32 %435, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 2, ptr %57) #8
  br label %436

436:                                              ; preds = %432, %428
  call void @llvm.lifetime.end.p0(i64 4, ptr %56) #8
  br label %437

437:                                              ; preds = %436, %412
  call void @_ZN6sparta7pt_core20PatriciaTreeIteratorIjNS0_10EmptyValueEED2Ev(ptr noundef nonnull align 8 dereferenceable(96) %55) #8
  br label %438

438:                                              ; preds = %437, %408
  call void @llvm.lifetime.end.p0(i64 96, ptr %55) #8
  call void @_ZN6sparta7pt_core20PatriciaTreeIteratorIjNS0_10EmptyValueEED2Ev(ptr noundef nonnull align 8 dereferenceable(96) %54) #8
  br label %439

439:                                              ; preds = %438, %404
  call void @llvm.lifetime.end.p0(i64 96, ptr %54) #8
  br label %440

440:                                              ; preds = %439, %400
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #8
  br label %573

441:                                              ; preds = %395
  call void @llvm.lifetime.start.p0(i64 8, ptr %58) #8
  %442 = load ptr, ptr %7, align 8, !tbaa !5
  invoke void @_ZN3cfg5Block6rbeginEv(ptr dead_on_unwind writable sret(%"class.boost::intrusive::reverse_iterator") align 8 %58, ptr noundef nonnull align 8 dereferenceable(104) %442)
          to label %443 unwind label %450

443:                                              ; preds = %441
  br label %444

444:                                              ; preds = %568, %443
  call void @llvm.lifetime.start.p0(i64 8, ptr %59) #8
  %445 = load ptr, ptr %7, align 8, !tbaa !5
  invoke void @_ZN3cfg5Block4rendEv(ptr dead_on_unwind writable sret(%"class.boost::intrusive::reverse_iterator") align 8 %59, ptr noundef nonnull align 8 dereferenceable(104) %445)
          to label %446 unwind label %454

446:                                              ; preds = %444
  %447 = invoke noundef zeroext i1 @_ZN5boost9intrusiveneERKNS0_16reverse_iteratorINS0_13list_iteratorINS0_8mhtraitsI15MethodItemEntryNS0_16list_member_hookIJEEEXadL_ZNS4_10list_hook_EEEEELb0EEEEESB_(ptr noundef nonnull align 8 dereferenceable(8) %58, ptr noundef nonnull align 8 dereferenceable(8) %59)
          to label %448 unwind label %454

448:                                              ; preds = %446
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #8
  br i1 %447, label %458, label %449

449:                                              ; preds = %448
  store i32 11, ptr %27, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #8
  br label %571

450:                                              ; preds = %566, %458, %441
  %451 = landingpad { ptr, i32 }
          cleanup
  %452 = extractvalue { ptr, i32 } %451, 0
  store ptr %452, ptr %11, align 8
  %453 = extractvalue { ptr, i32 } %451, 1
  store i32 %453, ptr %12, align 4
  br label %570

454:                                              ; preds = %446, %444
  %455 = landingpad { ptr, i32 }
          cleanup
  %456 = extractvalue { ptr, i32 } %455, 0
  store ptr %456, ptr %11, align 8
  %457 = extractvalue { ptr, i32 } %455, 1
  store i32 %457, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #8
  br label %570

458:                                              ; preds = %448
  %459 = invoke noundef ptr @_ZNK5boost9intrusive16reverse_iteratorINS0_13list_iteratorINS0_8mhtraitsI15MethodItemEntryNS0_16list_member_hookIJEEEXadL_ZNS4_10list_hook_EEEEELb0EEEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %58)
          to label %460 unwind label %450

460:                                              ; preds = %458
  %461 = getelementptr inbounds %struct.MethodItemEntry, ptr %459, i32 0, i32 1
  %462 = load i32, ptr %461, align 8, !tbaa !28
  %463 = icmp ne i32 %462, 2
  br i1 %463, label %464, label %465

464:                                              ; preds = %460
  br label %566

465:                                              ; preds = %460
  call void @llvm.lifetime.start.p0(i64 8, ptr %60) #8
  %466 = invoke noundef ptr @_ZNK5boost9intrusive16reverse_iteratorINS0_13list_iteratorINS0_8mhtraitsI15MethodItemEntryNS0_16list_member_hookIJEEEXadL_ZNS4_10list_hook_EEEEELb0EEEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %58)
          to label %467 unwind label %492

467:                                              ; preds = %465
  %468 = getelementptr inbounds %struct.MethodItemEntry, ptr %466, i32 0, i32 2
  %469 = load ptr, ptr %468, align 8, !tbaa !20
  store ptr %469, ptr %60, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %61) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %62) #8
  %470 = load ptr, ptr %60, align 8, !tbaa !5
  %471 = invoke { ptr, ptr } @_ZNK13IRInstruction4srcsEv(ptr noundef nonnull align 8 dereferenceable(32) %470)
          to label %472 unwind label %496

472:                                              ; preds = %467
  %473 = getelementptr inbounds %"class.IRInstruction::reg_range", ptr %62, i32 0, i32 0
  %474 = getelementptr inbounds %"class.boost::iterator_range", ptr %473, i32 0, i32 0
  %475 = getelementptr inbounds %"class.boost::iterator_range_detail::iterator_range_base", ptr %474, i32 0, i32 0
  %476 = getelementptr inbounds %"class.boost::iterator_range_detail::iterator_range_base.211", ptr %475, i32 0, i32 0
  %477 = getelementptr inbounds { ptr, ptr }, ptr %476, i32 0, i32 0
  %478 = extractvalue { ptr, ptr } %471, 0
  store ptr %478, ptr %477, align 8
  %479 = getelementptr inbounds { ptr, ptr }, ptr %476, i32 0, i32 1
  %480 = extractvalue { ptr, ptr } %471, 1
  store ptr %480, ptr %479, align 8
  store ptr %62, ptr %61, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %63) #8
  %481 = load ptr, ptr %61, align 8, !tbaa !5
  %482 = invoke noundef ptr @_ZNK5boost21iterator_range_detail19iterator_range_baseIPKjNS_9iterators27incrementable_traversal_tagEE5beginEv(ptr noundef nonnull align 8 dereferenceable(16) %481)
          to label %483 unwind label %500

483:                                              ; preds = %472
  store ptr %482, ptr %63, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %64) #8
  %484 = load ptr, ptr %61, align 8, !tbaa !5
  %485 = invoke noundef ptr @_ZNK5boost21iterator_range_detail19iterator_range_baseIPKjNS_9iterators27incrementable_traversal_tagEE3endEv(ptr noundef nonnull align 8 dereferenceable(16) %484)
          to label %486 unwind label %504

486:                                              ; preds = %483
  store ptr %485, ptr %64, align 8, !tbaa !5
  br label %487

487:                                              ; preds = %558, %486
  %488 = load ptr, ptr %63, align 8, !tbaa !5
  %489 = load ptr, ptr %64, align 8, !tbaa !5
  %490 = icmp ne ptr %488, %489
  br i1 %490, label %508, label %491

491:                                              ; preds = %487
  store i32 14, ptr %27, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %62) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #8
  br label %565

492:                                              ; preds = %465
  %493 = landingpad { ptr, i32 }
          cleanup
  %494 = extractvalue { ptr, i32 } %493, 0
  store ptr %494, ptr %11, align 8
  %495 = extractvalue { ptr, i32 } %493, 1
  store i32 %495, ptr %12, align 4
  br label %569

496:                                              ; preds = %467
  %497 = landingpad { ptr, i32 }
          cleanup
  %498 = extractvalue { ptr, i32 } %497, 0
  store ptr %498, ptr %11, align 8
  %499 = extractvalue { ptr, i32 } %497, 1
  store i32 %499, ptr %12, align 4
  br label %564

500:                                              ; preds = %472
  %501 = landingpad { ptr, i32 }
          cleanup
  %502 = extractvalue { ptr, i32 } %501, 0
  store ptr %502, ptr %11, align 8
  %503 = extractvalue { ptr, i32 } %501, 1
  store i32 %503, ptr %12, align 4
  br label %563

504:                                              ; preds = %483
  %505 = landingpad { ptr, i32 }
          cleanup
  %506 = extractvalue { ptr, i32 } %505, 0
  store ptr %506, ptr %11, align 8
  %507 = extractvalue { ptr, i32 } %505, 1
  store i32 %507, ptr %12, align 4
  br label %562

508:                                              ; preds = %487
  call void @llvm.lifetime.start.p0(i64 2, ptr %65) #8
  %509 = load ptr, ptr %63, align 8, !tbaa !5
  %510 = load i32, ptr %509, align 4, !tbaa !9
  %511 = trunc i32 %510 to i16
  store i16 %511, ptr %65, align 2, !tbaa !21
  call void @llvm.lifetime.start.p0(i64 8, ptr %66) #8
  %512 = invoke ptr @_ZN12UnorderedMapItSt4pairIN12fastregalloc17LiveIntervalPointES2_ESt4hashItESt8equal_toItEE4findERKt(ptr noundef nonnull align 8 dereferenceable(56) %0, ptr noundef nonnull align 2 dereferenceable(2) %65)
          to label %513 unwind label %545

513:                                              ; preds = %508
  %514 = getelementptr inbounds %"class.UnorderedMap<unsigned short, std::pair<fastregalloc::LiveIntervalPoint, fastregalloc::LiveIntervalPoint>>::FixedIterator", ptr %66, i32 0, i32 0
  %515 = getelementptr inbounds %"struct.std::__detail::_Node_iterator.195", ptr %514, i32 0, i32 0
  %516 = getelementptr inbounds %"struct.std::__detail::_Node_iterator_base.196", ptr %515, i32 0, i32 0
  store ptr %512, ptr %516, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %67) #8
  %517 = invoke ptr @_ZN12UnorderedMapItSt4pairIN12fastregalloc17LiveIntervalPointES2_ESt4hashItESt8equal_toItEE3endEv(ptr noundef nonnull align 8 dereferenceable(56) %0)
          to label %518 unwind label %549

518:                                              ; preds = %513
  %519 = getelementptr inbounds %"class.UnorderedMap<unsigned short, std::pair<fastregalloc::LiveIntervalPoint, fastregalloc::LiveIntervalPoint>>::FixedIterator", ptr %67, i32 0, i32 0
  %520 = getelementptr inbounds %"struct.std::__detail::_Node_iterator.195", ptr %519, i32 0, i32 0
  %521 = getelementptr inbounds %"struct.std::__detail::_Node_iterator_base.196", ptr %520, i32 0, i32 0
  store ptr %517, ptr %521, align 8
  %522 = invoke noundef zeroext i1 @_ZNK12UnorderedMapItSt4pairIN12fastregalloc17LiveIntervalPointES2_ESt4hashItESt8equal_toItEE13FixedIteratorneERKS9_(ptr noundef nonnull align 8 dereferenceable(8) %66, ptr noundef nonnull align 8 dereferenceable(8) %67)
          to label %523 unwind label %549

523:                                              ; preds = %518
  br i1 %522, label %524, label %531

524:                                              ; preds = %523
  %525 = invoke noundef ptr @_ZNK12UnorderedMapItSt4pairIN12fastregalloc17LiveIntervalPointES2_ESt4hashItESt8equal_toItEE13FixedIteratorptEv(ptr noundef nonnull align 8 dereferenceable(8) %66)
          to label %526 unwind label %549

526:                                              ; preds = %524
  %527 = getelementptr inbounds %"struct.std::pair.213", ptr %525, i32 0, i32 1
  %528 = getelementptr inbounds %"struct.std::pair.188", ptr %527, i32 0, i32 1
  %529 = invoke noundef zeroext i1 @_ZNK12fastregalloc17LiveIntervalPoint10is_missingEv(ptr noundef nonnull align 8 dereferenceable(16) %528)
          to label %530 unwind label %549

530:                                              ; preds = %526
  br label %531

531:                                              ; preds = %530, %523
  %532 = phi i1 [ false, %523 ], [ %529, %530 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #8
  br i1 %532, label %533, label %557

533:                                              ; preds = %531
  call void @llvm.lifetime.start.p0(i64 16, ptr %68) #8
  %534 = load ptr, ptr %60, align 8, !tbaa !5
  %535 = invoke { i8, ptr } @_ZN12fastregalloc17LiveIntervalPoint3getEP13IRInstruction(ptr noundef %534)
          to label %536 unwind label %553

536:                                              ; preds = %533
  %537 = getelementptr inbounds { i8, ptr }, ptr %68, i32 0, i32 0
  %538 = extractvalue { i8, ptr } %535, 0
  store i8 %538, ptr %537, align 8
  %539 = getelementptr inbounds { i8, ptr }, ptr %68, i32 0, i32 1
  %540 = extractvalue { i8, ptr } %535, 1
  store ptr %540, ptr %539, align 8
  %541 = invoke noundef ptr @_ZNK12UnorderedMapItSt4pairIN12fastregalloc17LiveIntervalPointES2_ESt4hashItESt8equal_toItEE13FixedIteratorptEv(ptr noundef nonnull align 8 dereferenceable(8) %66)
          to label %542 unwind label %553

542:                                              ; preds = %536
  %543 = getelementptr inbounds %"struct.std::pair.213", ptr %541, i32 0, i32 1
  %544 = getelementptr inbounds %"struct.std::pair.188", ptr %543, i32 0, i32 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %544, ptr align 8 %68, i64 16, i1 false), !tbaa.struct !25
  call void @llvm.lifetime.end.p0(i64 16, ptr %68) #8
  br label %557

545:                                              ; preds = %508
  %546 = landingpad { ptr, i32 }
          cleanup
  %547 = extractvalue { ptr, i32 } %546, 0
  store ptr %547, ptr %11, align 8
  %548 = extractvalue { ptr, i32 } %546, 1
  store i32 %548, ptr %12, align 4
  br label %561

549:                                              ; preds = %526, %524, %518, %513
  %550 = landingpad { ptr, i32 }
          cleanup
  %551 = extractvalue { ptr, i32 } %550, 0
  store ptr %551, ptr %11, align 8
  %552 = extractvalue { ptr, i32 } %550, 1
  store i32 %552, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #8
  br label %561

553:                                              ; preds = %536, %533
  %554 = landingpad { ptr, i32 }
          cleanup
  %555 = extractvalue { ptr, i32 } %554, 0
  store ptr %555, ptr %11, align 8
  %556 = extractvalue { ptr, i32 } %554, 1
  store i32 %556, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %68) #8
  br label %561

557:                                              ; preds = %542, %531
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #8
  call void @llvm.lifetime.end.p0(i64 2, ptr %65) #8
  br label %558

558:                                              ; preds = %557
  %559 = load ptr, ptr %63, align 8, !tbaa !5
  %560 = getelementptr inbounds i32, ptr %559, i32 1
  store ptr %560, ptr %63, align 8, !tbaa !5
  br label %487

561:                                              ; preds = %553, %549, %545
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #8
  call void @llvm.lifetime.end.p0(i64 2, ptr %65) #8
  br label %562

562:                                              ; preds = %561, %504
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #8
  br label %563

563:                                              ; preds = %562, %500
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %62) #8
  br label %564

564:                                              ; preds = %563, %496
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #8
  br label %569

565:                                              ; preds = %491
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #8
  br label %566

566:                                              ; preds = %565, %464
  %567 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN5boost9intrusive16reverse_iteratorINS0_13list_iteratorINS0_8mhtraitsI15MethodItemEntryNS0_16list_member_hookIJEEEXadL_ZNS4_10list_hook_EEEEELb0EEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %58)
          to label %568 unwind label %450

568:                                              ; preds = %566
  br label %444, !llvm.loop !34

569:                                              ; preds = %564, %492
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #8
  br label %570

570:                                              ; preds = %569, %454, %450
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #8
  br label %573

571:                                              ; preds = %449
  store i1 true, ptr %9, align 1
  store i32 1, ptr %27, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %52) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %24) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %14) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #8
  %572 = load i1, ptr %9, align 1
  br i1 %572, label %579, label %578

573:                                              ; preds = %570, %440, %396
  call void @llvm.lifetime.end.p0(i64 16, ptr %52) #8
  br label %574

574:                                              ; preds = %573, %376, %180
  call void @llvm.lifetime.end.p0(i64 16, ptr %24) #8
  br label %575

575:                                              ; preds = %574, %170, %101
  call void @llvm.lifetime.end.p0(i64 16, ptr %14) #8
  br label %576

576:                                              ; preds = %575, %97
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #8
  br label %577

577:                                              ; preds = %576, %93
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #8
  call void @_ZN12UnorderedMapItSt4pairIN12fastregalloc17LiveIntervalPointES2_ESt4hashItESt8equal_toItEED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %0) #8
  br label %580

578:                                              ; preds = %571
  call void @_ZN12UnorderedMapItSt4pairIN12fastregalloc17LiveIntervalPointES2_ESt4hashItESt8equal_toItEED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %0) #8
  br label %579

579:                                              ; preds = %578, %571
  ret void

580:                                              ; preds = %577
  %581 = load ptr, ptr %11, align 8
  %582 = load i32, ptr %12, align 4
  %583 = insertvalue { ptr, i32 } poison, ptr %581, 0
  %584 = insertvalue { ptr, i32 } %583, i32 %582, 1
  resume { ptr, i32 } %584

585:                                              ; preds = %360
  unreachable
}

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_Z19InstructionIterableIN3cfg5BlockEEN7ir_list23InstructionIterableImplILb0EEEPT_(ptr dead_on_unwind noalias writable sret(%"class.ir_list::InstructionIterableImpl") align 8, ptr noundef) #3

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK7ir_list23InstructionIterableImplILb0EE5beginEv(ptr dead_on_unwind noalias writable sret(%"class.ir_list::InstructionIteratorImpl") align 8, ptr noundef nonnull align 8 dereferenceable(16)) #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK7ir_list23InstructionIterableImplILb0EE3endEv(ptr dead_on_unwind noalias writable sret(%"class.ir_list::InstructionIteratorImpl") align 8, ptr noundef nonnull align 8 dereferenceable(16)) #1 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local { i8, ptr } @_ZN12fastregalloc17LiveIntervalPoint3getEP13IRInstruction(ptr noundef) #4 align 2

; Function Attrs: mustprogress uwtable
declare dso_local { i8, ptr } @_ZN12fastregalloc17LiveIntervalPoint13get_block_endEPN3cfg5BlockE(ptr noundef) #1 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK12fastregalloc17LiveIntervalPoint10is_missingEv(ptr noundef nonnull align 8 dereferenceable(16)) #4 align 2

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local { i8, ptr } @_ZN12fastregalloc17LiveIntervalPoint15get_block_beginEPN3cfg5BlockE(ptr noundef) #1 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK6sparta15PatriciaTreeSetIjE5beginEv(ptr dead_on_unwind noalias writable sret(%"class.sparta::pt_core::PatriciaTreeIterator") align 8, ptr noundef nonnull align 8 dereferenceable(8)) #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK6sparta15PatriciaTreeSetIjE3endEv(ptr dead_on_unwind noalias writable sret(%"class.sparta::pt_core::PatriciaTreeIterator") align 8, ptr noundef nonnull align 8 dereferenceable(8)) #1 align 2

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZSt9make_pairIRN12fastregalloc17LiveIntervalPointES1_ESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS4_INS5_IT0_E4typeEE6__typeEEOS6_OSB_(ptr dead_on_unwind noalias writable sret(%"struct.std::pair.188") align 8, ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(16)) #1

; Function Attrs: mustprogress nounwind uwtable
declare dso_local { i8, ptr } @_ZN12fastregalloc17LiveIntervalPoint3getEv() #4 align 2

; Function Attrs: mustprogress uwtable
declare dso_local { ptr, i8 } @_ZN12UnorderedMapItSt4pairIN12fastregalloc17LiveIntervalPointES2_ESt4hashItESt8equal_toItEE7emplaceIJRjRS3_EEES0_INS8_13FixedIteratorEbEDpOT_(ptr noundef nonnull align 8 dereferenceable(56), ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 8 dereferenceable(32)) #1 align 2

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZSt4nextIN7ir_list23InstructionIteratorImplILb0EEEET_S3_NSt15iterator_traitsIS3_E15difference_typeE(ptr dead_on_unwind noalias writable sret(%"class.ir_list::InstructionIteratorImpl") align 8, ptr noundef, i64 noundef) #3

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

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

; Function Attrs: mustprogress uwtable
declare dso_local { ptr, i8 } @_ZN12UnorderedMapItSt4pairIN12fastregalloc17LiveIntervalPointES2_ESt4hashItESt8equal_toItEE7emplaceIJRtRS3_EEES0_INS8_13FixedIteratorEbEDpOT_(ptr noundef nonnull align 8 dereferenceable(56), ptr noundef nonnull align 2 dereferenceable(2), ptr noundef nonnull align 8 dereferenceable(32)) #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i16 @_ZNK13IRInstruction6opcodeEv(ptr noundef nonnull align 8 dereferenceable(32)) #4 align 2

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

declare void @_ZN3cfg16ControlFlowGraph34primary_instruction_of_move_resultERKNS_23InstructionIteratorImplILb0EEE(ptr dead_on_unwind writable sret(%"class.cfg::InstructionIteratorImpl") align 8, ptr noundef nonnull align 8 dereferenceable(160), ptr noundef nonnull align 8 dereferenceable(32)) #7

declare void @_ZN3cfg5Block27to_cfg_instruction_iteratorERKN5boost9intrusive13list_iteratorINS2_8mhtraitsI15MethodItemEntryNS2_16list_member_hookIJEEEXadL_ZNS5_10list_hook_EEEEELb0EEEb(ptr dead_on_unwind writable sret(%"class.cfg::InstructionIteratorImpl") align 8, ptr noundef nonnull align 8 dereferenceable(104), ptr noundef nonnull align 8 dereferenceable(8), i1 noundef zeroext) #7

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK7ir_list23InstructionIteratorImplILb0EE6unwrapEv(ptr dead_on_unwind noalias writable sret(%"class.boost::intrusive::list_iterator") align 8, ptr noundef nonnull align 8 dereferenceable(16)) #1 align 2

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

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

declare void @_ZNK3cfg16ControlFlowGraph22get_succ_edges_of_typeEPKNS_5BlockENS_8EdgeTypeE(ptr dead_on_unwind writable sret(%"class.std::vector.199") align 8, ptr noundef nonnull align 8 dereferenceable(160), ptr noundef, i8 noundef zeroext) #7

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local { ptr, i8 } @_ZN12UnorderedSetItSt4hashItESt8equal_toItEE6insertERKt(ptr noundef nonnull align 8 dereferenceable(56), ptr noundef nonnull align 2 dereferenceable(2)) #1 align 2

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7ir_list23InstructionIteratorImplILb0EEppEi(ptr dead_on_unwind noalias writable sret(%"class.ir_list::InstructionIteratorImpl") align 8, ptr noundef nonnull align 8 dereferenceable(16), i32 noundef) #1 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3cfg5Block6rbeginEv(ptr dead_on_unwind noalias writable sret(%"class.boost::intrusive::reverse_iterator") align 8, ptr noundef nonnull align 8 dereferenceable(104)) #1 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3cfg5Block4rendEv(ptr dead_on_unwind noalias writable sret(%"class.boost::intrusive::reverse_iterator") align 8, ptr noundef nonnull align 8 dereferenceable(104)) #1 align 2

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

declare { ptr, ptr } @_ZNK13IRInstruction4srcsEv(ptr noundef nonnull align 8 dereferenceable(32)) #7

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

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

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

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

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

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!12, !16, i64 8}
!12 = !{!"_ZTSSt4pairIN12UnorderedMapItS_IN12fastregalloc17LiveIntervalPointES2_ESt4hashItESt8equal_toItEE13FixedIteratorEbE", !13, i64 0, !16, i64 8}
!13 = !{!"_ZTSN12UnorderedMapItSt4pairIN12fastregalloc17LiveIntervalPointES2_ESt4hashItESt8equal_toItEE13FixedIteratorE", !14, i64 0}
!14 = !{!"_ZTSNSt8__detail14_Node_iteratorISt4pairIKtS1_IN12fastregalloc17LiveIntervalPointES4_EELb0ELb0EEE", !15, i64 0}
!15 = !{!"_ZTSNSt8__detail19_Node_iterator_baseISt4pairIKtS1_IN12fastregalloc17LiveIntervalPointES4_EELb0EEE", !6, i64 0}
!16 = !{!"bool", !7, i64 0}
!17 = !{i8 0, i8 2}
!18 = !{}
!19 = !{!16, !16, i64 0}
!20 = !{!7, !7, i64 0}
!21 = !{!22, !22, i64 0}
!22 = !{!"short", !7, i64 0}
!23 = distinct !{!23, !24}
!24 = !{!"llvm.loop.mustprogress"}
!25 = !{i64 0, i64 1, !26, i64 8, i64 8, !20}
!26 = !{!27, !27, i64 0}
!27 = !{!"_ZTSN12fastregalloc17LiveIntervalPoint4KindE", !7, i64 0}
!28 = !{!29, !33, i64 16}
!29 = !{!"_ZTS15MethodItemEntry", !30, i64 0, !33, i64 16, !7, i64 24}
!30 = !{!"_ZTSN5boost9intrusive16list_member_hookIJEEE", !31, i64 0}
!31 = !{!"_ZTSN5boost9intrusive12generic_hookILNS0_10algo_typesE0ENS0_16list_node_traitsIPvEENS0_10member_tagELNS0_14link_mode_typeE1ELNS0_14base_hook_typeE0EEE", !32, i64 0}
!32 = !{!"_ZTSN5boost9intrusive9list_nodeIPvEE", !6, i64 0, !6, i64 8}
!33 = !{!"_ZTS14MethodItemType", !7, i64 0}
!34 = distinct !{!34, !24}


; 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.UnorderedMap.101 = type { %"class.std::unordered_map.103" }
%"class.std::unordered_map.103" = type { %"class.std::_Hashtable.104" }
%"class.std::_Hashtable.104" = 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 }
%"struct.fastregalloc::LiveIntervalPoint" = type { i8, %union.anon.173 }
%union.anon.173 = type { ptr }
%"class.sparta::pt_core::PatriciaTreeIterator" = type { %"class.sparta::pt_core::PatriciaTreePostOrder" }
%"class.sparta::pt_core::PatriciaTreePostOrder" = type { %"class.boost::intrusive_ptr", %"class.std::stack", ptr }
%"class.boost::intrusive_ptr" = type { ptr }
%"class.std::stack" = type { %"class.std::deque" }
%"class.std::deque" = type { %"class.std::_Deque_base" }
%"class.std::_Deque_base" = type { %"struct.std::_Deque_base<const sparta::pt_core::PatriciaTreeBranch<unsigned int, sparta::pt_core::EmptyValue> *, std::allocator<const sparta::pt_core::PatriciaTreeBranch<unsigned int, sparta::pt_core::EmptyValue> *>>::_Deque_impl" }
%"struct.std::_Deque_base<const sparta::pt_core::PatriciaTreeBranch<unsigned int, sparta::pt_core::EmptyValue> *, std::allocator<const sparta::pt_core::PatriciaTreeBranch<unsigned int, sparta::pt_core::EmptyValue> *>>::_Deque_impl" = type { %"struct.std::_Deque_base<const sparta::pt_core::PatriciaTreeBranch<unsigned int, sparta::pt_core::EmptyValue> *, std::allocator<const sparta::pt_core::PatriciaTreeBranch<unsigned int, sparta::pt_core::EmptyValue> *>>::_Deque_impl_data" }
%"struct.std::_Deque_base<const sparta::pt_core::PatriciaTreeBranch<unsigned int, sparta::pt_core::EmptyValue> *, std::allocator<const sparta::pt_core::PatriciaTreeBranch<unsigned int, sparta::pt_core::EmptyValue> *>>::_Deque_impl_data" = type { ptr, i64, %"struct.std::_Deque_iterator", %"struct.std::_Deque_iterator" }
%"struct.std::_Deque_iterator" = type { ptr, ptr, ptr, ptr }
%"struct.std::pair.188" = type { %"struct.fastregalloc::LiveIntervalPoint", %"struct.fastregalloc::LiveIntervalPoint" }
%"class.ir_list::InstructionIterableImpl" = type { %"class.boost::intrusive::list_iterator", %"class.boost::intrusive::list_iterator" }
%"class.boost::intrusive::list_iterator" = type { %"struct.boost::intrusive::iiterator_members" }
%"struct.boost::intrusive::iiterator_members" = type { ptr }
%"class.ir_list::InstructionIteratorImpl" = type { %"class.boost::intrusive::list_iterator", %"class.boost::intrusive::list_iterator" }
%"class.cfg::InstructionIteratorImpl" = type { ptr, %"struct.std::_Rb_tree_const_iterator", %"class.ir_list::InstructionIteratorImpl" }
%"struct.std::_Rb_tree_const_iterator" = type { ptr }
%"class.std::vector.199" = type { %"struct.std::_Vector_base.200" }
%"struct.std::_Vector_base.200" = 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.__gnu_cxx::__normal_iterator.204" = type { ptr }
%"class.boost::intrusive::reverse_iterator" = type { %"class.boost::intrusive::list_iterator" }
%"class.IRInstruction::reg_range" = type { %"class.boost::iterator_range" }
%"class.boost::iterator_range" = type { %"class.boost::iterator_range_detail::iterator_range_base" }
%"class.boost::iterator_range_detail::iterator_range_base" = type { %"class.boost::iterator_range_detail::iterator_range_base.211" }
%"class.boost::iterator_range_detail::iterator_range_base.211" = type { %"class.boost::iterator_range_detail::iterator_range_base.212" }
%"class.boost::iterator_range_detail::iterator_range_base.212" = type { ptr, ptr }
%"class.UnorderedMap<unsigned short, std::pair<fastregalloc::LiveIntervalPoint, fastregalloc::LiveIntervalPoint>>::FixedIterator" = type { %"struct.std::__detail::_Node_iterator.195" }
%"struct.std::__detail::_Node_iterator.195" = type { %"struct.std::__detail::_Node_iterator_base.196" }
%"struct.std::__detail::_Node_iterator_base.196" = type { ptr }

@.str.8 = external hidden unnamed_addr constant [87 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [9 x i8], align 1
@__PRETTY_FUNCTION__._ZN12fastregalloc23get_live_range_in_blockERK24LivenessFixpointIteratorPN3cfg5BlockEP12UnorderedMapIS5_12UnorderedSetItSt4hashItESt8equal_toItEES8_IS5_ESA_IS5_EE = external hidden unnamed_addr constant [160 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 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 @_ZN12fastregalloc23get_live_range_in_blockERK24LivenessFixpointIteratorPN3cfg5BlockEP12UnorderedMapIS5_12UnorderedSetItSt4hashItESt8equal_toItEES8_IS5_ESA_IS5_EE(ptr dead_on_unwind noalias nonnull writable sret(%class.UnorderedMap.101) align 8 %0, ptr noundef nonnull align 8 dereferenceable(256) %1, ptr noundef %2, ptr noundef %3) local_unnamed_addr #1 personality ptr @__gxx_personality_v0 {
  %5 = alloca ptr, align 8
  %6 = alloca %"struct.fastregalloc::LiveIntervalPoint", align 8
  %7 = alloca %"class.sparta::pt_core::PatriciaTreeIterator", align 8
  %8 = alloca %"class.sparta::pt_core::PatriciaTreeIterator", align 8
  %9 = alloca i32, align 4
  %10 = alloca %"struct.std::pair.188", align 8
  %11 = alloca %"struct.fastregalloc::LiveIntervalPoint", align 8
  %12 = alloca %"class.ir_list::InstructionIterableImpl", align 8
  %13 = alloca %"class.ir_list::InstructionIteratorImpl", align 8
  %14 = alloca %"class.ir_list::InstructionIteratorImpl", align 8
  %15 = alloca i16, align 2
  %16 = alloca %"struct.fastregalloc::LiveIntervalPoint", align 8
  %17 = alloca %"class.ir_list::InstructionIteratorImpl", align 8
  %18 = alloca %"class.ir_list::InstructionIteratorImpl", align 8
  %19 = alloca %"class.ir_list::InstructionIteratorImpl", align 8
  %20 = alloca %"class.ir_list::InstructionIteratorImpl", align 8
  %21 = alloca %"class.ir_list::InstructionIteratorImpl", align 8
  %22 = alloca %"struct.std::pair.188", align 8
  %23 = alloca %"struct.fastregalloc::LiveIntervalPoint", align 8
  %24 = alloca %"class.cfg::InstructionIteratorImpl", align 8
  %25 = alloca %"class.cfg::InstructionIteratorImpl", align 8
  %26 = alloca %"class.boost::intrusive::list_iterator", align 8
  %27 = alloca %"class.std::vector.199", align 8
  %28 = alloca %"class.__gnu_cxx::__normal_iterator.204", align 8
  %29 = alloca %"class.__gnu_cxx::__normal_iterator.204", align 8
  %30 = alloca ptr, align 8
  %31 = alloca %"class.ir_list::InstructionIteratorImpl", align 8
  %32 = alloca %"class.sparta::pt_core::PatriciaTreeIterator", align 8
  %33 = alloca %"class.sparta::pt_core::PatriciaTreeIterator", align 8
  %34 = alloca i16, align 2
  %35 = alloca %"class.boost::intrusive::reverse_iterator", align 8
  %36 = alloca %"class.boost::intrusive::reverse_iterator", align 8
  %37 = alloca %"class.IRInstruction::reg_range", align 8
  %38 = alloca i16, align 2
  %39 = alloca %"class.UnorderedMap<unsigned short, std::pair<fastregalloc::LiveIntervalPoint, fastregalloc::LiveIntervalPoint>>::FixedIterator", align 8
  %40 = alloca %"class.UnorderedMap<unsigned short, std::pair<fastregalloc::LiveIntervalPoint, fastregalloc::LiveIntervalPoint>>::FixedIterator", align 8
  store ptr %2, ptr %5, align 8, !tbaa !5
  tail call void @_ZN12UnorderedMapItSt4pairIN12fastregalloc17LiveIntervalPointES2_ESt4hashItESt8equal_toItEEC2Ev(ptr noundef nonnull align 8 dereferenceable(56) %0)
  %41 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNK24LivenessFixpointIterator19get_live_in_vars_atERKPN3cfg5BlockE(ptr noundef nonnull align 8 dereferenceable(256) %1, ptr noundef nonnull align 8 dereferenceable(8) %5)
          to label %42 unwind label %60

42:                                               ; preds = %4
  %43 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNK24LivenessFixpointIterator20get_live_out_vars_atERKPN3cfg5BlockE(ptr noundef nonnull align 8 dereferenceable(256) %1, ptr noundef nonnull align 8 dereferenceable(8) %5)
          to label %44 unwind label %62

44:                                               ; preds = %42
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %6) #7
  %45 = load ptr, ptr %5, align 8, !tbaa !5
  %46 = invoke { i8, ptr } @_ZN12fastregalloc17LiveIntervalPoint15get_block_beginEPN3cfg5BlockE(ptr noundef %45)
          to label %47 unwind label %64

47:                                               ; preds = %44
  %48 = extractvalue { i8, ptr } %46, 0
  store i8 %48, ptr %6, align 8
  %49 = getelementptr inbounds i8, ptr %6, i64 8
  %50 = extractvalue { i8, ptr } %46, 1
  store ptr %50, ptr %49, align 8
  %51 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK6sparta22PowersetAbstractDomainIjNS_8set_impl8SetValueINS_15PatriciaTreeSetIjEEEERKS4_NS_17SetAbstractDomainIS4_EEE8elementsEv(ptr noundef nonnull align 8 dereferenceable(16) %41)
          to label %52 unwind label %66

52:                                               ; preds = %47
  call void @llvm.lifetime.start.p0(i64 96, ptr nonnull %7) #7
  invoke void @_ZNK6sparta15PatriciaTreeSetIjE5beginEv(ptr dead_on_unwind nonnull writable sret(%"class.sparta::pt_core::PatriciaTreeIterator") align 8 %7, ptr noundef nonnull align 8 dereferenceable(8) %51)
          to label %53 unwind label %68

53:                                               ; preds = %52
  call void @llvm.lifetime.start.p0(i64 96, ptr nonnull %8) #7
  invoke void @_ZNK6sparta15PatriciaTreeSetIjE3endEv(ptr dead_on_unwind nonnull writable sret(%"class.sparta::pt_core::PatriciaTreeIterator") align 8 %8, ptr noundef nonnull align 8 dereferenceable(8) %51)
          to label %.preheader117 unwind label %70

.preheader117:                                    ; preds = %53
  %54 = getelementptr inbounds i8, ptr %11, i64 8
  br label %55

55:                                               ; preds = %.preheader117, %95
  %56 = invoke noundef zeroext i1 @_ZNK6sparta7pt_core20PatriciaTreeIteratorIjNS0_10EmptyValueEEneERKS3_(ptr noundef nonnull align 8 dereferenceable(96) %7, ptr noundef nonnull align 8 dereferenceable(96) %8)
          to label %57 unwind label %72

57:                                               ; preds = %55
  br i1 %56, label %74, label %58

58:                                               ; preds = %57
  call void @_ZN6sparta7pt_core20PatriciaTreeIteratorIjNS0_10EmptyValueEED2Ev(ptr noundef nonnull align 8 dereferenceable(96) %8) #7
  call void @llvm.lifetime.end.p0(i64 96, ptr nonnull %8) #7
  call void @_ZN6sparta7pt_core20PatriciaTreeIteratorIjNS0_10EmptyValueEED2Ev(ptr noundef nonnull align 8 dereferenceable(96) %7) #7
  call void @llvm.lifetime.end.p0(i64 96, ptr nonnull %7) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %12) #7
  %59 = load ptr, ptr %5, align 8, !tbaa !5
  invoke void @_Z19InstructionIterableIN3cfg5BlockEEN7ir_list23InstructionIterableImplILb0EEEPT_(ptr dead_on_unwind nonnull writable sret(%"class.ir_list::InstructionIterableImpl") align 8 %12, ptr noundef %59)
          to label %102 unwind label %112

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

62:                                               ; preds = %42
  %63 = landingpad { ptr, i32 }
          cleanup
  br label %315

64:                                               ; preds = %44
  %65 = landingpad { ptr, i32 }
          cleanup
  br label %314

66:                                               ; preds = %47
  %67 = landingpad { ptr, i32 }
          cleanup
  br label %314

68:                                               ; preds = %52
  %69 = landingpad { ptr, i32 }
          cleanup
  br label %101

70:                                               ; preds = %53
  %71 = landingpad { ptr, i32 }
          cleanup
  br label %100

72:                                               ; preds = %95, %55
  %73 = landingpad { ptr, i32 }
          cleanup
  br label %99

74:                                               ; preds = %57
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %9) #7
  %75 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNK6sparta7pt_core20PatriciaTreeIteratorIjNS0_10EmptyValueEEdeEv(ptr noundef nonnull align 8 dereferenceable(96) %7)
          to label %76 unwind label %87

76:                                               ; preds = %74
  %77 = load i32, ptr %75, align 4, !tbaa !9
  store i32 %77, ptr %9, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %10) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %11) #7
  %78 = call { i8, ptr } @_ZN12fastregalloc17LiveIntervalPoint3getEv()
  %79 = extractvalue { i8, ptr } %78, 0
  store i8 %79, ptr %11, align 8
  %80 = extractvalue { i8, ptr } %78, 1
  store ptr %80, ptr %54, align 8
  invoke void @_ZSt9make_pairIRN12fastregalloc17LiveIntervalPointES1_ESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS4_INS5_IT0_E4typeEE6__typeEEOS6_OSB_(ptr dead_on_unwind nonnull writable sret(%"struct.std::pair.188") align 8 %10, ptr noundef nonnull align 8 dereferenceable(16) %6, ptr noundef nonnull align 8 dereferenceable(16) %11)
          to label %81 unwind label %89

81:                                               ; preds = %76
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %11) #7
  %82 = invoke { ptr, i8 } @_ZN12UnorderedMapItSt4pairIN12fastregalloc17LiveIntervalPointES2_ESt4hashItESt8equal_toItEE7emplaceIJRjRS3_EEES0_INS8_13FixedIteratorEbEDpOT_(ptr noundef nonnull align 8 dereferenceable(56) %0, ptr noundef nonnull align 4 dereferenceable(4) %9, ptr noundef nonnull align 8 dereferenceable(32) %10)
          to label %83 unwind label %91

83:                                               ; preds = %81
  %.fca.1.extract = extractvalue { ptr, i8 } %82, 1
  %84 = trunc i8 %.fca.1.extract to i1
  br i1 %84, label %95, label %85

85:                                               ; preds = %83
  invoke void (ptr, ptr, i32, ptr, i32, ptr, ...) @_Z11assert_failPKcS0_jS0_10RedexErrorS0_z(ptr noundef nonnull @.str.12, ptr noundef nonnull @.str.8, i32 noundef 105, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN12fastregalloc23get_live_range_in_blockERK24LivenessFixpointIteratorPN3cfg5BlockEP12UnorderedMapIS5_12UnorderedSetItSt4hashItESt8equal_toItEES8_IS5_ESA_IS5_EE, i32 noundef 2, ptr noundef nonnull @.str.9) #8
          to label %86 unwind label %93

86:                                               ; preds = %85
  unreachable

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

89:                                               ; preds = %76
  %90 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %11) #7
  br label %97

91:                                               ; preds = %81
  %92 = landingpad { ptr, i32 }
          cleanup
  br label %97

93:                                               ; preds = %85
  %94 = landingpad { ptr, i32 }
          cleanup
  br label %97

95:                                               ; preds = %83
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %10) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %9) #7
  %96 = invoke noundef nonnull align 8 dereferenceable(96) ptr @_ZN6sparta7pt_core20PatriciaTreeIteratorIjNS0_10EmptyValueEEppEv(ptr noundef nonnull align 8 dereferenceable(96) %7)
          to label %55 unwind label %72

97:                                               ; preds = %91, %93, %89
  %.pn103.pn = phi { ptr, i32 } [ %90, %89 ], [ %94, %93 ], [ %92, %91 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %10) #7
  br label %98

98:                                               ; preds = %97, %87
  %.pn103.pn.pn = phi { ptr, i32 } [ %.pn103.pn, %97 ], [ %88, %87 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %9) #7
  br label %99

99:                                               ; preds = %98, %72
  %.pn107 = phi { ptr, i32 } [ %73, %72 ], [ %.pn103.pn.pn, %98 ]
  call void @_ZN6sparta7pt_core20PatriciaTreeIteratorIjNS0_10EmptyValueEED2Ev(ptr noundef nonnull align 8 dereferenceable(96) %8) #7
  br label %100

100:                                              ; preds = %99, %70
  %.pn107.pn = phi { ptr, i32 } [ %.pn107, %99 ], [ %71, %70 ]
  call void @llvm.lifetime.end.p0(i64 96, ptr nonnull %8) #7
  call void @_ZN6sparta7pt_core20PatriciaTreeIteratorIjNS0_10EmptyValueEED2Ev(ptr noundef nonnull align 8 dereferenceable(96) %7) #7
  br label %101

101:                                              ; preds = %100, %68
  %.pn107.pn.pn = phi { ptr, i32 } [ %.pn107.pn, %100 ], [ %69, %68 ]
  call void @llvm.lifetime.end.p0(i64 96, ptr nonnull %7) #7
  br label %314

102:                                              ; preds = %58
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %13) #7
  invoke void @_ZNK7ir_list23InstructionIterableImplILb0EE5beginEv(ptr dead_on_unwind nonnull writable sret(%"class.ir_list::InstructionIteratorImpl") align 8 %13, ptr noundef nonnull align 8 dereferenceable(16) %12)
          to label %.preheader116 unwind label %114

.preheader116:                                    ; preds = %102
  %103 = getelementptr inbounds i8, ptr %16, i64 8
  %104 = getelementptr inbounds i8, ptr %23, i64 8
  br label %105

105:                                              ; preds = %.preheader116, %213
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %14) #7
  invoke void @_ZNK7ir_list23InstructionIterableImplILb0EE3endEv(ptr dead_on_unwind nonnull writable sret(%"class.ir_list::InstructionIteratorImpl") align 8 %14, ptr noundef nonnull align 8 dereferenceable(16) %12)
          to label %106 unwind label %116

106:                                              ; preds = %105
  %107 = invoke noundef zeroext i1 @_ZNK7ir_list23InstructionIteratorImplILb0EEneERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %13, ptr noundef nonnull align 8 dereferenceable(16) %14)
          to label %108 unwind label %116

108:                                              ; preds = %106
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %14) #7
  br i1 %107, label %118, label %109

109:                                              ; preds = %108
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %13) #7
  %110 = load ptr, ptr %5, align 8, !tbaa !5
  %111 = invoke { i8, ptr } @_ZN12fastregalloc17LiveIntervalPoint13get_block_endEPN3cfg5BlockE(ptr noundef %110)
          to label %221 unwind label %232

112:                                              ; preds = %58
  %113 = landingpad { ptr, i32 }
          cleanup
  br label %313

114:                                              ; preds = %102
  %115 = landingpad { ptr, i32 }
          cleanup
  br label %220

116:                                              ; preds = %106, %105
  %117 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %14) #7
  br label %220

118:                                              ; preds = %108
  %119 = invoke noundef ptr @_ZNK7ir_list23InstructionIteratorImplILb0EEptEv(ptr noundef nonnull align 8 dereferenceable(16) %13)
          to label %120 unwind label %125

120:                                              ; preds = %118
  %121 = getelementptr inbounds i8, ptr %119, i64 24
  %122 = load ptr, ptr %121, align 8, !tbaa !11
  %123 = invoke noundef zeroext i1 @_ZNK13IRInstruction8has_destEv(ptr noundef nonnull align 8 dereferenceable(32) %122)
          to label %124 unwind label %125

124:                                              ; preds = %120
  br i1 %123, label %127, label %212

125:                                              ; preds = %120, %118
  %126 = landingpad { ptr, i32 }
          cleanup
  br label %220

127:                                              ; preds = %124
  call void @llvm.lifetime.start.p0(i64 2, ptr nonnull %15) #7
  %128 = invoke noundef i32 @_ZNK13IRInstruction4destEv(ptr noundef nonnull align 8 dereferenceable(32) %122)
          to label %129 unwind label %155

129:                                              ; preds = %127
  %130 = trunc i32 %128 to i16
  store i16 %130, ptr %15, align 2, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %16) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %17) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %20) #7
  invoke void @_ZN7ir_list23InstructionIteratorImplILb0EEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %18, ptr noundef nonnull align 8 dereferenceable(16) %13)
          to label %131 unwind label %157

131:                                              ; preds = %129
  invoke void @_ZSt4nextIN7ir_list23InstructionIteratorImplILb0EEEET_S3_NSt15iterator_traitsIS3_E15difference_typeE(ptr dead_on_unwind nonnull writable sret(%"class.ir_list::InstructionIteratorImpl") align 8 %17, ptr noundef nonnull %18, i64 noundef 1)
          to label %132 unwind label %157

132:                                              ; preds = %131
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %19) #7
  invoke void @_ZNK7ir_list23InstructionIterableImplILb0EE3endEv(ptr dead_on_unwind nonnull writable sret(%"class.ir_list::InstructionIteratorImpl") align 8 %19, ptr noundef nonnull align 8 dereferenceable(16) %12)
          to label %133 unwind label %159

133:                                              ; preds = %132
  %134 = invoke noundef zeroext i1 @_ZNK7ir_list23InstructionIteratorImplILb0EEeqERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %17, ptr noundef nonnull align 8 dereferenceable(16) %19)
          to label %135 unwind label %159

135:                                              ; preds = %133
  br i1 %134, label %136, label %139

136:                                              ; preds = %135
  %137 = load ptr, ptr %5, align 8, !tbaa !5
  %138 = invoke { i8, ptr } @_ZN12fastregalloc17LiveIntervalPoint13get_block_endEPN3cfg5BlockE(ptr noundef %137)
          to label %147 unwind label %159

139:                                              ; preds = %135
  invoke void @_ZN7ir_list23InstructionIteratorImplILb0EEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %21, ptr noundef nonnull align 8 dereferenceable(16) %13)
          to label %140 unwind label %161

140:                                              ; preds = %139
  invoke void @_ZSt4nextIN7ir_list23InstructionIteratorImplILb0EEEET_S3_NSt15iterator_traitsIS3_E15difference_typeE(ptr dead_on_unwind nonnull writable sret(%"class.ir_list::InstructionIteratorImpl") align 8 %20, ptr noundef nonnull %21, i64 noundef 1)
          to label %141 unwind label %161

141:                                              ; preds = %140
  %142 = invoke noundef ptr @_ZNK7ir_list23InstructionIteratorImplILb0EEptEv(ptr noundef nonnull align 8 dereferenceable(16) %20)
          to label %143 unwind label %161

143:                                              ; preds = %141
  %144 = getelementptr inbounds i8, ptr %142, i64 24
  %145 = load ptr, ptr %144, align 8, !tbaa !11
  %146 = call { i8, ptr } @_ZN12fastregalloc17LiveIntervalPoint3getEP13IRInstruction(ptr noundef %145)
  br label %147

147:                                              ; preds = %136, %143
  %.pn123 = phi { i8, ptr } [ %146, %143 ], [ %138, %136 ]
  %storemerge124 = extractvalue { i8, ptr } %.pn123, 0
  store i8 %storemerge124, ptr %16, align 8
  %storemerge = extractvalue { i8, ptr } %.pn123, 1
  store ptr %storemerge, ptr %103, align 8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %20) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %19) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %17) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %22) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %23) #7
  %148 = call { i8, ptr } @_ZN12fastregalloc17LiveIntervalPoint3getEv()
  %149 = extractvalue { i8, ptr } %148, 0
  store i8 %149, ptr %23, align 8
  %150 = extractvalue { i8, ptr } %148, 1
  store ptr %150, ptr %104, align 8
  invoke void @_ZSt9make_pairIRN12fastregalloc17LiveIntervalPointES1_ESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS4_INS5_IT0_E4typeEE6__typeEEOS6_OSB_(ptr dead_on_unwind nonnull writable sret(%"struct.std::pair.188") align 8 %22, ptr noundef nonnull align 8 dereferenceable(16) %16, ptr noundef nonnull align 8 dereferenceable(16) %23)
          to label %151 unwind label %165

151:                                              ; preds = %147
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %23) #7
  %152 = invoke { ptr, i8 } @_ZN12UnorderedMapItSt4pairIN12fastregalloc17LiveIntervalPointES2_ESt4hashItESt8equal_toItEE7emplaceIJRtRS3_EEES0_INS8_13FixedIteratorEbEDpOT_(ptr noundef nonnull align 8 dereferenceable(56) %0, ptr noundef nonnull align 2 dereferenceable(2) %15, ptr noundef nonnull align 8 dereferenceable(32) %22)
          to label %153 unwind label %167

153:                                              ; preds = %151
  %154 = call noundef zeroext i16 @_ZNK13IRInstruction6opcodeEv(ptr noundef nonnull align 8 dereferenceable(32) %122)
  %.not89 = icmp eq i16 %154, 164
  br i1 %.not89, label %169, label %211

155:                                              ; preds = %127
  %156 = landingpad { ptr, i32 }
          cleanup
  br label %217

157:                                              ; preds = %131, %129
  %158 = landingpad { ptr, i32 }
          cleanup
  br label %164

159:                                              ; preds = %136, %133, %132
  %160 = landingpad { ptr, i32 }
          cleanup
  br label %163

161:                                              ; preds = %141, %140, %139
  %162 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %20) #7
  br label %163

163:                                              ; preds = %161, %159
  %.pn86 = phi { ptr, i32 } [ %160, %159 ], [ %162, %161 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %19) #7
  br label %164

164:                                              ; preds = %163, %157
  %.pn86.pn = phi { ptr, i32 } [ %.pn86, %163 ], [ %158, %157 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %17) #7
  br label %216

165:                                              ; preds = %147
  %166 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %23) #7
  br label %215

167:                                              ; preds = %151
  %168 = landingpad { ptr, i32 }
          cleanup
  br label %215

169:                                              ; preds = %153
  %170 = load ptr, ptr %5, align 8, !tbaa !5
  %171 = invoke noundef nonnull align 8 dereferenceable(160) ptr @_ZNK3cfg5Block3cfgEv(ptr noundef nonnull align 8 dereferenceable(104) %170)
          to label %172 unwind label %182

172:                                              ; preds = %169
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %24) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %25) #7
  %173 = load ptr, ptr %5, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %26) #7
  invoke void @_ZNK7ir_list23InstructionIteratorImplILb0EE6unwrapEv(ptr dead_on_unwind nonnull writable sret(%"class.boost::intrusive::list_iterator") align 8 %26, ptr noundef nonnull align 8 dereferenceable(16) %13)
          to label %174 unwind label %184

174:                                              ; preds = %172
  invoke void @_ZN3cfg5Block27to_cfg_instruction_iteratorERKN5boost9intrusive13list_iteratorINS2_8mhtraitsI15MethodItemEntryNS2_16list_member_hookIJEEEXadL_ZNS5_10list_hook_EEEEELb0EEEb(ptr dead_on_unwind nonnull writable sret(%"class.cfg::InstructionIteratorImpl") align 8 %25, ptr noundef nonnull align 8 dereferenceable(104) %173, ptr noundef nonnull align 8 dereferenceable(8) %26, i1 noundef zeroext false)
          to label %175 unwind label %184

175:                                              ; preds = %174
  invoke void @_ZN3cfg16ControlFlowGraph34primary_instruction_of_move_resultERKNS_23InstructionIteratorImplILb0EEE(ptr dead_on_unwind nonnull writable sret(%"class.cfg::InstructionIteratorImpl") align 8 %24, ptr noundef nonnull align 8 dereferenceable(160) %171, ptr noundef nonnull align 8 dereferenceable(32) %25)
          to label %176 unwind label %184

176:                                              ; preds = %175
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %25) #7
  %177 = invoke noundef ptr @_ZNK3cfg23InstructionIteratorImplILb0EEptEv(ptr noundef nonnull align 8 dereferenceable(32) %24)
          to label %178 unwind label %186

178:                                              ; preds = %176
  %179 = getelementptr inbounds i8, ptr %177, i64 24
  %180 = load ptr, ptr %179, align 8, !tbaa !11
  %181 = call noundef zeroext i16 @_ZNK13IRInstruction6opcodeEv(ptr noundef nonnull align 8 dereferenceable(32) %180)
  %.not90 = icmp eq i16 %181, 18
  br i1 %.not90, label %188, label %210

182:                                              ; preds = %169
  %183 = landingpad { ptr, i32 }
          cleanup
  br label %215

184:                                              ; preds = %175, %174, %172
  %185 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %25) #7
  br label %214

186:                                              ; preds = %176
  %187 = landingpad { ptr, i32 }
          cleanup
  br label %214

188:                                              ; preds = %178
  %189 = invoke noundef ptr @_ZNK3cfg23InstructionIteratorImplILb0EE5blockEv(ptr noundef nonnull align 8 dereferenceable(32) %24)
          to label %190 unwind label %195

190:                                              ; preds = %188
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %27) #7
  invoke void @_ZNK3cfg16ControlFlowGraph22get_succ_edges_of_typeEPKNS_5BlockENS_8EdgeTypeE(ptr dead_on_unwind nonnull writable sret(%"class.std::vector.199") align 8 %27, ptr noundef nonnull align 8 dereferenceable(160) %171, ptr noundef %189, i8 noundef zeroext 2)
          to label %191 unwind label %197

191:                                              ; preds = %190
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %28) #7
  %192 = call ptr @_ZNSt6vectorIPN3cfg4EdgeESaIS2_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %27) #7
  store ptr %192, ptr %28, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %29) #7
  %193 = call ptr @_ZNSt6vectorIPN3cfg4EdgeESaIS2_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %27) #7
  store ptr %193, ptr %29, align 8
  %194 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPPN3cfg4EdgeESt6vectorIS3_SaIS3_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %28, ptr noundef nonnull align 8 dereferenceable(8) %29) #7
  br i1 %194, label %.lr.ph, label %._crit_edge

._crit_edge:                                      ; preds = %205, %191
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %29) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %28) #7
  call void @_ZNSt6vectorIPN3cfg4EdgeESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %27) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %27) #7
  br label %210

195:                                              ; preds = %188
  %196 = landingpad { ptr, i32 }
          cleanup
  br label %214

197:                                              ; preds = %190
  %198 = landingpad { ptr, i32 }
          cleanup
  br label %214

.lr.ph:                                           ; preds = %191, %205
  %199 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPPN3cfg4EdgeESt6vectorIS3_SaIS3_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %28) #7
  %200 = load ptr, ptr %199, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %30) #7
  %201 = call noundef ptr @_ZNK3cfg4Edge6targetEv(ptr noundef nonnull align 8 dereferenceable(32) %200)
  store ptr %201, ptr %30, align 8, !tbaa !5
  %202 = invoke noundef nonnull align 8 dereferenceable(56) ptr @_ZN12UnorderedMapIPN3cfg5BlockE12UnorderedSetItSt4hashItESt8equal_toItEES4_IS2_ES6_IS2_EEixEOS2_(ptr noundef nonnull align 8 dereferenceable(56) %3, ptr noundef nonnull align 8 dereferenceable(8) %30)
          to label %203 unwind label %208

203:                                              ; preds = %.lr.ph
  %204 = invoke { ptr, i8 } @_ZN12UnorderedSetItSt4hashItESt8equal_toItEE6insertERKt(ptr noundef nonnull align 8 dereferenceable(56) %202, ptr noundef nonnull align 2 dereferenceable(2) %15)
          to label %205 unwind label %208

205:                                              ; preds = %203
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %30) #7
  %206 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPPN3cfg4EdgeESt6vectorIS3_SaIS3_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %28) #7
  %207 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPPN3cfg4EdgeESt6vectorIS3_SaIS3_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %28, ptr noundef nonnull align 8 dereferenceable(8) %29) #7
  br i1 %207, label %.lr.ph, label %._crit_edge

208:                                              ; preds = %203, %.lr.ph
  %209 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %30) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %29) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %28) #7
  call void @_ZNSt6vectorIPN3cfg4EdgeESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %27) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %27) #7
  br label %214

210:                                              ; preds = %178, %._crit_edge
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %24) #7
  br label %211

211:                                              ; preds = %153, %210
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %22) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %16) #7
  call void @llvm.lifetime.end.p0(i64 2, ptr nonnull %15) #7
  br label %212

212:                                              ; preds = %124, %211
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %31) #7
  invoke void @_ZN7ir_list23InstructionIteratorImplILb0EEppEi(ptr dead_on_unwind nonnull writable sret(%"class.ir_list::InstructionIteratorImpl") align 8 %31, ptr noundef nonnull align 8 dereferenceable(16) %13, i32 noundef 0)
          to label %213 unwind label %218

213:                                              ; preds = %212
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %31) #7
  br label %105, !llvm.loop !14

214:                                              ; preds = %195, %208, %197, %186, %184
  %.pn91.pn.pn = phi { ptr, i32 } [ %187, %186 ], [ %185, %184 ], [ %196, %195 ], [ %209, %208 ], [ %198, %197 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %24) #7
  br label %215

215:                                              ; preds = %182, %214, %167, %165
  %.pn91.pn.pn.pn.pn = phi { ptr, i32 } [ %168, %167 ], [ %166, %165 ], [ %.pn91.pn.pn, %214 ], [ %183, %182 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %22) #7
  br label %216

216:                                              ; preds = %215, %164
  %.pn91.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn91.pn.pn.pn.pn, %215 ], [ %.pn86.pn, %164 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %16) #7
  br label %217

217:                                              ; preds = %216, %155
  %.pn91.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn91.pn.pn.pn.pn.pn, %216 ], [ %156, %155 ]
  call void @llvm.lifetime.end.p0(i64 2, ptr nonnull %15) #7
  br label %220

218:                                              ; preds = %212
  %219 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %31) #7
  br label %220

220:                                              ; preds = %125, %217, %218, %116, %114
  %.pn100 = phi { ptr, i32 } [ %219, %218 ], [ %117, %116 ], [ %115, %114 ], [ %.pn91.pn.pn.pn.pn.pn.pn, %217 ], [ %126, %125 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %13) #7
  br label %313

221:                                              ; preds = %109
  %222 = extractvalue { i8, ptr } %111, 0
  %223 = extractvalue { i8, ptr } %111, 1
  %224 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK6sparta22PowersetAbstractDomainIjNS_8set_impl8SetValueINS_15PatriciaTreeSetIjEEEERKS4_NS_17SetAbstractDomainIS4_EEE8elementsEv(ptr noundef nonnull align 8 dereferenceable(16) %43)
          to label %225 unwind label %234

225:                                              ; preds = %221
  call void @llvm.lifetime.start.p0(i64 96, ptr nonnull %32) #7
  invoke void @_ZNK6sparta15PatriciaTreeSetIjE5beginEv(ptr dead_on_unwind nonnull writable sret(%"class.sparta::pt_core::PatriciaTreeIterator") align 8 %32, ptr noundef nonnull align 8 dereferenceable(8) %224)
          to label %226 unwind label %236

226:                                              ; preds = %225
  call void @llvm.lifetime.start.p0(i64 96, ptr nonnull %33) #7
  invoke void @_ZNK6sparta15PatriciaTreeSetIjE3endEv(ptr dead_on_unwind nonnull writable sret(%"class.sparta::pt_core::PatriciaTreeIterator") align 8 %33, ptr noundef nonnull align 8 dereferenceable(8) %224)
          to label %.preheader115 unwind label %238

.preheader115:                                    ; preds = %226, %248
  %227 = invoke noundef zeroext i1 @_ZNK6sparta7pt_core20PatriciaTreeIteratorIjNS0_10EmptyValueEEneERKS3_(ptr noundef nonnull align 8 dereferenceable(96) %32, ptr noundef nonnull align 8 dereferenceable(96) %33)
          to label %228 unwind label %240

228:                                              ; preds = %.preheader115
  br i1 %227, label %242, label %229

229:                                              ; preds = %228
  call void @_ZN6sparta7pt_core20PatriciaTreeIteratorIjNS0_10EmptyValueEED2Ev(ptr noundef nonnull align 8 dereferenceable(96) %33) #7
  call void @llvm.lifetime.end.p0(i64 96, ptr nonnull %33) #7
  call void @_ZN6sparta7pt_core20PatriciaTreeIteratorIjNS0_10EmptyValueEED2Ev(ptr noundef nonnull align 8 dereferenceable(96) %32) #7
  call void @llvm.lifetime.end.p0(i64 96, ptr nonnull %32) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %35) #7
  %230 = load ptr, ptr %5, align 8, !tbaa !5
  invoke void @_ZN3cfg5Block6rbeginEv(ptr dead_on_unwind nonnull writable sret(%"class.boost::intrusive::reverse_iterator") align 8 %35, ptr noundef nonnull align 8 dereferenceable(104) %230)
          to label %.preheader unwind label %.loopexit.split-lp

.preheader:                                       ; preds = %229
  %231 = getelementptr inbounds i8, ptr %37, i64 8
  br label %258

232:                                              ; preds = %109
  %233 = landingpad { ptr, i32 }
          cleanup
  br label %313

234:                                              ; preds = %221
  %235 = landingpad { ptr, i32 }
          cleanup
  br label %313

236:                                              ; preds = %225
  %237 = landingpad { ptr, i32 }
          cleanup
  br label %257

238:                                              ; preds = %226
  %239 = landingpad { ptr, i32 }
          cleanup
  br label %256

240:                                              ; preds = %248, %.preheader115
  %241 = landingpad { ptr, i32 }
          cleanup
  br label %255

242:                                              ; preds = %228
  %243 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNK6sparta7pt_core20PatriciaTreeIteratorIjNS0_10EmptyValueEEdeEv(ptr noundef nonnull align 8 dereferenceable(96) %32)
          to label %244 unwind label %251

244:                                              ; preds = %242
  %245 = load i32, ptr %243, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 2, ptr nonnull %34) #7
  %246 = trunc i32 %245 to i16
  store i16 %246, ptr %34, align 2, !tbaa !12
  %247 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN12UnorderedMapItSt4pairIN12fastregalloc17LiveIntervalPointES2_ESt4hashItESt8equal_toItEE2atERKt(ptr noundef nonnull align 8 dereferenceable(56) %0, ptr noundef nonnull align 2 dereferenceable(2) %34)
          to label %248 unwind label %253

248:                                              ; preds = %244
  %249 = getelementptr inbounds i8, ptr %247, i64 16
  store i8 %222, ptr %249, align 8, !tbaa !16
  %.sroa.512.0..sroa_idx = getelementptr inbounds i8, ptr %247, i64 24
  store ptr %223, ptr %.sroa.512.0..sroa_idx, align 8, !tbaa !11
  call void @llvm.lifetime.end.p0(i64 2, ptr nonnull %34) #7
  %250 = invoke noundef nonnull align 8 dereferenceable(96) ptr @_ZN6sparta7pt_core20PatriciaTreeIteratorIjNS0_10EmptyValueEEppEv(ptr noundef nonnull align 8 dereferenceable(96) %32)
          to label %.preheader115 unwind label %240

251:                                              ; preds = %242
  %252 = landingpad { ptr, i32 }
          cleanup
  br label %255

253:                                              ; preds = %244
  %254 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 2, ptr nonnull %34) #7
  br label %255

255:                                              ; preds = %251, %253, %240
  %.pn80 = phi { ptr, i32 } [ %241, %240 ], [ %254, %253 ], [ %252, %251 ]
  call void @_ZN6sparta7pt_core20PatriciaTreeIteratorIjNS0_10EmptyValueEED2Ev(ptr noundef nonnull align 8 dereferenceable(96) %33) #7
  br label %256

256:                                              ; preds = %255, %238
  %.pn80.pn = phi { ptr, i32 } [ %.pn80, %255 ], [ %239, %238 ]
  call void @llvm.lifetime.end.p0(i64 96, ptr nonnull %33) #7
  call void @_ZN6sparta7pt_core20PatriciaTreeIteratorIjNS0_10EmptyValueEED2Ev(ptr noundef nonnull align 8 dereferenceable(96) %32) #7
  br label %257

257:                                              ; preds = %256, %236
  %.pn80.pn.pn = phi { ptr, i32 } [ %.pn80.pn, %256 ], [ %237, %236 ]
  call void @llvm.lifetime.end.p0(i64 96, ptr nonnull %32) #7
  br label %313

258:                                              ; preds = %.preheader, %310
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %36) #7
  %259 = load ptr, ptr %5, align 8, !tbaa !5
  invoke void @_ZN3cfg5Block4rendEv(ptr dead_on_unwind nonnull writable sret(%"class.boost::intrusive::reverse_iterator") align 8 %36, ptr noundef nonnull align 8 dereferenceable(104) %259)
          to label %260 unwind label %264

260:                                              ; preds = %258
  %261 = invoke noundef zeroext i1 @_ZN5boost9intrusiveneERKNS0_16reverse_iteratorINS0_13list_iteratorINS0_8mhtraitsI15MethodItemEntryNS0_16list_member_hookIJEEEXadL_ZNS4_10list_hook_EEEEELb0EEEEESB_(ptr noundef nonnull align 8 dereferenceable(8) %35, ptr noundef nonnull align 8 dereferenceable(8) %36)
          to label %262 unwind label %264

262:                                              ; preds = %260
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %36) #7
  br i1 %261, label %266, label %263

263:                                              ; preds = %262
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %35) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %12) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %6) #7
  ret void

.loopexit:                                        ; preds = %266, %310
  %lpad.loopexit = landingpad { ptr, i32 }
          cleanup
  br label %312

.loopexit.split-lp:                               ; preds = %229
  %lpad.loopexit.split-lp = landingpad { ptr, i32 }
          cleanup
  br label %312

264:                                              ; preds = %260, %258
  %265 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %36) #7
  br label %312

266:                                              ; preds = %262
  %267 = invoke noundef ptr @_ZNK5boost9intrusive16reverse_iteratorINS0_13list_iteratorINS0_8mhtraitsI15MethodItemEntryNS0_16list_member_hookIJEEEXadL_ZNS4_10list_hook_EEEEELb0EEEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %35)
          to label %268 unwind label %.loopexit

268:                                              ; preds = %266
  %269 = getelementptr inbounds i8, ptr %267, i64 16
  %270 = load i32, ptr %269, align 8, !tbaa !18
  %.not = icmp eq i32 %270, 2
  br i1 %.not, label %271, label %310

271:                                              ; preds = %268
  %272 = invoke noundef ptr @_ZNK5boost9intrusive16reverse_iteratorINS0_13list_iteratorINS0_8mhtraitsI15MethodItemEntryNS0_16list_member_hookIJEEEXadL_ZNS4_10list_hook_EEEEELb0EEEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %35)
          to label %273 unwind label %282

273:                                              ; preds = %271
  %274 = getelementptr inbounds i8, ptr %272, i64 24
  %275 = load ptr, ptr %274, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %37) #7
  %276 = invoke { ptr, ptr } @_ZNK13IRInstruction4srcsEv(ptr noundef nonnull align 8 dereferenceable(32) %275)
          to label %277 unwind label %284

277:                                              ; preds = %273
  %278 = extractvalue { ptr, ptr } %276, 0
  store ptr %278, ptr %37, align 8
  %279 = extractvalue { ptr, ptr } %276, 1
  store ptr %279, ptr %231, align 8
  %280 = call noundef ptr @_ZNK5boost21iterator_range_detail19iterator_range_baseIPKjNS_9iterators27incrementable_traversal_tagEE5beginEv(ptr noundef nonnull align 8 dereferenceable(16) %37)
  %281 = call noundef ptr @_ZNK5boost21iterator_range_detail19iterator_range_baseIPKjNS_9iterators27incrementable_traversal_tagEE3endEv(ptr noundef nonnull align 8 dereferenceable(16) %37)
  %.not72118 = icmp eq ptr %280, %281
  br i1 %.not72118, label %._crit_edge122, label %.lr.ph121

._crit_edge122:                                   ; preds = %307, %277
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %37) #7
  br label %310

282:                                              ; preds = %271
  %283 = landingpad { ptr, i32 }
          cleanup
  br label %312

284:                                              ; preds = %273
  %285 = landingpad { ptr, i32 }
          cleanup
  br label %312

.lr.ph121:                                        ; preds = %277, %307
  %.071119 = phi ptr [ %308, %307 ], [ %280, %277 ]
  call void @llvm.lifetime.start.p0(i64 2, ptr nonnull %38) #7
  %286 = load i32, ptr %.071119, align 4, !tbaa !9
  %287 = trunc i32 %286 to i16
  store i16 %287, ptr %38, align 2, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %39) #7
  %288 = invoke ptr @_ZN12UnorderedMapItSt4pairIN12fastregalloc17LiveIntervalPointES2_ESt4hashItESt8equal_toItEE4findERKt(ptr noundef nonnull align 8 dereferenceable(56) %0, ptr noundef nonnull align 2 dereferenceable(2) %38)
          to label %289 unwind label %303

289:                                              ; preds = %.lr.ph121
  store ptr %288, ptr %39, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %40) #7
  %290 = invoke ptr @_ZN12UnorderedMapItSt4pairIN12fastregalloc17LiveIntervalPointES2_ESt4hashItESt8equal_toItEE3endEv(ptr noundef nonnull align 8 dereferenceable(56) %0)
          to label %291 unwind label %305

291:                                              ; preds = %289
  store ptr %290, ptr %40, align 8
  %292 = call noundef zeroext i1 @_ZNK12UnorderedMapItSt4pairIN12fastregalloc17LiveIntervalPointES2_ESt4hashItESt8equal_toItEE13FixedIteratorneERKS9_(ptr noundef nonnull align 8 dereferenceable(8) %39, ptr noundef nonnull align 8 dereferenceable(8) %40)
  br i1 %292, label %293, label %.critedge

293:                                              ; preds = %291
  %294 = call noundef ptr @_ZNK12UnorderedMapItSt4pairIN12fastregalloc17LiveIntervalPointES2_ESt4hashItESt8equal_toItEE13FixedIteratorptEv(ptr noundef nonnull align 8 dereferenceable(8) %39)
  %295 = getelementptr inbounds i8, ptr %294, i64 24
  %296 = call noundef zeroext i1 @_ZNK12fastregalloc17LiveIntervalPoint10is_missingEv(ptr noundef nonnull align 8 dereferenceable(16) %295)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %40) #7
  br i1 %296, label %297, label %307

297:                                              ; preds = %293
  %298 = call { i8, ptr } @_ZN12fastregalloc17LiveIntervalPoint3getEP13IRInstruction(ptr noundef nonnull %275)
  %299 = extractvalue { i8, ptr } %298, 0
  %300 = extractvalue { i8, ptr } %298, 1
  %301 = call noundef ptr @_ZNK12UnorderedMapItSt4pairIN12fastregalloc17LiveIntervalPointES2_ESt4hashItESt8equal_toItEE13FixedIteratorptEv(ptr noundef nonnull align 8 dereferenceable(8) %39)
  %302 = getelementptr inbounds i8, ptr %301, i64 24
  store i8 %299, ptr %302, align 8, !tbaa !16
  %.sroa.41.0..sroa_idx = getelementptr inbounds i8, ptr %301, i64 32
  store ptr %300, ptr %.sroa.41.0..sroa_idx, align 8, !tbaa !11
  br label %307

303:                                              ; preds = %.lr.ph121
  %304 = landingpad { ptr, i32 }
          cleanup
  br label %309

305:                                              ; preds = %289
  %306 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %40) #7
  br label %309

.critedge:                                        ; preds = %291
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %40) #7
  br label %307

307:                                              ; preds = %.critedge, %297, %293
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %39) #7
  call void @llvm.lifetime.end.p0(i64 2, ptr nonnull %38) #7
  %308 = getelementptr inbounds i8, ptr %.071119, i64 4
  %.not72 = icmp eq ptr %308, %281
  br i1 %.not72, label %._crit_edge122, label %.lr.ph121

309:                                              ; preds = %305, %303
  %.pn = phi { ptr, i32 } [ %306, %305 ], [ %304, %303 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %39) #7
  call void @llvm.lifetime.end.p0(i64 2, ptr nonnull %38) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %37) #7
  br label %312

310:                                              ; preds = %268, %._crit_edge122
  %311 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN5boost9intrusive16reverse_iteratorINS0_13list_iteratorINS0_8mhtraitsI15MethodItemEntryNS0_16list_member_hookIJEEEXadL_ZNS4_10list_hook_EEEEELb0EEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %35)
          to label %258 unwind label %.loopexit, !llvm.loop !24

312:                                              ; preds = %.loopexit, %.loopexit.split-lp, %282, %309, %284, %264
  %.pn76 = phi { ptr, i32 } [ %265, %264 ], [ %283, %282 ], [ %.pn, %309 ], [ %285, %284 ], [ %lpad.loopexit, %.loopexit ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %35) #7
  br label %313

313:                                              ; preds = %232, %312, %257, %234, %220, %112
  %.pn100.pn = phi { ptr, i32 } [ %.pn100, %220 ], [ %113, %112 ], [ %.pn76, %312 ], [ %233, %232 ], [ %.pn80.pn.pn, %257 ], [ %235, %234 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %12) #7
  br label %314

314:                                              ; preds = %66, %101, %313, %64
  %.pn107.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn100.pn, %313 ], [ %65, %64 ], [ %.pn107.pn.pn, %101 ], [ %67, %66 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %6) #7
  br label %315

315:                                              ; preds = %62, %314, %60
  %.pn107.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %61, %60 ], [ %.pn107.pn.pn.pn.pn, %314 ], [ %63, %62 ]
  call void @_ZN12UnorderedMapItSt4pairIN12fastregalloc17LiveIntervalPointES2_ESt4hashItESt8equal_toItEED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %0) #7
  resume { ptr, i32 } %.pn107.pn.pn.pn.pn.pn.pn
}

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_Z19InstructionIterableIN3cfg5BlockEEN7ir_list23InstructionIterableImplILb0EEEPT_(ptr dead_on_unwind noalias writable sret(%"class.ir_list::InstructionIterableImpl") align 8, ptr noundef) local_unnamed_addr #3

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK7ir_list23InstructionIterableImplILb0EE5beginEv(ptr dead_on_unwind noalias writable sret(%"class.ir_list::InstructionIteratorImpl") align 8, ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK7ir_list23InstructionIterableImplILb0EE3endEv(ptr dead_on_unwind noalias writable sret(%"class.ir_list::InstructionIteratorImpl") align 8, ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #1 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local { i8, ptr } @_ZN12fastregalloc17LiveIntervalPoint3getEP13IRInstruction(ptr noundef) local_unnamed_addr #4 align 2

; Function Attrs: mustprogress uwtable
declare dso_local { i8, ptr } @_ZN12fastregalloc17LiveIntervalPoint13get_block_endEPN3cfg5BlockE(ptr noundef) local_unnamed_addr #1 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK12fastregalloc17LiveIntervalPoint10is_missingEv(ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #4 align 2

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local { i8, ptr } @_ZN12fastregalloc17LiveIntervalPoint15get_block_beginEPN3cfg5BlockE(ptr noundef) local_unnamed_addr #1 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK6sparta15PatriciaTreeSetIjE5beginEv(ptr dead_on_unwind noalias writable sret(%"class.sparta::pt_core::PatriciaTreeIterator") align 8, ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK6sparta15PatriciaTreeSetIjE3endEv(ptr dead_on_unwind noalias writable sret(%"class.sparta::pt_core::PatriciaTreeIterator") align 8, ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #1 align 2

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZSt9make_pairIRN12fastregalloc17LiveIntervalPointES1_ESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS4_INS5_IT0_E4typeEE6__typeEEOS6_OSB_(ptr dead_on_unwind noalias writable sret(%"struct.std::pair.188") align 8, ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #1

; Function Attrs: mustprogress nounwind uwtable
declare dso_local { i8, ptr } @_ZN12fastregalloc17LiveIntervalPoint3getEv() local_unnamed_addr #4 align 2

; Function Attrs: mustprogress uwtable
declare dso_local { ptr, i8 } @_ZN12UnorderedMapItSt4pairIN12fastregalloc17LiveIntervalPointES2_ESt4hashItESt8equal_toItEE7emplaceIJRjRS3_EEES0_INS8_13FixedIteratorEbEDpOT_(ptr noundef nonnull align 8 dereferenceable(56), ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #1 align 2

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

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZSt4nextIN7ir_list23InstructionIteratorImplILb0EEEET_S3_NSt15iterator_traitsIS3_E15difference_typeE(ptr dead_on_unwind noalias writable sret(%"class.ir_list::InstructionIteratorImpl") align 8, ptr noundef, i64 noundef) local_unnamed_addr #3

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

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

; Function Attrs: mustprogress uwtable
declare dso_local { ptr, i8 } @_ZN12UnorderedMapItSt4pairIN12fastregalloc17LiveIntervalPointES2_ESt4hashItESt8equal_toItEE7emplaceIJRtRS3_EEES0_INS8_13FixedIteratorEbEDpOT_(ptr noundef nonnull align 8 dereferenceable(56), ptr noundef nonnull align 2 dereferenceable(2), ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i16 @_ZNK13IRInstruction6opcodeEv(ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #4 align 2

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

declare void @_ZN3cfg16ControlFlowGraph34primary_instruction_of_move_resultERKNS_23InstructionIteratorImplILb0EEE(ptr dead_on_unwind writable sret(%"class.cfg::InstructionIteratorImpl") align 8, ptr noundef nonnull align 8 dereferenceable(160), ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #6

declare void @_ZN3cfg5Block27to_cfg_instruction_iteratorERKN5boost9intrusive13list_iteratorINS2_8mhtraitsI15MethodItemEntryNS2_16list_member_hookIJEEEXadL_ZNS5_10list_hook_EEEEELb0EEEb(ptr dead_on_unwind writable sret(%"class.cfg::InstructionIteratorImpl") align 8, ptr noundef nonnull align 8 dereferenceable(104), ptr noundef nonnull align 8 dereferenceable(8), i1 noundef zeroext) local_unnamed_addr #6

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK7ir_list23InstructionIteratorImplILb0EE6unwrapEv(ptr dead_on_unwind noalias writable sret(%"class.boost::intrusive::list_iterator") align 8, ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #1 align 2

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

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

declare void @_ZNK3cfg16ControlFlowGraph22get_succ_edges_of_typeEPKNS_5BlockENS_8EdgeTypeE(ptr dead_on_unwind writable sret(%"class.std::vector.199") align 8, ptr noundef nonnull align 8 dereferenceable(160), ptr noundef, i8 noundef zeroext) local_unnamed_addr #6

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local { ptr, i8 } @_ZN12UnorderedSetItSt4hashItESt8equal_toItEE6insertERKt(ptr noundef nonnull align 8 dereferenceable(56), ptr noundef nonnull align 2 dereferenceable(2)) local_unnamed_addr #1 align 2

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7ir_list23InstructionIteratorImplILb0EEppEi(ptr dead_on_unwind noalias writable sret(%"class.ir_list::InstructionIteratorImpl") align 8, ptr noundef nonnull align 8 dereferenceable(16), i32 noundef) local_unnamed_addr #1 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3cfg5Block6rbeginEv(ptr dead_on_unwind noalias writable sret(%"class.boost::intrusive::reverse_iterator") align 8, ptr noundef nonnull align 8 dereferenceable(104)) local_unnamed_addr #1 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3cfg5Block4rendEv(ptr dead_on_unwind noalias writable sret(%"class.boost::intrusive::reverse_iterator") align 8, ptr noundef nonnull align 8 dereferenceable(104)) local_unnamed_addr #1 align 2

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

declare { ptr, ptr } @_ZNK13IRInstruction4srcsEv(ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #6

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

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

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

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

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

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!7, !7, i64 0}
!12 = !{!13, !13, i64 0}
!13 = !{!"short", !7, i64 0}
!14 = distinct !{!14, !15}
!15 = !{!"llvm.loop.mustprogress"}
!16 = !{!17, !17, i64 0}
!17 = !{!"_ZTSN12fastregalloc17LiveIntervalPoint4KindE", !7, i64 0}
!18 = !{!19, !23, i64 16}
!19 = !{!"_ZTS15MethodItemEntry", !20, i64 0, !23, i64 16, !7, i64 24}
!20 = !{!"_ZTSN5boost9intrusive16list_member_hookIJEEE", !21, i64 0}
!21 = !{!"_ZTSN5boost9intrusive12generic_hookILNS0_10algo_typesE0ENS0_16list_node_traitsIPvEENS0_10member_tagELNS0_14link_mode_typeE1ELNS0_14base_hook_typeE0EEE", !22, i64 0}
!22 = !{!"_ZTSN5boost9intrusive9list_nodeIPvEE", !6, i64 0, !6, i64 8}
!23 = !{!"_ZTS14MethodItemType", !7, i64 0}
!24 = distinct !{!24, !15}


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