; LLVM IR from facebook/redex :: service/cse (CommonSubexpressionElimination)

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

%"class.std::vector.577" = type { %"struct.std::_Vector_base.578" }
%"struct.std::_Vector_base.578" = type { %"struct.std::_Vector_base<cfg::Block *, std::allocator<cfg::Block *>>::_Vector_impl" }
%"struct.std::_Vector_base<cfg::Block *, std::allocator<cfg::Block *>>::_Vector_impl" = type { %"struct.std::_Vector_base<cfg::Block *, std::allocator<cfg::Block *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<cfg::Block *, std::allocator<cfg::Block *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.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 long, sparta::pt_core::EmptyValue> *, std::allocator<const sparta::pt_core::PatriciaTreeBranch<unsigned long, sparta::pt_core::EmptyValue> *>>::_Deque_impl" }
%"struct.std::_Deque_base<const sparta::pt_core::PatriciaTreeBranch<unsigned long, sparta::pt_core::EmptyValue> *, std::allocator<const sparta::pt_core::PatriciaTreeBranch<unsigned long, sparta::pt_core::EmptyValue> *>>::_Deque_impl" = type { %"struct.std::_Deque_base<const sparta::pt_core::PatriciaTreeBranch<unsigned long, sparta::pt_core::EmptyValue> *, std::allocator<const sparta::pt_core::PatriciaTreeBranch<unsigned long, sparta::pt_core::EmptyValue> *>>::_Deque_impl_data" }
%"struct.std::_Deque_base<const sparta::pt_core::PatriciaTreeBranch<unsigned long, sparta::pt_core::EmptyValue> *, std::allocator<const sparta::pt_core::PatriciaTreeBranch<unsigned long, 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 }
%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%class.UnorderedMap.745 = type { %"class.std::unordered_map.747" }
%"class.std::unordered_map.747" = type { %"class.std::_Hashtable.748" }
%"class.std::_Hashtable.748" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"struct.std::__detail::_Hash_node_base" = type { ptr }
%"struct.std::__detail::_Prime_rehash_policy" = type { float, i64 }
%"class.__gnu_cxx::__normal_iterator.582" = type { ptr }
%"class.std::vector.299" = type { %"struct.std::_Vector_base.300" }
%"struct.std::_Vector_base.300" = type { %"struct.std::_Vector_base<cfg::Edge *, std::allocator<cfg::Edge *>>::_Vector_impl" }
%"struct.std::_Vector_base<cfg::Edge *, std::allocator<cfg::Edge *>>::_Vector_impl" = type { %"struct.std::_Vector_base<cfg::Edge *, std::allocator<cfg::Edge *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<cfg::Edge *, std::allocator<cfg::Edge *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.std::pair.761" = type <{ %"class.UnorderedMap<cfg::Block *, std::vector<cfg::Edge *>>::FixedIterator", i8, [7 x i8] }>
%"class.UnorderedMap<cfg::Block *, std::vector<cfg::Edge *>>::FixedIterator" = type { %"struct.std::__detail::_Node_iterator.763" }
%"struct.std::__detail::_Node_iterator.763" = type { %"struct.std::__detail::_Node_iterator_base.764" }
%"struct.std::__detail::_Node_iterator_base.764" = type { ptr }
%"class.type_inference::TypeInference" = type { %"class.ir_analyzer::BaseIRAnalyzer", ptr, %class.UnorderedMap.850, i8, %class.UnorderedSet.866, ptr, ptr }
%"class.ir_analyzer::BaseIRAnalyzer" = type { %"class.sparta::MonotonicFixpointIterator.766" }
%"class.sparta::MonotonicFixpointIterator.766" = type { %"class.sparta::fp_impl::MonotonicFixpointIteratorBase.767", %"class.sparta::WeakPartialOrdering" }
%"class.sparta::fp_impl::MonotonicFixpointIteratorBase.767" = type { %"class.sparta::FixpointIterator.768", ptr, %"class.type_inference::TypeEnvironment", %"class.std::unordered_map.836", %"class.std::unordered_map.836" }
%"class.sparta::FixpointIterator.768" = type { ptr }
%"class.type_inference::TypeEnvironment" = type { %"class.sparta::ReducedProductAbstractDomain.769" }
%"class.sparta::ReducedProductAbstractDomain.769" = type { %"class.sparta::DirectProductAbstractDomain.770" }
%"class.sparta::DirectProductAbstractDomain.770" = type { %"class.std::tuple.773" }
%"class.std::tuple.773" = type { %"struct.std::_Tuple_impl.774" }
%"struct.std::_Tuple_impl.774" = type { %"struct.std::_Tuple_impl.775", %"struct.std::_Head_base.815" }
%"struct.std::_Tuple_impl.775" = type { %"struct.std::_Tuple_impl.776", %"struct.std::_Head_base.796" }
%"struct.std::_Tuple_impl.776" = type { %"struct.std::_Head_base.777" }
%"struct.std::_Head_base.777" = type { %"class.sparta::AbstractEnvironment.778" }
%"class.sparta::AbstractEnvironment.778" = type { %"class.sparta::AbstractDomainScaffolding.779" }
%"class.sparta::AbstractDomainScaffolding.779" = type { i32, %"class.sparta::environment_impl::MapValue.784" }
%"class.sparta::environment_impl::MapValue.784" = type { %"class.sparta::PatriciaTreeMap.787" }
%"class.sparta::PatriciaTreeMap.787" = type { %"class.sparta::pt_core::PatriciaTreeCore.792" }
%"class.sparta::pt_core::PatriciaTreeCore.792" = type { %"class.boost::intrusive_ptr.793" }
%"class.boost::intrusive_ptr.793" = type { ptr }
%"struct.std::_Head_base.796" = type { %"class.sparta::AbstractEnvironment.797" }
%"class.sparta::AbstractEnvironment.797" = type { %"class.sparta::AbstractDomainScaffolding.798" }
%"class.sparta::AbstractDomainScaffolding.798" = type { i32, %"class.sparta::environment_impl::MapValue.803" }
%"class.sparta::environment_impl::MapValue.803" = type { %"class.sparta::PatriciaTreeMap.806" }
%"class.sparta::PatriciaTreeMap.806" = type { %"class.sparta::pt_core::PatriciaTreeCore.811" }
%"class.sparta::pt_core::PatriciaTreeCore.811" = type { %"class.boost::intrusive_ptr.812" }
%"class.boost::intrusive_ptr.812" = type { ptr }
%"struct.std::_Head_base.815" = type { %"class.sparta::AbstractEnvironment.816" }
%"class.sparta::AbstractEnvironment.816" = type { %"class.sparta::AbstractDomainScaffolding.817" }
%"class.sparta::AbstractDomainScaffolding.817" = type { i32, %"class.sparta::environment_impl::MapValue.822" }
%"class.sparta::environment_impl::MapValue.822" = type { %"class.sparta::PatriciaTreeMap.825" }
%"class.sparta::PatriciaTreeMap.825" = type { %"class.sparta::pt_core::PatriciaTreeCore.830" }
%"class.sparta::pt_core::PatriciaTreeCore.830" = type { %"class.boost::intrusive_ptr.831" }
%"class.boost::intrusive_ptr.831" = type { ptr }
%"class.std::unordered_map.836" = type { %"class.std::_Hashtable.837" }
%"class.std::_Hashtable.837" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"class.sparta::WeakPartialOrdering" = type <{ %"class.std::vector.419", %"class.std::vector.424", %"class.std::unordered_map.429", i8, [7 x i8] }>
%"class.std::vector.419" = type { %"struct.std::_Vector_base.420" }
%"struct.std::_Vector_base.420" = type { %"struct.std::_Vector_base<sparta::WpoNode<cfg::Block *>, std::allocator<sparta::WpoNode<cfg::Block *>>>::_Vector_impl" }
%"struct.std::_Vector_base<sparta::WpoNode<cfg::Block *>, std::allocator<sparta::WpoNode<cfg::Block *>>>::_Vector_impl" = type { %"struct.std::_Vector_base<sparta::WpoNode<cfg::Block *>, std::allocator<sparta::WpoNode<cfg::Block *>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<sparta::WpoNode<cfg::Block *>, std::allocator<sparta::WpoNode<cfg::Block *>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.424" = type { %"struct.std::_Vector_base.425" }
%"struct.std::_Vector_base.425" = type { %"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl" }
%"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl" = type { %"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl_data" }
%"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::unordered_map.429" = type { %"class.std::_Hashtable.430" }
%"class.std::_Hashtable.430" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%class.UnorderedMap.850 = type { %"class.std::unordered_map.852" }
%"class.std::unordered_map.852" = type { %"class.std::_Hashtable.853" }
%"class.std::_Hashtable.853" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%class.UnorderedSet.866 = type { %"class.std::unordered_set.868" }
%"class.std::unordered_set.868" = type { %"class.std::_Hashtable.869" }
%"class.std::_Hashtable.869" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"class.__gnu_cxx::__normal_iterator.888" = type { ptr }
%"class.sparta::FiniteAbstractDomain" = type { %"class.boost::multiprecision::number" }
%"class.boost::multiprecision::number" = type { %"struct.boost::multiprecision::backends::cpp_int_backend" }
%"struct.boost::multiprecision::backends::cpp_int_backend" = type { %"struct.boost::multiprecision::backends::cpp_int_base" }
%"struct.boost::multiprecision::backends::cpp_int_base" = type { i16 }
%"class.cfg::InstructionIteratorImpl" = type { ptr, %"struct.std::_Rb_tree_const_iterator", %"class.ir_list::InstructionIteratorImpl" }
%"struct.std::_Rb_tree_const_iterator" = type { ptr }
%"class.ir_list::InstructionIteratorImpl" = 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.__gnu_cxx::__normal_iterator.638" = type { ptr }
%"class.cse_impl::CommonSubexpressionElimination" = type { %class.UnorderedMap.272, %"class.std::vector.294", %"class.std::vector.299", %"class.std::vector.304", ptr, %"struct.cse_impl::Stats", i8, ptr, ptr, %"class.std::vector.331", ptr }
%class.UnorderedMap.272 = type { %"class.std::unordered_map.274" }
%"class.std::unordered_map.274" = type { %"class.std::_Hashtable.275" }
%"class.std::_Hashtable.275" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"class.std::vector.294" = type { %"struct.std::_Vector_base.295" }
%"struct.std::_Vector_base.295" = type { %"struct.std::_Vector_base<cse_impl::CommonSubexpressionElimination::Forward, std::allocator<cse_impl::CommonSubexpressionElimination::Forward>>::_Vector_impl" }
%"struct.std::_Vector_base<cse_impl::CommonSubexpressionElimination::Forward, std::allocator<cse_impl::CommonSubexpressionElimination::Forward>>::_Vector_impl" = type { %"struct.std::_Vector_base<cse_impl::CommonSubexpressionElimination::Forward, std::allocator<cse_impl::CommonSubexpressionElimination::Forward>>::_Vector_impl_data" }
%"struct.std::_Vector_base<cse_impl::CommonSubexpressionElimination::Forward, std::allocator<cse_impl::CommonSubexpressionElimination::Forward>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.304" = type { %"struct.std::_Vector_base.305" }
%"struct.std::_Vector_base.305" = type { %"struct.std::_Vector_base<sparta::PatriciaTreeSet<const IRInstruction *>, std::allocator<sparta::PatriciaTreeSet<const IRInstruction *>>>::_Vector_impl" }
%"struct.std::_Vector_base<sparta::PatriciaTreeSet<const IRInstruction *>, std::allocator<sparta::PatriciaTreeSet<const IRInstruction *>>>::_Vector_impl" = type { %"struct.std::_Vector_base<sparta::PatriciaTreeSet<const IRInstruction *>, std::allocator<sparta::PatriciaTreeSet<const IRInstruction *>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<sparta::PatriciaTreeSet<const IRInstruction *>, std::allocator<sparta::PatriciaTreeSet<const IRInstruction *>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.cse_impl::Stats" = type { i64, i64, i64, i64, i64, i64, %class.UnorderedMap.309, i64, i64 }
%class.UnorderedMap.309 = type { %"class.std::unordered_map.311" }
%"class.std::unordered_map.311" = type { %"class.std::_Hashtable.312" }
%"class.std::_Hashtable.312" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"class.std::vector.331" = type { %"struct.std::_Vector_base.332" }
%"struct.std::_Vector_base.332" = type { %"struct.std::_Vector_base<IRInstruction *, std::allocator<IRInstruction *>>::_Vector_impl" }
%"struct.std::_Vector_base<IRInstruction *, std::allocator<IRInstruction *>>::_Vector_impl" = type { %"struct.std::_Vector_base<IRInstruction *, std::allocator<IRInstruction *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<IRInstruction *, std::allocator<IRInstruction *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.std::pair.718" = type { %"struct.cse_impl::CommonSubexpressionElimination::Forward", ptr }
%"struct.cse_impl::CommonSubexpressionElimination::Forward" = type { i64, ptr }
%"struct.cfg::ThrowInfo" = type <{ ptr, i32, [4 x i8] }>

@.str.108 = external hidden unnamed_addr constant [95 x i8], align 1
@.str.109 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.134 = external hidden unnamed_addr constant [15 x i8], align 1
@__PRETTY_FUNCTION__._ZN8cse_impl30CommonSubexpressionElimination25insert_runtime_assertionsERKSt6vectorISt4pairINS0_7ForwardEP13IRInstructionESaIS6_EE = external hidden unnamed_addr constant [131 x i8], align 1
@.str.135 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.136 = external hidden unnamed_addr constant [35 x i8], align 1
@.str.137 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.138 = external hidden unnamed_addr constant [32 x i8], align 1
@.str.139 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.140 = external hidden unnamed_addr constant [34 x i8], align 1

declare i32 @__gxx_personality_v0(...)

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

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

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

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

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

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

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

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

declare void @_ZNK3cfg16ControlFlowGraph6blocksEv(ptr dead_on_unwind writable sret(%"class.std::vector.577") align 8, ptr noundef nonnull align 8 dereferenceable(160)) #2

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIN6sparta15PatriciaTreeSetIPK13IRInstructionEESaIS5_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) #6 align 2

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

declare void @_ZN13IRInstructionC1E8IROpcode(ptr noundef nonnull align 8 dereferenceable(32), i16 noundef zeroext) unnamed_addr #2

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

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

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

declare void @_Z4showB5cxx11PK13IRInstruction(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef) #2

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z4showI13IRInstructionRSoENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPT_(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef) #6

declare noundef ptr @_ZN13IRInstruction7set_srcEtj(ptr noundef nonnull align 8 dereferenceable(32), i16 noundef zeroext, i32 noundef) #2

declare noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32), i16 noundef zeroext) #2

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN8cse_impl30CommonSubexpressionElimination25insert_runtime_assertionsERKSt6vectorISt4pairINS0_7ForwardEP13IRInstructionESaIS6_EE(ptr noundef nonnull align 8 dereferenceable(312) %0, ptr noundef nonnull align 8 dereferenceable(24) %1) #6 align 2 personality ptr @__gxx_personality_v0 {
  %3 = alloca ptr, align 8
  %4 = alloca ptr, align 8
  %5 = alloca %class.UnorderedMap.745, align 8
  %6 = alloca ptr, align 8
  %7 = alloca %"class.std::vector.577", align 8
  %8 = alloca ptr, align 8
  %9 = alloca i32, align 4
  %10 = alloca %"class.__gnu_cxx::__normal_iterator.582", align 8
  %11 = alloca %"class.__gnu_cxx::__normal_iterator.582", align 8
  %12 = alloca ptr, align 8
  %13 = alloca %"class.std::vector.299", align 8
  %14 = alloca %"struct.std::pair.761", align 8
  %15 = alloca %"class.type_inference::TypeInference", align 8
  %16 = alloca %class.UnorderedSet.866, align 8
  %17 = alloca ptr, align 8
  %18 = alloca ptr, align 8
  %19 = alloca %"class.__gnu_cxx::__normal_iterator.888", align 8
  %20 = alloca %"class.__gnu_cxx::__normal_iterator.888", align 8
  %21 = alloca i32, align 4
  %22 = alloca ptr, align 8
  %23 = alloca ptr, align 8
  %24 = alloca ptr, align 8
  %25 = alloca ptr, align 8
  %26 = alloca %"class.sparta::pt_core::PatriciaTreeIterator", align 8
  %27 = alloca %"class.sparta::pt_core::PatriciaTreeIterator", align 8
  %28 = alloca ptr, align 8
  %29 = alloca ptr, align 8
  %30 = alloca ptr, align 8
  %31 = alloca ptr, align 8
  %32 = alloca i32, align 4
  %33 = alloca %"class.sparta::FiniteAbstractDomain", align 2
  %34 = alloca %"class.std::__cxx11::basic_string", align 8
  %35 = alloca %"class.std::__cxx11::basic_string", align 8
  %36 = alloca %"class.std::__cxx11::basic_string", align 8
  %37 = alloca i32, align 4
  %38 = alloca %"class.cfg::InstructionIteratorImpl", align 8
  %39 = alloca ptr, align 8
  %40 = alloca ptr, align 8
  %41 = alloca %"struct.std::pair.761", align 8
  %42 = alloca ptr, align 8
  %43 = alloca i32, align 4
  %44 = alloca ptr, align 8
  %45 = alloca ptr, align 8
  %46 = alloca ptr, align 8
  %47 = alloca %"class.__gnu_cxx::__normal_iterator.638", align 8
  %48 = alloca %"class.__gnu_cxx::__normal_iterator.638", align 8
  %49 = alloca ptr, align 8
  %50 = alloca ptr, align 8
  %51 = alloca ptr, align 8
  %52 = alloca i32, align 4
  %53 = alloca ptr, align 8
  %54 = alloca ptr, align 8
  %55 = alloca ptr, align 8
  store ptr %0, ptr %3, align 8, !tbaa !5
  store ptr %1, ptr %4, align 8, !tbaa !5
  %56 = load ptr, ptr %3, align 8
  call void @llvm.lifetime.start.p0(i64 56, ptr %5) #8
  call void @_ZN12UnorderedMapIPN3cfg5BlockESt6vectorIPNS0_4EdgeESaIS5_EESt4hashIS2_ESt8equal_toIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(56) %5)
  call void @llvm.lifetime.start.p0(i64 8, ptr %6) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr %7) #8
  %57 = getelementptr inbounds %"class.cse_impl::CommonSubexpressionElimination", ptr %56, i32 0, i32 4
  %58 = load ptr, ptr %57, align 8, !tbaa !9
  invoke void @_ZNK3cfg16ControlFlowGraph6blocksEv(ptr dead_on_unwind writable sret(%"class.std::vector.577") align 8 %7, ptr noundef nonnull align 8 dereferenceable(160) %58)
          to label %59 unwind label %69

59:                                               ; preds = %2
  store ptr %7, ptr %6, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %10) #8
  %60 = load ptr, ptr %6, align 8, !tbaa !5
  %61 = call ptr @_ZNSt6vectorIPN3cfg5BlockESaIS2_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %60) #8
  %62 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.582", ptr %10, i32 0, i32 0
  store ptr %61, ptr %62, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #8
  %63 = load ptr, ptr %6, align 8, !tbaa !5
  %64 = call ptr @_ZNSt6vectorIPN3cfg5BlockESaIS2_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %63) #8
  %65 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.582", ptr %11, i32 0, i32 0
  store ptr %64, ptr %65, align 8
  br label %66

66:                                               ; preds = %84, %59
  %67 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPPN3cfg5BlockESt6vectorIS3_SaIS3_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %10, ptr noundef nonnull align 8 dereferenceable(8) %11) #8
  br i1 %67, label %73, label %68

68:                                               ; preds = %66
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #8
  call void @_ZNSt6vectorIPN3cfg5BlockESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %7) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %7) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %6) #8
  br label %96

69:                                               ; preds = %2
  %70 = landingpad { ptr, i32 }
          cleanup
  %71 = extractvalue { ptr, i32 } %70, 0
  store ptr %71, ptr %8, align 8
  %72 = extractvalue { ptr, i32 } %70, 1
  store i32 %72, ptr %9, align 4
  br label %95

73:                                               ; preds = %66
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #8
  %74 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPPN3cfg5BlockESt6vectorIS3_SaIS3_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %10) #8
  %75 = load ptr, ptr %74, align 8, !tbaa !5
  store ptr %75, ptr %12, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 24, ptr %13) #8
  %76 = load ptr, ptr %12, align 8, !tbaa !5
  invoke void @_ZNK3cfg5Block28get_outgoing_throws_in_orderEv(ptr dead_on_unwind writable sret(%"class.std::vector.299") align 8 %13, ptr noundef nonnull align 8 dereferenceable(104) %76)
          to label %77 unwind label %86

77:                                               ; preds = %73
  %78 = invoke { ptr, i8 } @_ZN12UnorderedMapIPN3cfg5BlockESt6vectorIPNS0_4EdgeESaIS5_EESt4hashIS2_ESt8equal_toIS2_EE7emplaceIJRS2_S7_EEESt4pairINSC_13FixedIteratorEbEDpOT_(ptr noundef nonnull align 8 dereferenceable(56) %5, ptr noundef nonnull align 8 dereferenceable(8) %12, ptr noundef nonnull align 8 dereferenceable(24) %13)
          to label %79 unwind label %90

79:                                               ; preds = %77
  %80 = getelementptr inbounds { ptr, i8 }, ptr %14, i32 0, i32 0
  %81 = extractvalue { ptr, i8 } %78, 0
  store ptr %81, ptr %80, align 8
  %82 = getelementptr inbounds { ptr, i8 }, ptr %14, i32 0, i32 1
  %83 = extractvalue { ptr, i8 } %78, 1
  store i8 %83, ptr %82, align 8
  call void @_ZNSt6vectorIPN3cfg4EdgeESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %13) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %13) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #8
  br label %84

84:                                               ; preds = %79
  %85 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPPN3cfg5BlockESt6vectorIS3_SaIS3_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %10) #8
  br label %66

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

90:                                               ; preds = %77
  %91 = landingpad { ptr, i32 }
          cleanup
  %92 = extractvalue { ptr, i32 } %91, 0
  store ptr %92, ptr %8, align 8
  %93 = extractvalue { ptr, i32 } %91, 1
  store i32 %93, ptr %9, align 4
  call void @_ZNSt6vectorIPN3cfg4EdgeESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %13) #8
  br label %94

94:                                               ; preds = %90, %86
  call void @llvm.lifetime.end.p0(i64 24, ptr %13) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #8
  call void @_ZNSt6vectorIPN3cfg5BlockESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %7) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %7) #8
  br label %95

95:                                               ; preds = %94, %69
  call void @llvm.lifetime.end.p0(i64 8, ptr %6) #8
  br label %581

96:                                               ; preds = %68
  call void @llvm.lifetime.start.p0(i64 432, ptr %15) #8
  %97 = getelementptr inbounds %"class.cse_impl::CommonSubexpressionElimination", ptr %56, i32 0, i32 4
  %98 = load ptr, ptr %97, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 56, ptr %16) #8
  invoke void @_ZN12UnorderedSetIP7DexTypeSt4hashIS1_ESt8equal_toIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(56) %16)
          to label %99 unwind label %121

99:                                               ; preds = %96
  invoke void @_ZN14type_inference13TypeInferenceC2ERKN3cfg16ControlFlowGraphEbRK12UnorderedSetIP7DexTypeSt4hashIS7_ESt8equal_toIS7_EEPKN21method_override_graph5GraphE(ptr noundef nonnull align 8 dereferenceable(432) %15, ptr noundef nonnull align 8 dereferenceable(160) %98, i1 noundef zeroext false, ptr noundef nonnull align 8 dereferenceable(56) %16, ptr noundef null)
          to label %100 unwind label %125

100:                                              ; preds = %99
  call void @_ZN12UnorderedSetIP7DexTypeSt4hashIS1_ESt8equal_toIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %16) #8
  call void @llvm.lifetime.end.p0(i64 56, ptr %16) #8
  %101 = getelementptr inbounds %"class.cse_impl::CommonSubexpressionElimination", ptr %56, i32 0, i32 6
  %102 = load i8, ptr %101, align 8, !tbaa !39, !range !40, !noundef !41
  %103 = trunc i8 %102 to i1
  %104 = getelementptr inbounds %"class.cse_impl::CommonSubexpressionElimination", ptr %56, i32 0, i32 7
  %105 = load ptr, ptr %104, align 8, !tbaa !42
  %106 = getelementptr inbounds %"class.cse_impl::CommonSubexpressionElimination", ptr %56, i32 0, i32 8
  %107 = load ptr, ptr %106, align 8, !tbaa !43
  invoke void @_ZN14type_inference13TypeInference3runEbP7DexTypeP11DexTypeListPKSt3mapIiSt10unique_ptrI16DexAnnotationSetSt14default_deleteIS7_EESt4lessIiESaISt4pairIKiSA_EEE(ptr noundef nonnull align 8 dereferenceable(432) %15, i1 noundef zeroext %103, ptr noundef %105, ptr noundef %107, ptr noundef null)
          to label %108 unwind label %130

108:                                              ; preds = %100
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #8
  %109 = invoke noundef nonnull align 8 dereferenceable(56) ptr @_ZN14type_inference13TypeInference21get_type_environmentsEv(ptr noundef nonnull align 8 dereferenceable(432) %15)
          to label %110 unwind label %134

110:                                              ; preds = %108
  store ptr %109, ptr %17, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #8
  %111 = load ptr, ptr %4, align 8, !tbaa !5
  store ptr %111, ptr %18, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #8
  %112 = load ptr, ptr %18, align 8, !tbaa !5
  %113 = call ptr @_ZNKSt6vectorISt4pairIN8cse_impl30CommonSubexpressionElimination7ForwardEP13IRInstructionESaIS6_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %112) #8
  %114 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.888", ptr %19, i32 0, i32 0
  store ptr %113, ptr %114, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #8
  %115 = load ptr, ptr %18, align 8, !tbaa !5
  %116 = call ptr @_ZNKSt6vectorISt4pairIN8cse_impl30CommonSubexpressionElimination7ForwardEP13IRInstructionESaIS6_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %115) #8
  %117 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.888", ptr %20, i32 0, i32 0
  store ptr %116, ptr %117, align 8
  br label %118

118:                                              ; preds = %574, %110
  %119 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKSt4pairIN8cse_impl30CommonSubexpressionElimination7ForwardEP13IRInstructionESt6vectorIS7_SaIS7_EEEEbRKNS_17__normal_iteratorIT_T0_EESI_(ptr noundef nonnull align 8 dereferenceable(8) %19, ptr noundef nonnull align 8 dereferenceable(8) %20) #8
  br i1 %119, label %138, label %120

120:                                              ; preds = %118
  store i32 4, ptr %21, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #8
  br label %577

121:                                              ; preds = %96
  %122 = landingpad { ptr, i32 }
          cleanup
  %123 = extractvalue { ptr, i32 } %122, 0
  store ptr %123, ptr %8, align 8
  %124 = extractvalue { ptr, i32 } %122, 1
  store i32 %124, ptr %9, align 4
  br label %129

125:                                              ; preds = %99
  %126 = landingpad { ptr, i32 }
          cleanup
  %127 = extractvalue { ptr, i32 } %126, 0
  store ptr %127, ptr %8, align 8
  %128 = extractvalue { ptr, i32 } %126, 1
  store i32 %128, ptr %9, align 4
  call void @_ZN12UnorderedSetIP7DexTypeSt4hashIS1_ESt8equal_toIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %16) #8
  br label %129

129:                                              ; preds = %125, %121
  call void @llvm.lifetime.end.p0(i64 56, ptr %16) #8
  br label %580

130:                                              ; preds = %100
  %131 = landingpad { ptr, i32 }
          cleanup
  %132 = extractvalue { ptr, i32 } %131, 0
  store ptr %132, ptr %8, align 8
  %133 = extractvalue { ptr, i32 } %131, 1
  store i32 %133, ptr %9, align 4
  br label %579

134:                                              ; preds = %108
  %135 = landingpad { ptr, i32 }
          cleanup
  %136 = extractvalue { ptr, i32 } %135, 0
  store ptr %136, ptr %8, align 8
  %137 = extractvalue { ptr, i32 } %135, 1
  store i32 %137, ptr %9, align 4
  br label %578

138:                                              ; preds = %118
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #8
  %139 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKSt4pairIN8cse_impl30CommonSubexpressionElimination7ForwardEP13IRInstructionESt6vectorIS7_SaIS7_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %19) #8
  store ptr %139, ptr %22, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #8
  %140 = load ptr, ptr %22, align 8, !tbaa !5
  %141 = getelementptr inbounds %"struct.std::pair.718", ptr %140, i32 0, i32 0
  store ptr %141, ptr %23, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #8
  %142 = getelementptr inbounds %"class.cse_impl::CommonSubexpressionElimination", ptr %56, i32 0, i32 3
  %143 = load ptr, ptr %23, align 8, !tbaa !5
  %144 = getelementptr inbounds %"struct.cse_impl::CommonSubexpressionElimination::Forward", ptr %143, i32 0, i32 0
  %145 = load i64, ptr %144, align 8, !tbaa !44
  %146 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIN6sparta15PatriciaTreeSetIPK13IRInstructionEESaIS5_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %142, i64 noundef %145)
          to label %147 unwind label %157

147:                                              ; preds = %138
  store ptr %146, ptr %24, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #8
  %148 = load ptr, ptr %24, align 8, !tbaa !5
  store ptr %148, ptr %25, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 96, ptr %26) #8
  %149 = load ptr, ptr %25, align 8, !tbaa !5
  invoke void @_ZNK6sparta15PatriciaTreeSetIPK13IRInstructionE5beginEv(ptr dead_on_unwind writable sret(%"class.sparta::pt_core::PatriciaTreeIterator") align 8 %26, ptr noundef nonnull align 8 dereferenceable(8) %149)
          to label %150 unwind label %161

150:                                              ; preds = %147
  call void @llvm.lifetime.start.p0(i64 96, ptr %27) #8
  %151 = load ptr, ptr %25, align 8, !tbaa !5
  invoke void @_ZNK6sparta15PatriciaTreeSetIPK13IRInstructionE3endEv(ptr dead_on_unwind writable sret(%"class.sparta::pt_core::PatriciaTreeIterator") align 8 %27, ptr noundef nonnull align 8 dereferenceable(8) %151)
          to label %152 unwind label %165

152:                                              ; preds = %150
  br label %153

153:                                              ; preds = %557, %152
  %154 = invoke noundef zeroext i1 @_ZNK6sparta7pt_core20PatriciaTreeIteratorIPK13IRInstructionNS0_10EmptyValueEEneERKS6_(ptr noundef nonnull align 8 dereferenceable(96) %26, ptr noundef nonnull align 8 dereferenceable(96) %27)
          to label %155 unwind label %169

155:                                              ; preds = %153
  br i1 %154, label %173, label %156

156:                                              ; preds = %155
  store i32 6, ptr %21, align 4
  call void @_ZN6sparta7pt_core20PatriciaTreeIteratorIPK13IRInstructionNS0_10EmptyValueEED2Ev(ptr noundef nonnull align 8 dereferenceable(96) %27) #8
  call void @llvm.lifetime.end.p0(i64 96, ptr %27) #8
  call void @_ZN6sparta7pt_core20PatriciaTreeIteratorIPK13IRInstructionNS0_10EmptyValueEED2Ev(ptr noundef nonnull align 8 dereferenceable(96) %26) #8
  call void @llvm.lifetime.end.p0(i64 96, ptr %26) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #8
  br label %573

157:                                              ; preds = %138
  %158 = landingpad { ptr, i32 }
          cleanup
  %159 = extractvalue { ptr, i32 } %158, 0
  store ptr %159, ptr %8, align 8
  %160 = extractvalue { ptr, i32 } %158, 1
  store i32 %160, ptr %9, align 4
  br label %576

161:                                              ; preds = %147
  %162 = landingpad { ptr, i32 }
          cleanup
  %163 = extractvalue { ptr, i32 } %162, 0
  store ptr %163, ptr %8, align 8
  %164 = extractvalue { ptr, i32 } %162, 1
  store i32 %164, ptr %9, align 4
  br label %572

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

169:                                              ; preds = %555, %153
  %170 = landingpad { ptr, i32 }
          cleanup
  %171 = extractvalue { ptr, i32 } %170, 0
  store ptr %171, ptr %8, align 8
  %172 = extractvalue { ptr, i32 } %170, 1
  store i32 %172, ptr %9, align 4
  br label %570

173:                                              ; preds = %155
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #8
  %174 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK6sparta7pt_core20PatriciaTreeIteratorIPK13IRInstructionNS0_10EmptyValueEEdeEv(ptr noundef nonnull align 8 dereferenceable(96) %26)
          to label %175 unwind label %197

175:                                              ; preds = %173
  %176 = load ptr, ptr %174, align 8, !tbaa !5
  store ptr %176, ptr %28, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #8
  %177 = load ptr, ptr %23, align 8, !tbaa !5
  %178 = getelementptr inbounds %"struct.cse_impl::CommonSubexpressionElimination::Forward", ptr %177, i32 0, i32 1
  %179 = load ptr, ptr %178, align 8, !tbaa !46
  store ptr %179, ptr %29, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #8
  %180 = load ptr, ptr %22, align 8, !tbaa !5
  %181 = getelementptr inbounds %"struct.std::pair.718", ptr %180, i32 0, i32 1
  %182 = load ptr, ptr %181, align 8, !tbaa !47
  store ptr %182, ptr %30, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #8
  %183 = load ptr, ptr %17, align 8, !tbaa !5
  %184 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZN12UnorderedMapIPK13IRInstructionN14type_inference15TypeEnvironmentESt4hashIS2_ESt8equal_toIS2_EE2atERKS2_(ptr noundef nonnull align 8 dereferenceable(56) %183, ptr noundef nonnull align 8 dereferenceable(8) %29)
          to label %185 unwind label %201

185:                                              ; preds = %175
  store ptr %184, ptr %31, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %32) #8
  %186 = load ptr, ptr %30, align 8, !tbaa !5
  %187 = invoke noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %186, i16 noundef zeroext 0)
          to label %188 unwind label %205

188:                                              ; preds = %185
  store i32 %187, ptr %32, align 4, !tbaa !49
  call void @llvm.lifetime.start.p0(i64 2, ptr %33) #8
  %189 = load ptr, ptr %31, align 8, !tbaa !5
  %190 = load i32, ptr %32, align 4, !tbaa !49
  invoke void @_ZNK14type_inference15TypeEnvironment8get_typeEj(ptr dead_on_unwind writable sret(%"class.sparta::FiniteAbstractDomain") align 2 %33, ptr noundef nonnull align 8 dereferenceable(48) %189, i32 noundef %190)
          to label %191 unwind label %209

191:                                              ; preds = %188
  %192 = invoke noundef zeroext i1 @_ZNK6sparta20FiniteAbstractDomainI6IRTypeNS_16BitVectorLatticeIS1_Lm16EvvEEN5boost14multiprecision6numberINS5_8backends15cpp_int_backendILj16ELj16ELNS5_16cpp_integer_typeE0ELNS5_18cpp_int_check_typeE0EvEELNS5_26expression_template_optionE0EEEXadL_ZN14type_inference12type_latticeEEEE6is_topEv(ptr noundef nonnull align 2 dereferenceable(2) %33)
          to label %193 unwind label %213

193:                                              ; preds = %191
  br i1 %192, label %195, label %194

194:                                              ; preds = %193
  br label %218

195:                                              ; preds = %193
  invoke void (ptr, ptr, i32, ptr, i32, ptr, ...) @_Z11assert_failPKcS0_jS0_10RedexErrorS0_z(ptr noundef @.str.134, ptr noundef @.str.108, i32 noundef 1953, ptr noundef @__PRETTY_FUNCTION__._ZN8cse_impl30CommonSubexpressionElimination25insert_runtime_assertionsERKSt6vectorISt4pairINS0_7ForwardEP13IRInstructionESaIS6_EE, i32 noundef 2, ptr noundef @.str.109) #9
          to label %196 unwind label %213

196:                                              ; preds = %195
  unreachable

197:                                              ; preds = %173
  %198 = landingpad { ptr, i32 }
          cleanup
  %199 = extractvalue { ptr, i32 } %198, 0
  store ptr %199, ptr %8, align 8
  %200 = extractvalue { ptr, i32 } %198, 1
  store i32 %200, ptr %9, align 4
  br label %569

201:                                              ; preds = %175
  %202 = landingpad { ptr, i32 }
          cleanup
  %203 = extractvalue { ptr, i32 } %202, 0
  store ptr %203, ptr %8, align 8
  %204 = extractvalue { ptr, i32 } %202, 1
  store i32 %204, ptr %9, align 4
  br label %568

205:                                              ; preds = %185
  %206 = landingpad { ptr, i32 }
          cleanup
  %207 = extractvalue { ptr, i32 } %206, 0
  store ptr %207, ptr %8, align 8
  %208 = extractvalue { ptr, i32 } %206, 1
  store i32 %208, ptr %9, align 4
  br label %567

209:                                              ; preds = %188
  %210 = landingpad { ptr, i32 }
          cleanup
  %211 = extractvalue { ptr, i32 } %210, 0
  store ptr %211, ptr %8, align 8
  %212 = extractvalue { ptr, i32 } %210, 1
  store i32 %212, ptr %9, align 4
  br label %566

213:                                              ; preds = %311, %307, %303, %299, %295, %292, %287, %284, %279, %276, %271, %268, %263, %226, %222, %218, %195, %191
  %214 = landingpad { ptr, i32 }
          cleanup
  %215 = extractvalue { ptr, i32 } %214, 0
  store ptr %215, ptr %8, align 8
  %216 = extractvalue { ptr, i32 } %214, 1
  store i32 %216, ptr %9, align 4
  br label %565

217:                                              ; No predecessors!
  br label %218

218:                                              ; preds = %217, %194
  %219 = invoke noundef zeroext i1 @_ZNK6sparta20FiniteAbstractDomainI6IRTypeNS_16BitVectorLatticeIS1_Lm16EvvEEN5boost14multiprecision6numberINS5_8backends15cpp_int_backendILj16ELj16ELNS5_16cpp_integer_typeE0ELNS5_18cpp_int_check_typeE0EvEELNS5_26expression_template_optionE0EEEXadL_ZN14type_inference12type_latticeEEEE9is_bottomEv(ptr noundef nonnull align 2 dereferenceable(2) %33)
          to label %220 unwind label %213

220:                                              ; preds = %218
  br i1 %219, label %222, label %221

221:                                              ; preds = %220
  br label %225

222:                                              ; preds = %220
  invoke void (ptr, ptr, i32, ptr, i32, ptr, ...) @_Z11assert_failPKcS0_jS0_10RedexErrorS0_z(ptr noundef @.str.135, ptr noundef @.str.108, i32 noundef 1954, ptr noundef @__PRETTY_FUNCTION__._ZN8cse_impl30CommonSubexpressionElimination25insert_runtime_assertionsERKSt6vectorISt4pairINS0_7ForwardEP13IRInstructionESaIS6_EE, i32 noundef 2, ptr noundef @.str.109) #9
          to label %223 unwind label %213

223:                                              ; preds = %222
  unreachable

224:                                              ; No predecessors!
  br label %225

225:                                              ; preds = %224, %221
  br label %226

226:                                              ; preds = %225
  %227 = invoke noundef zeroext i1 @_Z12traceEnabled11TraceModulei(i32 noundef 29, i32 noundef 6)
          to label %228 unwind label %213

228:                                              ; preds = %226
  br i1 %227, label %229, label %261

229:                                              ; preds = %228
  call void @llvm.lifetime.start.p0(i64 32, ptr %34) #8
  %230 = load ptr, ptr %28, align 8, !tbaa !5
  invoke void @_Z4showB5cxx11PK13IRInstruction(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %34, ptr noundef %230)
          to label %231 unwind label %242

231:                                              ; preds = %229
  %232 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %34) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %35) #8
  %233 = load ptr, ptr %29, align 8, !tbaa !5
  invoke void @_Z4showI13IRInstructionRSoENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPT_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %35, ptr noundef %233)
          to label %234 unwind label %246

234:                                              ; preds = %231
  %235 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %35) #8
  %236 = load i32, ptr %32, align 4, !tbaa !49
  call void @llvm.lifetime.start.p0(i64 32, ptr %36) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %37) #8
  %237 = invoke noundef i32 @_ZNK6sparta20FiniteAbstractDomainI6IRTypeNS_16BitVectorLatticeIS1_Lm16EvvEEN5boost14multiprecision6numberINS5_8backends15cpp_int_backendILj16ELj16ELNS5_16cpp_integer_typeE0ELNS5_18cpp_int_check_typeE0EvEELNS5_26expression_template_optionE0EEEXadL_ZN14type_inference12type_latticeEEEE7elementEv(ptr noundef nonnull align 2 dereferenceable(2) %33)
          to label %238 unwind label %250

238:                                              ; preds = %234
  store i32 %237, ptr %37, align 4, !tbaa !51
  invoke void @_Z4showI6IRTypeRSovENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEOT_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %36, ptr noundef nonnull align 4 dereferenceable(4) %37)
          to label %239 unwind label %250

239:                                              ; preds = %238
  %240 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %36) #8
  invoke void (i32, i32, i1, ptr, ...) @_Z5trace11TraceModuleibPKcz(i32 noundef 29, i32 noundef 6, i1 noundef zeroext false, ptr noundef @.str.136, ptr noundef %232, ptr noundef %235, i32 noundef %236, ptr noundef %240)
          to label %241 unwind label %254

241:                                              ; preds = %239
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %36) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %36) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %35) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %35) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %34) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %34) #8
  br label %261

242:                                              ; preds = %229
  %243 = landingpad { ptr, i32 }
          cleanup
  %244 = extractvalue { ptr, i32 } %243, 0
  store ptr %244, ptr %8, align 8
  %245 = extractvalue { ptr, i32 } %243, 1
  store i32 %245, ptr %9, align 4
  br label %260

246:                                              ; preds = %231
  %247 = landingpad { ptr, i32 }
          cleanup
  %248 = extractvalue { ptr, i32 } %247, 0
  store ptr %248, ptr %8, align 8
  %249 = extractvalue { ptr, i32 } %247, 1
  store i32 %249, ptr %9, align 4
  br label %259

250:                                              ; preds = %238, %234
  %251 = landingpad { ptr, i32 }
          cleanup
  %252 = extractvalue { ptr, i32 } %251, 0
  store ptr %252, ptr %8, align 8
  %253 = extractvalue { ptr, i32 } %251, 1
  store i32 %253, ptr %9, align 4
  br label %258

254:                                              ; preds = %239
  %255 = landingpad { ptr, i32 }
          cleanup
  %256 = extractvalue { ptr, i32 } %255, 0
  store ptr %256, ptr %8, align 8
  %257 = extractvalue { ptr, i32 } %255, 1
  store i32 %257, ptr %9, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %36) #8
  br label %258

258:                                              ; preds = %254, %250
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %36) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %35) #8
  br label %259

259:                                              ; preds = %258, %246
  call void @llvm.lifetime.end.p0(i64 32, ptr %35) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %34) #8
  br label %260

260:                                              ; preds = %259, %242
  call void @llvm.lifetime.end.p0(i64 32, ptr %34) #8
  br label %565

261:                                              ; preds = %241, %228
  br label %262

262:                                              ; preds = %261
  br label %263

263:                                              ; preds = %262
  %264 = invoke noundef i32 @_ZNK6sparta20FiniteAbstractDomainI6IRTypeNS_16BitVectorLatticeIS1_Lm16EvvEEN5boost14multiprecision6numberINS5_8backends15cpp_int_backendILj16ELj16ELNS5_16cpp_integer_typeE0ELNS5_18cpp_int_check_typeE0EvEELNS5_26expression_template_optionE0EEEXadL_ZN14type_inference12type_latticeEEEE7elementEv(ptr noundef nonnull align 2 dereferenceable(2) %33)
          to label %265 unwind label %213

265:                                              ; preds = %263
  %266 = icmp ne i32 %264, 4
  br i1 %266, label %267, label %268

267:                                              ; preds = %265
  br label %271

268:                                              ; preds = %265
  invoke void (ptr, ptr, i32, ptr, i32, ptr, ...) @_Z11assert_failPKcS0_jS0_10RedexErrorS0_z(ptr noundef @.str.137, ptr noundef @.str.108, i32 noundef 1957, ptr noundef @__PRETTY_FUNCTION__._ZN8cse_impl30CommonSubexpressionElimination25insert_runtime_assertionsERKSt6vectorISt4pairINS0_7ForwardEP13IRInstructionESaIS6_EE, i32 noundef 2, ptr noundef @.str.109) #9
          to label %269 unwind label %213

269:                                              ; preds = %268
  unreachable

270:                                              ; No predecessors!
  br label %271

271:                                              ; preds = %270, %267
  %272 = invoke noundef i32 @_ZNK6sparta20FiniteAbstractDomainI6IRTypeNS_16BitVectorLatticeIS1_Lm16EvvEEN5boost14multiprecision6numberINS5_8backends15cpp_int_backendILj16ELj16ELNS5_16cpp_integer_typeE0ELNS5_18cpp_int_check_typeE0EvEELNS5_26expression_template_optionE0EEEXadL_ZN14type_inference12type_latticeEEEE7elementEv(ptr noundef nonnull align 2 dereferenceable(2) %33)
          to label %273 unwind label %213

273:                                              ; preds = %271
  %274 = icmp ne i32 %272, 9
  br i1 %274, label %275, label %276

275:                                              ; preds = %273
  br label %279

276:                                              ; preds = %273
  invoke void (ptr, ptr, i32, ptr, i32, ptr, ...) @_Z11assert_failPKcS0_jS0_10RedexErrorS0_z(ptr noundef @.str.138, ptr noundef @.str.108, i32 noundef 1958, ptr noundef @__PRETTY_FUNCTION__._ZN8cse_impl30CommonSubexpressionElimination25insert_runtime_assertionsERKSt6vectorISt4pairINS0_7ForwardEP13IRInstructionESaIS6_EE, i32 noundef 2, ptr noundef @.str.109) #9
          to label %277 unwind label %213

277:                                              ; preds = %276
  unreachable

278:                                              ; No predecessors!
  br label %279

279:                                              ; preds = %278, %275
  %280 = invoke noundef i32 @_ZNK6sparta20FiniteAbstractDomainI6IRTypeNS_16BitVectorLatticeIS1_Lm16EvvEEN5boost14multiprecision6numberINS5_8backends15cpp_int_backendILj16ELj16ELNS5_16cpp_integer_typeE0ELNS5_18cpp_int_check_typeE0EvEELNS5_26expression_template_optionE0EEEXadL_ZN14type_inference12type_latticeEEEE7elementEv(ptr noundef nonnull align 2 dereferenceable(2) %33)
          to label %281 unwind label %213

281:                                              ; preds = %279
  %282 = icmp ne i32 %280, 11
  br i1 %282, label %283, label %284

283:                                              ; preds = %281
  br label %287

284:                                              ; preds = %281
  invoke void (ptr, ptr, i32, ptr, i32, ptr, ...) @_Z11assert_failPKcS0_jS0_10RedexErrorS0_z(ptr noundef @.str.139, ptr noundef @.str.108, i32 noundef 1959, ptr noundef @__PRETTY_FUNCTION__._ZN8cse_impl30CommonSubexpressionElimination25insert_runtime_assertionsERKSt6vectorISt4pairINS0_7ForwardEP13IRInstructionESaIS6_EE, i32 noundef 2, ptr noundef @.str.109) #9
          to label %285 unwind label %213

285:                                              ; preds = %284
  unreachable

286:                                              ; No predecessors!
  br label %287

287:                                              ; preds = %286, %283
  %288 = invoke noundef i32 @_ZNK6sparta20FiniteAbstractDomainI6IRTypeNS_16BitVectorLatticeIS1_Lm16EvvEEN5boost14multiprecision6numberINS5_8backends15cpp_int_backendILj16ELj16ELNS5_16cpp_integer_typeE0ELNS5_18cpp_int_check_typeE0EvEELNS5_26expression_template_optionE0EEEXadL_ZN14type_inference12type_latticeEEEE7elementEv(ptr noundef nonnull align 2 dereferenceable(2) %33)
          to label %289 unwind label %213

289:                                              ; preds = %287
  %290 = icmp ne i32 %288, 14
  br i1 %290, label %291, label %292

291:                                              ; preds = %289
  br label %295

292:                                              ; preds = %289
  invoke void (ptr, ptr, i32, ptr, i32, ptr, ...) @_Z11assert_failPKcS0_jS0_10RedexErrorS0_z(ptr noundef @.str.140, ptr noundef @.str.108, i32 noundef 1960, ptr noundef @__PRETTY_FUNCTION__._ZN8cse_impl30CommonSubexpressionElimination25insert_runtime_assertionsERKSt6vectorISt4pairINS0_7ForwardEP13IRInstructionESaIS6_EE, i32 noundef 2, ptr noundef @.str.109) #9
          to label %293 unwind label %213

293:                                              ; preds = %292
  unreachable

294:                                              ; No predecessors!
  br label %295

295:                                              ; preds = %294, %291
  %296 = invoke noundef i32 @_ZNK6sparta20FiniteAbstractDomainI6IRTypeNS_16BitVectorLatticeIS1_Lm16EvvEEN5boost14multiprecision6numberINS5_8backends15cpp_int_backendILj16ELj16ELNS5_16cpp_integer_typeE0ELNS5_18cpp_int_check_typeE0EvEELNS5_26expression_template_optionE0EEEXadL_ZN14type_inference12type_latticeEEEE7elementEv(ptr noundef nonnull align 2 dereferenceable(2) %33)
          to label %297 unwind label %213

297:                                              ; preds = %295
  %298 = icmp ne i32 %296, 1
  br i1 %298, label %299, label %316

299:                                              ; preds = %297
  %300 = invoke noundef i32 @_ZNK6sparta20FiniteAbstractDomainI6IRTypeNS_16BitVectorLatticeIS1_Lm16EvvEEN5boost14multiprecision6numberINS5_8backends15cpp_int_backendILj16ELj16ELNS5_16cpp_integer_typeE0ELNS5_18cpp_int_check_typeE0EvEELNS5_26expression_template_optionE0EEEXadL_ZN14type_inference12type_latticeEEEE7elementEv(ptr noundef nonnull align 2 dereferenceable(2) %33)
          to label %301 unwind label %213

301:                                              ; preds = %299
  %302 = icmp ne i32 %300, 2
  br i1 %302, label %303, label %316

303:                                              ; preds = %301
  %304 = invoke noundef i32 @_ZNK6sparta20FiniteAbstractDomainI6IRTypeNS_16BitVectorLatticeIS1_Lm16EvvEEN5boost14multiprecision6numberINS5_8backends15cpp_int_backendILj16ELj16ELNS5_16cpp_integer_typeE0ELNS5_18cpp_int_check_typeE0EvEELNS5_26expression_template_optionE0EEEXadL_ZN14type_inference12type_latticeEEEE7elementEv(ptr noundef nonnull align 2 dereferenceable(2) %33)
          to label %305 unwind label %213

305:                                              ; preds = %303
  %306 = icmp ne i32 %304, 6
  br i1 %306, label %307, label %316

307:                                              ; preds = %305
  %308 = invoke noundef i32 @_ZNK6sparta20FiniteAbstractDomainI6IRTypeNS_16BitVectorLatticeIS1_Lm16EvvEEN5boost14multiprecision6numberINS5_8backends15cpp_int_backendILj16ELj16ELNS5_16cpp_integer_typeE0ELNS5_18cpp_int_check_typeE0EvEELNS5_26expression_template_optionE0EEEXadL_ZN14type_inference12type_latticeEEEE7elementEv(ptr noundef nonnull align 2 dereferenceable(2) %33)
          to label %309 unwind label %213

309:                                              ; preds = %307
  %310 = icmp ne i32 %308, 5
  br i1 %310, label %311, label %316

311:                                              ; preds = %309
  %312 = invoke noundef i32 @_ZNK6sparta20FiniteAbstractDomainI6IRTypeNS_16BitVectorLatticeIS1_Lm16EvvEEN5boost14multiprecision6numberINS5_8backends15cpp_int_backendILj16ELj16ELNS5_16cpp_integer_typeE0ELNS5_18cpp_int_check_typeE0EvEELNS5_26expression_template_optionE0EEEXadL_ZN14type_inference12type_latticeEEEE7elementEv(ptr noundef nonnull align 2 dereferenceable(2) %33)
          to label %313 unwind label %213

313:                                              ; preds = %311
  %314 = icmp ne i32 %312, 8
  br i1 %314, label %315, label %316

315:                                              ; preds = %313
  store i32 7, ptr %21, align 4
  br label %549

316:                                              ; preds = %313, %309, %305, %301, %297
  call void @llvm.lifetime.start.p0(i64 32, ptr %38) #8
  %317 = getelementptr inbounds %"class.cse_impl::CommonSubexpressionElimination", ptr %56, i32 0, i32 4
  %318 = load ptr, ptr %317, align 8, !tbaa !9
  %319 = load ptr, ptr %29, align 8, !tbaa !5
  invoke void @_ZN3cfg16ControlFlowGraph9find_insnEP13IRInstructionPNS_5BlockE(ptr dead_on_unwind writable sret(%"class.cfg::InstructionIteratorImpl") align 8 %38, ptr noundef nonnull align 8 dereferenceable(160) %318, ptr noundef %319, ptr noundef null)
          to label %320 unwind label %379

320:                                              ; preds = %316
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #8
  %321 = invoke noundef ptr @_ZNK3cfg23InstructionIteratorImplILb0EE5blockEv(ptr noundef nonnull align 8 dereferenceable(32) %38)
          to label %322 unwind label %383

322:                                              ; preds = %320
  store ptr %321, ptr %39, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #8
  %323 = getelementptr inbounds %"class.cse_impl::CommonSubexpressionElimination", ptr %56, i32 0, i32 4
  %324 = load ptr, ptr %323, align 8, !tbaa !9
  %325 = invoke noundef ptr @_ZN3cfg16ControlFlowGraph11split_blockERKNS_23InstructionIteratorImplILb0EEE(ptr noundef nonnull align 8 dereferenceable(160) %324, ptr noundef nonnull align 8 dereferenceable(32) %38)
          to label %326 unwind label %387

326:                                              ; preds = %322
  store ptr %325, ptr %40, align 8, !tbaa !5
  %327 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN12UnorderedMapIPN3cfg5BlockESt6vectorIPNS0_4EdgeESaIS5_EESt4hashIS2_ESt8equal_toIS2_EE2atERKS2_(ptr noundef nonnull align 8 dereferenceable(56) %5, ptr noundef nonnull align 8 dereferenceable(8) %39)
          to label %328 unwind label %387

328:                                              ; preds = %326
  %329 = invoke { ptr, i8 } @_ZN12UnorderedMapIPN3cfg5BlockESt6vectorIPNS0_4EdgeESaIS5_EESt4hashIS2_ESt8equal_toIS2_EE7emplaceIJRS2_RS7_EEESt4pairINSC_13FixedIteratorEbEDpOT_(ptr noundef nonnull align 8 dereferenceable(56) %5, ptr noundef nonnull align 8 dereferenceable(8) %40, ptr noundef nonnull align 8 dereferenceable(24) %327)
          to label %330 unwind label %387

330:                                              ; preds = %328
  %331 = getelementptr inbounds { ptr, i8 }, ptr %41, i32 0, i32 0
  %332 = extractvalue { ptr, i8 } %329, 0
  store ptr %332, ptr %331, align 8
  %333 = getelementptr inbounds { ptr, i8 }, ptr %41, i32 0, i32 1
  %334 = extractvalue { ptr, i8 } %329, 1
  store i8 %334, ptr %333, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #8
  %335 = getelementptr inbounds %"class.cse_impl::CommonSubexpressionElimination", ptr %56, i32 0, i32 4
  %336 = load ptr, ptr %335, align 8, !tbaa !9
  %337 = invoke noundef ptr @_ZN3cfg16ControlFlowGraph12create_blockEv(ptr noundef nonnull align 8 dereferenceable(160) %336)
          to label %338 unwind label %391

338:                                              ; preds = %330
  store ptr %337, ptr %42, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %43) #8
  %339 = getelementptr inbounds %"class.cse_impl::CommonSubexpressionElimination", ptr %56, i32 0, i32 4
  %340 = load ptr, ptr %339, align 8, !tbaa !9
  %341 = invoke noundef i32 @_ZN3cfg16ControlFlowGraph13allocate_tempEv(ptr noundef nonnull align 8 dereferenceable(160) %340)
          to label %342 unwind label %395

342:                                              ; preds = %338
  store i32 %341, ptr %43, align 4, !tbaa !49
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #8
  %343 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 32) #10
          to label %344 unwind label %399

344:                                              ; preds = %342
  invoke void @_ZN13IRInstructionC1E8IROpcode(ptr noundef nonnull align 8 dereferenceable(32) %343, i16 noundef zeroext 12)
          to label %345 unwind label %403

345:                                              ; preds = %344
  store ptr %343, ptr %44, align 8, !tbaa !5
  %346 = load ptr, ptr %44, align 8, !tbaa !5
  %347 = invoke noundef ptr @_ZN13IRInstruction11set_literalEl(ptr noundef nonnull align 8 dereferenceable(32) %346, i64 noundef 0)
          to label %348 unwind label %399

348:                                              ; preds = %345
  %349 = load ptr, ptr %44, align 8, !tbaa !5
  %350 = load i32, ptr %43, align 4, !tbaa !49
  %351 = invoke noundef ptr @_ZN13IRInstruction8set_destEj(ptr noundef nonnull align 8 dereferenceable(32) %349, i32 noundef %350)
          to label %352 unwind label %399

352:                                              ; preds = %348
  %353 = load ptr, ptr %42, align 8, !tbaa !5
  %354 = load ptr, ptr %44, align 8, !tbaa !5
  %355 = invoke noundef zeroext i1 @_ZN3cfg5Block9push_backEP13IRInstruction(ptr noundef nonnull align 8 dereferenceable(104) %353, ptr noundef %354)
          to label %356 unwind label %399

356:                                              ; preds = %352
  call void @llvm.lifetime.start.p0(i64 8, ptr %45) #8
  %357 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 32) #10
          to label %358 unwind label %407

358:                                              ; preds = %356
  invoke void @_ZN13IRInstructionC1E8IROpcode(ptr noundef nonnull align 8 dereferenceable(32) %357, i16 noundef zeroext 25)
          to label %359 unwind label %411

359:                                              ; preds = %358
  store ptr %357, ptr %45, align 8, !tbaa !5
  %360 = load ptr, ptr %45, align 8, !tbaa !5
  %361 = load i32, ptr %43, align 4, !tbaa !49
  %362 = invoke noundef ptr @_ZN13IRInstruction7set_srcEtj(ptr noundef nonnull align 8 dereferenceable(32) %360, i16 noundef zeroext 0, i32 noundef %361)
          to label %363 unwind label %407

363:                                              ; preds = %359
  %364 = load ptr, ptr %42, align 8, !tbaa !5
  %365 = load ptr, ptr %45, align 8, !tbaa !5
  %366 = invoke noundef zeroext i1 @_ZN3cfg5Block9push_backEP13IRInstruction(ptr noundef nonnull align 8 dereferenceable(104) %364, ptr noundef %365)
          to label %367 unwind label %407

367:                                              ; preds = %363
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #8
  %368 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN12UnorderedMapIPN3cfg5BlockESt6vectorIPNS0_4EdgeESaIS5_EESt4hashIS2_ESt8equal_toIS2_EE2atERKS2_(ptr noundef nonnull align 8 dereferenceable(56) %5, ptr noundef nonnull align 8 dereferenceable(8) %39)
          to label %369 unwind label %415

369:                                              ; preds = %367
  store ptr %368, ptr %46, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %47) #8
  %370 = load ptr, ptr %46, align 8, !tbaa !5
  %371 = call ptr @_ZNSt6vectorIPN3cfg4EdgeESaIS2_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %370) #8
  %372 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.638", ptr %47, i32 0, i32 0
  store ptr %371, ptr %372, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %48) #8
  %373 = load ptr, ptr %46, align 8, !tbaa !5
  %374 = call ptr @_ZNSt6vectorIPN3cfg4EdgeESaIS2_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %373) #8
  %375 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.638", ptr %48, i32 0, i32 0
  store ptr %374, ptr %375, align 8
  br label %376

376:                                              ; preds = %435, %369
  %377 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPPN3cfg4EdgeESt6vectorIS3_SaIS3_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %47, ptr noundef nonnull align 8 dereferenceable(8) %48) #8
  br i1 %377, label %419, label %378

378:                                              ; preds = %376
  store i32 10, ptr %21, align 4
  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
  br label %447

379:                                              ; preds = %316
  %380 = landingpad { ptr, i32 }
          cleanup
  %381 = extractvalue { ptr, i32 } %380, 0
  store ptr %381, ptr %8, align 8
  %382 = extractvalue { ptr, i32 } %380, 1
  store i32 %382, ptr %9, align 4
  br label %564

383:                                              ; preds = %320
  %384 = landingpad { ptr, i32 }
          cleanup
  %385 = extractvalue { ptr, i32 } %384, 0
  store ptr %385, ptr %8, align 8
  %386 = extractvalue { ptr, i32 } %384, 1
  store i32 %386, ptr %9, align 4
  br label %563

387:                                              ; preds = %328, %326, %322
  %388 = landingpad { ptr, i32 }
          cleanup
  %389 = extractvalue { ptr, i32 } %388, 0
  store ptr %389, ptr %8, align 8
  %390 = extractvalue { ptr, i32 } %388, 1
  store i32 %390, ptr %9, align 4
  br label %562

391:                                              ; preds = %330
  %392 = landingpad { ptr, i32 }
          cleanup
  %393 = extractvalue { ptr, i32 } %392, 0
  store ptr %393, ptr %8, align 8
  %394 = extractvalue { ptr, i32 } %392, 1
  store i32 %394, ptr %9, align 4
  br label %561

395:                                              ; preds = %338
  %396 = landingpad { ptr, i32 }
          cleanup
  %397 = extractvalue { ptr, i32 } %396, 0
  store ptr %397, ptr %8, align 8
  %398 = extractvalue { ptr, i32 } %396, 1
  store i32 %398, ptr %9, align 4
  br label %560

399:                                              ; preds = %352, %348, %345, %342
  %400 = landingpad { ptr, i32 }
          cleanup
  %401 = extractvalue { ptr, i32 } %400, 0
  store ptr %401, ptr %8, align 8
  %402 = extractvalue { ptr, i32 } %400, 1
  store i32 %402, ptr %9, align 4
  br label %559

403:                                              ; preds = %344
  %404 = landingpad { ptr, i32 }
          cleanup
  %405 = extractvalue { ptr, i32 } %404, 0
  store ptr %405, ptr %8, align 8
  %406 = extractvalue { ptr, i32 } %404, 1
  store i32 %406, ptr %9, align 4
  call void @_ZdlPvm(ptr noundef %343, i64 noundef 32) #11
  br label %559

407:                                              ; preds = %447, %363, %359, %356
  %408 = landingpad { ptr, i32 }
          cleanup
  %409 = extractvalue { ptr, i32 } %408, 0
  store ptr %409, ptr %8, align 8
  %410 = extractvalue { ptr, i32 } %408, 1
  store i32 %410, ptr %9, align 4
  br label %558

411:                                              ; preds = %358
  %412 = landingpad { ptr, i32 }
          cleanup
  %413 = extractvalue { ptr, i32 } %412, 0
  store ptr %413, ptr %8, align 8
  %414 = extractvalue { ptr, i32 } %412, 1
  store i32 %414, ptr %9, align 4
  call void @_ZdlPvm(ptr noundef %357, i64 noundef 32) #11
  br label %558

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

419:                                              ; preds = %376
  call void @llvm.lifetime.start.p0(i64 8, ptr %49) #8
  %420 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPPN3cfg4EdgeESt6vectorIS3_SaIS3_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %47) #8
  %421 = load ptr, ptr %420, align 8, !tbaa !5
  store ptr %421, ptr %49, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %50) #8
  %422 = load ptr, ptr %49, align 8, !tbaa !5
  %423 = invoke noundef ptr @_ZNK3cfg4Edge10throw_infoEv(ptr noundef nonnull align 8 dereferenceable(32) %422)
          to label %424 unwind label %437

424:                                              ; preds = %419
  store ptr %423, ptr %50, align 8, !tbaa !5
  %425 = getelementptr inbounds %"class.cse_impl::CommonSubexpressionElimination", ptr %56, i32 0, i32 4
  %426 = load ptr, ptr %425, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %51) #8
  %427 = load ptr, ptr %49, align 8, !tbaa !5
  %428 = invoke noundef ptr @_ZNK3cfg4Edge6targetEv(ptr noundef nonnull align 8 dereferenceable(32) %427)
          to label %429 unwind label %441

429:                                              ; preds = %424
  store ptr %428, ptr %51, align 8, !tbaa !5
  %430 = load ptr, ptr %50, align 8, !tbaa !5
  %431 = getelementptr inbounds %"struct.cfg::ThrowInfo", ptr %430, i32 0, i32 0
  %432 = load ptr, ptr %50, align 8, !tbaa !5
  %433 = getelementptr inbounds %"struct.cfg::ThrowInfo", ptr %432, i32 0, i32 1
  invoke void @_ZN3cfg16ControlFlowGraph8add_edgeIJRPNS_5BlockES3_RP7DexTypeRjEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(160) %426, ptr noundef nonnull align 8 dereferenceable(8) %42, ptr noundef nonnull align 8 dereferenceable(8) %51, ptr noundef nonnull align 8 dereferenceable(8) %431, ptr noundef nonnull align 4 dereferenceable(4) %433)
          to label %434 unwind label %441

434:                                              ; preds = %429
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #8
  br label %435

435:                                              ; preds = %434
  %436 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPPN3cfg4EdgeESt6vectorIS3_SaIS3_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %47) #8
  br label %376

437:                                              ; preds = %419
  %438 = landingpad { ptr, i32 }
          cleanup
  %439 = extractvalue { ptr, i32 } %438, 0
  store ptr %439, ptr %8, align 8
  %440 = extractvalue { ptr, i32 } %438, 1
  store i32 %440, ptr %9, align 4
  br label %445

441:                                              ; preds = %429, %424
  %442 = landingpad { ptr, i32 }
          cleanup
  %443 = extractvalue { ptr, i32 } %442, 0
  store ptr %443, ptr %8, align 8
  %444 = extractvalue { ptr, i32 } %442, 1
  store i32 %444, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #8
  br label %445

445:                                              ; preds = %441, %437
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #8
  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
  br label %446

446:                                              ; preds = %445, %415
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #8
  br label %558

447:                                              ; preds = %378
  %448 = invoke noundef i32 @_ZNK6sparta20FiniteAbstractDomainI6IRTypeNS_16BitVectorLatticeIS1_Lm16EvvEEN5boost14multiprecision6numberINS5_8backends15cpp_int_backendILj16ELj16ELNS5_16cpp_integer_typeE0ELNS5_18cpp_int_check_typeE0EvEELNS5_26expression_template_optionE0EEEXadL_ZN14type_inference12type_latticeEEEE7elementEv(ptr noundef nonnull align 2 dereferenceable(2) %33)
          to label %449 unwind label %407

449:                                              ; preds = %447
  %450 = icmp eq i32 %448, 8
  br i1 %450, label %451, label %516

451:                                              ; preds = %449
  call void @llvm.lifetime.start.p0(i64 4, ptr %52) #8
  %452 = getelementptr inbounds %"class.cse_impl::CommonSubexpressionElimination", ptr %56, i32 0, i32 4
  %453 = load ptr, ptr %452, align 8, !tbaa !9
  %454 = invoke noundef i32 @_ZN3cfg16ControlFlowGraph13allocate_tempEv(ptr noundef nonnull align 8 dereferenceable(160) %453)
          to label %455 unwind label %493

455:                                              ; preds = %451
  store i32 %454, ptr %52, align 4, !tbaa !49
  call void @llvm.lifetime.start.p0(i64 8, ptr %53) #8
  %456 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 32) #10
          to label %457 unwind label %497

457:                                              ; preds = %455
  invoke void @_ZN13IRInstructionC1E8IROpcode(ptr noundef nonnull align 8 dereferenceable(32) %456, i16 noundef zeroext 32)
          to label %458 unwind label %501

458:                                              ; preds = %457
  store ptr %456, ptr %53, align 8, !tbaa !5
  %459 = load ptr, ptr %53, align 8, !tbaa !5
  %460 = load i32, ptr %52, align 4, !tbaa !49
  %461 = invoke noundef ptr @_ZN13IRInstruction8set_destEj(ptr noundef nonnull align 8 dereferenceable(32) %459, i32 noundef %460)
          to label %462 unwind label %497

462:                                              ; preds = %458
  %463 = load ptr, ptr %53, align 8, !tbaa !5
  %464 = load ptr, ptr %30, align 8, !tbaa !5
  %465 = invoke noundef i32 @_ZNK13IRInstruction4destEv(ptr noundef nonnull align 8 dereferenceable(32) %464)
          to label %466 unwind label %497

466:                                              ; preds = %462
  %467 = invoke noundef ptr @_ZN13IRInstruction7set_srcEtj(ptr noundef nonnull align 8 dereferenceable(32) %463, i16 noundef zeroext 0, i32 noundef %465)
          to label %468 unwind label %497

468:                                              ; preds = %466
  %469 = load ptr, ptr %53, align 8, !tbaa !5
  %470 = load ptr, ptr %30, align 8, !tbaa !5
  %471 = invoke noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %470, i16 noundef zeroext 0)
          to label %472 unwind label %497

472:                                              ; preds = %468
  %473 = invoke noundef ptr @_ZN13IRInstruction7set_srcEtj(ptr noundef nonnull align 8 dereferenceable(32) %469, i16 noundef zeroext 1, i32 noundef %471)
          to label %474 unwind label %497

474:                                              ; preds = %472
  %475 = load ptr, ptr %39, align 8, !tbaa !5
  %476 = load ptr, ptr %53, align 8, !tbaa !5
  %477 = invoke noundef zeroext i1 @_ZN3cfg5Block9push_backEP13IRInstruction(ptr noundef nonnull align 8 dereferenceable(104) %475, ptr noundef %476)
          to label %478 unwind label %497

478:                                              ; preds = %474
  call void @llvm.lifetime.start.p0(i64 8, ptr %54) #8
  %479 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 32) #10
          to label %480 unwind label %505

480:                                              ; preds = %478
  invoke void @_ZN13IRInstructionC1E8IROpcode(ptr noundef nonnull align 8 dereferenceable(32) %479, i16 noundef zeroext 40)
          to label %481 unwind label %509

481:                                              ; preds = %480
  store ptr %479, ptr %54, align 8, !tbaa !5
  %482 = load ptr, ptr %54, align 8, !tbaa !5
  %483 = load i32, ptr %52, align 4, !tbaa !49
  %484 = invoke noundef ptr @_ZN13IRInstruction7set_srcEtj(ptr noundef nonnull align 8 dereferenceable(32) %482, i16 noundef zeroext 0, i32 noundef %483)
          to label %485 unwind label %505

485:                                              ; preds = %481
  %486 = getelementptr inbounds %"class.cse_impl::CommonSubexpressionElimination", ptr %56, i32 0, i32 4
  %487 = load ptr, ptr %486, align 8, !tbaa !9
  %488 = load ptr, ptr %39, align 8, !tbaa !5
  %489 = load ptr, ptr %54, align 8, !tbaa !5
  %490 = load ptr, ptr %40, align 8, !tbaa !5
  %491 = load ptr, ptr %42, align 8, !tbaa !5
  invoke void @_ZN3cfg16ControlFlowGraph13create_branchEPNS_5BlockEP13IRInstructionS2_S2_(ptr noundef nonnull align 8 dereferenceable(160) %487, ptr noundef %488, ptr noundef %489, ptr noundef %490, ptr noundef %491)
          to label %492 unwind label %505

492:                                              ; preds = %485
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #8
  br label %548

493:                                              ; preds = %451
  %494 = landingpad { ptr, i32 }
          cleanup
  %495 = extractvalue { ptr, i32 } %494, 0
  store ptr %495, ptr %8, align 8
  %496 = extractvalue { ptr, i32 } %494, 1
  store i32 %496, ptr %9, align 4
  br label %515

497:                                              ; preds = %474, %472, %468, %466, %462, %458, %455
  %498 = landingpad { ptr, i32 }
          cleanup
  %499 = extractvalue { ptr, i32 } %498, 0
  store ptr %499, ptr %8, align 8
  %500 = extractvalue { ptr, i32 } %498, 1
  store i32 %500, ptr %9, align 4
  br label %514

501:                                              ; preds = %457
  %502 = landingpad { ptr, i32 }
          cleanup
  %503 = extractvalue { ptr, i32 } %502, 0
  store ptr %503, ptr %8, align 8
  %504 = extractvalue { ptr, i32 } %502, 1
  store i32 %504, ptr %9, align 4
  call void @_ZdlPvm(ptr noundef %456, i64 noundef 32) #11
  br label %514

505:                                              ; preds = %485, %481, %478
  %506 = landingpad { ptr, i32 }
          cleanup
  %507 = extractvalue { ptr, i32 } %506, 0
  store ptr %507, ptr %8, align 8
  %508 = extractvalue { ptr, i32 } %506, 1
  store i32 %508, ptr %9, align 4
  br label %513

509:                                              ; preds = %480
  %510 = landingpad { ptr, i32 }
          cleanup
  %511 = extractvalue { ptr, i32 } %510, 0
  store ptr %511, ptr %8, align 8
  %512 = extractvalue { ptr, i32 } %510, 1
  store i32 %512, ptr %9, align 4
  call void @_ZdlPvm(ptr noundef %479, i64 noundef 32) #11
  br label %513

513:                                              ; preds = %509, %505
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #8
  br label %514

514:                                              ; preds = %513, %501, %497
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #8
  br label %515

515:                                              ; preds = %514, %493
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #8
  br label %558

516:                                              ; preds = %449
  call void @llvm.lifetime.start.p0(i64 8, ptr %55) #8
  %517 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 32) #10
          to label %518 unwind label %539

518:                                              ; preds = %516
  invoke void @_ZN13IRInstructionC1E8IROpcode(ptr noundef nonnull align 8 dereferenceable(32) %517, i16 noundef zeroext 34)
          to label %519 unwind label %543

519:                                              ; preds = %518
  store ptr %517, ptr %55, align 8, !tbaa !5
  %520 = load ptr, ptr %55, align 8, !tbaa !5
  %521 = load ptr, ptr %30, align 8, !tbaa !5
  %522 = invoke noundef i32 @_ZNK13IRInstruction4destEv(ptr noundef nonnull align 8 dereferenceable(32) %521)
          to label %523 unwind label %539

523:                                              ; preds = %519
  %524 = invoke noundef ptr @_ZN13IRInstruction7set_srcEtj(ptr noundef nonnull align 8 dereferenceable(32) %520, i16 noundef zeroext 0, i32 noundef %522)
          to label %525 unwind label %539

525:                                              ; preds = %523
  %526 = load ptr, ptr %55, align 8, !tbaa !5
  %527 = load ptr, ptr %30, align 8, !tbaa !5
  %528 = invoke noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %527, i16 noundef zeroext 0)
          to label %529 unwind label %539

529:                                              ; preds = %525
  %530 = invoke noundef ptr @_ZN13IRInstruction7set_srcEtj(ptr noundef nonnull align 8 dereferenceable(32) %526, i16 noundef zeroext 1, i32 noundef %528)
          to label %531 unwind label %539

531:                                              ; preds = %529
  %532 = getelementptr inbounds %"class.cse_impl::CommonSubexpressionElimination", ptr %56, i32 0, i32 4
  %533 = load ptr, ptr %532, align 8, !tbaa !9
  %534 = load ptr, ptr %39, align 8, !tbaa !5
  %535 = load ptr, ptr %55, align 8, !tbaa !5
  %536 = load ptr, ptr %40, align 8, !tbaa !5
  %537 = load ptr, ptr %42, align 8, !tbaa !5
  invoke void @_ZN3cfg16ControlFlowGraph13create_branchEPNS_5BlockEP13IRInstructionS2_S2_(ptr noundef nonnull align 8 dereferenceable(160) %533, ptr noundef %534, ptr noundef %535, ptr noundef %536, ptr noundef %537)
          to label %538 unwind label %539

538:                                              ; preds = %531
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #8
  br label %548

539:                                              ; preds = %531, %529, %525, %523, %519, %516
  %540 = landingpad { ptr, i32 }
          cleanup
  %541 = extractvalue { ptr, i32 } %540, 0
  store ptr %541, ptr %8, align 8
  %542 = extractvalue { ptr, i32 } %540, 1
  store i32 %542, ptr %9, align 4
  br label %547

543:                                              ; preds = %518
  %544 = landingpad { ptr, i32 }
          cleanup
  %545 = extractvalue { ptr, i32 } %544, 0
  store ptr %545, ptr %8, align 8
  %546 = extractvalue { ptr, i32 } %544, 1
  store i32 %546, ptr %9, align 4
  call void @_ZdlPvm(ptr noundef %517, i64 noundef 32) #11
  br label %547

547:                                              ; preds = %543, %539
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #8
  br label %558

548:                                              ; preds = %538, %492
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %38) #8
  store i32 0, ptr %21, align 4
  br label %549

549:                                              ; preds = %548, %315
  call void @_ZN6sparta14AbstractDomainINS_20FiniteAbstractDomainI6IRTypeNS_16BitVectorLatticeIS2_Lm16EvvEEN5boost14multiprecision6numberINS6_8backends15cpp_int_backendILj16ELj16ELNS6_16cpp_integer_typeE0ELNS6_18cpp_int_check_typeE0EvEELNS6_26expression_template_optionE0EEEXadL_ZN14type_inference12type_latticeEEEEEED2Ev(ptr noundef nonnull align 2 dereferenceable(2) %33) #8
  call void @llvm.lifetime.end.p0(i64 2, ptr %33) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #8
  %550 = load i32, ptr %21, align 4
  switch i32 %550, label %552 [
    i32 0, label %551
  ]

551:                                              ; preds = %549
  store i32 0, ptr %21, align 4
  br label %552

552:                                              ; preds = %551, %549
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #8
  %553 = load i32, ptr %21, align 4
  switch i32 %553, label %587 [
    i32 0, label %554
    i32 7, label %555
  ]

554:                                              ; preds = %552
  br label %555

555:                                              ; preds = %554, %552
  %556 = invoke noundef nonnull align 8 dereferenceable(96) ptr @_ZN6sparta7pt_core20PatriciaTreeIteratorIPK13IRInstructionNS0_10EmptyValueEEppEv(ptr noundef nonnull align 8 dereferenceable(96) %26)
          to label %557 unwind label %169

557:                                              ; preds = %555
  br label %153

558:                                              ; preds = %547, %515, %446, %411, %407
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #8
  br label %559

559:                                              ; preds = %558, %403, %399
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #8
  br label %560

560:                                              ; preds = %559, %395
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #8
  br label %561

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

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

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

564:                                              ; preds = %563, %379
  call void @llvm.lifetime.end.p0(i64 32, ptr %38) #8
  br label %565

565:                                              ; preds = %564, %260, %213
  call void @_ZN6sparta14AbstractDomainINS_20FiniteAbstractDomainI6IRTypeNS_16BitVectorLatticeIS2_Lm16EvvEEN5boost14multiprecision6numberINS6_8backends15cpp_int_backendILj16ELj16ELNS6_16cpp_integer_typeE0ELNS6_18cpp_int_check_typeE0EvEELNS6_26expression_template_optionE0EEEXadL_ZN14type_inference12type_latticeEEEEEED2Ev(ptr noundef nonnull align 2 dereferenceable(2) %33) #8
  br label %566

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

567:                                              ; preds = %566, %205
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #8
  br label %568

568:                                              ; preds = %567, %201
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #8
  br label %569

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

570:                                              ; preds = %569, %169
  call void @_ZN6sparta7pt_core20PatriciaTreeIteratorIPK13IRInstructionNS0_10EmptyValueEED2Ev(ptr noundef nonnull align 8 dereferenceable(96) %27) #8
  br label %571

571:                                              ; preds = %570, %165
  call void @llvm.lifetime.end.p0(i64 96, ptr %27) #8
  call void @_ZN6sparta7pt_core20PatriciaTreeIteratorIPK13IRInstructionNS0_10EmptyValueEED2Ev(ptr noundef nonnull align 8 dereferenceable(96) %26) #8
  br label %572

572:                                              ; preds = %571, %161
  call void @llvm.lifetime.end.p0(i64 96, ptr %26) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #8
  br label %576

573:                                              ; preds = %156
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #8
  br label %574

574:                                              ; preds = %573
  %575 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKSt4pairIN8cse_impl30CommonSubexpressionElimination7ForwardEP13IRInstructionESt6vectorIS7_SaIS7_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %19) #8
  br label %118

576:                                              ; preds = %572, %157
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #8
  br label %578

577:                                              ; preds = %120
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #8
  call void @_ZN14type_inference13TypeInferenceD2Ev(ptr noundef nonnull align 8 dereferenceable(432) %15) #8
  call void @llvm.lifetime.end.p0(i64 432, ptr %15) #8
  call void @_ZN12UnorderedMapIPN3cfg5BlockESt6vectorIPNS0_4EdgeESaIS5_EESt4hashIS2_ESt8equal_toIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %5) #8
  call void @llvm.lifetime.end.p0(i64 56, ptr %5) #8
  ret void

578:                                              ; preds = %576, %134
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #8
  br label %579

579:                                              ; preds = %578, %130
  call void @_ZN14type_inference13TypeInferenceD2Ev(ptr noundef nonnull align 8 dereferenceable(432) %15) #8
  br label %580

580:                                              ; preds = %579, %129
  call void @llvm.lifetime.end.p0(i64 432, ptr %15) #8
  br label %581

581:                                              ; preds = %580, %95
  call void @_ZN12UnorderedMapIPN3cfg5BlockESt6vectorIPNS0_4EdgeESaIS5_EESt4hashIS2_ESt8equal_toIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %5) #8
  call void @llvm.lifetime.end.p0(i64 56, ptr %5) #8
  br label %582

582:                                              ; preds = %581
  %583 = load ptr, ptr %8, align 8
  %584 = load i32, ptr %9, align 4
  %585 = insertvalue { ptr, i32 } poison, ptr %583, 0
  %586 = insertvalue { ptr, i32 } %585, i32 %584, 1
  resume { ptr, i32 } %586

587:                                              ; preds = %552
  unreachable
}

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

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

declare void @_ZNK3cfg5Block28get_outgoing_throws_in_orderEv(ptr dead_on_unwind writable sret(%"class.std::vector.299") align 8, ptr noundef nonnull align 8 dereferenceable(104)) #2

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN14type_inference13TypeInferenceC2ERKN3cfg16ControlFlowGraphEbRK12UnorderedSetIP7DexTypeSt4hashIS7_ESt8equal_toIS7_EEPKN21method_override_graph5GraphE(ptr noundef nonnull align 8 dereferenceable(432), ptr noundef nonnull align 8 dereferenceable(160), i1 noundef zeroext, ptr noundef nonnull align 8 dereferenceable(56), ptr noundef) unnamed_addr #6 align 2

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

declare void @_ZN14type_inference13TypeInference3runEbP7DexTypeP11DexTypeListPKSt3mapIiSt10unique_ptrI16DexAnnotationSetSt14default_deleteIS7_EESt4lessIiESaISt4pairIKiSA_EEE(ptr noundef nonnull align 8 dereferenceable(432), i1 noundef zeroext, ptr noundef, ptr noundef, ptr noundef) #2

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK14type_inference15TypeEnvironment8get_typeEj(ptr dead_on_unwind noalias writable sret(%"class.sparta::FiniteAbstractDomain") align 2, ptr noundef nonnull align 8 dereferenceable(48), i32 noundef) #6 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK6sparta20FiniteAbstractDomainI6IRTypeNS_16BitVectorLatticeIS1_Lm16EvvEEN5boost14multiprecision6numberINS5_8backends15cpp_int_backendILj16ELj16ELNS5_16cpp_integer_typeE0ELNS5_18cpp_int_check_typeE0EvEELNS5_26expression_template_optionE0EEEXadL_ZN14type_inference12type_latticeEEEE6is_topEv(ptr noundef nonnull align 2 dereferenceable(2)) #6 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK6sparta20FiniteAbstractDomainI6IRTypeNS_16BitVectorLatticeIS1_Lm16EvvEEN5boost14multiprecision6numberINS5_8backends15cpp_int_backendILj16ELj16ELNS5_16cpp_integer_typeE0ELNS5_18cpp_int_check_typeE0EvEELNS5_26expression_template_optionE0EEEXadL_ZN14type_inference12type_latticeEEEE9is_bottomEv(ptr noundef nonnull align 2 dereferenceable(2)) #6 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z4showI6IRTypeRSovENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEOT_(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 4 dereferenceable(4)) #6

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

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

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

declare noundef ptr @_ZN3cfg16ControlFlowGraph11split_blockERKNS_23InstructionIteratorImplILb0EEE(ptr noundef nonnull align 8 dereferenceable(160), ptr noundef nonnull align 8 dereferenceable(32)) #2

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

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

declare noundef ptr @_ZN3cfg16ControlFlowGraph12create_blockEv(ptr noundef nonnull align 8 dereferenceable(160)) #2

declare noundef zeroext i1 @_ZN3cfg5Block9push_backEP13IRInstruction(ptr noundef nonnull align 8 dereferenceable(104), ptr noundef) #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)) #5

; 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)) #1 align 2

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

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

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

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

declare void @_ZN3cfg16ControlFlowGraph13create_branchEPNS_5BlockEP13IRInstructionS2_S2_(ptr noundef nonnull align 8 dereferenceable(160), ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

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

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

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !6, i64 128}
!10 = !{!"_ZTSN8cse_impl30CommonSubexpressionEliminationE", !11, i64 0, !18, i64 56, !22, i64 80, !26, i64 104, !6, i64 128, !30, i64 136, !34, i64 256, !6, i64 264, !6, i64 272, !35, i64 280, !6, i64 304}
!11 = !{!"_ZTS12UnorderedMapIPK13IRInstructionmSt4hashIS2_ESt8equal_toIS2_EE", !12, i64 0}
!12 = !{!"_ZTSSt13unordered_mapIPK13IRInstructionmSt4hashIS2_ESt8equal_toIS2_ESaISt4pairIKS2_mEEE", !13, i64 0}
!13 = !{!"_ZTSSt10_HashtableIPK13IRInstructionSt4pairIKS2_mESaIS5_ENSt8__detail10_Select1stESt8equal_toIS2_ESt4hashIS2_ENS7_18_Mod_range_hashingENS7_20_Default_ranged_hashENS7_20_Prime_rehash_policyENS7_17_Hashtable_traitsILb0ELb0ELb1EEEE", !6, i64 0, !14, i64 8, !15, i64 16, !14, i64 24, !16, i64 32, !6, i64 48}
!14 = !{!"long", !7, i64 0}
!15 = !{!"_ZTSNSt8__detail15_Hash_node_baseE", !6, i64 0}
!16 = !{!"_ZTSNSt8__detail20_Prime_rehash_policyE", !17, i64 0, !14, i64 8}
!17 = !{!"float", !7, i64 0}
!18 = !{!"_ZTSSt6vectorIN8cse_impl30CommonSubexpressionElimination7ForwardESaIS2_EE", !19, i64 0}
!19 = !{!"_ZTSSt12_Vector_baseIN8cse_impl30CommonSubexpressionElimination7ForwardESaIS2_EE", !20, i64 0}
!20 = !{!"_ZTSNSt12_Vector_baseIN8cse_impl30CommonSubexpressionElimination7ForwardESaIS2_EE12_Vector_implE", !21, i64 0}
!21 = !{!"_ZTSNSt12_Vector_baseIN8cse_impl30CommonSubexpressionElimination7ForwardESaIS2_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!22 = !{!"_ZTSSt6vectorIPN3cfg4EdgeESaIS2_EE", !23, i64 0}
!23 = !{!"_ZTSSt12_Vector_baseIPN3cfg4EdgeESaIS2_EE", !24, i64 0}
!24 = !{!"_ZTSNSt12_Vector_baseIPN3cfg4EdgeESaIS2_EE12_Vector_implE", !25, i64 0}
!25 = !{!"_ZTSNSt12_Vector_baseIPN3cfg4EdgeESaIS2_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!26 = !{!"_ZTSSt6vectorIN6sparta15PatriciaTreeSetIPK13IRInstructionEESaIS5_EE", !27, i64 0}
!27 = !{!"_ZTSSt12_Vector_baseIN6sparta15PatriciaTreeSetIPK13IRInstructionEESaIS5_EE", !28, i64 0}
!28 = !{!"_ZTSNSt12_Vector_baseIN6sparta15PatriciaTreeSetIPK13IRInstructionEESaIS5_EE12_Vector_implE", !29, i64 0}
!29 = !{!"_ZTSNSt12_Vector_baseIN6sparta15PatriciaTreeSetIPK13IRInstructionEESaIS5_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!30 = !{!"_ZTSN8cse_impl5StatsE", !14, i64 0, !14, i64 8, !14, i64 16, !14, i64 24, !14, i64 32, !14, i64 40, !31, i64 48, !14, i64 104, !14, i64 112}
!31 = !{!"_ZTS12UnorderedMapItmSt4hashItESt8equal_toItEE", !32, i64 0}
!32 = !{!"_ZTSSt13unordered_mapItmSt4hashItESt8equal_toItESaISt4pairIKtmEEE", !33, i64 0}
!33 = !{!"_ZTSSt10_HashtableItSt4pairIKtmESaIS2_ENSt8__detail10_Select1stESt8equal_toItESt4hashItENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb0ELb0ELb1EEEE", !6, i64 0, !14, i64 8, !15, i64 16, !14, i64 24, !16, i64 32, !6, i64 48}
!34 = !{!"bool", !7, i64 0}
!35 = !{!"_ZTSSt6vectorIP13IRInstructionSaIS1_EE", !36, i64 0}
!36 = !{!"_ZTSSt12_Vector_baseIP13IRInstructionSaIS1_EE", !37, i64 0}
!37 = !{!"_ZTSNSt12_Vector_baseIP13IRInstructionSaIS1_EE12_Vector_implE", !38, i64 0}
!38 = !{!"_ZTSNSt12_Vector_baseIP13IRInstructionSaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!39 = !{!10, !34, i64 256}
!40 = !{i8 0, i8 2}
!41 = !{}
!42 = !{!10, !6, i64 264}
!43 = !{!10, !6, i64 272}
!44 = !{!45, !14, i64 0}
!45 = !{!"_ZTSN8cse_impl30CommonSubexpressionElimination7ForwardE", !14, i64 0, !6, i64 8}
!46 = !{!45, !6, i64 8}
!47 = !{!48, !6, i64 16}
!48 = !{!"_ZTSSt4pairIN8cse_impl30CommonSubexpressionElimination7ForwardEP13IRInstructionE", !45, i64 0, !6, i64 16}
!49 = !{!50, !50, i64 0}
!50 = !{!"int", !7, i64 0}
!51 = !{!52, !52, i64 0}
!52 = !{!"_ZTS6IRType", !7, i64 0}


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

%"class.std::vector.577" = type { %"struct.std::_Vector_base.578" }
%"struct.std::_Vector_base.578" = type { %"struct.std::_Vector_base<cfg::Block *, std::allocator<cfg::Block *>>::_Vector_impl" }
%"struct.std::_Vector_base<cfg::Block *, std::allocator<cfg::Block *>>::_Vector_impl" = type { %"struct.std::_Vector_base<cfg::Block *, std::allocator<cfg::Block *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<cfg::Block *, std::allocator<cfg::Block *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.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 long, sparta::pt_core::EmptyValue> *, std::allocator<const sparta::pt_core::PatriciaTreeBranch<unsigned long, sparta::pt_core::EmptyValue> *>>::_Deque_impl" }
%"struct.std::_Deque_base<const sparta::pt_core::PatriciaTreeBranch<unsigned long, sparta::pt_core::EmptyValue> *, std::allocator<const sparta::pt_core::PatriciaTreeBranch<unsigned long, sparta::pt_core::EmptyValue> *>>::_Deque_impl" = type { %"struct.std::_Deque_base<const sparta::pt_core::PatriciaTreeBranch<unsigned long, sparta::pt_core::EmptyValue> *, std::allocator<const sparta::pt_core::PatriciaTreeBranch<unsigned long, sparta::pt_core::EmptyValue> *>>::_Deque_impl_data" }
%"struct.std::_Deque_base<const sparta::pt_core::PatriciaTreeBranch<unsigned long, sparta::pt_core::EmptyValue> *, std::allocator<const sparta::pt_core::PatriciaTreeBranch<unsigned long, 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 }
%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%class.UnorderedMap.745 = type { %"class.std::unordered_map.747" }
%"class.std::unordered_map.747" = type { %"class.std::_Hashtable.748" }
%"class.std::_Hashtable.748" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"struct.std::__detail::_Hash_node_base" = type { ptr }
%"struct.std::__detail::_Prime_rehash_policy" = type { float, i64 }
%"class.__gnu_cxx::__normal_iterator.582" = type { ptr }
%"class.std::vector.299" = type { %"struct.std::_Vector_base.300" }
%"struct.std::_Vector_base.300" = 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.type_inference::TypeInference" = type { %"class.ir_analyzer::BaseIRAnalyzer", ptr, %class.UnorderedMap.850, i8, %class.UnorderedSet.866, ptr, ptr }
%"class.ir_analyzer::BaseIRAnalyzer" = type { %"class.sparta::MonotonicFixpointIterator.766" }
%"class.sparta::MonotonicFixpointIterator.766" = type { %"class.sparta::fp_impl::MonotonicFixpointIteratorBase.767", %"class.sparta::WeakPartialOrdering" }
%"class.sparta::fp_impl::MonotonicFixpointIteratorBase.767" = type { %"class.sparta::FixpointIterator.768", ptr, %"class.type_inference::TypeEnvironment", %"class.std::unordered_map.836", %"class.std::unordered_map.836" }
%"class.sparta::FixpointIterator.768" = type { ptr }
%"class.type_inference::TypeEnvironment" = type { %"class.sparta::ReducedProductAbstractDomain.769" }
%"class.sparta::ReducedProductAbstractDomain.769" = type { %"class.sparta::DirectProductAbstractDomain.770" }
%"class.sparta::DirectProductAbstractDomain.770" = type { %"class.std::tuple.773" }
%"class.std::tuple.773" = type { %"struct.std::_Tuple_impl.774" }
%"struct.std::_Tuple_impl.774" = type { %"struct.std::_Tuple_impl.775", %"struct.std::_Head_base.815" }
%"struct.std::_Tuple_impl.775" = type { %"struct.std::_Tuple_impl.776", %"struct.std::_Head_base.796" }
%"struct.std::_Tuple_impl.776" = type { %"struct.std::_Head_base.777" }
%"struct.std::_Head_base.777" = type { %"class.sparta::AbstractEnvironment.778" }
%"class.sparta::AbstractEnvironment.778" = type { %"class.sparta::AbstractDomainScaffolding.779" }
%"class.sparta::AbstractDomainScaffolding.779" = type { i32, %"class.sparta::environment_impl::MapValue.784" }
%"class.sparta::environment_impl::MapValue.784" = type { %"class.sparta::PatriciaTreeMap.787" }
%"class.sparta::PatriciaTreeMap.787" = type { %"class.sparta::pt_core::PatriciaTreeCore.792" }
%"class.sparta::pt_core::PatriciaTreeCore.792" = type { %"class.boost::intrusive_ptr.793" }
%"class.boost::intrusive_ptr.793" = type { ptr }
%"struct.std::_Head_base.796" = type { %"class.sparta::AbstractEnvironment.797" }
%"class.sparta::AbstractEnvironment.797" = type { %"class.sparta::AbstractDomainScaffolding.798" }
%"class.sparta::AbstractDomainScaffolding.798" = type { i32, %"class.sparta::environment_impl::MapValue.803" }
%"class.sparta::environment_impl::MapValue.803" = type { %"class.sparta::PatriciaTreeMap.806" }
%"class.sparta::PatriciaTreeMap.806" = type { %"class.sparta::pt_core::PatriciaTreeCore.811" }
%"class.sparta::pt_core::PatriciaTreeCore.811" = type { %"class.boost::intrusive_ptr.812" }
%"class.boost::intrusive_ptr.812" = type { ptr }
%"struct.std::_Head_base.815" = type { %"class.sparta::AbstractEnvironment.816" }
%"class.sparta::AbstractEnvironment.816" = type { %"class.sparta::AbstractDomainScaffolding.817" }
%"class.sparta::AbstractDomainScaffolding.817" = type { i32, %"class.sparta::environment_impl::MapValue.822" }
%"class.sparta::environment_impl::MapValue.822" = type { %"class.sparta::PatriciaTreeMap.825" }
%"class.sparta::PatriciaTreeMap.825" = type { %"class.sparta::pt_core::PatriciaTreeCore.830" }
%"class.sparta::pt_core::PatriciaTreeCore.830" = type { %"class.boost::intrusive_ptr.831" }
%"class.boost::intrusive_ptr.831" = type { ptr }
%"class.std::unordered_map.836" = type { %"class.std::_Hashtable.837" }
%"class.std::_Hashtable.837" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"class.sparta::WeakPartialOrdering" = type <{ %"class.std::vector.419", %"class.std::vector.424", %"class.std::unordered_map.429", i8, [7 x i8] }>
%"class.std::vector.419" = type { %"struct.std::_Vector_base.420" }
%"struct.std::_Vector_base.420" = type { %"struct.std::_Vector_base<sparta::WpoNode<cfg::Block *>, std::allocator<sparta::WpoNode<cfg::Block *>>>::_Vector_impl" }
%"struct.std::_Vector_base<sparta::WpoNode<cfg::Block *>, std::allocator<sparta::WpoNode<cfg::Block *>>>::_Vector_impl" = type { %"struct.std::_Vector_base<sparta::WpoNode<cfg::Block *>, std::allocator<sparta::WpoNode<cfg::Block *>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<sparta::WpoNode<cfg::Block *>, std::allocator<sparta::WpoNode<cfg::Block *>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.424" = type { %"struct.std::_Vector_base.425" }
%"struct.std::_Vector_base.425" = type { %"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl" }
%"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl" = type { %"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl_data" }
%"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::unordered_map.429" = type { %"class.std::_Hashtable.430" }
%"class.std::_Hashtable.430" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%class.UnorderedMap.850 = type { %"class.std::unordered_map.852" }
%"class.std::unordered_map.852" = type { %"class.std::_Hashtable.853" }
%"class.std::_Hashtable.853" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%class.UnorderedSet.866 = type { %"class.std::unordered_set.868" }
%"class.std::unordered_set.868" = type { %"class.std::_Hashtable.869" }
%"class.std::_Hashtable.869" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"class.__gnu_cxx::__normal_iterator.888" = type { ptr }
%"class.sparta::FiniteAbstractDomain" = type { %"class.boost::multiprecision::number" }
%"class.boost::multiprecision::number" = type { %"struct.boost::multiprecision::backends::cpp_int_backend" }
%"struct.boost::multiprecision::backends::cpp_int_backend" = type { %"struct.boost::multiprecision::backends::cpp_int_base" }
%"struct.boost::multiprecision::backends::cpp_int_base" = type { i16 }
%"class.cfg::InstructionIteratorImpl" = type { ptr, %"struct.std::_Rb_tree_const_iterator", %"class.ir_list::InstructionIteratorImpl" }
%"struct.std::_Rb_tree_const_iterator" = type { ptr }
%"class.ir_list::InstructionIteratorImpl" = 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.__gnu_cxx::__normal_iterator.638" = type { ptr }

@.str.108 = external hidden unnamed_addr constant [95 x i8], align 1
@.str.109 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.134 = external hidden unnamed_addr constant [15 x i8], align 1
@__PRETTY_FUNCTION__._ZN8cse_impl30CommonSubexpressionElimination25insert_runtime_assertionsERKSt6vectorISt4pairINS0_7ForwardEP13IRInstructionESaIS6_EE = external hidden unnamed_addr constant [131 x i8], align 1
@.str.135 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.136 = external hidden unnamed_addr constant [35 x i8], align 1
@.str.137 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.138 = external hidden unnamed_addr constant [32 x i8], align 1
@.str.139 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.140 = external hidden unnamed_addr constant [34 x i8], align 1

declare i32 @__gxx_personality_v0(...)

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

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

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

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

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

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

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

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

declare void @_ZNK3cfg16ControlFlowGraph6blocksEv(ptr dead_on_unwind writable sret(%"class.std::vector.577") align 8, ptr noundef nonnull align 8 dereferenceable(160)) local_unnamed_addr #2

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIN6sparta15PatriciaTreeSetIPK13IRInstructionEESaIS5_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) local_unnamed_addr #6 align 2

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

declare void @_ZN13IRInstructionC1E8IROpcode(ptr noundef nonnull align 8 dereferenceable(32), i16 noundef zeroext) unnamed_addr #2

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

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

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

declare void @_Z4showB5cxx11PK13IRInstruction(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef) local_unnamed_addr #2

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z4showI13IRInstructionRSoENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPT_(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef) local_unnamed_addr #6

declare noundef ptr @_ZN13IRInstruction7set_srcEtj(ptr noundef nonnull align 8 dereferenceable(32), i16 noundef zeroext, i32 noundef) local_unnamed_addr #2

declare noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32), i16 noundef zeroext) local_unnamed_addr #2

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN8cse_impl30CommonSubexpressionElimination25insert_runtime_assertionsERKSt6vectorISt4pairINS0_7ForwardEP13IRInstructionESaIS6_EE(ptr noundef nonnull align 8 dereferenceable(312) %0, ptr noundef nonnull align 8 dereferenceable(24) %1) local_unnamed_addr #6 align 2 personality ptr @__gxx_personality_v0 {
  %3 = alloca %class.UnorderedMap.745, align 8
  %4 = alloca %"class.std::vector.577", align 8
  %5 = alloca %"class.__gnu_cxx::__normal_iterator.582", align 8
  %6 = alloca %"class.__gnu_cxx::__normal_iterator.582", align 8
  %7 = alloca ptr, align 8
  %8 = alloca %"class.std::vector.299", align 8
  %9 = alloca %"class.type_inference::TypeInference", align 8
  %10 = alloca %class.UnorderedSet.866, align 8
  %11 = alloca %"class.__gnu_cxx::__normal_iterator.888", align 8
  %12 = alloca %"class.__gnu_cxx::__normal_iterator.888", align 8
  %13 = alloca %"class.sparta::pt_core::PatriciaTreeIterator", align 8
  %14 = alloca %"class.sparta::pt_core::PatriciaTreeIterator", align 8
  %15 = alloca ptr, align 8
  %16 = alloca %"class.sparta::FiniteAbstractDomain", align 2
  %17 = alloca %"class.std::__cxx11::basic_string", align 8
  %18 = alloca %"class.std::__cxx11::basic_string", align 8
  %19 = alloca %"class.std::__cxx11::basic_string", align 8
  %20 = alloca i32, align 4
  %21 = alloca %"class.cfg::InstructionIteratorImpl", align 8
  %22 = alloca ptr, align 8
  %23 = alloca ptr, align 8
  %24 = alloca ptr, align 8
  %25 = alloca %"class.__gnu_cxx::__normal_iterator.638", align 8
  %26 = alloca %"class.__gnu_cxx::__normal_iterator.638", align 8
  %27 = alloca ptr, align 8
  call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %3) #8
  call void @_ZN12UnorderedMapIPN3cfg5BlockESt6vectorIPNS0_4EdgeESaIS5_EESt4hashIS2_ESt8equal_toIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(56) %3)
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %4) #8
  %28 = getelementptr inbounds i8, ptr %0, i64 128
  %29 = load ptr, ptr %28, align 8, !tbaa !5
  invoke void @_ZNK3cfg16ControlFlowGraph6blocksEv(ptr dead_on_unwind nonnull writable sret(%"class.std::vector.577") align 8 %4, ptr noundef nonnull align 8 dereferenceable(160) %29)
          to label %30 unwind label %35

30:                                               ; preds = %2
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %5) #8
  %31 = call ptr @_ZNSt6vectorIPN3cfg5BlockESaIS2_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %4) #8
  store ptr %31, ptr %5, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %6) #8
  %32 = call ptr @_ZNSt6vectorIPN3cfg5BlockESaIS2_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %4) #8
  store ptr %32, ptr %6, align 8
  %33 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPPN3cfg5BlockESt6vectorIS3_SaIS3_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %5, ptr noundef nonnull align 8 dereferenceable(8) %6) #8
  br i1 %33, label %.lr.ph, label %._crit_edge

._crit_edge:                                      ; preds = %41, %30
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #8
  call void @_ZNSt6vectorIPN3cfg5BlockESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %4) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %4) #8
  call void @llvm.lifetime.start.p0(i64 432, ptr nonnull %9) #8
  %34 = load ptr, ptr %28, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %10) #8
  call void @_ZN12UnorderedSetIP7DexTypeSt4hashIS1_ESt8equal_toIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(56) %10)
  invoke void @_ZN14type_inference13TypeInferenceC2ERKN3cfg16ControlFlowGraphEbRK12UnorderedSetIP7DexTypeSt4hashIS7_ESt8equal_toIS7_EEPKN21method_override_graph5GraphE(ptr noundef nonnull align 8 dereferenceable(432) %9, ptr noundef nonnull align 8 dereferenceable(160) %34, i1 noundef zeroext false, ptr noundef nonnull align 8 dereferenceable(56) %10, ptr noundef null)
          to label %49 unwind label %63

35:                                               ; preds = %2
  %36 = landingpad { ptr, i32 }
          cleanup
  br label %316

.lr.ph:                                           ; preds = %30, %41
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %7) #8
  %37 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPPN3cfg5BlockESt6vectorIS3_SaIS3_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %5) #8
  %38 = load ptr, ptr %37, align 8, !tbaa !38
  store ptr %38, ptr %7, align 8, !tbaa !38
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %8) #8
  invoke void @_ZNK3cfg5Block28get_outgoing_throws_in_orderEv(ptr dead_on_unwind nonnull writable sret(%"class.std::vector.299") align 8 %8, ptr noundef nonnull align 8 dereferenceable(104) %38)
          to label %39 unwind label %44

39:                                               ; preds = %.lr.ph
  %40 = invoke { ptr, i8 } @_ZN12UnorderedMapIPN3cfg5BlockESt6vectorIPNS0_4EdgeESaIS5_EESt4hashIS2_ESt8equal_toIS2_EE7emplaceIJRS2_S7_EEESt4pairINSC_13FixedIteratorEbEDpOT_(ptr noundef nonnull align 8 dereferenceable(56) %3, ptr noundef nonnull align 8 dereferenceable(8) %7, ptr noundef nonnull align 8 dereferenceable(24) %8)
          to label %41 unwind label %46

41:                                               ; preds = %39
  call void @_ZNSt6vectorIPN3cfg4EdgeESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %8) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %8) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #8
  %42 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPPN3cfg5BlockESt6vectorIS3_SaIS3_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %5) #8
  %43 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPPN3cfg5BlockESt6vectorIS3_SaIS3_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %5, ptr noundef nonnull align 8 dereferenceable(8) %6) #8
  br i1 %43, label %.lr.ph, label %._crit_edge

44:                                               ; preds = %.lr.ph
  %45 = landingpad { ptr, i32 }
          cleanup
  br label %48

46:                                               ; preds = %39
  %47 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorIPN3cfg4EdgeESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %8) #8
  br label %48

48:                                               ; preds = %46, %44
  %.pn117 = phi { ptr, i32 } [ %47, %46 ], [ %45, %44 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %8) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #8
  call void @_ZNSt6vectorIPN3cfg5BlockESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %4) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %4) #8
  br label %316

49:                                               ; preds = %._crit_edge
  call void @_ZN12UnorderedSetIP7DexTypeSt4hashIS1_ESt8equal_toIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %10) #8
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %10) #8
  %50 = getelementptr inbounds i8, ptr %0, i64 256
  %51 = load i8, ptr %50, align 8, !tbaa !39, !range !40, !noundef !41
  %52 = trunc nuw i8 %51 to i1
  %53 = getelementptr inbounds i8, ptr %0, i64 264
  %54 = load ptr, ptr %53, align 8, !tbaa !42
  %55 = getelementptr inbounds i8, ptr %0, i64 272
  %56 = load ptr, ptr %55, align 8, !tbaa !43
  invoke void @_ZN14type_inference13TypeInference3runEbP7DexTypeP11DexTypeListPKSt3mapIiSt10unique_ptrI16DexAnnotationSetSt14default_deleteIS7_EESt4lessIiESaISt4pairIKiSA_EEE(ptr noundef nonnull align 8 dereferenceable(432) %9, i1 noundef zeroext %52, ptr noundef %54, ptr noundef %56, ptr noundef null)
          to label %57 unwind label %65

57:                                               ; preds = %49
  %58 = call noundef nonnull align 8 dereferenceable(56) ptr @_ZN14type_inference13TypeInference21get_type_environmentsEv(ptr noundef nonnull align 8 dereferenceable(432) %9)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %11) #8
  %59 = call ptr @_ZNKSt6vectorISt4pairIN8cse_impl30CommonSubexpressionElimination7ForwardEP13IRInstructionESaIS6_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %1) #8
  store ptr %59, ptr %11, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %12) #8
  %60 = call ptr @_ZNKSt6vectorISt4pairIN8cse_impl30CommonSubexpressionElimination7ForwardEP13IRInstructionESaIS6_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %1) #8
  store ptr %60, ptr %12, align 8
  %61 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKSt4pairIN8cse_impl30CommonSubexpressionElimination7ForwardEP13IRInstructionESt6vectorIS7_SaIS7_EEEEbRKNS_17__normal_iteratorIT_T0_EESI_(ptr noundef nonnull align 8 dereferenceable(8) %11, ptr noundef nonnull align 8 dereferenceable(8) %12) #8
  br i1 %61, label %.lr.ph151, label %._crit_edge152

.lr.ph151:                                        ; preds = %57
  %62 = getelementptr inbounds i8, ptr %0, i64 104
  br label %67

._crit_edge152:                                   ; preds = %78, %57
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #8
  call void @_ZN14type_inference13TypeInferenceD2Ev(ptr noundef nonnull align 8 dereferenceable(432) %9) #8
  call void @llvm.lifetime.end.p0(i64 432, ptr nonnull %9) #8
  call void @_ZN12UnorderedMapIPN3cfg5BlockESt6vectorIPNS0_4EdgeESaIS5_EESt4hashIS2_ESt8equal_toIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %3) #8
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %3) #8
  ret void

63:                                               ; preds = %._crit_edge
  %64 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN12UnorderedSetIP7DexTypeSt4hashIS1_ESt8equal_toIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %10) #8
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %10) #8
  br label %315

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

67:                                               ; preds = %.lr.ph151, %78
  %68 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKSt4pairIN8cse_impl30CommonSubexpressionElimination7ForwardEP13IRInstructionESt6vectorIS7_SaIS7_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %11) #8
  %69 = load i64, ptr %68, align 8, !tbaa !44
  %70 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIN6sparta15PatriciaTreeSetIPK13IRInstructionEESaIS5_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %62, i64 noundef %69)
          to label %71 unwind label %81

71:                                               ; preds = %67
  call void @llvm.lifetime.start.p0(i64 96, ptr nonnull %13) #8
  invoke void @_ZNK6sparta15PatriciaTreeSetIPK13IRInstructionE5beginEv(ptr dead_on_unwind nonnull writable sret(%"class.sparta::pt_core::PatriciaTreeIterator") align 8 %13, ptr noundef nonnull align 8 dereferenceable(8) %70)
          to label %72 unwind label %83

72:                                               ; preds = %71
  call void @llvm.lifetime.start.p0(i64 96, ptr nonnull %14) #8
  invoke void @_ZNK6sparta15PatriciaTreeSetIPK13IRInstructionE3endEv(ptr dead_on_unwind nonnull writable sret(%"class.sparta::pt_core::PatriciaTreeIterator") align 8 %14, ptr noundef nonnull align 8 dereferenceable(8) %70)
          to label %.preheader unwind label %85

.preheader:                                       ; preds = %72
  %73 = getelementptr inbounds i8, ptr %68, i64 8
  %74 = getelementptr inbounds i8, ptr %68, i64 16
  br label %75

75:                                               ; preds = %.preheader, %301
  %76 = invoke noundef zeroext i1 @_ZNK6sparta7pt_core20PatriciaTreeIteratorIPK13IRInstructionNS0_10EmptyValueEEneERKS6_(ptr noundef nonnull align 8 dereferenceable(96) %13, ptr noundef nonnull align 8 dereferenceable(96) %14)
          to label %77 unwind label %87

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

78:                                               ; preds = %77
  call void @_ZN6sparta7pt_core20PatriciaTreeIteratorIPK13IRInstructionNS0_10EmptyValueEED2Ev(ptr noundef nonnull align 8 dereferenceable(96) %14) #8
  call void @llvm.lifetime.end.p0(i64 96, ptr nonnull %14) #8
  call void @_ZN6sparta7pt_core20PatriciaTreeIteratorIPK13IRInstructionNS0_10EmptyValueEED2Ev(ptr noundef nonnull align 8 dereferenceable(96) %13) #8
  call void @llvm.lifetime.end.p0(i64 96, ptr nonnull %13) #8
  %79 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKSt4pairIN8cse_impl30CommonSubexpressionElimination7ForwardEP13IRInstructionESt6vectorIS7_SaIS7_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %11) #8
  %80 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKSt4pairIN8cse_impl30CommonSubexpressionElimination7ForwardEP13IRInstructionESt6vectorIS7_SaIS7_EEEEbRKNS_17__normal_iteratorIT_T0_EESI_(ptr noundef nonnull align 8 dereferenceable(8) %11, ptr noundef nonnull align 8 dereferenceable(8) %12) #8
  br i1 %80, label %67, label %._crit_edge152

81:                                               ; preds = %67
  %82 = landingpad { ptr, i32 }
          cleanup
  br label %313

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

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

87:                                               ; preds = %301, %75
  %88 = landingpad { ptr, i32 }
          cleanup
  br label %310

89:                                               ; preds = %77
  %90 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK6sparta7pt_core20PatriciaTreeIteratorIPK13IRInstructionNS0_10EmptyValueEEdeEv(ptr noundef nonnull align 8 dereferenceable(96) %13)
          to label %91 unwind label %104

91:                                               ; preds = %89
  %92 = load ptr, ptr %90, align 8, !tbaa !38
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %15) #8
  %93 = load ptr, ptr %73, align 8, !tbaa !46
  store ptr %93, ptr %15, align 8, !tbaa !38
  %94 = load ptr, ptr %74, align 8, !tbaa !47
  %95 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZN12UnorderedMapIPK13IRInstructionN14type_inference15TypeEnvironmentESt4hashIS2_ESt8equal_toIS2_EE2atERKS2_(ptr noundef nonnull align 8 dereferenceable(56) %58, ptr noundef nonnull align 8 dereferenceable(8) %15)
          to label %96 unwind label %106

96:                                               ; preds = %91
  %97 = invoke noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %94, i16 noundef zeroext 0)
          to label %98 unwind label %108

98:                                               ; preds = %96
  call void @llvm.lifetime.start.p0(i64 2, ptr nonnull %16) #8
  invoke void @_ZNK14type_inference15TypeEnvironment8get_typeEj(ptr dead_on_unwind nonnull writable sret(%"class.sparta::FiniteAbstractDomain") align 2 %16, ptr noundef nonnull align 8 dereferenceable(48) %95, i32 noundef %97)
          to label %99 unwind label %110

99:                                               ; preds = %98
  %100 = invoke noundef zeroext i1 @_ZNK6sparta20FiniteAbstractDomainI6IRTypeNS_16BitVectorLatticeIS1_Lm16EvvEEN5boost14multiprecision6numberINS5_8backends15cpp_int_backendILj16ELj16ELNS5_16cpp_integer_typeE0ELNS5_18cpp_int_check_typeE0EvEELNS5_26expression_template_optionE0EEEXadL_ZN14type_inference12type_latticeEEEE6is_topEv(ptr noundef nonnull align 2 dereferenceable(2) %16)
          to label %101 unwind label %.loopexit

101:                                              ; preds = %99
  br i1 %100, label %.invoke, label %112

.invoke:                                          ; preds = %101, %151, %148, %145, %142, %114
  %102 = phi ptr [ @.str.135, %114 ], [ @.str.137, %142 ], [ @.str.138, %145 ], [ @.str.139, %148 ], [ @.str.140, %151 ], [ @.str.134, %101 ]
  %103 = phi i32 [ 1954, %114 ], [ 1957, %142 ], [ 1958, %145 ], [ 1959, %148 ], [ 1960, %151 ], [ 1953, %101 ]
  invoke void (ptr, ptr, i32, ptr, i32, ptr, ...) @_Z11assert_failPKcS0_jS0_10RedexErrorS0_z(ptr noundef nonnull %102, ptr noundef nonnull @.str.108, i32 noundef %103, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN8cse_impl30CommonSubexpressionElimination25insert_runtime_assertionsERKSt6vectorISt4pairINS0_7ForwardEP13IRInstructionESaIS6_EE, i32 noundef 2, ptr noundef nonnull @.str.109) #9
          to label %.cont unwind label %.loopexit.split-lp

.cont:                                            ; preds = %.invoke
  unreachable

104:                                              ; preds = %89
  %105 = landingpad { ptr, i32 }
          cleanup
  br label %310

106:                                              ; preds = %91
  %107 = landingpad { ptr, i32 }
          cleanup
  br label %309

108:                                              ; preds = %96
  %109 = landingpad { ptr, i32 }
          cleanup
  br label %309

110:                                              ; preds = %98
  %111 = landingpad { ptr, i32 }
          cleanup
  br label %308

.loopexit:                                        ; preds = %99, %112, %115, %140, %143, %146, %149, %152, %155, %158, %161, %164
  %lpad.loopexit = landingpad { ptr, i32 }
          cleanup
  br label %307

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

112:                                              ; preds = %101
  %113 = invoke noundef zeroext i1 @_ZNK6sparta20FiniteAbstractDomainI6IRTypeNS_16BitVectorLatticeIS1_Lm16EvvEEN5boost14multiprecision6numberINS5_8backends15cpp_int_backendILj16ELj16ELNS5_16cpp_integer_typeE0ELNS5_18cpp_int_check_typeE0EvEELNS5_26expression_template_optionE0EEEXadL_ZN14type_inference12type_latticeEEEE9is_bottomEv(ptr noundef nonnull align 2 dereferenceable(2) %16)
          to label %114 unwind label %.loopexit

114:                                              ; preds = %112
  br i1 %113, label %.invoke, label %115

115:                                              ; preds = %114
  %116 = invoke noundef zeroext i1 @_Z12traceEnabled11TraceModulei(i32 noundef 29, i32 noundef 6)
          to label %117 unwind label %.loopexit

117:                                              ; preds = %115
  br i1 %116, label %118, label %140

118:                                              ; preds = %117
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %17) #8
  invoke void @_Z4showB5cxx11PK13IRInstruction(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %17, ptr noundef %92)
          to label %119 unwind label %129

119:                                              ; preds = %118
  %120 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %17) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %18) #8
  %121 = load ptr, ptr %15, align 8, !tbaa !38
  invoke void @_Z4showI13IRInstructionRSoENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPT_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %18, ptr noundef %121)
          to label %122 unwind label %131

122:                                              ; preds = %119
  %123 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %18) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %19) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %20) #8
  %124 = invoke noundef i32 @_ZNK6sparta20FiniteAbstractDomainI6IRTypeNS_16BitVectorLatticeIS1_Lm16EvvEEN5boost14multiprecision6numberINS5_8backends15cpp_int_backendILj16ELj16ELNS5_16cpp_integer_typeE0ELNS5_18cpp_int_check_typeE0EvEELNS5_26expression_template_optionE0EEEXadL_ZN14type_inference12type_latticeEEEE7elementEv(ptr noundef nonnull align 2 dereferenceable(2) %16)
          to label %125 unwind label %133

125:                                              ; preds = %122
  store i32 %124, ptr %20, align 4, !tbaa !49
  invoke void @_Z4showI6IRTypeRSovENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEOT_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %19, ptr noundef nonnull align 4 dereferenceable(4) %20)
          to label %126 unwind label %133

126:                                              ; preds = %125
  %127 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %19) #8
  invoke void (i32, i32, i1, ptr, ...) @_Z5trace11TraceModuleibPKcz(i32 noundef 29, i32 noundef 6, i1 noundef zeroext false, ptr noundef nonnull @.str.136, ptr noundef %120, ptr noundef %123, i32 noundef %97, ptr noundef %127)
          to label %128 unwind label %135

128:                                              ; preds = %126
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %20) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %19) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %18) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %17) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %17) #8
  br label %140

129:                                              ; preds = %118
  %130 = landingpad { ptr, i32 }
          cleanup
  br label %139

131:                                              ; preds = %119
  %132 = landingpad { ptr, i32 }
          cleanup
  br label %138

133:                                              ; preds = %125, %122
  %134 = landingpad { ptr, i32 }
          cleanup
  br label %137

135:                                              ; preds = %126
  %136 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #8
  br label %137

137:                                              ; preds = %135, %133
  %.pn = phi { ptr, i32 } [ %136, %135 ], [ %134, %133 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %20) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %19) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #8
  br label %138

138:                                              ; preds = %137, %131
  %.pn.pn = phi { ptr, i32 } [ %.pn, %137 ], [ %132, %131 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %18) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %17) #8
  br label %139

139:                                              ; preds = %138, %129
  %.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn, %138 ], [ %130, %129 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %17) #8
  br label %307

140:                                              ; preds = %128, %117
  %141 = invoke noundef i32 @_ZNK6sparta20FiniteAbstractDomainI6IRTypeNS_16BitVectorLatticeIS1_Lm16EvvEEN5boost14multiprecision6numberINS5_8backends15cpp_int_backendILj16ELj16ELNS5_16cpp_integer_typeE0ELNS5_18cpp_int_check_typeE0EvEELNS5_26expression_template_optionE0EEEXadL_ZN14type_inference12type_latticeEEEE7elementEv(ptr noundef nonnull align 2 dereferenceable(2) %16)
          to label %142 unwind label %.loopexit

142:                                              ; preds = %140
  %.not = icmp eq i32 %141, 4
  br i1 %.not, label %.invoke, label %143

143:                                              ; preds = %142
  %144 = invoke noundef i32 @_ZNK6sparta20FiniteAbstractDomainI6IRTypeNS_16BitVectorLatticeIS1_Lm16EvvEEN5boost14multiprecision6numberINS5_8backends15cpp_int_backendILj16ELj16ELNS5_16cpp_integer_typeE0ELNS5_18cpp_int_check_typeE0EvEELNS5_26expression_template_optionE0EEEXadL_ZN14type_inference12type_latticeEEEE7elementEv(ptr noundef nonnull align 2 dereferenceable(2) %16)
          to label %145 unwind label %.loopexit

145:                                              ; preds = %143
  %.not83 = icmp eq i32 %144, 9
  br i1 %.not83, label %.invoke, label %146

146:                                              ; preds = %145
  %147 = invoke noundef i32 @_ZNK6sparta20FiniteAbstractDomainI6IRTypeNS_16BitVectorLatticeIS1_Lm16EvvEEN5boost14multiprecision6numberINS5_8backends15cpp_int_backendILj16ELj16ELNS5_16cpp_integer_typeE0ELNS5_18cpp_int_check_typeE0EvEELNS5_26expression_template_optionE0EEEXadL_ZN14type_inference12type_latticeEEEE7elementEv(ptr noundef nonnull align 2 dereferenceable(2) %16)
          to label %148 unwind label %.loopexit

148:                                              ; preds = %146
  %.not84 = icmp eq i32 %147, 11
  br i1 %.not84, label %.invoke, label %149

149:                                              ; preds = %148
  %150 = invoke noundef i32 @_ZNK6sparta20FiniteAbstractDomainI6IRTypeNS_16BitVectorLatticeIS1_Lm16EvvEEN5boost14multiprecision6numberINS5_8backends15cpp_int_backendILj16ELj16ELNS5_16cpp_integer_typeE0ELNS5_18cpp_int_check_typeE0EvEELNS5_26expression_template_optionE0EEEXadL_ZN14type_inference12type_latticeEEEE7elementEv(ptr noundef nonnull align 2 dereferenceable(2) %16)
          to label %151 unwind label %.loopexit

151:                                              ; preds = %149
  %.not85 = icmp eq i32 %150, 14
  br i1 %.not85, label %.invoke, label %152

152:                                              ; preds = %151
  %153 = invoke noundef i32 @_ZNK6sparta20FiniteAbstractDomainI6IRTypeNS_16BitVectorLatticeIS1_Lm16EvvEEN5boost14multiprecision6numberINS5_8backends15cpp_int_backendILj16ELj16ELNS5_16cpp_integer_typeE0ELNS5_18cpp_int_check_typeE0EvEELNS5_26expression_template_optionE0EEEXadL_ZN14type_inference12type_latticeEEEE7elementEv(ptr noundef nonnull align 2 dereferenceable(2) %16)
          to label %154 unwind label %.loopexit

154:                                              ; preds = %152
  %.not86 = icmp eq i32 %153, 1
  br i1 %.not86, label %167, label %155

155:                                              ; preds = %154
  %156 = invoke noundef i32 @_ZNK6sparta20FiniteAbstractDomainI6IRTypeNS_16BitVectorLatticeIS1_Lm16EvvEEN5boost14multiprecision6numberINS5_8backends15cpp_int_backendILj16ELj16ELNS5_16cpp_integer_typeE0ELNS5_18cpp_int_check_typeE0EvEELNS5_26expression_template_optionE0EEEXadL_ZN14type_inference12type_latticeEEEE7elementEv(ptr noundef nonnull align 2 dereferenceable(2) %16)
          to label %157 unwind label %.loopexit

157:                                              ; preds = %155
  %.not87 = icmp eq i32 %156, 2
  br i1 %.not87, label %167, label %158

158:                                              ; preds = %157
  %159 = invoke noundef i32 @_ZNK6sparta20FiniteAbstractDomainI6IRTypeNS_16BitVectorLatticeIS1_Lm16EvvEEN5boost14multiprecision6numberINS5_8backends15cpp_int_backendILj16ELj16ELNS5_16cpp_integer_typeE0ELNS5_18cpp_int_check_typeE0EvEELNS5_26expression_template_optionE0EEEXadL_ZN14type_inference12type_latticeEEEE7elementEv(ptr noundef nonnull align 2 dereferenceable(2) %16)
          to label %160 unwind label %.loopexit

160:                                              ; preds = %158
  %.not88 = icmp eq i32 %159, 6
  br i1 %.not88, label %167, label %161

161:                                              ; preds = %160
  %162 = invoke noundef i32 @_ZNK6sparta20FiniteAbstractDomainI6IRTypeNS_16BitVectorLatticeIS1_Lm16EvvEEN5boost14multiprecision6numberINS5_8backends15cpp_int_backendILj16ELj16ELNS5_16cpp_integer_typeE0ELNS5_18cpp_int_check_typeE0EvEELNS5_26expression_template_optionE0EEEXadL_ZN14type_inference12type_latticeEEEE7elementEv(ptr noundef nonnull align 2 dereferenceable(2) %16)
          to label %163 unwind label %.loopexit

163:                                              ; preds = %161
  %.not89 = icmp eq i32 %162, 5
  br i1 %.not89, label %167, label %164

164:                                              ; preds = %163
  %165 = invoke noundef i32 @_ZNK6sparta20FiniteAbstractDomainI6IRTypeNS_16BitVectorLatticeIS1_Lm16EvvEEN5boost14multiprecision6numberINS5_8backends15cpp_int_backendILj16ELj16ELNS5_16cpp_integer_typeE0ELNS5_18cpp_int_check_typeE0EvEELNS5_26expression_template_optionE0EEEXadL_ZN14type_inference12type_latticeEEEE7elementEv(ptr noundef nonnull align 2 dereferenceable(2) %16)
          to label %166 unwind label %.loopexit

166:                                              ; preds = %164
  %.not90 = icmp eq i32 %165, 8
  br i1 %.not90, label %167, label %301

167:                                              ; preds = %166, %163, %160, %157, %154
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %21) #8
  %168 = load ptr, ptr %28, align 8, !tbaa !5
  %169 = load ptr, ptr %15, align 8, !tbaa !38
  invoke void @_ZN3cfg16ControlFlowGraph9find_insnEP13IRInstructionPNS_5BlockE(ptr dead_on_unwind nonnull writable sret(%"class.cfg::InstructionIteratorImpl") align 8 %21, ptr noundef nonnull align 8 dereferenceable(160) %168, ptr noundef %169, ptr noundef null)
          to label %170 unwind label %209

170:                                              ; preds = %167
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %22) #8
  %171 = invoke noundef ptr @_ZNK3cfg23InstructionIteratorImplILb0EE5blockEv(ptr noundef nonnull align 8 dereferenceable(32) %21)
          to label %172 unwind label %211

172:                                              ; preds = %170
  store ptr %171, ptr %22, align 8, !tbaa !38
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %23) #8
  %173 = load ptr, ptr %28, align 8, !tbaa !5
  %174 = invoke noundef ptr @_ZN3cfg16ControlFlowGraph11split_blockERKNS_23InstructionIteratorImplILb0EEE(ptr noundef nonnull align 8 dereferenceable(160) %173, ptr noundef nonnull align 8 dereferenceable(32) %21)
          to label %175 unwind label %213

175:                                              ; preds = %172
  store ptr %174, ptr %23, align 8, !tbaa !38
  %176 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN12UnorderedMapIPN3cfg5BlockESt6vectorIPNS0_4EdgeESaIS5_EESt4hashIS2_ESt8equal_toIS2_EE2atERKS2_(ptr noundef nonnull align 8 dereferenceable(56) %3, ptr noundef nonnull align 8 dereferenceable(8) %22)
          to label %177 unwind label %213

177:                                              ; preds = %175
  %178 = invoke { ptr, i8 } @_ZN12UnorderedMapIPN3cfg5BlockESt6vectorIPNS0_4EdgeESaIS5_EESt4hashIS2_ESt8equal_toIS2_EE7emplaceIJRS2_RS7_EEESt4pairINSC_13FixedIteratorEbEDpOT_(ptr noundef nonnull align 8 dereferenceable(56) %3, ptr noundef nonnull align 8 dereferenceable(8) %23, ptr noundef nonnull align 8 dereferenceable(24) %176)
          to label %179 unwind label %213

179:                                              ; preds = %177
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %24) #8
  %180 = load ptr, ptr %28, align 8, !tbaa !5
  %181 = invoke noundef ptr @_ZN3cfg16ControlFlowGraph12create_blockEv(ptr noundef nonnull align 8 dereferenceable(160) %180)
          to label %182 unwind label %215

182:                                              ; preds = %179
  store ptr %181, ptr %24, align 8, !tbaa !38
  %183 = load ptr, ptr %28, align 8, !tbaa !5
  %184 = call noundef i32 @_ZN3cfg16ControlFlowGraph13allocate_tempEv(ptr noundef nonnull align 8 dereferenceable(160) %183)
  %185 = invoke noalias noundef nonnull dereferenceable(32) ptr @_Znwm(i64 noundef 32) #10
          to label %186 unwind label %217

186:                                              ; preds = %182
  invoke void @_ZN13IRInstructionC1E8IROpcode(ptr noundef nonnull align 8 dereferenceable(32) %185, i16 noundef zeroext 12)
          to label %187 unwind label %219

187:                                              ; preds = %186
  %188 = invoke noundef ptr @_ZN13IRInstruction11set_literalEl(ptr noundef nonnull align 8 dereferenceable(32) %185, i64 noundef 0)
          to label %189 unwind label %217

189:                                              ; preds = %187
  %190 = invoke noundef ptr @_ZN13IRInstruction8set_destEj(ptr noundef nonnull align 8 dereferenceable(32) %185, i32 noundef %184)
          to label %191 unwind label %217

191:                                              ; preds = %189
  %192 = load ptr, ptr %24, align 8, !tbaa !38
  %193 = invoke noundef zeroext i1 @_ZN3cfg5Block9push_backEP13IRInstruction(ptr noundef nonnull align 8 dereferenceable(104) %192, ptr noundef nonnull %185)
          to label %194 unwind label %217

194:                                              ; preds = %191
  %195 = invoke noalias noundef nonnull dereferenceable(32) ptr @_Znwm(i64 noundef 32) #10
          to label %196 unwind label %221

196:                                              ; preds = %194
  invoke void @_ZN13IRInstructionC1E8IROpcode(ptr noundef nonnull align 8 dereferenceable(32) %195, i16 noundef zeroext 25)
          to label %197 unwind label %223

197:                                              ; preds = %196
  %198 = invoke noundef ptr @_ZN13IRInstruction7set_srcEtj(ptr noundef nonnull align 8 dereferenceable(32) %195, i16 noundef zeroext 0, i32 noundef %184)
          to label %199 unwind label %221

199:                                              ; preds = %197
  %200 = load ptr, ptr %24, align 8, !tbaa !38
  %201 = invoke noundef zeroext i1 @_ZN3cfg5Block9push_backEP13IRInstruction(ptr noundef nonnull align 8 dereferenceable(104) %200, ptr noundef nonnull %195)
          to label %202 unwind label %221

202:                                              ; preds = %199
  %203 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN12UnorderedMapIPN3cfg5BlockESt6vectorIPNS0_4EdgeESaIS5_EESt4hashIS2_ESt8equal_toIS2_EE2atERKS2_(ptr noundef nonnull align 8 dereferenceable(56) %3, ptr noundef nonnull align 8 dereferenceable(8) %22)
          to label %204 unwind label %225

204:                                              ; preds = %202
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %25) #8
  %205 = call ptr @_ZNSt6vectorIPN3cfg4EdgeESaIS2_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %203) #8
  store ptr %205, ptr %25, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %26) #8
  %206 = call ptr @_ZNSt6vectorIPN3cfg4EdgeESaIS2_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %203) #8
  store ptr %206, ptr %26, align 8
  %207 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPPN3cfg4EdgeESt6vectorIS3_SaIS3_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %25, ptr noundef nonnull align 8 dereferenceable(8) %26) #8
  br i1 %207, label %.lr.ph148, label %._crit_edge149

._crit_edge149:                                   ; preds = %234, %204
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #8
  %208 = invoke noundef i32 @_ZNK6sparta20FiniteAbstractDomainI6IRTypeNS_16BitVectorLatticeIS1_Lm16EvvEEN5boost14multiprecision6numberINS5_8backends15cpp_int_backendILj16ELj16ELNS5_16cpp_integer_typeE0ELNS5_18cpp_int_check_typeE0EvEELNS5_26expression_template_optionE0EEEXadL_ZN14type_inference12type_latticeEEEE7elementEv(ptr noundef nonnull align 2 dereferenceable(2) %16)
          to label %242 unwind label %221

209:                                              ; preds = %167
  %210 = landingpad { ptr, i32 }
          cleanup
  br label %306

211:                                              ; preds = %170
  %212 = landingpad { ptr, i32 }
          cleanup
  br label %305

213:                                              ; preds = %177, %175, %172
  %214 = landingpad { ptr, i32 }
          cleanup
  br label %304

215:                                              ; preds = %179
  %216 = landingpad { ptr, i32 }
          cleanup
  br label %303

217:                                              ; preds = %191, %189, %187, %182
  %218 = landingpad { ptr, i32 }
          cleanup
  br label %303

219:                                              ; preds = %186
  %220 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %185, i64 noundef 32) #11
  br label %303

221:                                              ; preds = %._crit_edge149, %199, %197, %194
  %222 = landingpad { ptr, i32 }
          cleanup
  br label %303

223:                                              ; preds = %196
  %224 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %195, i64 noundef 32) #11
  br label %303

225:                                              ; preds = %202
  %226 = landingpad { ptr, i32 }
          cleanup
  br label %303

.lr.ph148:                                        ; preds = %204, %234
  %227 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPPN3cfg4EdgeESt6vectorIS3_SaIS3_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %25) #8
  %228 = load ptr, ptr %227, align 8, !tbaa !38
  %229 = invoke noundef ptr @_ZNK3cfg4Edge10throw_infoEv(ptr noundef nonnull align 8 dereferenceable(32) %228)
          to label %230 unwind label %237

230:                                              ; preds = %.lr.ph148
  %231 = load ptr, ptr %28, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %27) #8
  %232 = call noundef ptr @_ZNK3cfg4Edge6targetEv(ptr noundef nonnull align 8 dereferenceable(32) %228)
  store ptr %232, ptr %27, align 8, !tbaa !38
  %233 = getelementptr inbounds i8, ptr %229, i64 8
  invoke void @_ZN3cfg16ControlFlowGraph8add_edgeIJRPNS_5BlockES3_RP7DexTypeRjEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(160) %231, ptr noundef nonnull align 8 dereferenceable(8) %24, ptr noundef nonnull align 8 dereferenceable(8) %27, ptr noundef nonnull align 8 dereferenceable(8) %229, ptr noundef nonnull align 4 dereferenceable(4) %233)
          to label %234 unwind label %239

234:                                              ; preds = %230
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #8
  %235 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPPN3cfg4EdgeESt6vectorIS3_SaIS3_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %25) #8
  %236 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPPN3cfg4EdgeESt6vectorIS3_SaIS3_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %25, ptr noundef nonnull align 8 dereferenceable(8) %26) #8
  br i1 %236, label %.lr.ph148, label %._crit_edge149

237:                                              ; preds = %.lr.ph148
  %238 = landingpad { ptr, i32 }
          cleanup
  br label %241

239:                                              ; preds = %230
  %240 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #8
  br label %241

241:                                              ; preds = %239, %237
  %.pn96 = phi { ptr, i32 } [ %240, %239 ], [ %238, %237 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #8
  br label %303

242:                                              ; preds = %._crit_edge149
  %243 = icmp eq i32 %208, 8
  br i1 %243, label %244, label %280

244:                                              ; preds = %242
  %245 = load ptr, ptr %28, align 8, !tbaa !5
  %246 = call noundef i32 @_ZN3cfg16ControlFlowGraph13allocate_tempEv(ptr noundef nonnull align 8 dereferenceable(160) %245)
  %247 = invoke noalias noundef nonnull dereferenceable(32) ptr @_Znwm(i64 noundef 32) #10
          to label %248 unwind label %272

248:                                              ; preds = %244
  invoke void @_ZN13IRInstructionC1E8IROpcode(ptr noundef nonnull align 8 dereferenceable(32) %247, i16 noundef zeroext 32)
          to label %249 unwind label %274

249:                                              ; preds = %248
  %250 = invoke noundef ptr @_ZN13IRInstruction8set_destEj(ptr noundef nonnull align 8 dereferenceable(32) %247, i32 noundef %246)
          to label %251 unwind label %272

251:                                              ; preds = %249
  %252 = invoke noundef i32 @_ZNK13IRInstruction4destEv(ptr noundef nonnull align 8 dereferenceable(32) %94)
          to label %253 unwind label %272

253:                                              ; preds = %251
  %254 = invoke noundef ptr @_ZN13IRInstruction7set_srcEtj(ptr noundef nonnull align 8 dereferenceable(32) %247, i16 noundef zeroext 0, i32 noundef %252)
          to label %255 unwind label %272

255:                                              ; preds = %253
  %256 = invoke noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %94, i16 noundef zeroext 0)
          to label %257 unwind label %272

257:                                              ; preds = %255
  %258 = invoke noundef ptr @_ZN13IRInstruction7set_srcEtj(ptr noundef nonnull align 8 dereferenceable(32) %247, i16 noundef zeroext 1, i32 noundef %256)
          to label %259 unwind label %272

259:                                              ; preds = %257
  %260 = load ptr, ptr %22, align 8, !tbaa !38
  %261 = invoke noundef zeroext i1 @_ZN3cfg5Block9push_backEP13IRInstruction(ptr noundef nonnull align 8 dereferenceable(104) %260, ptr noundef nonnull %247)
          to label %262 unwind label %272

262:                                              ; preds = %259
  %263 = invoke noalias noundef nonnull dereferenceable(32) ptr @_Znwm(i64 noundef 32) #10
          to label %264 unwind label %276

264:                                              ; preds = %262
  invoke void @_ZN13IRInstructionC1E8IROpcode(ptr noundef nonnull align 8 dereferenceable(32) %263, i16 noundef zeroext 40)
          to label %265 unwind label %278

265:                                              ; preds = %264
  %266 = invoke noundef ptr @_ZN13IRInstruction7set_srcEtj(ptr noundef nonnull align 8 dereferenceable(32) %263, i16 noundef zeroext 0, i32 noundef %246)
          to label %267 unwind label %276

267:                                              ; preds = %265
  %268 = load ptr, ptr %28, align 8, !tbaa !5
  %269 = load ptr, ptr %22, align 8, !tbaa !38
  %270 = load ptr, ptr %23, align 8, !tbaa !38
  %271 = load ptr, ptr %24, align 8, !tbaa !38
  invoke void @_ZN3cfg16ControlFlowGraph13create_branchEPNS_5BlockEP13IRInstructionS2_S2_(ptr noundef nonnull align 8 dereferenceable(160) %268, ptr noundef %269, ptr noundef nonnull %263, ptr noundef %270, ptr noundef %271)
          to label %300 unwind label %276

272:                                              ; preds = %259, %257, %255, %253, %251, %249, %244
  %273 = landingpad { ptr, i32 }
          cleanup
  br label %303

274:                                              ; preds = %248
  %275 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %247, i64 noundef 32) #11
  br label %303

276:                                              ; preds = %267, %265, %262
  %277 = landingpad { ptr, i32 }
          cleanup
  br label %303

278:                                              ; preds = %264
  %279 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %263, i64 noundef 32) #11
  br label %303

280:                                              ; preds = %242
  %281 = invoke noalias noundef nonnull dereferenceable(32) ptr @_Znwm(i64 noundef 32) #10
          to label %282 unwind label %296

282:                                              ; preds = %280
  invoke void @_ZN13IRInstructionC1E8IROpcode(ptr noundef nonnull align 8 dereferenceable(32) %281, i16 noundef zeroext 34)
          to label %283 unwind label %298

283:                                              ; preds = %282
  %284 = invoke noundef i32 @_ZNK13IRInstruction4destEv(ptr noundef nonnull align 8 dereferenceable(32) %94)
          to label %285 unwind label %296

285:                                              ; preds = %283
  %286 = invoke noundef ptr @_ZN13IRInstruction7set_srcEtj(ptr noundef nonnull align 8 dereferenceable(32) %281, i16 noundef zeroext 0, i32 noundef %284)
          to label %287 unwind label %296

287:                                              ; preds = %285
  %288 = invoke noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %94, i16 noundef zeroext 0)
          to label %289 unwind label %296

289:                                              ; preds = %287
  %290 = invoke noundef ptr @_ZN13IRInstruction7set_srcEtj(ptr noundef nonnull align 8 dereferenceable(32) %281, i16 noundef zeroext 1, i32 noundef %288)
          to label %291 unwind label %296

291:                                              ; preds = %289
  %292 = load ptr, ptr %28, align 8, !tbaa !5
  %293 = load ptr, ptr %22, align 8, !tbaa !38
  %294 = load ptr, ptr %23, align 8, !tbaa !38
  %295 = load ptr, ptr %24, align 8, !tbaa !38
  invoke void @_ZN3cfg16ControlFlowGraph13create_branchEPNS_5BlockEP13IRInstructionS2_S2_(ptr noundef nonnull align 8 dereferenceable(160) %292, ptr noundef %293, ptr noundef nonnull %281, ptr noundef %294, ptr noundef %295)
          to label %300 unwind label %296

296:                                              ; preds = %291, %289, %287, %285, %283, %280
  %297 = landingpad { ptr, i32 }
          cleanup
  br label %303

298:                                              ; preds = %282
  %299 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %281, i64 noundef 32) #11
  br label %303

300:                                              ; preds = %291, %267
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %21) #8
  br label %301

301:                                              ; preds = %166, %300
  call void @_ZN6sparta14AbstractDomainINS_20FiniteAbstractDomainI6IRTypeNS_16BitVectorLatticeIS2_Lm16EvvEEN5boost14multiprecision6numberINS6_8backends15cpp_int_backendILj16ELj16ELNS6_16cpp_integer_typeE0ELNS6_18cpp_int_check_typeE0EvEELNS6_26expression_template_optionE0EEEXadL_ZN14type_inference12type_latticeEEEEEED2Ev(ptr noundef nonnull align 2 dereferenceable(2) %16) #8
  call void @llvm.lifetime.end.p0(i64 2, ptr nonnull %16) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #8
  %302 = invoke noundef nonnull align 8 dereferenceable(96) ptr @_ZN6sparta7pt_core20PatriciaTreeIteratorIPK13IRInstructionNS0_10EmptyValueEEppEv(ptr noundef nonnull align 8 dereferenceable(96) %13)
          to label %75 unwind label %87

303:                                              ; preds = %217, %219, %296, %298, %272, %274, %278, %276, %225, %241, %223, %221, %215
  %.pn96.pn.pn.pn.pn = phi { ptr, i32 } [ %216, %215 ], [ %218, %217 ], [ %220, %219 ], [ %222, %221 ], [ %224, %223 ], [ %.pn96, %241 ], [ %226, %225 ], [ %273, %272 ], [ %275, %274 ], [ %277, %276 ], [ %279, %278 ], [ %297, %296 ], [ %299, %298 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #8
  br label %304

304:                                              ; preds = %303, %213
  %.pn96.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn96.pn.pn.pn.pn, %303 ], [ %214, %213 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #8
  br label %305

305:                                              ; preds = %304, %211
  %.pn96.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn96.pn.pn.pn.pn.pn, %304 ], [ %212, %211 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #8
  br label %306

306:                                              ; preds = %305, %209
  %.pn96.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn96.pn.pn.pn.pn.pn.pn, %305 ], [ %210, %209 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %21) #8
  br label %307

307:                                              ; preds = %.loopexit, %.loopexit.split-lp, %306, %139
  %.pn105 = phi { ptr, i32 } [ %.pn96.pn.pn.pn.pn.pn.pn.pn, %306 ], [ %.pn.pn.pn, %139 ], [ %lpad.loopexit, %.loopexit ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ]
  call void @_ZN6sparta14AbstractDomainINS_20FiniteAbstractDomainI6IRTypeNS_16BitVectorLatticeIS2_Lm16EvvEEN5boost14multiprecision6numberINS6_8backends15cpp_int_backendILj16ELj16ELNS6_16cpp_integer_typeE0ELNS6_18cpp_int_check_typeE0EvEELNS6_26expression_template_optionE0EEEXadL_ZN14type_inference12type_latticeEEEEEED2Ev(ptr noundef nonnull align 2 dereferenceable(2) %16) #8
  br label %308

308:                                              ; preds = %307, %110
  %.pn105.pn = phi { ptr, i32 } [ %.pn105, %307 ], [ %111, %110 ]
  call void @llvm.lifetime.end.p0(i64 2, ptr nonnull %16) #8
  br label %309

309:                                              ; preds = %108, %308, %106
  %.pn105.pn.pn.pn = phi { ptr, i32 } [ %107, %106 ], [ %.pn105.pn, %308 ], [ %109, %108 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #8
  br label %310

310:                                              ; preds = %104, %309, %87
  %.pn105.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %88, %87 ], [ %.pn105.pn.pn.pn, %309 ], [ %105, %104 ]
  call void @_ZN6sparta7pt_core20PatriciaTreeIteratorIPK13IRInstructionNS0_10EmptyValueEED2Ev(ptr noundef nonnull align 8 dereferenceable(96) %14) #8
  br label %311

311:                                              ; preds = %310, %85
  %.pn105.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn105.pn.pn.pn.pn.pn, %310 ], [ %86, %85 ]
  call void @llvm.lifetime.end.p0(i64 96, ptr nonnull %14) #8
  call void @_ZN6sparta7pt_core20PatriciaTreeIteratorIPK13IRInstructionNS0_10EmptyValueEED2Ev(ptr noundef nonnull align 8 dereferenceable(96) %13) #8
  br label %312

312:                                              ; preds = %311, %83
  %.pn105.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn105.pn.pn.pn.pn.pn.pn, %311 ], [ %84, %83 ]
  call void @llvm.lifetime.end.p0(i64 96, ptr nonnull %13) #8
  br label %313

313:                                              ; preds = %312, %81
  %.pn105.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn105.pn.pn.pn.pn.pn.pn.pn, %312 ], [ %82, %81 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #8
  br label %314

314:                                              ; preds = %313, %65
  %.pn105.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn105.pn.pn.pn.pn.pn.pn.pn.pn, %313 ], [ %66, %65 ]
  call void @_ZN14type_inference13TypeInferenceD2Ev(ptr noundef nonnull align 8 dereferenceable(432) %9) #8
  br label %315

315:                                              ; preds = %314, %63
  %.pn105.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn105.pn.pn.pn.pn.pn.pn.pn.pn.pn, %314 ], [ %64, %63 ]
  call void @llvm.lifetime.end.p0(i64 432, ptr nonnull %9) #8
  br label %316

316:                                              ; preds = %35, %48, %315
  %.pn117.pn.pn = phi { ptr, i32 } [ %.pn105.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %315 ], [ %.pn117, %48 ], [ %36, %35 ]
  call void @_ZN12UnorderedMapIPN3cfg5BlockESt6vectorIPNS0_4EdgeESaIS5_EESt4hashIS2_ESt8equal_toIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %3) #8
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %3) #8
  resume { ptr, i32 } %.pn117.pn.pn
}

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

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

declare void @_ZNK3cfg5Block28get_outgoing_throws_in_orderEv(ptr dead_on_unwind writable sret(%"class.std::vector.299") align 8, ptr noundef nonnull align 8 dereferenceable(104)) local_unnamed_addr #2

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN14type_inference13TypeInferenceC2ERKN3cfg16ControlFlowGraphEbRK12UnorderedSetIP7DexTypeSt4hashIS7_ESt8equal_toIS7_EEPKN21method_override_graph5GraphE(ptr noundef nonnull align 8 dereferenceable(432), ptr noundef nonnull align 8 dereferenceable(160), i1 noundef zeroext, ptr noundef nonnull align 8 dereferenceable(56), ptr noundef) unnamed_addr #6 align 2

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

declare void @_ZN14type_inference13TypeInference3runEbP7DexTypeP11DexTypeListPKSt3mapIiSt10unique_ptrI16DexAnnotationSetSt14default_deleteIS7_EESt4lessIiESaISt4pairIKiSA_EEE(ptr noundef nonnull align 8 dereferenceable(432), i1 noundef zeroext, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(24) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKSt4pairIN8cse_impl30CommonSubexpressionElimination7ForwardEP13IRInstructionESt6vectorIS7_SaIS7_EEEdeEv(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(48) ptr @_ZN12UnorderedMapIPK13IRInstructionN14type_inference15TypeEnvironmentESt4hashIS2_ESt8equal_toIS2_EE2atERKS2_(ptr noundef nonnull align 8 dereferenceable(56), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #6 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK14type_inference15TypeEnvironment8get_typeEj(ptr dead_on_unwind noalias writable sret(%"class.sparta::FiniteAbstractDomain") align 2, ptr noundef nonnull align 8 dereferenceable(48), i32 noundef) local_unnamed_addr #6 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK6sparta20FiniteAbstractDomainI6IRTypeNS_16BitVectorLatticeIS1_Lm16EvvEEN5boost14multiprecision6numberINS5_8backends15cpp_int_backendILj16ELj16ELNS5_16cpp_integer_typeE0ELNS5_18cpp_int_check_typeE0EvEELNS5_26expression_template_optionE0EEEXadL_ZN14type_inference12type_latticeEEEE6is_topEv(ptr noundef nonnull align 2 dereferenceable(2)) local_unnamed_addr #6 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK6sparta20FiniteAbstractDomainI6IRTypeNS_16BitVectorLatticeIS1_Lm16EvvEEN5boost14multiprecision6numberINS5_8backends15cpp_int_backendILj16ELj16ELNS5_16cpp_integer_typeE0ELNS5_18cpp_int_check_typeE0EvEELNS5_26expression_template_optionE0EEEXadL_ZN14type_inference12type_latticeEEEE9is_bottomEv(ptr noundef nonnull align 2 dereferenceable(2)) local_unnamed_addr #6 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z4showI6IRTypeRSovENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEOT_(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 4 dereferenceable(4)) local_unnamed_addr #6

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

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

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

declare noundef ptr @_ZN3cfg16ControlFlowGraph11split_blockERKNS_23InstructionIteratorImplILb0EEE(ptr noundef nonnull align 8 dereferenceable(160), ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #2

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

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

declare noundef ptr @_ZN3cfg16ControlFlowGraph12create_blockEv(ptr noundef nonnull align 8 dereferenceable(160)) local_unnamed_addr #2

declare noundef zeroext i1 @_ZN3cfg5Block9push_backEP13IRInstruction(ptr noundef nonnull align 8 dereferenceable(104), ptr noundef) local_unnamed_addr #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 #5

; 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 #1 align 2

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

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

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

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

declare void @_ZN3cfg16ControlFlowGraph13create_branchEPNS_5BlockEP13IRInstructionS2_S2_(ptr noundef nonnull align 8 dereferenceable(160), ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

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

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

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !10, i64 128}
!6 = !{!"_ZTSN8cse_impl30CommonSubexpressionEliminationE", !7, i64 0, !17, i64 56, !21, i64 80, !25, i64 104, !10, i64 128, !29, i64 136, !33, i64 256, !10, i64 264, !10, i64 272, !34, i64 280, !10, i64 304}
!7 = !{!"_ZTS12UnorderedMapIPK13IRInstructionmSt4hashIS2_ESt8equal_toIS2_EE", !8, i64 0}
!8 = !{!"_ZTSSt13unordered_mapIPK13IRInstructionmSt4hashIS2_ESt8equal_toIS2_ESaISt4pairIKS2_mEEE", !9, i64 0}
!9 = !{!"_ZTSSt10_HashtableIPK13IRInstructionSt4pairIKS2_mESaIS5_ENSt8__detail10_Select1stESt8equal_toIS2_ESt4hashIS2_ENS7_18_Mod_range_hashingENS7_20_Default_ranged_hashENS7_20_Prime_rehash_policyENS7_17_Hashtable_traitsILb0ELb0ELb1EEEE", !10, i64 0, !13, i64 8, !14, i64 16, !13, i64 24, !15, i64 32, !10, i64 48}
!10 = !{!"any pointer", !11, i64 0}
!11 = !{!"omnipotent char", !12, i64 0}
!12 = !{!"Simple C++ TBAA"}
!13 = !{!"long", !11, i64 0}
!14 = !{!"_ZTSNSt8__detail15_Hash_node_baseE", !10, i64 0}
!15 = !{!"_ZTSNSt8__detail20_Prime_rehash_policyE", !16, i64 0, !13, i64 8}
!16 = !{!"float", !11, i64 0}
!17 = !{!"_ZTSSt6vectorIN8cse_impl30CommonSubexpressionElimination7ForwardESaIS2_EE", !18, i64 0}
!18 = !{!"_ZTSSt12_Vector_baseIN8cse_impl30CommonSubexpressionElimination7ForwardESaIS2_EE", !19, i64 0}
!19 = !{!"_ZTSNSt12_Vector_baseIN8cse_impl30CommonSubexpressionElimination7ForwardESaIS2_EE12_Vector_implE", !20, i64 0}
!20 = !{!"_ZTSNSt12_Vector_baseIN8cse_impl30CommonSubexpressionElimination7ForwardESaIS2_EE17_Vector_impl_dataE", !10, i64 0, !10, i64 8, !10, i64 16}
!21 = !{!"_ZTSSt6vectorIPN3cfg4EdgeESaIS2_EE", !22, i64 0}
!22 = !{!"_ZTSSt12_Vector_baseIPN3cfg4EdgeESaIS2_EE", !23, i64 0}
!23 = !{!"_ZTSNSt12_Vector_baseIPN3cfg4EdgeESaIS2_EE12_Vector_implE", !24, i64 0}
!24 = !{!"_ZTSNSt12_Vector_baseIPN3cfg4EdgeESaIS2_EE17_Vector_impl_dataE", !10, i64 0, !10, i64 8, !10, i64 16}
!25 = !{!"_ZTSSt6vectorIN6sparta15PatriciaTreeSetIPK13IRInstructionEESaIS5_EE", !26, i64 0}
!26 = !{!"_ZTSSt12_Vector_baseIN6sparta15PatriciaTreeSetIPK13IRInstructionEESaIS5_EE", !27, i64 0}
!27 = !{!"_ZTSNSt12_Vector_baseIN6sparta15PatriciaTreeSetIPK13IRInstructionEESaIS5_EE12_Vector_implE", !28, i64 0}
!28 = !{!"_ZTSNSt12_Vector_baseIN6sparta15PatriciaTreeSetIPK13IRInstructionEESaIS5_EE17_Vector_impl_dataE", !10, i64 0, !10, i64 8, !10, i64 16}
!29 = !{!"_ZTSN8cse_impl5StatsE", !13, i64 0, !13, i64 8, !13, i64 16, !13, i64 24, !13, i64 32, !13, i64 40, !30, i64 48, !13, i64 104, !13, i64 112}
!30 = !{!"_ZTS12UnorderedMapItmSt4hashItESt8equal_toItEE", !31, i64 0}
!31 = !{!"_ZTSSt13unordered_mapItmSt4hashItESt8equal_toItESaISt4pairIKtmEEE", !32, i64 0}
!32 = !{!"_ZTSSt10_HashtableItSt4pairIKtmESaIS2_ENSt8__detail10_Select1stESt8equal_toItESt4hashItENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb0ELb0ELb1EEEE", !10, i64 0, !13, i64 8, !14, i64 16, !13, i64 24, !15, i64 32, !10, i64 48}
!33 = !{!"bool", !11, i64 0}
!34 = !{!"_ZTSSt6vectorIP13IRInstructionSaIS1_EE", !35, i64 0}
!35 = !{!"_ZTSSt12_Vector_baseIP13IRInstructionSaIS1_EE", !36, i64 0}
!36 = !{!"_ZTSNSt12_Vector_baseIP13IRInstructionSaIS1_EE12_Vector_implE", !37, i64 0}
!37 = !{!"_ZTSNSt12_Vector_baseIP13IRInstructionSaIS1_EE17_Vector_impl_dataE", !10, i64 0, !10, i64 8, !10, i64 16}
!38 = !{!10, !10, i64 0}
!39 = !{!6, !33, i64 256}
!40 = !{i8 0, i8 2}
!41 = !{}
!42 = !{!6, !10, i64 264}
!43 = !{!6, !10, i64 272}
!44 = !{!45, !13, i64 0}
!45 = !{!"_ZTSN8cse_impl30CommonSubexpressionElimination7ForwardE", !13, i64 0, !10, i64 8}
!46 = !{!45, !10, i64 8}
!47 = !{!48, !10, i64 16}
!48 = !{!"_ZTSSt4pairIN8cse_impl30CommonSubexpressionElimination7ForwardEP13IRInstructionE", !45, i64 0, !10, i64 16}
!49 = !{!50, !50, i64 0}
!50 = !{!"_ZTS6IRType", !11, i64 0}


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