; 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::__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.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.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 }
%"struct.std::pair.639" = type <{ i32, i8, [3 x i8] }>
%class.UnorderedMap.642 = type { %"class.std::unordered_map.644" }
%"class.std::unordered_map.644" = type { %"class.std::_Hashtable.645" }
%"class.std::_Hashtable.645" = 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.UnorderedSet.658 = type { %"class.std::unordered_set.660" }
%"class.std::unordered_set.660" = type { %"class.std::_Hashtable.661" }
%"class.std::_Hashtable.661" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"class.__gnu_cxx::__normal_iterator.674" = type { ptr }
%"struct.std::pair.675" = type <{ %"class.UnorderedSet<const IRInstruction *>::FixedIterator", i8, [7 x i8] }>
%"class.UnorderedSet<const IRInstruction *>::FixedIterator" = type { %"struct.std::__detail::_Node_iterator.677" }
%"struct.std::__detail::_Node_iterator.677" = type { %"struct.std::__detail::_Node_iterator_base.678" }
%"struct.std::__detail::_Node_iterator_base.678" = type { ptr }
%"struct.std::pair.680" = type { i16, [6 x i8], %"class.std::optional" }
%"class.std::optional" = type { %"struct.std::_Optional_base" }
%"struct.std::_Optional_base" = type { %"struct.std::_Optional_payload" }
%"struct.std::_Optional_payload" = type { %"struct.std::_Optional_payload_base.base", [7 x i8] }
%"struct.std::_Optional_payload_base.base" = type <{ %"union.std::_Optional_payload_base<long>::_Storage", i8 }>
%"union.std::_Optional_payload_base<long>::_Storage" = type { i64 }
%"struct.std::pair.687" = type { i16, i32 }
%"struct.std::pair.682" = type <{ %"class.UnorderedMap<unsigned long, std::pair<IROpcode, unsigned int>>::FixedIterator", i8, [7 x i8] }>
%"class.UnorderedMap<unsigned long, std::pair<IROpcode, unsigned int>>::FixedIterator" = type { %"struct.std::__detail::_Node_iterator.684" }
%"struct.std::__detail::_Node_iterator.684" = type { %"struct.std::__detail::_Node_iterator_base.685" }
%"struct.std::__detail::_Node_iterator_base.685" = type { ptr }
%"class.UnorderedSet<const IRInstruction *>::UnorderedIterable" = type { ptr }
%"class.__gnu_cxx::__normal_iterator.689" = type { ptr }
%class.UnorderedMap.690 = type { %"class.std::unordered_map.692" }
%"class.std::unordered_map.692" = type { %"class.std::_Hashtable.693" }
%"class.std::_Hashtable.693" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"class.cfg::InstructionIterableImpl" = type { ptr }
%"struct.std::pair.706" = type <{ %"class.UnorderedMap<IRInstruction *, cfg::InstructionIteratorImpl<false>>::FixedIterator", i8, [7 x i8] }>
%"class.UnorderedMap<IRInstruction *, cfg::InstructionIteratorImpl<false>>::FixedIterator" = type { %"struct.std::__detail::_Node_iterator.708" }
%"struct.std::__detail::_Node_iterator.708" = type { %"struct.std::__detail::_Node_iterator_base.709" }
%"struct.std::__detail::_Node_iterator_base.709" = type { ptr }
%"class.std::vector.711" = type { %"struct.std::_Vector_base.712" }
%"struct.std::_Vector_base.712" = type { %"struct.std::_Vector_base<std::pair<cse_impl::CommonSubexpressionElimination::Forward, IRInstruction *>, std::allocator<std::pair<cse_impl::CommonSubexpressionElimination::Forward, IRInstruction *>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::pair<cse_impl::CommonSubexpressionElimination::Forward, IRInstruction *>, std::allocator<std::pair<cse_impl::CommonSubexpressionElimination::Forward, IRInstruction *>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::pair<cse_impl::CommonSubexpressionElimination::Forward, IRInstruction *>, std::allocator<std::pair<cse_impl::CommonSubexpressionElimination::Forward, IRInstruction *>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::pair<cse_impl::CommonSubexpressionElimination::Forward, IRInstruction *>, std::allocator<std::pair<cse_impl::CommonSubexpressionElimination::Forward, IRInstruction *>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.720" = type { %"struct.std::_Vector_base.721" }
%"struct.std::_Vector_base.721" = type { %"struct.std::_Vector_base<const IRInstruction *, std::allocator<const IRInstruction *>>::_Vector_impl" }
%"struct.std::_Vector_base<const IRInstruction *, std::allocator<const IRInstruction *>>::_Vector_impl" = type { %"struct.std::_Vector_base<const IRInstruction *, std::allocator<const IRInstruction *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<const IRInstruction *, std::allocator<const IRInstruction *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::allocator.722" = type { i8 }
%"class.__gnu_cxx::__normal_iterator.725" = type { ptr }
%class.anon.726 = type { ptr }
%"class.cfg::CFGMutation" = type { ptr, %class.UnorderedMap.727 }
%class.UnorderedMap.727 = type { %"class.std::unordered_map.729" }
%"class.std::unordered_map.729" = type { %"class.std::_Hashtable.730" }
%"class.std::_Hashtable.730" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"class.UnorderedMap<const DexMethodRef *, const DexMethodRef *>::ConstFixedIterator" = type { %"struct.std::__detail::_Node_const_iterator.257" }
%"struct.std::__detail::_Node_const_iterator.257" = type { %"struct.std::__detail::_Node_iterator_base.152" }
%"struct.std::__detail::_Node_iterator_base.152" = type { ptr }
%class.anon.743 = type { 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 }
%"class.std::initializer_list.744" = type { ptr, i64 }
%"class.std::allocator.333" = type { i8 }
%"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.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.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 }
%"struct.cse_impl::CommonSubexpressionElimination::Forward" = type { i64, ptr }
%struct.MethodItemEntry = type { %"class.boost::intrusive::list_member_hook", i32, %union.anon.583 }
%"class.boost::intrusive::list_member_hook" = type { %"class.boost::intrusive::generic_hook" }
%"class.boost::intrusive::generic_hook" = type { %"struct.boost::intrusive::list_node" }
%"struct.boost::intrusive::list_node" = type { ptr, ptr }
%union.anon.583 = type { ptr }
%"struct.std::pair.716" = type { i64, %"struct.std::pair.687" }
%"struct.std::pair.258" = type { ptr, 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.122 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.123 = external hidden unnamed_addr constant [135 x i8], align 1
@__PRETTY_FUNCTION__._ZN8cse_impl30CommonSubexpressionElimination5patchEb = external hidden unnamed_addr constant [59 x i8], align 1
@.str.124 = external hidden unnamed_addr constant [41 x i8], align 1
@.str.125 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.126 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.127 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.128 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.129 = external hidden unnamed_addr constant [35 x i8], align 1
@.str.130 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.131 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.132 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.133 = external hidden unnamed_addr constant [26 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

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN6opcode12is_an_invokeE8IROpcode(i16 noundef zeroext) #6

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN6opcode10is_an_aputE8IROpcode(i16 noundef zeroext) #6

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN6opcode10is_an_iputE8IROpcode(i16 noundef zeroext) #6

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN6opcode10is_an_sputE8IROpcode(i16 noundef zeroext) #6

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN6opcode9is_a_moveE8IROpcode(i16 noundef zeroext) #6

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local noundef zeroext i1 @_ZN8cse_impl30CommonSubexpressionElimination5patchEb(ptr noundef nonnull align 8 dereferenceable(312) %0, i1 noundef zeroext %1) #7 align 2 personality ptr @__gxx_personality_v0 {
  %3 = alloca i1, align 1
  %4 = alloca ptr, align 8
  %5 = alloca i8, align 1
  %6 = alloca %"class.__gnu_cxx::__normal_iterator.638", align 8
  %7 = alloca %"class.__gnu_cxx::__normal_iterator.638", align 8
  %8 = alloca %"struct.std::pair.639", align 4
  %9 = alloca %"class.std::__cxx11::basic_string", align 8
  %10 = alloca ptr, align 8
  %11 = alloca i32, align 4
  %12 = alloca %class.UnorderedMap.642, align 8
  %13 = alloca %class.UnorderedSet.658, align 8
  %14 = alloca %class.UnorderedSet.658, align 8
  %15 = alloca ptr, align 8
  %16 = alloca %"class.__gnu_cxx::__normal_iterator.674", align 8
  %17 = alloca %"class.__gnu_cxx::__normal_iterator.674", align 8
  %18 = alloca i32, align 4
  %19 = alloca ptr, align 8
  %20 = alloca %"struct.std::pair.675", align 8
  %21 = alloca ptr, align 8
  %22 = alloca %"struct.std::pair.680", align 8
  %23 = alloca i16, align 2
  %24 = alloca %"class.sparta::pt_core::PatriciaTreeIterator", align 8
  %25 = alloca %"class.sparta::pt_core::PatriciaTreeIterator", align 8
  %26 = alloca i32, align 4
  %27 = alloca %"struct.std::pair.687", align 4
  %28 = alloca %"struct.std::pair.682", align 8
  %29 = alloca ptr, align 8
  %30 = alloca %"class.UnorderedSet<const IRInstruction *>::UnorderedIterable", align 8
  %31 = alloca %"struct.std::__detail::_Node_iterator.677", align 8
  %32 = alloca %"struct.std::__detail::_Node_iterator.677", align 8
  %33 = alloca ptr, align 8
  %34 = alloca %"struct.std::pair.675", align 8
  %35 = alloca ptr, align 8
  %36 = alloca %"class.__gnu_cxx::__normal_iterator.689", align 8
  %37 = alloca %"class.__gnu_cxx::__normal_iterator.689", align 8
  %38 = alloca ptr, align 8
  %39 = alloca %"struct.std::pair.675", align 8
  %40 = alloca %class.UnorderedMap.690, align 8
  %41 = alloca %"class.cfg::InstructionIterableImpl", align 8
  %42 = alloca %"class.cfg::InstructionIteratorImpl", align 8
  %43 = alloca %"class.cfg::InstructionIteratorImpl", align 8
  %44 = alloca ptr, align 8
  %45 = alloca %"struct.std::pair.706", align 8
  %46 = alloca %"class.std::vector.711", align 8
  %47 = alloca ptr, align 8
  %48 = alloca %"class.__gnu_cxx::__normal_iterator.674", align 8
  %49 = alloca %"class.__gnu_cxx::__normal_iterator.674", align 8
  %50 = alloca ptr, align 8
  %51 = alloca ptr, align 8
  %52 = alloca ptr, align 8
  %53 = alloca ptr, align 8
  %54 = alloca %"class.UnorderedMap<unsigned long, std::pair<IROpcode, unsigned int>>::FixedIterator", align 8
  %55 = alloca %"class.UnorderedMap<unsigned long, std::pair<IROpcode, unsigned int>>::FixedIterator", align 8
  %56 = alloca %"struct.std::pair.680", align 8
  %57 = alloca i16, align 2
  %58 = alloca i64, align 8
  %59 = alloca ptr, align 8
  %60 = alloca i8, align 1
  %61 = alloca ptr, align 8
  %62 = alloca %"class.sparta::pt_core::PatriciaTreeIterator", align 8
  %63 = alloca %"class.sparta::pt_core::PatriciaTreeIterator", align 8
  %64 = alloca ptr, align 8
  %65 = alloca %"class.std::__cxx11::basic_string", align 8
  %66 = alloca %"class.std::__cxx11::basic_string", align 8
  %67 = alloca %"struct.std::pair.687", align 4
  %68 = alloca ptr, align 8
  %69 = alloca ptr, align 8
  %70 = alloca ptr, align 8
  %71 = alloca i8, align 1
  %72 = alloca ptr, align 8
  %73 = alloca %"class.sparta::pt_core::PatriciaTreeIterator", align 8
  %74 = alloca %"class.sparta::pt_core::PatriciaTreeIterator", align 8
  %75 = alloca ptr, align 8
  %76 = alloca %"class.std::__cxx11::basic_string", align 8
  %77 = alloca %"class.std::__cxx11::basic_string", align 8
  %78 = alloca %"class.cfg::InstructionIteratorImpl", align 8
  %79 = alloca %"class.std::__cxx11::basic_string", align 8
  %80 = alloca i16, align 2
  %81 = alloca ptr, align 8
  %82 = alloca %"class.__gnu_cxx::__normal_iterator.674", align 8
  %83 = alloca %"class.__gnu_cxx::__normal_iterator.674", align 8
  %84 = alloca ptr, align 8
  %85 = alloca %"class.UnorderedMap<unsigned long, std::pair<IROpcode, unsigned int>>::FixedIterator", align 8
  %86 = alloca %"class.UnorderedMap<unsigned long, std::pair<IROpcode, unsigned int>>::FixedIterator", align 8
  %87 = alloca %"struct.std::pair.687", align 4
  %88 = alloca ptr, align 8
  %89 = alloca ptr, align 8
  %90 = alloca %"class.UnorderedMap<unsigned long, std::pair<IROpcode, unsigned int>>::FixedIterator", align 8
  %91 = alloca ptr, align 8
  %92 = alloca %"class.std::vector.720", align 8
  %93 = alloca %"class.sparta::pt_core::PatriciaTreeIterator", align 8
  %94 = alloca %"class.sparta::pt_core::PatriciaTreeIterator", align 8
  %95 = alloca %"class.std::allocator.722", align 1
  %96 = alloca %"class.__gnu_cxx::__normal_iterator.725", align 8
  %97 = alloca %"class.__gnu_cxx::__normal_iterator.725", align 8
  %98 = alloca %class.anon.726, align 8
  %99 = alloca ptr, align 8
  %100 = alloca %"class.__gnu_cxx::__normal_iterator.725", align 8
  %101 = alloca %"class.__gnu_cxx::__normal_iterator.725", align 8
  %102 = alloca ptr, align 8
  %103 = alloca ptr, align 8
  %104 = alloca ptr, align 8
  %105 = alloca ptr, align 8
  %106 = alloca i32, align 4
  %107 = alloca i8, align 1
  %108 = alloca i8, align 1
  %109 = alloca %"class.std::__cxx11::basic_string", align 8
  %110 = alloca %"class.cfg::CFGMutation", align 8
  %111 = alloca ptr, align 8
  %112 = alloca %"class.__gnu_cxx::__normal_iterator.689", align 8
  %113 = alloca %"class.__gnu_cxx::__normal_iterator.689", align 8
  %114 = alloca ptr, align 8
  %115 = alloca ptr, align 8
  %116 = alloca ptr, align 8
  %117 = alloca %"class.UnorderedMap<const DexMethodRef *, const DexMethodRef *>::ConstFixedIterator", align 8
  %118 = alloca %class.anon.743, align 8
  %119 = alloca %"class.UnorderedMap<const DexMethodRef *, const DexMethodRef *>::ConstFixedIterator", align 8
  %120 = alloca ptr, align 8
  %121 = alloca i32, align 4
  %122 = alloca ptr, align 8
  %123 = alloca ptr, align 8
  %124 = alloca %"class.std::vector.331", align 8
  %125 = alloca %"class.std::initializer_list.744", align 8
  %126 = alloca [2 x ptr], align 8
  %127 = alloca %"class.std::allocator.333", align 1
  store ptr %0, ptr %4, align 8, !tbaa !5
  %128 = zext i1 %1 to i8
  store i8 %128, ptr %5, align 1, !tbaa !9
  %129 = load ptr, ptr %4, align 8
  %130 = getelementptr inbounds %"class.cse_impl::CommonSubexpressionElimination", ptr %129, i32 0, i32 2
  %131 = call noundef zeroext i1 @_ZNKSt6vectorIPN3cfg4EdgeESaIS2_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %130) #10
  br i1 %131, label %158, label %132

132:                                              ; preds = %2
  %133 = getelementptr inbounds %"class.cse_impl::CommonSubexpressionElimination", ptr %129, i32 0, i32 4
  %134 = load ptr, ptr %133, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %6) #10
  %135 = getelementptr inbounds %"class.cse_impl::CommonSubexpressionElimination", ptr %129, i32 0, i32 2
  %136 = call ptr @_ZNSt6vectorIPN3cfg4EdgeESaIS2_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %135) #10
  %137 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.638", ptr %6, i32 0, i32 0
  store ptr %136, ptr %137, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %7) #10
  %138 = getelementptr inbounds %"class.cse_impl::CommonSubexpressionElimination", ptr %129, i32 0, i32 2
  %139 = call ptr @_ZNSt6vectorIPN3cfg4EdgeESaIS2_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %138) #10
  %140 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.638", ptr %7, i32 0, i32 0
  store ptr %139, ptr %140, align 8
  call void @_ZN3cfg16ControlFlowGraph12delete_edgesIN9__gnu_cxx17__normal_iteratorIPPNS_4EdgeESt6vectorIS5_SaIS5_EEEEEEvRKT_SD_(ptr noundef nonnull align 8 dereferenceable(160) %134, ptr noundef nonnull align 8 dereferenceable(8) %6, ptr noundef nonnull align 8 dereferenceable(8) %7)
  call void @llvm.lifetime.end.p0(i64 8, ptr %7) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %6) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %8) #10
  %141 = getelementptr inbounds %"class.cse_impl::CommonSubexpressionElimination", ptr %129, i32 0, i32 4
  %142 = load ptr, ptr %141, align 8, !tbaa !11
  %143 = call i64 @_ZN3cfg16ControlFlowGraph25remove_unreachable_blocksEv(ptr noundef nonnull align 8 dereferenceable(160) %142)
  %144 = trunc i64 %143 to i40
  store i40 %144, ptr %8, align 4
  %145 = getelementptr inbounds %"struct.std::pair.639", ptr %8, i32 0, i32 0
  %146 = load i32, ptr %145, align 4, !tbaa !40
  %147 = zext i32 %146 to i64
  %148 = getelementptr inbounds %"class.cse_impl::CommonSubexpressionElimination", ptr %129, i32 0, i32 5
  %149 = getelementptr inbounds %"struct.cse_impl::Stats", ptr %148, i32 0, i32 3
  %150 = load i64, ptr %149, align 8, !tbaa !43
  %151 = add i64 %150, %147
  store i64 %151, ptr %149, align 8, !tbaa !43
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #10
  %152 = getelementptr inbounds %"class.cse_impl::CommonSubexpressionElimination", ptr %129, i32 0, i32 2
  %153 = call noundef i64 @_ZNKSt6vectorIPN3cfg4EdgeESaIS2_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %152) #10
  %154 = getelementptr inbounds %"class.cse_impl::CommonSubexpressionElimination", ptr %129, i32 0, i32 5
  %155 = getelementptr inbounds %"struct.cse_impl::Stats", ptr %154, i32 0, i32 8
  %156 = load i64, ptr %155, align 8, !tbaa !44
  %157 = add i64 %156, %153
  store i64 %157, ptr %155, align 8, !tbaa !44
  br label %158

158:                                              ; preds = %132, %2
  %159 = getelementptr inbounds %"class.cse_impl::CommonSubexpressionElimination", ptr %129, i32 0, i32 1
  %160 = call noundef zeroext i1 @_ZNKSt6vectorIN8cse_impl30CommonSubexpressionElimination7ForwardESaIS2_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %159) #10
  br i1 %160, label %161, label %165

161:                                              ; preds = %158
  %162 = getelementptr inbounds %"class.cse_impl::CommonSubexpressionElimination", ptr %129, i32 0, i32 2
  %163 = call noundef zeroext i1 @_ZNKSt6vectorIPN3cfg4EdgeESaIS2_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %162) #10
  %164 = xor i1 %163, true
  store i1 %164, ptr %3, align 1
  br label %1322

165:                                              ; preds = %158
  br label %166

166:                                              ; preds = %165
  %167 = call noundef zeroext i1 @_Z12traceEnabled11TraceModulei(i32 noundef 29, i32 noundef 5)
  br i1 %167, label %168, label %177

168:                                              ; preds = %166
  call void @llvm.lifetime.start.p0(i64 32, ptr %9) #10
  %169 = getelementptr inbounds %"class.cse_impl::CommonSubexpressionElimination", ptr %129, i32 0, i32 4
  %170 = load ptr, ptr %169, align 8, !tbaa !11
  call void @_Z4showB5cxx11RKN3cfg16ControlFlowGraphEb(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %9, ptr noundef nonnull align 8 dereferenceable(160) %170, i1 noundef zeroext false)
  %171 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %9) #10
  invoke void (i32, i32, i1, ptr, ...) @_Z5trace11TraceModuleibPKcz(i32 noundef 29, i32 noundef 5, i1 noundef zeroext false, ptr noundef @.str.122, ptr noundef %171)
          to label %172 unwind label %173

172:                                              ; preds = %168
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %9) #10
  br label %177

173:                                              ; preds = %168
  %174 = landingpad { ptr, i32 }
          cleanup
  %175 = extractvalue { ptr, i32 } %174, 0
  store ptr %175, ptr %10, align 8
  %176 = extractvalue { ptr, i32 } %174, 1
  store i32 %176, ptr %11, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %9) #10
  br label %1324

177:                                              ; preds = %172, %166
  br label %178

178:                                              ; preds = %177
  call void @llvm.lifetime.start.p0(i64 56, ptr %12) #10
  call void @_ZN12UnorderedMapImSt4pairI8IROpcodejESt4hashImESt8equal_toImEEC2Ev(ptr noundef nonnull align 8 dereferenceable(56) %12)
  call void @llvm.lifetime.start.p0(i64 56, ptr %13) #10
  invoke void @_ZN12UnorderedSetIPK13IRInstructionSt4hashIS2_ESt8equal_toIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(56) %13)
          to label %179 unwind label %191

179:                                              ; preds = %178
  call void @llvm.lifetime.start.p0(i64 56, ptr %14) #10
  invoke void @_ZN12UnorderedSetIPK13IRInstructionSt4hashIS2_ESt8equal_toIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(56) %14)
          to label %180 unwind label %195

180:                                              ; preds = %179
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #10
  %181 = getelementptr inbounds %"class.cse_impl::CommonSubexpressionElimination", ptr %129, i32 0, i32 1
  store ptr %181, ptr %15, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #10
  %182 = load ptr, ptr %15, align 8, !tbaa !5
  %183 = call ptr @_ZNSt6vectorIN8cse_impl30CommonSubexpressionElimination7ForwardESaIS2_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %182) #10
  %184 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.674", ptr %16, i32 0, i32 0
  store ptr %183, ptr %184, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #10
  %185 = load ptr, ptr %15, align 8, !tbaa !5
  %186 = call ptr @_ZNSt6vectorIN8cse_impl30CommonSubexpressionElimination7ForwardESaIS2_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %185) #10
  %187 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.674", ptr %17, i32 0, i32 0
  store ptr %186, ptr %187, align 8
  br label %188

188:                                              ; preds = %283, %180
  %189 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN8cse_impl30CommonSubexpressionElimination7ForwardESt6vectorIS3_SaIS3_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %16, ptr noundef nonnull align 8 dereferenceable(8) %17) #10
  br i1 %189, label %199, label %190

190:                                              ; preds = %188
  store i32 4, ptr %18, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #10
  br label %307

191:                                              ; preds = %178
  %192 = landingpad { ptr, i32 }
          cleanup
  %193 = extractvalue { ptr, i32 } %192, 0
  store ptr %193, ptr %10, align 8
  %194 = extractvalue { ptr, i32 } %192, 1
  store i32 %194, ptr %11, align 4
  br label %1321

195:                                              ; preds = %179
  %196 = landingpad { ptr, i32 }
          cleanup
  %197 = extractvalue { ptr, i32 } %196, 0
  store ptr %197, ptr %10, align 8
  %198 = extractvalue { ptr, i32 } %196, 1
  store i32 %198, ptr %11, align 4
  br label %1320

199:                                              ; preds = %188
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #10
  %200 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN8cse_impl30CommonSubexpressionElimination7ForwardESt6vectorIS3_SaIS3_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %16) #10
  store ptr %200, ptr %19, align 8, !tbaa !5
  %201 = load ptr, ptr %19, align 8, !tbaa !5
  %202 = getelementptr inbounds %"struct.cse_impl::CommonSubexpressionElimination::Forward", ptr %201, i32 0, i32 1
  %203 = invoke { ptr, i8 } @_ZN12UnorderedSetIPK13IRInstructionSt4hashIS2_ESt8equal_toIS2_EE6insertERKS2_(ptr noundef nonnull align 8 dereferenceable(56) %13, ptr noundef nonnull align 8 dereferenceable(8) %202)
          to label %204 unwind label %215

204:                                              ; preds = %199
  %205 = getelementptr inbounds { ptr, i8 }, ptr %20, i32 0, i32 0
  %206 = extractvalue { ptr, i8 } %203, 0
  store ptr %206, ptr %205, align 8
  %207 = getelementptr inbounds { ptr, i8 }, ptr %20, i32 0, i32 1
  %208 = extractvalue { ptr, i8 } %203, 1
  store i8 %208, ptr %207, align 8
  %209 = load ptr, ptr %19, align 8, !tbaa !5
  %210 = getelementptr inbounds %"struct.cse_impl::CommonSubexpressionElimination::Forward", ptr %209, i32 0, i32 0
  %211 = invoke noundef i64 @_ZNK12UnorderedMapImSt4pairI8IROpcodejESt4hashImESt8equal_toImEE5countERKm(ptr noundef nonnull align 8 dereferenceable(56) %12, ptr noundef nonnull align 8 dereferenceable(8) %210)
          to label %212 unwind label %215

212:                                              ; preds = %204
  %213 = icmp ne i64 %211, 0
  br i1 %213, label %214, label %219

214:                                              ; preds = %212
  store i32 5, ptr %18, align 4
  br label %280

215:                                              ; preds = %204, %199
  %216 = landingpad { ptr, i32 }
          cleanup
  %217 = extractvalue { ptr, i32 } %216, 0
  store ptr %217, ptr %10, align 8
  %218 = extractvalue { ptr, i32 } %216, 1
  store i32 %218, ptr %11, align 4
  br label %306

219:                                              ; preds = %212
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #10
  %220 = getelementptr inbounds %"class.cse_impl::CommonSubexpressionElimination", ptr %129, i32 0, i32 3
  %221 = load ptr, ptr %19, align 8, !tbaa !5
  %222 = getelementptr inbounds %"struct.cse_impl::CommonSubexpressionElimination::Forward", ptr %221, i32 0, i32 0
  %223 = load i64, ptr %222, align 8, !tbaa !45
  %224 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIN6sparta15PatriciaTreeSetIPK13IRInstructionEESaIS5_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %220, i64 noundef %223)
          to label %225 unwind label %234

225:                                              ; preds = %219
  store ptr %224, ptr %21, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 24, ptr %22) #10
  %226 = load ptr, ptr %21, align 8, !tbaa !5
  invoke void @_ZN8cse_implL25get_move_or_const_literalERKN6sparta15PatriciaTreeSetIPK13IRInstructionEE(ptr dead_on_unwind writable sret(%"struct.std::pair.680") align 8 %22, ptr noundef nonnull align 8 dereferenceable(8) %226)
          to label %227 unwind label %238

227:                                              ; preds = %225
  call void @llvm.lifetime.start.p0(i64 2, ptr %23) #10
  %228 = getelementptr inbounds %"struct.std::pair.680", ptr %22, i32 0, i32 0
  %229 = load i16, ptr %228, align 8, !tbaa !47
  store i16 %229, ptr %23, align 2, !tbaa !54
  %230 = load i16, ptr %23, align 2, !tbaa !54
  %231 = invoke noundef zeroext i1 @_ZN6opcode9is_a_moveE8IROpcode(i16 noundef zeroext %230)
          to label %232 unwind label %242

232:                                              ; preds = %227
  br i1 %231, label %246, label %233

233:                                              ; preds = %232
  store i32 5, ptr %18, align 4
  br label %277

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

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

242:                                              ; preds = %246, %227
  %243 = landingpad { ptr, i32 }
          cleanup
  %244 = extractvalue { ptr, i32 } %243, 0
  store ptr %244, ptr %10, align 8
  %245 = extractvalue { ptr, i32 } %243, 1
  store i32 %245, ptr %11, align 4
  br label %303

246:                                              ; preds = %232
  %247 = load ptr, ptr %21, align 8, !tbaa !5
  invoke void @_ZNK6sparta15PatriciaTreeSetIPK13IRInstructionE5beginEv(ptr dead_on_unwind writable sret(%"class.sparta::pt_core::PatriciaTreeIterator") align 8 %24, ptr noundef nonnull align 8 dereferenceable(8) %247)
          to label %248 unwind label %242

248:                                              ; preds = %246
  %249 = load ptr, ptr %21, align 8, !tbaa !5
  invoke void @_ZNK6sparta15PatriciaTreeSetIPK13IRInstructionE3endEv(ptr dead_on_unwind writable sret(%"class.sparta::pt_core::PatriciaTreeIterator") align 8 %25, ptr noundef nonnull align 8 dereferenceable(8) %249)
          to label %250 unwind label %285

250:                                              ; preds = %248
  invoke void @_ZN12UnorderedSetIPK13IRInstructionSt4hashIS2_ESt8equal_toIS2_EE6insertIN6sparta7pt_core20PatriciaTreeIteratorIS2_NSA_10EmptyValueEEEEEvT_SE_(ptr noundef nonnull align 8 dereferenceable(56) %14, ptr noundef %24, ptr noundef %25)
          to label %251 unwind label %289

251:                                              ; preds = %250
  call void @_ZN6sparta7pt_core20PatriciaTreeIteratorIPK13IRInstructionNS0_10EmptyValueEED2Ev(ptr noundef nonnull align 8 dereferenceable(96) %25) #10
  call void @_ZN6sparta7pt_core20PatriciaTreeIteratorIPK13IRInstructionNS0_10EmptyValueEED2Ev(ptr noundef nonnull align 8 dereferenceable(96) %24) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #10
  %252 = load i16, ptr %23, align 2, !tbaa !54
  %253 = zext i16 %252 to i32
  %254 = icmp eq i32 %253, 2
  br i1 %254, label %255, label %260

255:                                              ; preds = %251
  %256 = getelementptr inbounds %"class.cse_impl::CommonSubexpressionElimination", ptr %129, i32 0, i32 4
  %257 = load ptr, ptr %256, align 8, !tbaa !11
  %258 = invoke noundef i32 @_ZN3cfg16ControlFlowGraph18allocate_wide_tempEv(ptr noundef nonnull align 8 dereferenceable(160) %257)
          to label %259 unwind label %294

259:                                              ; preds = %255
  br label %265

260:                                              ; preds = %251
  %261 = getelementptr inbounds %"class.cse_impl::CommonSubexpressionElimination", ptr %129, i32 0, i32 4
  %262 = load ptr, ptr %261, align 8, !tbaa !11
  %263 = invoke noundef i32 @_ZN3cfg16ControlFlowGraph13allocate_tempEv(ptr noundef nonnull align 8 dereferenceable(160) %262)
          to label %264 unwind label %294

264:                                              ; preds = %260
  br label %265

265:                                              ; preds = %264, %259
  %266 = phi i32 [ %258, %259 ], [ %263, %264 ]
  store i32 %266, ptr %26, align 4, !tbaa !55
  %267 = load ptr, ptr %19, align 8, !tbaa !5
  %268 = getelementptr inbounds %"struct.cse_impl::CommonSubexpressionElimination::Forward", ptr %267, i32 0, i32 0
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #10
  %269 = invoke i64 @_ZSt9make_pairIR8IROpcodeRjESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS4_INS5_IT0_E4typeEE6__typeEEOS6_OSB_(ptr noundef nonnull align 2 dereferenceable(2) %23, ptr noundef nonnull align 4 dereferenceable(4) %26)
          to label %270 unwind label %298

270:                                              ; preds = %265
  store i64 %269, ptr %27, align 4
  %271 = invoke { ptr, i8 } @_ZN12UnorderedMapImSt4pairI8IROpcodejESt4hashImESt8equal_toImEE7emplaceIJRKmS2_EEES0_INS7_13FixedIteratorEbEDpOT_(ptr noundef nonnull align 8 dereferenceable(56) %12, ptr noundef nonnull align 8 dereferenceable(8) %268, ptr noundef nonnull align 4 dereferenceable(8) %27)
          to label %272 unwind label %298

272:                                              ; preds = %270
  %273 = getelementptr inbounds { ptr, i8 }, ptr %28, i32 0, i32 0
  %274 = extractvalue { ptr, i8 } %271, 0
  store ptr %274, ptr %273, align 8
  %275 = getelementptr inbounds { ptr, i8 }, ptr %28, i32 0, i32 1
  %276 = extractvalue { ptr, i8 } %271, 1
  store i8 %276, ptr %275, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #10
  store i32 0, ptr %18, align 4
  br label %277

277:                                              ; preds = %272, %233
  call void @llvm.lifetime.end.p0(i64 2, ptr %23) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %22) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #10
  %278 = load i32, ptr %18, align 4
  switch i32 %278, label %280 [
    i32 0, label %279
  ]

279:                                              ; preds = %277
  store i32 0, ptr %18, align 4
  br label %280

280:                                              ; preds = %279, %277, %214
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #10
  %281 = load i32, ptr %18, align 4
  switch i32 %281, label %1329 [
    i32 0, label %282
    i32 5, label %283
  ]

282:                                              ; preds = %280
  br label %283

283:                                              ; preds = %282, %280
  %284 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPN8cse_impl30CommonSubexpressionElimination7ForwardESt6vectorIS3_SaIS3_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %16) #10
  br label %188

285:                                              ; preds = %248
  %286 = landingpad { ptr, i32 }
          cleanup
  %287 = extractvalue { ptr, i32 } %286, 0
  store ptr %287, ptr %10, align 8
  %288 = extractvalue { ptr, i32 } %286, 1
  store i32 %288, ptr %11, align 4
  br label %293

289:                                              ; preds = %250
  %290 = landingpad { ptr, i32 }
          cleanup
  %291 = extractvalue { ptr, i32 } %290, 0
  store ptr %291, ptr %10, align 8
  %292 = extractvalue { ptr, i32 } %290, 1
  store i32 %292, ptr %11, align 4
  call void @_ZN6sparta7pt_core20PatriciaTreeIteratorIPK13IRInstructionNS0_10EmptyValueEED2Ev(ptr noundef nonnull align 8 dereferenceable(96) %25) #10
  br label %293

293:                                              ; preds = %289, %285
  call void @_ZN6sparta7pt_core20PatriciaTreeIteratorIPK13IRInstructionNS0_10EmptyValueEED2Ev(ptr noundef nonnull align 8 dereferenceable(96) %24) #10
  br label %303

294:                                              ; preds = %260, %255
  %295 = landingpad { ptr, i32 }
          cleanup
  %296 = extractvalue { ptr, i32 } %295, 0
  store ptr %296, ptr %10, align 8
  %297 = extractvalue { ptr, i32 } %295, 1
  store i32 %297, ptr %11, align 4
  br label %302

298:                                              ; preds = %270, %265
  %299 = landingpad { ptr, i32 }
          cleanup
  %300 = extractvalue { ptr, i32 } %299, 0
  store ptr %300, ptr %10, align 8
  %301 = extractvalue { ptr, i32 } %299, 1
  store i32 %301, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #10
  br label %302

302:                                              ; preds = %298, %294
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #10
  br label %303

303:                                              ; preds = %302, %293, %242
  call void @llvm.lifetime.end.p0(i64 2, ptr %23) #10
  br label %304

304:                                              ; preds = %303, %238
  call void @llvm.lifetime.end.p0(i64 24, ptr %22) #10
  br label %305

305:                                              ; preds = %304, %234
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #10
  br label %306

306:                                              ; preds = %305, %215
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #10
  br label %1319

307:                                              ; preds = %190
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #10
  %308 = invoke ptr @_Z17UnorderedIterableI12UnorderedSetIPK13IRInstructionSt4hashIS3_ESt8equal_toIS3_EETnNSt9enable_ifIXsr3stdE12is_base_of_vI13UnorderedBaseIT_ESB_EEbE4typeELb1EEDaRSB_(ptr noundef nonnull align 8 dereferenceable(56) %14)
          to label %309 unwind label %324

309:                                              ; preds = %307
  %310 = getelementptr inbounds %"class.UnorderedSet<const IRInstruction *>::UnorderedIterable", ptr %30, i32 0, i32 0
  store ptr %308, ptr %310, align 8
  store ptr %30, ptr %29, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #10
  %311 = load ptr, ptr %29, align 8, !tbaa !5
  %312 = invoke ptr @_ZN12UnorderedSetIPK13IRInstructionSt4hashIS2_ESt8equal_toIS2_EE17UnorderedIterable5beginEv(ptr noundef nonnull align 8 dereferenceable(8) %311)
          to label %313 unwind label %328

313:                                              ; preds = %309
  %314 = getelementptr inbounds %"struct.std::__detail::_Node_iterator.677", ptr %31, i32 0, i32 0
  %315 = getelementptr inbounds %"struct.std::__detail::_Node_iterator_base.678", ptr %314, i32 0, i32 0
  store ptr %312, ptr %315, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #10
  %316 = load ptr, ptr %29, align 8, !tbaa !5
  %317 = invoke ptr @_ZN12UnorderedSetIPK13IRInstructionSt4hashIS2_ESt8equal_toIS2_EE17UnorderedIterable3endEv(ptr noundef nonnull align 8 dereferenceable(8) %316)
          to label %318 unwind label %332

318:                                              ; preds = %313
  %319 = getelementptr inbounds %"struct.std::__detail::_Node_iterator.677", ptr %32, i32 0, i32 0
  %320 = getelementptr inbounds %"struct.std::__detail::_Node_iterator_base.678", ptr %319, i32 0, i32 0
  store ptr %317, ptr %320, align 8
  br label %321

321:                                              ; preds = %397, %318
  %322 = call noundef zeroext i1 @_ZNSt8__detailneERKNS_19_Node_iterator_baseIPK13IRInstructionLb0EEES6_(ptr noundef nonnull align 8 dereferenceable(8) %31, ptr noundef nonnull align 8 dereferenceable(8) %32) #10
  br i1 %322, label %336, label %323

323:                                              ; preds = %321
  store i32 6, ptr %18, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #10
  br label %402

324:                                              ; preds = %307
  %325 = landingpad { ptr, i32 }
          cleanup
  %326 = extractvalue { ptr, i32 } %325, 0
  store ptr %326, ptr %10, align 8
  %327 = extractvalue { ptr, i32 } %325, 1
  store i32 %327, ptr %11, align 4
  br label %401

328:                                              ; preds = %309
  %329 = landingpad { ptr, i32 }
          cleanup
  %330 = extractvalue { ptr, i32 } %329, 0
  store ptr %330, ptr %10, align 8
  %331 = extractvalue { ptr, i32 } %329, 1
  store i32 %331, ptr %11, align 4
  br label %400

332:                                              ; preds = %313
  %333 = landingpad { ptr, i32 }
          cleanup
  %334 = extractvalue { ptr, i32 } %333, 0
  store ptr %334, ptr %10, align 8
  %335 = extractvalue { ptr, i32 } %333, 1
  store i32 %335, ptr %11, align 4
  br label %399

336:                                              ; preds = %321
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #10
  %337 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8__detail14_Node_iteratorIPK13IRInstructionLb1ELb0EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %31) #10
  %338 = load ptr, ptr %337, align 8, !tbaa !5
  store ptr %338, ptr %33, align 8, !tbaa !5
  %339 = invoke { ptr, i8 } @_ZN12UnorderedSetIPK13IRInstructionSt4hashIS2_ESt8equal_toIS2_EE6insertERKS2_(ptr noundef nonnull align 8 dereferenceable(56) %13, ptr noundef nonnull align 8 dereferenceable(8) %33)
          to label %340 unwind label %353

340:                                              ; preds = %336
  %341 = getelementptr inbounds { ptr, i8 }, ptr %34, i32 0, i32 0
  %342 = extractvalue { ptr, i8 } %339, 0
  store ptr %342, ptr %341, align 8
  %343 = getelementptr inbounds { ptr, i8 }, ptr %34, i32 0, i32 1
  %344 = extractvalue { ptr, i8 } %339, 1
  store i8 %344, ptr %343, align 8
  %345 = load ptr, ptr %33, align 8, !tbaa !5
  %346 = invoke noundef zeroext i1 @_ZNK13IRInstruction8has_destEv(ptr noundef nonnull align 8 dereferenceable(32) %345)
          to label %347 unwind label %353

347:                                              ; preds = %340
  br i1 %346, label %348, label %357

348:                                              ; preds = %347
  %349 = getelementptr inbounds %"class.cse_impl::CommonSubexpressionElimination", ptr %129, i32 0, i32 5
  %350 = getelementptr inbounds %"struct.cse_impl::Stats", ptr %349, i32 0, i32 0
  %351 = load i64, ptr %350, align 8, !tbaa !56
  %352 = add i64 %351, 1
  store i64 %352, ptr %350, align 8, !tbaa !56
  br label %396

353:                                              ; preds = %387, %383, %380, %377, %374, %371, %368, %357, %340, %336
  %354 = landingpad { ptr, i32 }
          cleanup
  %355 = extractvalue { ptr, i32 } %354, 0
  store ptr %355, ptr %10, align 8
  %356 = extractvalue { ptr, i32 } %354, 1
  store i32 %356, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #10
  br label %399

357:                                              ; preds = %347
  %358 = load ptr, ptr %33, align 8, !tbaa !5
  %359 = invoke noundef zeroext i16 @_ZNK13IRInstruction6opcodeEv(ptr noundef nonnull align 8 dereferenceable(32) %358)
          to label %360 unwind label %353

360:                                              ; preds = %357
  %361 = zext i16 %359 to i32
  %362 = icmp eq i32 %361, 22
  br i1 %362, label %363, label %368

363:                                              ; preds = %360
  %364 = getelementptr inbounds %"class.cse_impl::CommonSubexpressionElimination", ptr %129, i32 0, i32 5
  %365 = getelementptr inbounds %"struct.cse_impl::Stats", ptr %364, i32 0, i32 2
  %366 = load i64, ptr %365, align 8, !tbaa !57
  %367 = add i64 %366, 1
  store i64 %367, ptr %365, align 8, !tbaa !57
  br label %395

368:                                              ; preds = %360
  %369 = load ptr, ptr %33, align 8, !tbaa !5
  %370 = invoke noundef zeroext i16 @_ZNK13IRInstruction6opcodeEv(ptr noundef nonnull align 8 dereferenceable(32) %369)
          to label %371 unwind label %353

371:                                              ; preds = %368
  %372 = invoke noundef zeroext i1 @_ZN6opcode10is_an_aputE8IROpcode(i16 noundef zeroext %370)
          to label %373 unwind label %353

373:                                              ; preds = %371
  br i1 %372, label %386, label %374

374:                                              ; preds = %373
  %375 = load ptr, ptr %33, align 8, !tbaa !5
  %376 = invoke noundef zeroext i16 @_ZNK13IRInstruction6opcodeEv(ptr noundef nonnull align 8 dereferenceable(32) %375)
          to label %377 unwind label %353

377:                                              ; preds = %374
  %378 = invoke noundef zeroext i1 @_ZN6opcode10is_an_iputE8IROpcode(i16 noundef zeroext %376)
          to label %379 unwind label %353

379:                                              ; preds = %377
  br i1 %378, label %386, label %380

380:                                              ; preds = %379
  %381 = load ptr, ptr %33, align 8, !tbaa !5
  %382 = invoke noundef zeroext i16 @_ZNK13IRInstruction6opcodeEv(ptr noundef nonnull align 8 dereferenceable(32) %381)
          to label %383 unwind label %353

383:                                              ; preds = %380
  %384 = invoke noundef zeroext i1 @_ZN6opcode10is_an_sputE8IROpcode(i16 noundef zeroext %382)
          to label %385 unwind label %353

385:                                              ; preds = %383
  br i1 %384, label %386, label %387

386:                                              ; preds = %385, %379, %373
  br label %390

387:                                              ; preds = %385
  invoke void (ptr, ptr, i32, ptr, i32, ptr, ...) @_Z11assert_failPKcS0_jS0_10RedexErrorS0_z(ptr noundef @.str.123, ptr noundef @.str.108, i32 noundef 1722, ptr noundef @__PRETTY_FUNCTION__._ZN8cse_impl30CommonSubexpressionElimination5patchEb, i32 noundef 2, ptr noundef @.str.109) #11
          to label %388 unwind label %353

388:                                              ; preds = %387
  unreachable

389:                                              ; No predecessors!
  br label %390

390:                                              ; preds = %389, %386
  %391 = getelementptr inbounds %"class.cse_impl::CommonSubexpressionElimination", ptr %129, i32 0, i32 5
  %392 = getelementptr inbounds %"struct.cse_impl::Stats", ptr %391, i32 0, i32 1
  %393 = load i64, ptr %392, align 8, !tbaa !58
  %394 = add i64 %393, 1
  store i64 %394, ptr %392, align 8, !tbaa !58
  br label %395

395:                                              ; preds = %390, %363
  br label %396

396:                                              ; preds = %395, %348
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #10
  br label %397

397:                                              ; preds = %396
  %398 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8__detail14_Node_iteratorIPK13IRInstructionLb1ELb0EEppEv(ptr noundef nonnull align 8 dereferenceable(8) %31) #10
  br label %321

399:                                              ; preds = %353, %332
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #10
  br label %400

400:                                              ; preds = %399, %328
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #10
  br label %401

401:                                              ; preds = %400, %324
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #10
  br label %1319

402:                                              ; preds = %323
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #10
  %403 = getelementptr inbounds %"class.cse_impl::CommonSubexpressionElimination", ptr %129, i32 0, i32 9
  store ptr %403, ptr %35, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #10
  %404 = load ptr, ptr %35, align 8, !tbaa !5
  %405 = call ptr @_ZNSt6vectorIP13IRInstructionSaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %404) #10
  %406 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.689", ptr %36, i32 0, i32 0
  store ptr %405, ptr %406, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #10
  %407 = load ptr, ptr %35, align 8, !tbaa !5
  %408 = call ptr @_ZNSt6vectorIP13IRInstructionSaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %407) #10
  %409 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.689", ptr %37, i32 0, i32 0
  store ptr %408, ptr %409, align 8
  br label %410

410:                                              ; preds = %422, %402
  %411 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPP13IRInstructionSt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %36, ptr noundef nonnull align 8 dereferenceable(8) %37) #10
  br i1 %411, label %413, label %412

412:                                              ; preds = %410
  store i32 8, ptr %18, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #10
  br label %428

413:                                              ; preds = %410
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #10
  %414 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPP13IRInstructionSt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %36) #10
  %415 = load ptr, ptr %414, align 8, !tbaa !5
  store ptr %415, ptr %38, align 8, !tbaa !5
  %416 = invoke { ptr, i8 } @_ZN12UnorderedSetIPK13IRInstructionSt4hashIS2_ESt8equal_toIS2_EE6insertERKS2_(ptr noundef nonnull align 8 dereferenceable(56) %13, ptr noundef nonnull align 8 dereferenceable(8) %38)
          to label %417 unwind label %424

417:                                              ; preds = %413
  %418 = getelementptr inbounds { ptr, i8 }, ptr %39, i32 0, i32 0
  %419 = extractvalue { ptr, i8 } %416, 0
  store ptr %419, ptr %418, align 8
  %420 = getelementptr inbounds { ptr, i8 }, ptr %39, i32 0, i32 1
  %421 = extractvalue { ptr, i8 } %416, 1
  store i8 %421, ptr %420, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #10
  br label %422

422:                                              ; preds = %417
  %423 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPP13IRInstructionSt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %36) #10
  br label %410

424:                                              ; preds = %413
  %425 = landingpad { ptr, i32 }
          cleanup
  %426 = extractvalue { ptr, i32 } %425, 0
  store ptr %426, ptr %10, align 8
  %427 = extractvalue { ptr, i32 } %425, 1
  store i32 %427, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #10
  br label %1319

428:                                              ; preds = %412
  call void @llvm.lifetime.start.p0(i64 56, ptr %40) #10
  invoke void @_ZN12UnorderedMapIP13IRInstructionN3cfg23InstructionIteratorImplILb0EEESt4hashIS1_ESt8equal_toIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(56) %40)
          to label %429 unwind label %439

429:                                              ; preds = %428
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #10
  %430 = getelementptr inbounds %"class.cse_impl::CommonSubexpressionElimination", ptr %129, i32 0, i32 4
  %431 = load ptr, ptr %430, align 8, !tbaa !11
  invoke void @_ZN3cfg23InstructionIterableImplILb0EEC2ERNS_16ControlFlowGraphE(ptr noundef nonnull align 8 dereferenceable(8) %41, ptr noundef nonnull align 8 dereferenceable(160) %431)
          to label %432 unwind label %443

432:                                              ; preds = %429
  call void @llvm.lifetime.start.p0(i64 32, ptr %42) #10
  invoke void @_ZN3cfg23InstructionIterableImplILb0EE5beginEv(ptr dead_on_unwind writable sret(%"class.cfg::InstructionIteratorImpl") align 8 %42, ptr noundef nonnull align 8 dereferenceable(8) %41)
          to label %433 unwind label %447

433:                                              ; preds = %432
  br label %434

434:                                              ; preds = %477, %433
  call void @llvm.lifetime.start.p0(i64 32, ptr %43) #10
  invoke void @_ZN3cfg23InstructionIterableImplILb0EE3endEv(ptr dead_on_unwind writable sret(%"class.cfg::InstructionIteratorImpl") align 8 %43, ptr noundef nonnull align 8 dereferenceable(8) %41)
          to label %435 unwind label %451

435:                                              ; preds = %434
  %436 = invoke noundef zeroext i1 @_ZNK3cfg23InstructionIteratorImplILb0EEneERKS1_(ptr noundef nonnull align 8 dereferenceable(32) %42, ptr noundef nonnull align 8 dereferenceable(32) %43)
          to label %437 unwind label %451

437:                                              ; preds = %435
  call void @llvm.lifetime.end.p0(i64 32, ptr %43) #10
  br i1 %436, label %455, label %438

438:                                              ; preds = %437
  store i32 10, ptr %18, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %42) #10
  br label %479

439:                                              ; preds = %428
  %440 = landingpad { ptr, i32 }
          cleanup
  %441 = extractvalue { ptr, i32 } %440, 0
  store ptr %441, ptr %10, align 8
  %442 = extractvalue { ptr, i32 } %440, 1
  store i32 %442, ptr %11, align 4
  br label %1318

443:                                              ; preds = %429
  %444 = landingpad { ptr, i32 }
          cleanup
  %445 = extractvalue { ptr, i32 } %444, 0
  store ptr %445, ptr %10, align 8
  %446 = extractvalue { ptr, i32 } %444, 1
  store i32 %446, ptr %11, align 4
  br label %1317

447:                                              ; preds = %475, %432
  %448 = landingpad { ptr, i32 }
          cleanup
  %449 = extractvalue { ptr, i32 } %448, 0
  store ptr %449, ptr %10, align 8
  %450 = extractvalue { ptr, i32 } %448, 1
  store i32 %450, ptr %11, align 4
  br label %478

451:                                              ; preds = %435, %434
  %452 = landingpad { ptr, i32 }
          cleanup
  %453 = extractvalue { ptr, i32 } %452, 0
  store ptr %453, ptr %10, align 8
  %454 = extractvalue { ptr, i32 } %452, 1
  store i32 %454, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %43) #10
  br label %478

455:                                              ; preds = %437
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #10
  %456 = invoke noundef ptr @_ZNK3cfg23InstructionIteratorImplILb0EEptEv(ptr noundef nonnull align 8 dereferenceable(32) %42)
          to label %457 unwind label %470

457:                                              ; preds = %455
  %458 = getelementptr inbounds %struct.MethodItemEntry, ptr %456, i32 0, i32 2
  %459 = load ptr, ptr %458, align 8, !tbaa !59
  store ptr %459, ptr %44, align 8, !tbaa !5
  %460 = invoke noundef i64 @_ZNK12UnorderedSetIPK13IRInstructionSt4hashIS2_ESt8equal_toIS2_EE5countERKS2_(ptr noundef nonnull align 8 dereferenceable(56) %13, ptr noundef nonnull align 8 dereferenceable(8) %44)
          to label %461 unwind label %470

461:                                              ; preds = %457
  %462 = icmp ne i64 %460, 0
  br i1 %462, label %463, label %474

463:                                              ; preds = %461
  %464 = invoke { ptr, i8 } @_ZN12UnorderedMapIP13IRInstructionN3cfg23InstructionIteratorImplILb0EEESt4hashIS1_ESt8equal_toIS1_EE7emplaceIJRS1_RS4_EEESt4pairINS9_13FixedIteratorEbEDpOT_(ptr noundef nonnull align 8 dereferenceable(56) %40, ptr noundef nonnull align 8 dereferenceable(8) %44, ptr noundef nonnull align 8 dereferenceable(32) %42)
          to label %465 unwind label %470

465:                                              ; preds = %463
  %466 = getelementptr inbounds { ptr, i8 }, ptr %45, i32 0, i32 0
  %467 = extractvalue { ptr, i8 } %464, 0
  store ptr %467, ptr %466, align 8
  %468 = getelementptr inbounds { ptr, i8 }, ptr %45, i32 0, i32 1
  %469 = extractvalue { ptr, i8 } %464, 1
  store i8 %469, ptr %468, align 8
  br label %474

470:                                              ; preds = %463, %457, %455
  %471 = landingpad { ptr, i32 }
          cleanup
  %472 = extractvalue { ptr, i32 } %471, 0
  store ptr %472, ptr %10, align 8
  %473 = extractvalue { ptr, i32 } %471, 1
  store i32 %473, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #10
  br label %478

474:                                              ; preds = %465, %461
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #10
  br label %475

475:                                              ; preds = %474
  %476 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN3cfg23InstructionIteratorImplILb0EEppEv(ptr noundef nonnull align 8 dereferenceable(32) %42)
          to label %477 unwind label %447

477:                                              ; preds = %475
  br label %434, !llvm.loop !60

478:                                              ; preds = %470, %451, %447
  call void @llvm.lifetime.end.p0(i64 32, ptr %42) #10
  br label %1317

479:                                              ; preds = %438
  call void @llvm.lifetime.start.p0(i64 24, ptr %46) #10
  call void @_ZNSt6vectorISt4pairIN8cse_impl30CommonSubexpressionElimination7ForwardEP13IRInstructionESaIS6_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %46) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %47) #10
  %480 = getelementptr inbounds %"class.cse_impl::CommonSubexpressionElimination", ptr %129, i32 0, i32 1
  store ptr %480, ptr %47, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %48) #10
  %481 = load ptr, ptr %47, align 8, !tbaa !5
  %482 = call ptr @_ZNSt6vectorIN8cse_impl30CommonSubexpressionElimination7ForwardESaIS2_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %481) #10
  %483 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.674", ptr %48, i32 0, i32 0
  store ptr %482, ptr %483, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %49) #10
  %484 = load ptr, ptr %47, align 8, !tbaa !5
  %485 = call ptr @_ZNSt6vectorIN8cse_impl30CommonSubexpressionElimination7ForwardESaIS2_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %484) #10
  %486 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.674", ptr %49, i32 0, i32 0
  store ptr %485, ptr %486, align 8
  br label %487

487:                                              ; preds = %866, %479
  %488 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN8cse_impl30CommonSubexpressionElimination7ForwardESt6vectorIS3_SaIS3_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %48, ptr noundef nonnull align 8 dereferenceable(8) %49) #10
  br i1 %488, label %490, label %489

489:                                              ; preds = %487
  store i32 13, ptr %18, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #10
  br label %875

490:                                              ; preds = %487
  call void @llvm.lifetime.start.p0(i64 8, ptr %50) #10
  %491 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN8cse_impl30CommonSubexpressionElimination7ForwardESt6vectorIS3_SaIS3_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %48) #10
  store ptr %491, ptr %50, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %51) #10
  %492 = getelementptr inbounds %"class.cse_impl::CommonSubexpressionElimination", ptr %129, i32 0, i32 3
  %493 = load ptr, ptr %50, align 8, !tbaa !5
  %494 = getelementptr inbounds %"struct.cse_impl::CommonSubexpressionElimination::Forward", ptr %493, i32 0, i32 0
  %495 = load i64, ptr %494, align 8, !tbaa !45
  %496 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIN6sparta15PatriciaTreeSetIPK13IRInstructionEESaIS5_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %492, i64 noundef %495)
          to label %497 unwind label %528

497:                                              ; preds = %490
  store ptr %496, ptr %51, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %52) #10
  %498 = load ptr, ptr %50, align 8, !tbaa !5
  %499 = getelementptr inbounds %"struct.cse_impl::CommonSubexpressionElimination::Forward", ptr %498, i32 0, i32 1
  %500 = load ptr, ptr %499, align 8, !tbaa !62
  store ptr %500, ptr %52, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %53) #10
  %501 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN12UnorderedMapIP13IRInstructionN3cfg23InstructionIteratorImplILb0EEESt4hashIS1_ESt8equal_toIS1_EE2atERKS1_(ptr noundef nonnull align 8 dereferenceable(56) %40, ptr noundef nonnull align 8 dereferenceable(8) %52)
          to label %502 unwind label %532

502:                                              ; preds = %497
  store ptr %501, ptr %53, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %54) #10
  %503 = load ptr, ptr %50, align 8, !tbaa !5
  %504 = getelementptr inbounds %"struct.cse_impl::CommonSubexpressionElimination::Forward", ptr %503, i32 0, i32 0
  %505 = invoke ptr @_ZN12UnorderedMapImSt4pairI8IROpcodejESt4hashImESt8equal_toImEE4findERKm(ptr noundef nonnull align 8 dereferenceable(56) %12, ptr noundef nonnull align 8 dereferenceable(8) %504)
          to label %506 unwind label %536

506:                                              ; preds = %502
  %507 = getelementptr inbounds %"class.UnorderedMap<unsigned long, std::pair<IROpcode, unsigned int>>::FixedIterator", ptr %54, i32 0, i32 0
  %508 = getelementptr inbounds %"struct.std::__detail::_Node_iterator.684", ptr %507, i32 0, i32 0
  %509 = getelementptr inbounds %"struct.std::__detail::_Node_iterator_base.685", ptr %508, i32 0, i32 0
  store ptr %505, ptr %509, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %55) #10
  %510 = invoke ptr @_ZN12UnorderedMapImSt4pairI8IROpcodejESt4hashImESt8equal_toImEE3endEv(ptr noundef nonnull align 8 dereferenceable(56) %12)
          to label %511 unwind label %540

511:                                              ; preds = %506
  %512 = getelementptr inbounds %"class.UnorderedMap<unsigned long, std::pair<IROpcode, unsigned int>>::FixedIterator", ptr %55, i32 0, i32 0
  %513 = getelementptr inbounds %"struct.std::__detail::_Node_iterator.684", ptr %512, i32 0, i32 0
  %514 = getelementptr inbounds %"struct.std::__detail::_Node_iterator_base.685", ptr %513, i32 0, i32 0
  store ptr %510, ptr %514, align 8
  %515 = invoke noundef zeroext i1 @_ZNK12UnorderedMapImSt4pairI8IROpcodejESt4hashImESt8equal_toImEE13FixedIteratoreqERKS8_(ptr noundef nonnull align 8 dereferenceable(8) %54, ptr noundef nonnull align 8 dereferenceable(8) %55)
          to label %516 unwind label %540

516:                                              ; preds = %511
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #10
  br i1 %515, label %517, label %666

517:                                              ; preds = %516
  call void @llvm.lifetime.start.p0(i64 24, ptr %56) #10
  %518 = load ptr, ptr %51, align 8, !tbaa !5
  invoke void @_ZN8cse_implL25get_move_or_const_literalERKN6sparta15PatriciaTreeSetIPK13IRInstructionEE(ptr dead_on_unwind writable sret(%"struct.std::pair.680") align 8 %56, ptr noundef nonnull align 8 dereferenceable(8) %518)
          to label %519 unwind label %544

519:                                              ; preds = %517
  call void @llvm.lifetime.start.p0(i64 2, ptr %57) #10
  %520 = getelementptr inbounds %"struct.std::pair.680", ptr %56, i32 0, i32 0
  %521 = load i16, ptr %520, align 8, !tbaa !47
  store i16 %521, ptr %57, align 2, !tbaa !54
  %522 = load i16, ptr %57, align 2, !tbaa !54
  %523 = invoke noundef zeroext i1 @_ZN6opcode18is_a_literal_constE8IROpcode(i16 noundef zeroext %522)
          to label %524 unwind label %548

524:                                              ; preds = %519
  br i1 %523, label %525, label %526

525:                                              ; preds = %524
  br label %553

526:                                              ; preds = %524
  invoke void (ptr, ptr, i32, ptr, i32, ptr, ...) @_Z11assert_failPKcS0_jS0_10RedexErrorS0_z(ptr noundef @.str.124, ptr noundef @.str.108, i32 noundef 1755, ptr noundef @__PRETTY_FUNCTION__._ZN8cse_impl30CommonSubexpressionElimination5patchEb, i32 noundef 2, ptr noundef @.str.109) #11
          to label %527 unwind label %548

527:                                              ; preds = %526
  unreachable

528:                                              ; preds = %490
  %529 = landingpad { ptr, i32 }
          cleanup
  %530 = extractvalue { ptr, i32 } %529, 0
  store ptr %530, ptr %10, align 8
  %531 = extractvalue { ptr, i32 } %529, 1
  store i32 %531, ptr %11, align 4
  br label %874

532:                                              ; preds = %497
  %533 = landingpad { ptr, i32 }
          cleanup
  %534 = extractvalue { ptr, i32 } %533, 0
  store ptr %534, ptr %10, align 8
  %535 = extractvalue { ptr, i32 } %533, 1
  store i32 %535, ptr %11, align 4
  br label %873

536:                                              ; preds = %829, %825, %820, %811, %808, %502
  %537 = landingpad { ptr, i32 }
          cleanup
  %538 = extractvalue { ptr, i32 } %537, 0
  store ptr %538, ptr %10, align 8
  %539 = extractvalue { ptr, i32 } %537, 1
  store i32 %539, ptr %11, align 4
  br label %872

540:                                              ; preds = %511, %506
  %541 = landingpad { ptr, i32 }
          cleanup
  %542 = extractvalue { ptr, i32 } %541, 0
  store ptr %542, ptr %10, align 8
  %543 = extractvalue { ptr, i32 } %541, 1
  store i32 %543, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #10
  br label %872

544:                                              ; preds = %517
  %545 = landingpad { ptr, i32 }
          cleanup
  %546 = extractvalue { ptr, i32 } %545, 0
  store ptr %546, ptr %10, align 8
  %547 = extractvalue { ptr, i32 } %545, 1
  store i32 %547, ptr %11, align 4
  br label %665

548:                                              ; preds = %526, %519
  %549 = landingpad { ptr, i32 }
          cleanup
  %550 = extractvalue { ptr, i32 } %549, 0
  store ptr %550, ptr %10, align 8
  %551 = extractvalue { ptr, i32 } %549, 1
  store i32 %551, ptr %11, align 4
  br label %664

552:                                              ; No predecessors!
  br label %553

553:                                              ; preds = %552, %525
  call void @llvm.lifetime.start.p0(i64 8, ptr %58) #10
  %554 = getelementptr inbounds %"struct.std::pair.680", ptr %56, i32 0, i32 2
  %555 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNRSt8optionalIlEdeEv(ptr noundef nonnull align 8 dereferenceable(16) %554) #10
  %556 = load i64, ptr %555, align 8, !tbaa !63
  store i64 %556, ptr %58, align 8, !tbaa !63
  call void @llvm.lifetime.start.p0(i64 8, ptr %59) #10
  %557 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 32) #12
          to label %558 unwind label %582

558:                                              ; preds = %553
  %559 = load i16, ptr %57, align 2, !tbaa !54
  invoke void @_ZN13IRInstructionC1E8IROpcode(ptr noundef nonnull align 8 dereferenceable(32) %557, i16 noundef zeroext %559)
          to label %560 unwind label %586

560:                                              ; preds = %558
  store ptr %557, ptr %59, align 8, !tbaa !5
  %561 = load ptr, ptr %59, align 8, !tbaa !5
  %562 = load i64, ptr %58, align 8, !tbaa !63
  %563 = invoke noundef ptr @_ZN13IRInstruction11set_literalEl(ptr noundef nonnull align 8 dereferenceable(32) %561, i64 noundef %562)
          to label %564 unwind label %582

564:                                              ; preds = %560
  %565 = load ptr, ptr %52, align 8, !tbaa !5
  %566 = invoke noundef i32 @_ZNK13IRInstruction4destEv(ptr noundef nonnull align 8 dereferenceable(32) %565)
          to label %567 unwind label %582

567:                                              ; preds = %564
  %568 = invoke noundef ptr @_ZN13IRInstruction8set_destEj(ptr noundef nonnull align 8 dereferenceable(32) %563, i32 noundef %566)
          to label %569 unwind label %582

569:                                              ; preds = %567
  call void @llvm.lifetime.start.p0(i64 1, ptr %60) #10
  %570 = getelementptr inbounds %"class.cse_impl::CommonSubexpressionElimination", ptr %129, i32 0, i32 4
  %571 = load ptr, ptr %570, align 8, !tbaa !11
  %572 = load ptr, ptr %53, align 8, !tbaa !5
  %573 = load ptr, ptr %59, align 8, !tbaa !5
  %574 = invoke noundef zeroext i1 @_ZN3cfg16ControlFlowGraph12insert_afterERKNS_23InstructionIteratorImplILb0EEEP13IRInstruction(ptr noundef nonnull align 8 dereferenceable(160) %571, ptr noundef nonnull align 8 dereferenceable(32) %572, ptr noundef %573)
          to label %575 unwind label %590

575:                                              ; preds = %569
  %576 = zext i1 %574 to i8
  store i8 %576, ptr %60, align 1, !tbaa !9
  %577 = load i8, ptr %60, align 1, !tbaa !9, !range !64, !noundef !65
  %578 = trunc i8 %577 to i1
  br i1 %578, label %580, label %579

579:                                              ; preds = %575
  br label %595

580:                                              ; preds = %575
  invoke void (ptr, ptr, i32, ptr, i32, ptr, ...) @_Z11assert_failPKcS0_jS0_10RedexErrorS0_z(ptr noundef @.str.125, ptr noundef @.str.108, i32 noundef 1775, ptr noundef @__PRETTY_FUNCTION__._ZN8cse_impl30CommonSubexpressionElimination5patchEb, i32 noundef 2, ptr noundef @.str.109) #11
          to label %581 unwind label %590

581:                                              ; preds = %580
  unreachable

582:                                              ; preds = %567, %564, %560, %553
  %583 = landingpad { ptr, i32 }
          cleanup
  %584 = extractvalue { ptr, i32 } %583, 0
  store ptr %584, ptr %10, align 8
  %585 = extractvalue { ptr, i32 } %583, 1
  store i32 %585, ptr %11, align 4
  br label %663

586:                                              ; preds = %558
  %587 = landingpad { ptr, i32 }
          cleanup
  %588 = extractvalue { ptr, i32 } %587, 0
  store ptr %588, ptr %10, align 8
  %589 = extractvalue { ptr, i32 } %587, 1
  store i32 %589, ptr %11, align 4
  call void @_ZdlPvm(ptr noundef %557, i64 noundef 32) #13
  br label %663

590:                                              ; preds = %580, %569
  %591 = landingpad { ptr, i32 }
          cleanup
  %592 = extractvalue { ptr, i32 } %591, 0
  store ptr %592, ptr %10, align 8
  %593 = extractvalue { ptr, i32 } %591, 1
  store i32 %593, ptr %11, align 4
  br label %662

594:                                              ; No predecessors!
  br label %595

595:                                              ; preds = %594, %579
  call void @llvm.lifetime.start.p0(i64 8, ptr %61) #10
  %596 = load ptr, ptr %51, align 8, !tbaa !5
  store ptr %596, ptr %61, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 96, ptr %62) #10
  %597 = load ptr, ptr %61, align 8, !tbaa !5
  invoke void @_ZNK6sparta15PatriciaTreeSetIPK13IRInstructionE5beginEv(ptr dead_on_unwind writable sret(%"class.sparta::pt_core::PatriciaTreeIterator") align 8 %62, ptr noundef nonnull align 8 dereferenceable(8) %597)
          to label %598 unwind label %605

598:                                              ; preds = %595
  call void @llvm.lifetime.start.p0(i64 96, ptr %63) #10
  %599 = load ptr, ptr %61, align 8, !tbaa !5
  invoke void @_ZNK6sparta15PatriciaTreeSetIPK13IRInstructionE3endEv(ptr dead_on_unwind writable sret(%"class.sparta::pt_core::PatriciaTreeIterator") align 8 %63, ptr noundef nonnull align 8 dereferenceable(8) %599)
          to label %600 unwind label %609

600:                                              ; preds = %598
  br label %601

601:                                              ; preds = %656, %600
  %602 = invoke noundef zeroext i1 @_ZNK6sparta7pt_core20PatriciaTreeIteratorIPK13IRInstructionNS0_10EmptyValueEEneERKS6_(ptr noundef nonnull align 8 dereferenceable(96) %62, ptr noundef nonnull align 8 dereferenceable(96) %63)
          to label %603 unwind label %613

603:                                              ; preds = %601
  br i1 %602, label %617, label %604

604:                                              ; preds = %603
  store i32 15, ptr %18, align 4
  call void @_ZN6sparta7pt_core20PatriciaTreeIteratorIPK13IRInstructionNS0_10EmptyValueEED2Ev(ptr noundef nonnull align 8 dereferenceable(96) %63) #10
  call void @llvm.lifetime.end.p0(i64 96, ptr %63) #10
  call void @_ZN6sparta7pt_core20PatriciaTreeIteratorIPK13IRInstructionNS0_10EmptyValueEED2Ev(ptr noundef nonnull align 8 dereferenceable(96) %62) #10
  call void @llvm.lifetime.end.p0(i64 96, ptr %62) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #10
  br label %661

605:                                              ; preds = %595
  %606 = landingpad { ptr, i32 }
          cleanup
  %607 = extractvalue { ptr, i32 } %606, 0
  store ptr %607, ptr %10, align 8
  %608 = extractvalue { ptr, i32 } %606, 1
  store i32 %608, ptr %11, align 4
  br label %660

609:                                              ; preds = %598
  %610 = landingpad { ptr, i32 }
          cleanup
  %611 = extractvalue { ptr, i32 } %610, 0
  store ptr %611, ptr %10, align 8
  %612 = extractvalue { ptr, i32 } %610, 1
  store i32 %612, ptr %11, align 4
  br label %659

613:                                              ; preds = %654, %601
  %614 = landingpad { ptr, i32 }
          cleanup
  %615 = extractvalue { ptr, i32 } %614, 0
  store ptr %615, ptr %10, align 8
  %616 = extractvalue { ptr, i32 } %614, 1
  store i32 %616, ptr %11, align 4
  br label %658

617:                                              ; preds = %603
  call void @llvm.lifetime.start.p0(i64 8, ptr %64) #10
  %618 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK6sparta7pt_core20PatriciaTreeIteratorIPK13IRInstructionNS0_10EmptyValueEEdeEv(ptr noundef nonnull align 8 dereferenceable(96) %62)
          to label %619 unwind label %633

619:                                              ; preds = %617
  %620 = load ptr, ptr %618, align 8, !tbaa !5
  store ptr %620, ptr %64, align 8, !tbaa !5
  br label %621

621:                                              ; preds = %619
  %622 = invoke noundef zeroext i1 @_Z12traceEnabled11TraceModulei(i32 noundef 29, i32 noundef 4)
          to label %623 unwind label %633

623:                                              ; preds = %621
  br i1 %622, label %624, label %651

624:                                              ; preds = %623
  call void @llvm.lifetime.start.p0(i64 32, ptr %65) #10
  %625 = load ptr, ptr %64, align 8, !tbaa !5
  invoke void @_Z4showB5cxx11PK13IRInstruction(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %65, ptr noundef %625)
          to label %626 unwind label %637

626:                                              ; preds = %624
  %627 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %65) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr %66) #10
  %628 = load ptr, ptr %52, align 8, !tbaa !5
  invoke void @_Z4showI13IRInstructionRSoENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPT_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %66, ptr noundef %628)
          to label %629 unwind label %641

629:                                              ; preds = %626
  %630 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %66) #10
  %631 = load i64, ptr %58, align 8, !tbaa !63
  invoke void (i32, i32, i1, ptr, ...) @_Z5trace11TraceModuleibPKcz(i32 noundef 29, i32 noundef 4, i1 noundef zeroext false, ptr noundef @.str.126, ptr noundef %627, ptr noundef %630, i64 noundef %631)
          to label %632 unwind label %645

632:                                              ; preds = %629
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %66) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %66) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %65) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %65) #10
  br label %651

633:                                              ; preds = %621, %617
  %634 = landingpad { ptr, i32 }
          cleanup
  %635 = extractvalue { ptr, i32 } %634, 0
  store ptr %635, ptr %10, align 8
  %636 = extractvalue { ptr, i32 } %634, 1
  store i32 %636, ptr %11, align 4
  br label %657

637:                                              ; preds = %624
  %638 = landingpad { ptr, i32 }
          cleanup
  %639 = extractvalue { ptr, i32 } %638, 0
  store ptr %639, ptr %10, align 8
  %640 = extractvalue { ptr, i32 } %638, 1
  store i32 %640, ptr %11, align 4
  br label %650

641:                                              ; preds = %626
  %642 = landingpad { ptr, i32 }
          cleanup
  %643 = extractvalue { ptr, i32 } %642, 0
  store ptr %643, ptr %10, align 8
  %644 = extractvalue { ptr, i32 } %642, 1
  store i32 %644, ptr %11, align 4
  br label %649

645:                                              ; preds = %629
  %646 = landingpad { ptr, i32 }
          cleanup
  %647 = extractvalue { ptr, i32 } %646, 0
  store ptr %647, ptr %10, align 8
  %648 = extractvalue { ptr, i32 } %646, 1
  store i32 %648, ptr %11, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %66) #10
  br label %649

649:                                              ; preds = %645, %641
  call void @llvm.lifetime.end.p0(i64 32, ptr %66) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %65) #10
  br label %650

650:                                              ; preds = %649, %637
  call void @llvm.lifetime.end.p0(i64 32, ptr %65) #10
  br label %657

651:                                              ; preds = %632, %623
  br label %652

652:                                              ; preds = %651
  br label %653

653:                                              ; preds = %652
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #10
  br label %654

654:                                              ; preds = %653
  %655 = invoke noundef nonnull align 8 dereferenceable(96) ptr @_ZN6sparta7pt_core20PatriciaTreeIteratorIPK13IRInstructionNS0_10EmptyValueEEppEv(ptr noundef nonnull align 8 dereferenceable(96) %62)
          to label %656 unwind label %613

656:                                              ; preds = %654
  br label %601

657:                                              ; preds = %650, %633
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #10
  br label %658

658:                                              ; preds = %657, %613
  call void @_ZN6sparta7pt_core20PatriciaTreeIteratorIPK13IRInstructionNS0_10EmptyValueEED2Ev(ptr noundef nonnull align 8 dereferenceable(96) %63) #10
  br label %659

659:                                              ; preds = %658, %609
  call void @llvm.lifetime.end.p0(i64 96, ptr %63) #10
  call void @_ZN6sparta7pt_core20PatriciaTreeIteratorIPK13IRInstructionNS0_10EmptyValueEED2Ev(ptr noundef nonnull align 8 dereferenceable(96) %62) #10
  br label %660

660:                                              ; preds = %659, %605
  call void @llvm.lifetime.end.p0(i64 96, ptr %62) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #10
  br label %662

661:                                              ; preds = %604
  call void @llvm.lifetime.end.p0(i64 1, ptr %60) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #10
  call void @llvm.lifetime.end.p0(i64 2, ptr %57) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %56) #10
  br label %808

662:                                              ; preds = %660, %590
  call void @llvm.lifetime.end.p0(i64 1, ptr %60) #10
  br label %663

663:                                              ; preds = %662, %586, %582
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #10
  br label %664

664:                                              ; preds = %663, %548
  call void @llvm.lifetime.end.p0(i64 2, ptr %57) #10
  br label %665

665:                                              ; preds = %664, %544
  call void @llvm.lifetime.end.p0(i64 24, ptr %56) #10
  br label %872

666:                                              ; preds = %516
  call void @llvm.lifetime.start.p0(i64 8, ptr %67) #10
  %667 = invoke noundef ptr @_ZNK12UnorderedMapImSt4pairI8IROpcodejESt4hashImESt8equal_toImEE13FixedIteratorptEv(ptr noundef nonnull align 8 dereferenceable(8) %54)
          to label %668 unwind label %679

668:                                              ; preds = %666
  %669 = getelementptr inbounds %"struct.std::pair.716", ptr %667, i32 0, i32 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %67, ptr align 8 %669, i64 8, i1 false)
  call void @llvm.lifetime.start.p0(i64 8, ptr %68) #10
  %670 = call noundef nonnull align 2 dereferenceable(2) ptr @_ZSt3getILm0E8IROpcodejEONSt13tuple_elementIXT_ESt4pairIT0_T1_EE4typeEOS5_(ptr noundef nonnull align 4 dereferenceable(8) %67) #10
  store ptr %670, ptr %68, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %69) #10
  %671 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3getILm1E8IROpcodejEONSt13tuple_elementIXT_ESt4pairIT0_T1_EE4typeEOS5_(ptr noundef nonnull align 4 dereferenceable(8) %67) #10
  store ptr %671, ptr %69, align 8, !tbaa !5
  %672 = load ptr, ptr %68, align 8, !tbaa !5
  %673 = load i16, ptr %672, align 2, !tbaa !54
  %674 = invoke noundef zeroext i1 @_ZN6opcode9is_a_moveE8IROpcode(i16 noundef zeroext %673)
          to label %675 unwind label %683

675:                                              ; preds = %668
  br i1 %674, label %676, label %677

676:                                              ; preds = %675
  br label %688

677:                                              ; preds = %675
  invoke void (ptr, ptr, i32, ptr, i32, ptr, ...) @_Z11assert_failPKcS0_jS0_10RedexErrorS0_z(ptr noundef @.str.127, ptr noundef @.str.108, i32 noundef 1783, ptr noundef @__PRETTY_FUNCTION__._ZN8cse_impl30CommonSubexpressionElimination5patchEb, i32 noundef 2, ptr noundef @.str.109) #11
          to label %678 unwind label %683

678:                                              ; preds = %677
  unreachable

679:                                              ; preds = %666
  %680 = landingpad { ptr, i32 }
          cleanup
  %681 = extractvalue { ptr, i32 } %680, 0
  store ptr %681, ptr %10, align 8
  %682 = extractvalue { ptr, i32 } %680, 1
  store i32 %682, ptr %11, align 4
  br label %807

683:                                              ; preds = %677, %668
  %684 = landingpad { ptr, i32 }
          cleanup
  %685 = extractvalue { ptr, i32 } %684, 0
  store ptr %685, ptr %10, align 8
  %686 = extractvalue { ptr, i32 } %684, 1
  store i32 %686, ptr %11, align 4
  br label %806

687:                                              ; No predecessors!
  br label %688

688:                                              ; preds = %687, %676
  call void @llvm.lifetime.start.p0(i64 8, ptr %70) #10
  %689 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 32) #12
          to label %690 unwind label %716

690:                                              ; preds = %688
  %691 = load ptr, ptr %68, align 8, !tbaa !5
  %692 = load i16, ptr %691, align 2, !tbaa !54
  invoke void @_ZN13IRInstructionC1E8IROpcode(ptr noundef nonnull align 8 dereferenceable(32) %689, i16 noundef zeroext %692)
          to label %693 unwind label %720

693:                                              ; preds = %690
  store ptr %689, ptr %70, align 8, !tbaa !5
  %694 = load ptr, ptr %70, align 8, !tbaa !5
  %695 = load ptr, ptr %69, align 8, !tbaa !5
  %696 = load i32, ptr %695, align 4, !tbaa !55
  %697 = invoke noundef ptr @_ZN13IRInstruction7set_srcEtj(ptr noundef nonnull align 8 dereferenceable(32) %694, i16 noundef zeroext 0, i32 noundef %696)
          to label %698 unwind label %716

698:                                              ; preds = %693
  %699 = load ptr, ptr %52, align 8, !tbaa !5
  %700 = invoke noundef i32 @_ZNK13IRInstruction4destEv(ptr noundef nonnull align 8 dereferenceable(32) %699)
          to label %701 unwind label %716

701:                                              ; preds = %698
  %702 = invoke noundef ptr @_ZN13IRInstruction8set_destEj(ptr noundef nonnull align 8 dereferenceable(32) %697, i32 noundef %700)
          to label %703 unwind label %716

703:                                              ; preds = %701
  call void @llvm.lifetime.start.p0(i64 1, ptr %71) #10
  %704 = getelementptr inbounds %"class.cse_impl::CommonSubexpressionElimination", ptr %129, i32 0, i32 4
  %705 = load ptr, ptr %704, align 8, !tbaa !11
  %706 = load ptr, ptr %53, align 8, !tbaa !5
  %707 = load ptr, ptr %70, align 8, !tbaa !5
  %708 = invoke noundef zeroext i1 @_ZN3cfg16ControlFlowGraph12insert_afterERKNS_23InstructionIteratorImplILb0EEEP13IRInstruction(ptr noundef nonnull align 8 dereferenceable(160) %705, ptr noundef nonnull align 8 dereferenceable(32) %706, ptr noundef %707)
          to label %709 unwind label %724

709:                                              ; preds = %703
  %710 = zext i1 %708 to i8
  store i8 %710, ptr %71, align 1, !tbaa !9
  %711 = load i8, ptr %71, align 1, !tbaa !9, !range !64, !noundef !65
  %712 = trunc i8 %711 to i1
  br i1 %712, label %714, label %713

713:                                              ; preds = %709
  br label %729

714:                                              ; preds = %709
  invoke void (ptr, ptr, i32, ptr, i32, ptr, ...) @_Z11assert_failPKcS0_jS0_10RedexErrorS0_z(ptr noundef @.str.125, ptr noundef @.str.108, i32 noundef 1788, ptr noundef @__PRETTY_FUNCTION__._ZN8cse_impl30CommonSubexpressionElimination5patchEb, i32 noundef 2, ptr noundef @.str.109) #11
          to label %715 unwind label %724

715:                                              ; preds = %714
  unreachable

716:                                              ; preds = %701, %698, %693, %688
  %717 = landingpad { ptr, i32 }
          cleanup
  %718 = extractvalue { ptr, i32 } %717, 0
  store ptr %718, ptr %10, align 8
  %719 = extractvalue { ptr, i32 } %717, 1
  store i32 %719, ptr %11, align 4
  br label %805

720:                                              ; preds = %690
  %721 = landingpad { ptr, i32 }
          cleanup
  %722 = extractvalue { ptr, i32 } %721, 0
  store ptr %722, ptr %10, align 8
  %723 = extractvalue { ptr, i32 } %721, 1
  store i32 %723, ptr %11, align 4
  call void @_ZdlPvm(ptr noundef %689, i64 noundef 32) #13
  br label %805

724:                                              ; preds = %732, %714, %703
  %725 = landingpad { ptr, i32 }
          cleanup
  %726 = extractvalue { ptr, i32 } %725, 0
  store ptr %726, ptr %10, align 8
  %727 = extractvalue { ptr, i32 } %725, 1
  store i32 %727, ptr %11, align 4
  br label %804

728:                                              ; No predecessors!
  br label %729

729:                                              ; preds = %728, %713
  %730 = load i8, ptr %5, align 1, !tbaa !9, !range !64, !noundef !65
  %731 = trunc i8 %730 to i1
  br i1 %731, label %732, label %736

732:                                              ; preds = %729
  %733 = load ptr, ptr %50, align 8, !tbaa !5
  %734 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorISt4pairIN8cse_impl30CommonSubexpressionElimination7ForwardEP13IRInstructionESaIS6_EE12emplace_backIJRKS3_RS5_EEERS6_DpOT_(ptr noundef nonnull align 8 dereferenceable(24) %46, ptr noundef nonnull align 8 dereferenceable(16) %733, ptr noundef nonnull align 8 dereferenceable(8) %70)
          to label %735 unwind label %724

735:                                              ; preds = %732
  br label %736

736:                                              ; preds = %735, %729
  call void @llvm.lifetime.start.p0(i64 8, ptr %72) #10
  %737 = load ptr, ptr %51, align 8, !tbaa !5
  store ptr %737, ptr %72, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 96, ptr %73) #10
  %738 = load ptr, ptr %72, align 8, !tbaa !5
  invoke void @_ZNK6sparta15PatriciaTreeSetIPK13IRInstructionE5beginEv(ptr dead_on_unwind writable sret(%"class.sparta::pt_core::PatriciaTreeIterator") align 8 %73, ptr noundef nonnull align 8 dereferenceable(8) %738)
          to label %739 unwind label %746

739:                                              ; preds = %736
  call void @llvm.lifetime.start.p0(i64 96, ptr %74) #10
  %740 = load ptr, ptr %72, align 8, !tbaa !5
  invoke void @_ZNK6sparta15PatriciaTreeSetIPK13IRInstructionE3endEv(ptr dead_on_unwind writable sret(%"class.sparta::pt_core::PatriciaTreeIterator") align 8 %74, ptr noundef nonnull align 8 dereferenceable(8) %740)
          to label %741 unwind label %750

741:                                              ; preds = %739
  br label %742

742:                                              ; preds = %798, %741
  %743 = invoke noundef zeroext i1 @_ZNK6sparta7pt_core20PatriciaTreeIteratorIPK13IRInstructionNS0_10EmptyValueEEneERKS6_(ptr noundef nonnull align 8 dereferenceable(96) %73, ptr noundef nonnull align 8 dereferenceable(96) %74)
          to label %744 unwind label %754

744:                                              ; preds = %742
  br i1 %743, label %758, label %745

745:                                              ; preds = %744
  store i32 19, ptr %18, align 4
  call void @_ZN6sparta7pt_core20PatriciaTreeIteratorIPK13IRInstructionNS0_10EmptyValueEED2Ev(ptr noundef nonnull align 8 dereferenceable(96) %74) #10
  call void @llvm.lifetime.end.p0(i64 96, ptr %74) #10
  call void @_ZN6sparta7pt_core20PatriciaTreeIteratorIPK13IRInstructionNS0_10EmptyValueEED2Ev(ptr noundef nonnull align 8 dereferenceable(96) %73) #10
  call void @llvm.lifetime.end.p0(i64 96, ptr %73) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %72) #10
  br label %803

746:                                              ; preds = %736
  %747 = landingpad { ptr, i32 }
          cleanup
  %748 = extractvalue { ptr, i32 } %747, 0
  store ptr %748, ptr %10, align 8
  %749 = extractvalue { ptr, i32 } %747, 1
  store i32 %749, ptr %11, align 4
  br label %802

750:                                              ; preds = %739
  %751 = landingpad { ptr, i32 }
          cleanup
  %752 = extractvalue { ptr, i32 } %751, 0
  store ptr %752, ptr %10, align 8
  %753 = extractvalue { ptr, i32 } %751, 1
  store i32 %753, ptr %11, align 4
  br label %801

754:                                              ; preds = %796, %742
  %755 = landingpad { ptr, i32 }
          cleanup
  %756 = extractvalue { ptr, i32 } %755, 0
  store ptr %756, ptr %10, align 8
  %757 = extractvalue { ptr, i32 } %755, 1
  store i32 %757, ptr %11, align 4
  br label %800

758:                                              ; preds = %744
  call void @llvm.lifetime.start.p0(i64 8, ptr %75) #10
  %759 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK6sparta7pt_core20PatriciaTreeIteratorIPK13IRInstructionNS0_10EmptyValueEEdeEv(ptr noundef nonnull align 8 dereferenceable(96) %73)
          to label %760 unwind label %775

760:                                              ; preds = %758
  %761 = load ptr, ptr %759, align 8, !tbaa !5
  store ptr %761, ptr %75, align 8, !tbaa !5
  br label %762

762:                                              ; preds = %760
  %763 = invoke noundef zeroext i1 @_Z12traceEnabled11TraceModulei(i32 noundef 29, i32 noundef 4)
          to label %764 unwind label %775

764:                                              ; preds = %762
  br i1 %763, label %765, label %793

765:                                              ; preds = %764
  call void @llvm.lifetime.start.p0(i64 32, ptr %76) #10
  %766 = load ptr, ptr %75, align 8, !tbaa !5
  invoke void @_Z4showB5cxx11PK13IRInstruction(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %76, ptr noundef %766)
          to label %767 unwind label %779

767:                                              ; preds = %765
  %768 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %76) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr %77) #10
  %769 = load ptr, ptr %52, align 8, !tbaa !5
  invoke void @_Z4showI13IRInstructionRSoENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPT_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %77, ptr noundef %769)
          to label %770 unwind label %783

770:                                              ; preds = %767
  %771 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %77) #10
  %772 = load ptr, ptr %69, align 8, !tbaa !5
  %773 = load i32, ptr %772, align 4, !tbaa !55
  invoke void (i32, i32, i1, ptr, ...) @_Z5trace11TraceModuleibPKcz(i32 noundef 29, i32 noundef 4, i1 noundef zeroext false, ptr noundef @.str.128, ptr noundef %768, ptr noundef %771, i32 noundef %773)
          to label %774 unwind label %787

774:                                              ; preds = %770
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %77) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %77) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %76) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %76) #10
  br label %793

775:                                              ; preds = %762, %758
  %776 = landingpad { ptr, i32 }
          cleanup
  %777 = extractvalue { ptr, i32 } %776, 0
  store ptr %777, ptr %10, align 8
  %778 = extractvalue { ptr, i32 } %776, 1
  store i32 %778, ptr %11, align 4
  br label %799

779:                                              ; preds = %765
  %780 = landingpad { ptr, i32 }
          cleanup
  %781 = extractvalue { ptr, i32 } %780, 0
  store ptr %781, ptr %10, align 8
  %782 = extractvalue { ptr, i32 } %780, 1
  store i32 %782, ptr %11, align 4
  br label %792

783:                                              ; preds = %767
  %784 = landingpad { ptr, i32 }
          cleanup
  %785 = extractvalue { ptr, i32 } %784, 0
  store ptr %785, ptr %10, align 8
  %786 = extractvalue { ptr, i32 } %784, 1
  store i32 %786, ptr %11, align 4
  br label %791

787:                                              ; preds = %770
  %788 = landingpad { ptr, i32 }
          cleanup
  %789 = extractvalue { ptr, i32 } %788, 0
  store ptr %789, ptr %10, align 8
  %790 = extractvalue { ptr, i32 } %788, 1
  store i32 %790, ptr %11, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %77) #10
  br label %791

791:                                              ; preds = %787, %783
  call void @llvm.lifetime.end.p0(i64 32, ptr %77) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %76) #10
  br label %792

792:                                              ; preds = %791, %779
  call void @llvm.lifetime.end.p0(i64 32, ptr %76) #10
  br label %799

793:                                              ; preds = %774, %764
  br label %794

794:                                              ; preds = %793
  br label %795

795:                                              ; preds = %794
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #10
  br label %796

796:                                              ; preds = %795
  %797 = invoke noundef nonnull align 8 dereferenceable(96) ptr @_ZN6sparta7pt_core20PatriciaTreeIteratorIPK13IRInstructionNS0_10EmptyValueEEppEv(ptr noundef nonnull align 8 dereferenceable(96) %73)
          to label %798 unwind label %754

798:                                              ; preds = %796
  br label %742

799:                                              ; preds = %792, %775
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #10
  br label %800

800:                                              ; preds = %799, %754
  call void @_ZN6sparta7pt_core20PatriciaTreeIteratorIPK13IRInstructionNS0_10EmptyValueEED2Ev(ptr noundef nonnull align 8 dereferenceable(96) %74) #10
  br label %801

801:                                              ; preds = %800, %750
  call void @llvm.lifetime.end.p0(i64 96, ptr %74) #10
  call void @_ZN6sparta7pt_core20PatriciaTreeIteratorIPK13IRInstructionNS0_10EmptyValueEED2Ev(ptr noundef nonnull align 8 dereferenceable(96) %73) #10
  br label %802

802:                                              ; preds = %801, %746
  call void @llvm.lifetime.end.p0(i64 96, ptr %73) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %72) #10
  br label %804

803:                                              ; preds = %745
  call void @llvm.lifetime.end.p0(i64 1, ptr %71) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #10
  br label %808

804:                                              ; preds = %802, %724
  call void @llvm.lifetime.end.p0(i64 1, ptr %71) #10
  br label %805

805:                                              ; preds = %804, %720, %716
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #10
  br label %806

806:                                              ; preds = %805, %683
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #10
  br label %807

807:                                              ; preds = %806, %679
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #10
  br label %872

808:                                              ; preds = %803, %661
  %809 = load ptr, ptr %52, align 8, !tbaa !5
  %810 = invoke noundef zeroext i16 @_ZNK13IRInstruction6opcodeEv(ptr noundef nonnull align 8 dereferenceable(32) %809)
          to label %811 unwind label %536

811:                                              ; preds = %808
  %812 = invoke noundef zeroext i1 @_ZN6opcode18is_move_result_anyE8IROpcode(i16 noundef zeroext %810)
          to label %813 unwind label %536

813:                                              ; preds = %811
  br i1 %812, label %814, label %856

814:                                              ; preds = %813
  call void @llvm.lifetime.start.p0(i64 32, ptr %78) #10
  %815 = getelementptr inbounds %"class.cse_impl::CommonSubexpressionElimination", ptr %129, i32 0, i32 4
  %816 = load ptr, ptr %815, align 8, !tbaa !11
  %817 = load ptr, ptr %53, align 8, !tbaa !5
  invoke void @_ZN3cfg16ControlFlowGraph34primary_instruction_of_move_resultERKNS_23InstructionIteratorImplILb0EEE(ptr dead_on_unwind writable sret(%"class.cfg::InstructionIteratorImpl") align 8 %78, ptr noundef nonnull align 8 dereferenceable(160) %816, ptr noundef nonnull align 8 dereferenceable(32) %817)
          to label %818 unwind label %839

818:                                              ; preds = %814
  %819 = invoke noundef ptr @_ZNK3cfg23InstructionIteratorImplILb0EEptEv(ptr noundef nonnull align 8 dereferenceable(32) %78)
          to label %820 unwind label %839

820:                                              ; preds = %818
  %821 = getelementptr inbounds %struct.MethodItemEntry, ptr %819, i32 0, i32 2
  %822 = load ptr, ptr %821, align 8, !tbaa !59
  store ptr %822, ptr %52, align 8, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 32, ptr %78) #10
  %823 = load ptr, ptr %52, align 8, !tbaa !5
  %824 = invoke noundef zeroext i16 @_ZNK13IRInstruction6opcodeEv(ptr noundef nonnull align 8 dereferenceable(32) %823)
          to label %825 unwind label %536

825:                                              ; preds = %820
  %826 = invoke noundef zeroext i1 @_ZN6opcode12is_an_invokeE8IROpcode(i16 noundef zeroext %824)
          to label %827 unwind label %536

827:                                              ; preds = %825
  br i1 %826, label %828, label %855

828:                                              ; preds = %827
  br label %829

829:                                              ; preds = %828
  %830 = invoke noundef zeroext i1 @_Z12traceEnabled11TraceModulei(i32 noundef 29, i32 noundef 3)
          to label %831 unwind label %536

831:                                              ; preds = %829
  br i1 %830, label %832, label %852

832:                                              ; preds = %831
  call void @llvm.lifetime.start.p0(i64 32, ptr %79) #10
  %833 = load ptr, ptr %52, align 8, !tbaa !5
  %834 = invoke noundef ptr @_ZNK13IRInstruction10get_methodEv(ptr noundef nonnull align 8 dereferenceable(32) %833)
          to label %835 unwind label %843

835:                                              ; preds = %832
  invoke void @_Z4showB5cxx11PK12DexMethodRef(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %79, ptr noundef %834)
          to label %836 unwind label %843

836:                                              ; preds = %835
  %837 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %79) #10
  invoke void (i32, i32, i1, ptr, ...) @_Z5trace11TraceModuleibPKcz(i32 noundef 29, i32 noundef 3, i1 noundef zeroext false, ptr noundef @.str.129, ptr noundef %837)
          to label %838 unwind label %847

838:                                              ; preds = %836
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %79) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %79) #10
  br label %852

839:                                              ; preds = %818, %814
  %840 = landingpad { ptr, i32 }
          cleanup
  %841 = extractvalue { ptr, i32 } %840, 0
  store ptr %841, ptr %10, align 8
  %842 = extractvalue { ptr, i32 } %840, 1
  store i32 %842, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %78) #10
  br label %872

843:                                              ; preds = %835, %832
  %844 = landingpad { ptr, i32 }
          cleanup
  %845 = extractvalue { ptr, i32 } %844, 0
  store ptr %845, ptr %10, align 8
  %846 = extractvalue { ptr, i32 } %844, 1
  store i32 %846, ptr %11, align 4
  br label %851

847:                                              ; preds = %836
  %848 = landingpad { ptr, i32 }
          cleanup
  %849 = extractvalue { ptr, i32 } %848, 0
  store ptr %849, ptr %10, align 8
  %850 = extractvalue { ptr, i32 } %848, 1
  store i32 %850, ptr %11, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %79) #10
  br label %851

851:                                              ; preds = %847, %843
  call void @llvm.lifetime.end.p0(i64 32, ptr %79) #10
  br label %872

852:                                              ; preds = %838, %831
  br label %853

853:                                              ; preds = %852
  br label %854

854:                                              ; preds = %853
  br label %855

855:                                              ; preds = %854, %827
  br label %856

856:                                              ; preds = %855, %813
  %857 = getelementptr inbounds %"class.cse_impl::CommonSubexpressionElimination", ptr %129, i32 0, i32 5
  %858 = getelementptr inbounds %"struct.cse_impl::Stats", ptr %857, i32 0, i32 6
  call void @llvm.lifetime.start.p0(i64 2, ptr %80) #10
  %859 = load ptr, ptr %52, align 8, !tbaa !5
  %860 = invoke noundef zeroext i16 @_ZNK13IRInstruction6opcodeEv(ptr noundef nonnull align 8 dereferenceable(32) %859)
          to label %861 unwind label %868

861:                                              ; preds = %856
  store i16 %860, ptr %80, align 2, !tbaa !66
  %862 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN12UnorderedMapItmSt4hashItESt8equal_toItEEixEOt(ptr noundef nonnull align 8 dereferenceable(56) %858, ptr noundef nonnull align 2 dereferenceable(2) %80)
          to label %863 unwind label %868

863:                                              ; preds = %861
  %864 = load i64, ptr %862, align 8, !tbaa !63
  %865 = add i64 %864, 1
  store i64 %865, ptr %862, align 8, !tbaa !63
  call void @llvm.lifetime.end.p0(i64 2, ptr %80) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #10
  br label %866

866:                                              ; preds = %863
  %867 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPN8cse_impl30CommonSubexpressionElimination7ForwardESt6vectorIS3_SaIS3_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %48) #10
  br label %487

868:                                              ; preds = %861, %856
  %869 = landingpad { ptr, i32 }
          cleanup
  %870 = extractvalue { ptr, i32 } %869, 0
  store ptr %870, ptr %10, align 8
  %871 = extractvalue { ptr, i32 } %869, 1
  store i32 %871, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 2, ptr %80) #10
  br label %872

872:                                              ; preds = %868, %851, %839, %807, %665, %540, %536
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #10
  br label %873

873:                                              ; preds = %872, %532
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #10
  br label %874

874:                                              ; preds = %873, %528
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #10
  br label %1316

875:                                              ; preds = %489
  call void @llvm.lifetime.start.p0(i64 8, ptr %81) #10
  %876 = getelementptr inbounds %"class.cse_impl::CommonSubexpressionElimination", ptr %129, i32 0, i32 1
  store ptr %876, ptr %81, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %82) #10
  %877 = load ptr, ptr %81, align 8, !tbaa !5
  %878 = call ptr @_ZNSt6vectorIN8cse_impl30CommonSubexpressionElimination7ForwardESaIS2_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %877) #10
  %879 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.674", ptr %82, i32 0, i32 0
  store ptr %878, ptr %879, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %83) #10
  %880 = load ptr, ptr %81, align 8, !tbaa !5
  %881 = call ptr @_ZNSt6vectorIN8cse_impl30CommonSubexpressionElimination7ForwardESaIS2_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %880) #10
  %882 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.674", ptr %83, i32 0, i32 0
  store ptr %881, ptr %882, align 8
  br label %883

883:                                              ; preds = %1104, %875
  %884 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN8cse_impl30CommonSubexpressionElimination7ForwardESt6vectorIS3_SaIS3_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %82, ptr noundef nonnull align 8 dereferenceable(8) %83) #10
  br i1 %884, label %886, label %885

885:                                              ; preds = %883
  store i32 25, ptr %18, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %83) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %82) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %81) #10
  br label %1112

886:                                              ; preds = %883
  call void @llvm.lifetime.start.p0(i64 8, ptr %84) #10
  %887 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN8cse_impl30CommonSubexpressionElimination7ForwardESt6vectorIS3_SaIS3_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %82) #10
  store ptr %887, ptr %84, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %85) #10
  %888 = load ptr, ptr %84, align 8, !tbaa !5
  %889 = getelementptr inbounds %"struct.cse_impl::CommonSubexpressionElimination::Forward", ptr %888, i32 0, i32 0
  %890 = invoke ptr @_ZN12UnorderedMapImSt4pairI8IROpcodejESt4hashImESt8equal_toImEE4findERKm(ptr noundef nonnull align 8 dereferenceable(56) %12, ptr noundef nonnull align 8 dereferenceable(8) %889)
          to label %891 unwind label %903

891:                                              ; preds = %886
  %892 = getelementptr inbounds %"class.UnorderedMap<unsigned long, std::pair<IROpcode, unsigned int>>::FixedIterator", ptr %85, i32 0, i32 0
  %893 = getelementptr inbounds %"struct.std::__detail::_Node_iterator.684", ptr %892, i32 0, i32 0
  %894 = getelementptr inbounds %"struct.std::__detail::_Node_iterator_base.685", ptr %893, i32 0, i32 0
  store ptr %890, ptr %894, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %86) #10
  %895 = invoke ptr @_ZN12UnorderedMapImSt4pairI8IROpcodejESt4hashImESt8equal_toImEE3endEv(ptr noundef nonnull align 8 dereferenceable(56) %12)
          to label %896 unwind label %907

896:                                              ; preds = %891
  %897 = getelementptr inbounds %"class.UnorderedMap<unsigned long, std::pair<IROpcode, unsigned int>>::FixedIterator", ptr %86, i32 0, i32 0
  %898 = getelementptr inbounds %"struct.std::__detail::_Node_iterator.684", ptr %897, i32 0, i32 0
  %899 = getelementptr inbounds %"struct.std::__detail::_Node_iterator_base.685", ptr %898, i32 0, i32 0
  store ptr %895, ptr %899, align 8
  %900 = invoke noundef zeroext i1 @_ZNK12UnorderedMapImSt4pairI8IROpcodejESt4hashImESt8equal_toImEE13FixedIteratoreqERKS8_(ptr noundef nonnull align 8 dereferenceable(8) %85, ptr noundef nonnull align 8 dereferenceable(8) %86)
          to label %901 unwind label %907

901:                                              ; preds = %896
  call void @llvm.lifetime.end.p0(i64 8, ptr %86) #10
  br i1 %900, label %902, label %911

902:                                              ; preds = %901
  store i32 26, ptr %18, align 4
  br label %1098

903:                                              ; preds = %886
  %904 = landingpad { ptr, i32 }
          cleanup
  %905 = extractvalue { ptr, i32 } %904, 0
  store ptr %905, ptr %10, align 8
  %906 = extractvalue { ptr, i32 } %904, 1
  store i32 %906, ptr %11, align 4
  br label %1111

907:                                              ; preds = %896, %891
  %908 = landingpad { ptr, i32 }
          cleanup
  %909 = extractvalue { ptr, i32 } %908, 0
  store ptr %909, ptr %10, align 8
  %910 = extractvalue { ptr, i32 } %908, 1
  store i32 %910, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %86) #10
  br label %1111

911:                                              ; preds = %901
  call void @llvm.lifetime.start.p0(i64 8, ptr %87) #10
  %912 = invoke noundef ptr @_ZNK12UnorderedMapImSt4pairI8IROpcodejESt4hashImESt8equal_toImEE13FixedIteratorptEv(ptr noundef nonnull align 8 dereferenceable(8) %85)
          to label %913 unwind label %924

913:                                              ; preds = %911
  %914 = getelementptr inbounds %"struct.std::pair.716", ptr %912, i32 0, i32 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %87, ptr align 8 %914, i64 8, i1 false)
  call void @llvm.lifetime.start.p0(i64 8, ptr %88) #10
  %915 = call noundef nonnull align 2 dereferenceable(2) ptr @_ZSt3getILm0E8IROpcodejEONSt13tuple_elementIXT_ESt4pairIT0_T1_EE4typeEOS5_(ptr noundef nonnull align 4 dereferenceable(8) %87) #10
  store ptr %915, ptr %88, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %89) #10
  %916 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3getILm1E8IROpcodejEONSt13tuple_elementIXT_ESt4pairIT0_T1_EE4typeEOS5_(ptr noundef nonnull align 4 dereferenceable(8) %87) #10
  store ptr %916, ptr %89, align 8, !tbaa !5
  %917 = load ptr, ptr %88, align 8, !tbaa !5
  %918 = load i16, ptr %917, align 2, !tbaa !54
  %919 = invoke noundef zeroext i1 @_ZN6opcode9is_a_moveE8IROpcode(i16 noundef zeroext %918)
          to label %920 unwind label %928

920:                                              ; preds = %913
  br i1 %919, label %921, label %922

921:                                              ; preds = %920
  br label %933

922:                                              ; preds = %920
  invoke void (ptr, ptr, i32, ptr, i32, ptr, ...) @_Z11assert_failPKcS0_jS0_10RedexErrorS0_z(ptr noundef @.str.127, ptr noundef @.str.108, i32 noundef 1821, ptr noundef @__PRETTY_FUNCTION__._ZN8cse_impl30CommonSubexpressionElimination5patchEb, i32 noundef 2, ptr noundef @.str.109) #11
          to label %923 unwind label %928

923:                                              ; preds = %922
  unreachable

924:                                              ; preds = %911
  %925 = landingpad { ptr, i32 }
          cleanup
  %926 = extractvalue { ptr, i32 } %925, 0
  store ptr %926, ptr %10, align 8
  %927 = extractvalue { ptr, i32 } %925, 1
  store i32 %927, ptr %11, align 4
  br label %1110

928:                                              ; preds = %933, %922, %913
  %929 = landingpad { ptr, i32 }
          cleanup
  %930 = extractvalue { ptr, i32 } %929, 0
  store ptr %930, ptr %10, align 8
  %931 = extractvalue { ptr, i32 } %929, 1
  store i32 %931, ptr %11, align 4
  br label %1109

932:                                              ; No predecessors!
  br label %933

933:                                              ; preds = %932, %921
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %90, ptr align 8 %85, i64 8, i1 false)
  %934 = getelementptr inbounds %"class.UnorderedMap<unsigned long, std::pair<IROpcode, unsigned int>>::FixedIterator", ptr %90, i32 0, i32 0
  %935 = getelementptr inbounds %"struct.std::__detail::_Node_iterator.684", ptr %934, i32 0, i32 0
  %936 = getelementptr inbounds %"struct.std::__detail::_Node_iterator_base.685", ptr %935, i32 0, i32 0
  %937 = load ptr, ptr %936, align 8
  invoke void @_ZN12UnorderedMapImSt4pairI8IROpcodejESt4hashImESt8equal_toImEE5eraseENS7_13FixedIteratorE(ptr noundef nonnull align 8 dereferenceable(56) %12, ptr %937)
          to label %938 unwind label %928

938:                                              ; preds = %933
  call void @llvm.lifetime.start.p0(i64 8, ptr %91) #10
  %939 = getelementptr inbounds %"class.cse_impl::CommonSubexpressionElimination", ptr %129, i32 0, i32 3
  %940 = load ptr, ptr %84, align 8, !tbaa !5
  %941 = getelementptr inbounds %"struct.cse_impl::CommonSubexpressionElimination::Forward", ptr %940, i32 0, i32 0
  %942 = load i64, ptr %941, align 8, !tbaa !45
  %943 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIN6sparta15PatriciaTreeSetIPK13IRInstructionEESaIS5_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %939, i64 noundef %942)
          to label %944 unwind label %956

944:                                              ; preds = %938
  store ptr %943, ptr %91, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 24, ptr %92) #10
  %945 = load ptr, ptr %91, align 8, !tbaa !5
  invoke void @_ZNK6sparta15PatriciaTreeSetIPK13IRInstructionE5beginEv(ptr dead_on_unwind writable sret(%"class.sparta::pt_core::PatriciaTreeIterator") align 8 %93, ptr noundef nonnull align 8 dereferenceable(8) %945)
          to label %946 unwind label %960

946:                                              ; preds = %944
  %947 = load ptr, ptr %91, align 8, !tbaa !5
  invoke void @_ZNK6sparta15PatriciaTreeSetIPK13IRInstructionE3endEv(ptr dead_on_unwind writable sret(%"class.sparta::pt_core::PatriciaTreeIterator") align 8 %94, ptr noundef nonnull align 8 dereferenceable(8) %947)
          to label %948 unwind label %964

948:                                              ; preds = %946
  call void @llvm.lifetime.start.p0(i64 1, ptr %95) #10
  call void @_ZNSaIPK13IRInstructionEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %95) #10
  invoke void @_ZNSt6vectorIPK13IRInstructionSaIS2_EEC2IN6sparta7pt_core20PatriciaTreeIteratorIS2_NS7_10EmptyValueEEEvEET_SB_RKS3_(ptr noundef nonnull align 8 dereferenceable(24) %92, ptr noundef %93, ptr noundef %94, ptr noundef nonnull align 1 dereferenceable(1) %95)
          to label %949 unwind label %968

949:                                              ; preds = %948
  call void @_ZNSt15__new_allocatorIPK13IRInstructionED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %95) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %95) #10
  call void @_ZN6sparta7pt_core20PatriciaTreeIteratorIPK13IRInstructionNS0_10EmptyValueEED2Ev(ptr noundef nonnull align 8 dereferenceable(96) %94) #10
  call void @_ZN6sparta7pt_core20PatriciaTreeIteratorIPK13IRInstructionNS0_10EmptyValueEED2Ev(ptr noundef nonnull align 8 dereferenceable(96) %93) #10
  %950 = getelementptr inbounds %"class.cse_impl::CommonSubexpressionElimination", ptr %129, i32 0, i32 0
  %951 = invoke noundef zeroext i1 @_ZNK12UnorderedMapIPK13IRInstructionmSt4hashIS2_ESt8equal_toIS2_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(56) %950)
          to label %952 unwind label %973

952:                                              ; preds = %949
  br i1 %951, label %954, label %953

953:                                              ; preds = %952
  br label %978

954:                                              ; preds = %952
  invoke void (ptr, ptr, i32, ptr, i32, ptr, ...) @_Z11assert_failPKcS0_jS0_10RedexErrorS0_z(ptr noundef @.str.130, ptr noundef @.str.108, i32 noundef 1827, ptr noundef @__PRETTY_FUNCTION__._ZN8cse_impl30CommonSubexpressionElimination5patchEb, i32 noundef 2, ptr noundef @.str.109) #11
          to label %955 unwind label %973

955:                                              ; preds = %954
  unreachable

956:                                              ; preds = %938
  %957 = landingpad { ptr, i32 }
          cleanup
  %958 = extractvalue { ptr, i32 } %957, 0
  store ptr %958, ptr %10, align 8
  %959 = extractvalue { ptr, i32 } %957, 1
  store i32 %959, ptr %11, align 4
  br label %1108

960:                                              ; preds = %944
  %961 = landingpad { ptr, i32 }
          cleanup
  %962 = extractvalue { ptr, i32 } %961, 0
  store ptr %962, ptr %10, align 8
  %963 = extractvalue { ptr, i32 } %961, 1
  store i32 %963, ptr %11, align 4
  br label %1107

964:                                              ; preds = %946
  %965 = landingpad { ptr, i32 }
          cleanup
  %966 = extractvalue { ptr, i32 } %965, 0
  store ptr %966, ptr %10, align 8
  %967 = extractvalue { ptr, i32 } %965, 1
  store i32 %967, ptr %11, align 4
  br label %972

968:                                              ; preds = %948
  %969 = landingpad { ptr, i32 }
          cleanup
  %970 = extractvalue { ptr, i32 } %969, 0
  store ptr %970, ptr %10, align 8
  %971 = extractvalue { ptr, i32 } %969, 1
  store i32 %971, ptr %11, align 4
  call void @_ZNSt15__new_allocatorIPK13IRInstructionED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %95) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %95) #10
  call void @_ZN6sparta7pt_core20PatriciaTreeIteratorIPK13IRInstructionNS0_10EmptyValueEED2Ev(ptr noundef nonnull align 8 dereferenceable(96) %94) #10
  br label %972

972:                                              ; preds = %968, %964
  call void @_ZN6sparta7pt_core20PatriciaTreeIteratorIPK13IRInstructionNS0_10EmptyValueEED2Ev(ptr noundef nonnull align 8 dereferenceable(96) %93) #10
  br label %1107

973:                                              ; preds = %978, %954, %949
  %974 = landingpad { ptr, i32 }
          cleanup
  %975 = extractvalue { ptr, i32 } %974, 0
  store ptr %975, ptr %10, align 8
  %976 = extractvalue { ptr, i32 } %974, 1
  store i32 %976, ptr %11, align 4
  br label %1106

977:                                              ; No predecessors!
  br label %978

978:                                              ; preds = %977, %953
  %979 = call ptr @_ZNSt6vectorIPK13IRInstructionSaIS2_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %92) #10
  %980 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.725", ptr %96, i32 0, i32 0
  store ptr %979, ptr %980, align 8
  %981 = call ptr @_ZNSt6vectorIPK13IRInstructionSaIS2_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %92) #10
  %982 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.725", ptr %97, i32 0, i32 0
  store ptr %981, ptr %982, align 8
  %983 = getelementptr inbounds %class.anon.726, ptr %98, i32 0, i32 0
  store ptr %129, ptr %983, align 8, !tbaa !68
  %984 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.725", ptr %96, i32 0, i32 0
  %985 = load ptr, ptr %984, align 8
  %986 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.725", ptr %97, i32 0, i32 0
  %987 = load ptr, ptr %986, align 8
  %988 = getelementptr inbounds %class.anon.726, ptr %98, i32 0, i32 0
  %989 = load ptr, ptr %988, align 8
  invoke void @"_ZSt4sortIN9__gnu_cxx17__normal_iteratorIPPK13IRInstructionSt6vectorIS4_SaIS4_EEEEZN8cse_impl30CommonSubexpressionElimination5patchEbE3$_1EvT_SD_T0_"(ptr %985, ptr %987, ptr %989)
          to label %990 unwind label %973

990:                                              ; preds = %978
  call void @llvm.lifetime.start.p0(i64 8, ptr %99) #10
  store ptr %92, ptr %99, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %100) #10
  %991 = load ptr, ptr %99, align 8, !tbaa !5
  %992 = call ptr @_ZNSt6vectorIPK13IRInstructionSaIS2_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %991) #10
  %993 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.725", ptr %100, i32 0, i32 0
  store ptr %992, ptr %993, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %101) #10
  %994 = load ptr, ptr %99, align 8, !tbaa !5
  %995 = call ptr @_ZNSt6vectorIPK13IRInstructionSaIS2_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %994) #10
  %996 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.725", ptr %101, i32 0, i32 0
  store ptr %995, ptr %996, align 8
  br label %997

997:                                              ; preds = %1092, %990
  %998 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPPK13IRInstructionSt6vectorIS3_SaIS3_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %100, ptr noundef nonnull align 8 dereferenceable(8) %101) #10
  br i1 %998, label %1000, label %999

999:                                              ; preds = %997
  store i32 27, ptr %18, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %101) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %100) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %99) #10
  br label %1097

1000:                                             ; preds = %997
  call void @llvm.lifetime.start.p0(i64 8, ptr %102) #10
  %1001 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPPK13IRInstructionSt6vectorIS3_SaIS3_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %100) #10
  %1002 = load ptr, ptr %1001, align 8, !tbaa !5
  store ptr %1002, ptr %102, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %103) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %104) #10
  %1003 = load ptr, ptr %102, align 8, !tbaa !5
  store ptr %1003, ptr %104, align 8, !tbaa !5
  %1004 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN12UnorderedMapIP13IRInstructionN3cfg23InstructionIteratorImplILb0EEESt4hashIS1_ESt8equal_toIS1_EE2atERKS1_(ptr noundef nonnull align 8 dereferenceable(56) %40, ptr noundef nonnull align 8 dereferenceable(8) %104)
          to label %1005 unwind label %1050

1005:                                             ; preds = %1000
  call void @llvm.lifetime.end.p0(i64 8, ptr %104) #10
  store ptr %1004, ptr %103, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %105) #10
  %1006 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 32) #12
          to label %1007 unwind label %1054

1007:                                             ; preds = %1005
  %1008 = load ptr, ptr %88, align 8, !tbaa !5
  %1009 = load i16, ptr %1008, align 2, !tbaa !54
  invoke void @_ZN13IRInstructionC1E8IROpcode(ptr noundef nonnull align 8 dereferenceable(32) %1006, i16 noundef zeroext %1009)
          to label %1010 unwind label %1058

1010:                                             ; preds = %1007
  store ptr %1006, ptr %105, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %106) #10
  %1011 = load ptr, ptr %102, align 8, !tbaa !5
  %1012 = invoke noundef zeroext i1 @_ZNK13IRInstruction8has_destEv(ptr noundef nonnull align 8 dereferenceable(32) %1011)
          to label %1013 unwind label %1062

1013:                                             ; preds = %1010
  br i1 %1012, label %1014, label %1018

1014:                                             ; preds = %1013
  %1015 = load ptr, ptr %102, align 8, !tbaa !5
  %1016 = invoke noundef i32 @_ZNK13IRInstruction4destEv(ptr noundef nonnull align 8 dereferenceable(32) %1015)
          to label %1017 unwind label %1062

1017:                                             ; preds = %1014
  br label %1022

1018:                                             ; preds = %1013
  %1019 = load ptr, ptr %102, align 8, !tbaa !5
  %1020 = invoke noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %1019, i16 noundef zeroext 0)
          to label %1021 unwind label %1062

1021:                                             ; preds = %1018
  br label %1022

1022:                                             ; preds = %1021, %1017
  %1023 = phi i32 [ %1016, %1017 ], [ %1020, %1021 ]
  store i32 %1023, ptr %106, align 4, !tbaa !55
  %1024 = load ptr, ptr %105, align 8, !tbaa !5
  %1025 = load i32, ptr %106, align 4, !tbaa !55
  %1026 = invoke noundef ptr @_ZN13IRInstruction7set_srcEtj(ptr noundef nonnull align 8 dereferenceable(32) %1024, i16 noundef zeroext 0, i32 noundef %1025)
          to label %1027 unwind label %1062

1027:                                             ; preds = %1022
  %1028 = load ptr, ptr %89, align 8, !tbaa !5
  %1029 = load i32, ptr %1028, align 4, !tbaa !55
  %1030 = invoke noundef ptr @_ZN13IRInstruction8set_destEj(ptr noundef nonnull align 8 dereferenceable(32) %1026, i32 noundef %1029)
          to label %1031 unwind label %1062

1031:                                             ; preds = %1027
  %1032 = load ptr, ptr %102, align 8, !tbaa !5
  %1033 = invoke noundef zeroext i16 @_ZNK13IRInstruction6opcodeEv(ptr noundef nonnull align 8 dereferenceable(32) %1032)
          to label %1034 unwind label %1062

1034:                                             ; preds = %1031
  %1035 = zext i16 %1033 to i32
  %1036 = icmp eq i32 %1035, 22
  br i1 %1036, label %1037, label %1072

1037:                                             ; preds = %1034
  call void @llvm.lifetime.start.p0(i64 1, ptr %107) #10
  %1038 = getelementptr inbounds %"class.cse_impl::CommonSubexpressionElimination", ptr %129, i32 0, i32 4
  %1039 = load ptr, ptr %1038, align 8, !tbaa !11
  %1040 = load ptr, ptr %103, align 8, !tbaa !5
  %1041 = load ptr, ptr %105, align 8, !tbaa !5
  %1042 = invoke noundef zeroext i1 @_ZN3cfg16ControlFlowGraph13insert_beforeERKNS_23InstructionIteratorImplILb0EEEP13IRInstruction(ptr noundef nonnull align 8 dereferenceable(160) %1039, ptr noundef nonnull align 8 dereferenceable(32) %1040, ptr noundef %1041)
          to label %1043 unwind label %1066

1043:                                             ; preds = %1037
  %1044 = zext i1 %1042 to i8
  store i8 %1044, ptr %107, align 1, !tbaa !9
  %1045 = load i8, ptr %107, align 1, !tbaa !9, !range !64, !noundef !65
  %1046 = trunc i8 %1045 to i1
  br i1 %1046, label %1048, label %1047

1047:                                             ; preds = %1043
  br label %1071

1048:                                             ; preds = %1043
  invoke void (ptr, ptr, i32, ptr, i32, ptr, ...) @_Z11assert_failPKcS0_jS0_10RedexErrorS0_z(ptr noundef @.str.125, ptr noundef @.str.108, i32 noundef 1844, ptr noundef @__PRETTY_FUNCTION__._ZN8cse_impl30CommonSubexpressionElimination5patchEb, i32 noundef 2, ptr noundef @.str.109) #11
          to label %1049 unwind label %1066

1049:                                             ; preds = %1048
  unreachable

1050:                                             ; preds = %1000
  %1051 = landingpad { ptr, i32 }
          cleanup
  %1052 = extractvalue { ptr, i32 } %1051, 0
  store ptr %1052, ptr %10, align 8
  %1053 = extractvalue { ptr, i32 } %1051, 1
  store i32 %1053, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %104) #10
  br label %1096

1054:                                             ; preds = %1005
  %1055 = landingpad { ptr, i32 }
          cleanup
  %1056 = extractvalue { ptr, i32 } %1055, 0
  store ptr %1056, ptr %10, align 8
  %1057 = extractvalue { ptr, i32 } %1055, 1
  store i32 %1057, ptr %11, align 4
  br label %1095

1058:                                             ; preds = %1007
  %1059 = landingpad { ptr, i32 }
          cleanup
  %1060 = extractvalue { ptr, i32 } %1059, 0
  store ptr %1060, ptr %10, align 8
  %1061 = extractvalue { ptr, i32 } %1059, 1
  store i32 %1061, ptr %11, align 4
  call void @_ZdlPvm(ptr noundef %1006, i64 noundef 32) #13
  br label %1095

1062:                                             ; preds = %1031, %1027, %1022, %1018, %1014, %1010
  %1063 = landingpad { ptr, i32 }
          cleanup
  %1064 = extractvalue { ptr, i32 } %1063, 0
  store ptr %1064, ptr %10, align 8
  %1065 = extractvalue { ptr, i32 } %1063, 1
  store i32 %1065, ptr %11, align 4
  br label %1094

1066:                                             ; preds = %1048, %1037
  %1067 = landingpad { ptr, i32 }
          cleanup
  %1068 = extractvalue { ptr, i32 } %1067, 0
  store ptr %1068, ptr %10, align 8
  %1069 = extractvalue { ptr, i32 } %1067, 1
  store i32 %1069, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %107) #10
  br label %1094

1070:                                             ; No predecessors!
  br label %1071

1071:                                             ; preds = %1070, %1047
  call void @llvm.lifetime.end.p0(i64 1, ptr %107) #10
  br label %1091

1072:                                             ; preds = %1034
  call void @llvm.lifetime.start.p0(i64 1, ptr %108) #10
  %1073 = getelementptr inbounds %"class.cse_impl::CommonSubexpressionElimination", ptr %129, i32 0, i32 4
  %1074 = load ptr, ptr %1073, align 8, !tbaa !11
  %1075 = load ptr, ptr %103, align 8, !tbaa !5
  %1076 = load ptr, ptr %105, align 8, !tbaa !5
  %1077 = invoke noundef zeroext i1 @_ZN3cfg16ControlFlowGraph12insert_afterERKNS_23InstructionIteratorImplILb0EEEP13IRInstruction(ptr noundef nonnull align 8 dereferenceable(160) %1074, ptr noundef nonnull align 8 dereferenceable(32) %1075, ptr noundef %1076)
          to label %1078 unwind label %1085

1078:                                             ; preds = %1072
  %1079 = zext i1 %1077 to i8
  store i8 %1079, ptr %108, align 1, !tbaa !9
  %1080 = load i8, ptr %108, align 1, !tbaa !9, !range !64, !noundef !65
  %1081 = trunc i8 %1080 to i1
  br i1 %1081, label %1083, label %1082

1082:                                             ; preds = %1078
  br label %1090

1083:                                             ; preds = %1078
  invoke void (ptr, ptr, i32, ptr, i32, ptr, ...) @_Z11assert_failPKcS0_jS0_10RedexErrorS0_z(ptr noundef @.str.125, ptr noundef @.str.108, i32 noundef 1847, ptr noundef @__PRETTY_FUNCTION__._ZN8cse_impl30CommonSubexpressionElimination5patchEb, i32 noundef 2, ptr noundef @.str.109) #11
          to label %1084 unwind label %1085

1084:                                             ; preds = %1083
  unreachable

1085:                                             ; preds = %1083, %1072
  %1086 = landingpad { ptr, i32 }
          cleanup
  %1087 = extractvalue { ptr, i32 } %1086, 0
  store ptr %1087, ptr %10, align 8
  %1088 = extractvalue { ptr, i32 } %1086, 1
  store i32 %1088, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %108) #10
  br label %1094

1089:                                             ; No predecessors!
  br label %1090

1090:                                             ; preds = %1089, %1082
  call void @llvm.lifetime.end.p0(i64 1, ptr %108) #10
  br label %1091

1091:                                             ; preds = %1090, %1071
  call void @llvm.lifetime.end.p0(i64 4, ptr %106) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %105) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %103) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %102) #10
  br label %1092

1092:                                             ; preds = %1091
  %1093 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPPK13IRInstructionSt6vectorIS3_SaIS3_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %100) #10
  br label %997

1094:                                             ; preds = %1085, %1066, %1062
  call void @llvm.lifetime.end.p0(i64 4, ptr %106) #10
  br label %1095

1095:                                             ; preds = %1094, %1058, %1054
  call void @llvm.lifetime.end.p0(i64 8, ptr %105) #10
  br label %1096

1096:                                             ; preds = %1095, %1050
  call void @llvm.lifetime.end.p0(i64 8, ptr %103) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %102) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %101) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %100) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %99) #10
  br label %1106

1097:                                             ; preds = %999
  call void @_ZNSt6vectorIPK13IRInstructionSaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %92) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %92) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %91) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %89) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %88) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %87) #10
  store i32 0, ptr %18, align 4
  br label %1098

1098:                                             ; preds = %1097, %902
  call void @llvm.lifetime.end.p0(i64 8, ptr %85) #10
  %1099 = load i32, ptr %18, align 4
  switch i32 %1099, label %1101 [
    i32 0, label %1100
  ]

1100:                                             ; preds = %1098
  store i32 0, ptr %18, align 4
  br label %1101

1101:                                             ; preds = %1100, %1098
  call void @llvm.lifetime.end.p0(i64 8, ptr %84) #10
  %1102 = load i32, ptr %18, align 4
  switch i32 %1102, label %1329 [
    i32 0, label %1103
    i32 26, label %1104
  ]

1103:                                             ; preds = %1101
  br label %1104

1104:                                             ; preds = %1103, %1101
  %1105 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPN8cse_impl30CommonSubexpressionElimination7ForwardESt6vectorIS3_SaIS3_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %82) #10
  br label %883

1106:                                             ; preds = %1096, %973
  call void @_ZNSt6vectorIPK13IRInstructionSaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %92) #10
  br label %1107

1107:                                             ; preds = %1106, %972, %960
  call void @llvm.lifetime.end.p0(i64 24, ptr %92) #10
  br label %1108

1108:                                             ; preds = %1107, %956
  call void @llvm.lifetime.end.p0(i64 8, ptr %91) #10
  br label %1109

1109:                                             ; preds = %1108, %928
  call void @llvm.lifetime.end.p0(i64 8, ptr %89) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %88) #10
  br label %1110

1110:                                             ; preds = %1109, %924
  call void @llvm.lifetime.end.p0(i64 8, ptr %87) #10
  br label %1111

1111:                                             ; preds = %1110, %907, %903
  call void @llvm.lifetime.end.p0(i64 8, ptr %85) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %84) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %83) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %82) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %81) #10
  br label %1316

1112:                                             ; preds = %885
  %1113 = invoke noundef zeroext i1 @_ZNK12UnorderedMapImSt4pairI8IROpcodejESt4hashImESt8equal_toImEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(56) %12)
          to label %1114 unwind label %1118

1114:                                             ; preds = %1112
  br i1 %1113, label %1115, label %1116

1115:                                             ; preds = %1114
  br label %1123

1116:                                             ; preds = %1114
  invoke void (ptr, ptr, i32, ptr, i32, ptr, ...) @_Z11assert_failPKcS0_jS0_10RedexErrorS0_z(ptr noundef @.str.131, ptr noundef @.str.108, i32 noundef 1851, ptr noundef @__PRETTY_FUNCTION__._ZN8cse_impl30CommonSubexpressionElimination5patchEb, i32 noundef 2, ptr noundef @.str.109) #11
          to label %1117 unwind label %1118

1117:                                             ; preds = %1116
  unreachable

1118:                                             ; preds = %1129, %1126, %1116, %1112
  %1119 = landingpad { ptr, i32 }
          cleanup
  %1120 = extractvalue { ptr, i32 } %1119, 0
  store ptr %1120, ptr %10, align 8
  %1121 = extractvalue { ptr, i32 } %1119, 1
  store i32 %1121, ptr %11, align 4
  br label %1316

1122:                                             ; No predecessors!
  br label %1123

1123:                                             ; preds = %1122, %1115
  %1124 = load i8, ptr %5, align 1, !tbaa !9, !range !64, !noundef !65
  %1125 = trunc i8 %1124 to i1
  br i1 %1125, label %1126, label %1128

1126:                                             ; preds = %1123
  invoke void @_ZN8cse_impl30CommonSubexpressionElimination25insert_runtime_assertionsERKSt6vectorISt4pairINS0_7ForwardEP13IRInstructionESaIS6_EE(ptr noundef nonnull align 8 dereferenceable(312) %129, ptr noundef nonnull align 8 dereferenceable(24) %46)
          to label %1127 unwind label %1118

1127:                                             ; preds = %1126
  br label %1128

1128:                                             ; preds = %1127, %1123
  br label %1129

1129:                                             ; preds = %1128
  %1130 = invoke noundef zeroext i1 @_Z12traceEnabled11TraceModulei(i32 noundef 29, i32 noundef 5)
          to label %1131 unwind label %1118

1131:                                             ; preds = %1129
  br i1 %1130, label %1132, label %1147

1132:                                             ; preds = %1131
  call void @llvm.lifetime.start.p0(i64 32, ptr %109) #10
  %1133 = getelementptr inbounds %"class.cse_impl::CommonSubexpressionElimination", ptr %129, i32 0, i32 4
  %1134 = load ptr, ptr %1133, align 8, !tbaa !11
  invoke void @_Z4showB5cxx11RKN3cfg16ControlFlowGraphEb(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %109, ptr noundef nonnull align 8 dereferenceable(160) %1134, i1 noundef zeroext false)
          to label %1135 unwind label %1138

1135:                                             ; preds = %1132
  %1136 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %109) #10
  invoke void (i32, i32, i1, ptr, ...) @_Z5trace11TraceModuleibPKcz(i32 noundef 29, i32 noundef 5, i1 noundef zeroext false, ptr noundef @.str.132, ptr noundef %1136)
          to label %1137 unwind label %1142

1137:                                             ; preds = %1135
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %109) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %109) #10
  br label %1147

1138:                                             ; preds = %1132
  %1139 = landingpad { ptr, i32 }
          cleanup
  %1140 = extractvalue { ptr, i32 } %1139, 0
  store ptr %1140, ptr %10, align 8
  %1141 = extractvalue { ptr, i32 } %1139, 1
  store i32 %1141, ptr %11, align 4
  br label %1146

1142:                                             ; preds = %1135
  %1143 = landingpad { ptr, i32 }
          cleanup
  %1144 = extractvalue { ptr, i32 } %1143, 0
  store ptr %1144, ptr %10, align 8
  %1145 = extractvalue { ptr, i32 } %1143, 1
  store i32 %1145, ptr %11, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %109) #10
  br label %1146

1146:                                             ; preds = %1142, %1138
  call void @llvm.lifetime.end.p0(i64 32, ptr %109) #10
  br label %1316

1147:                                             ; preds = %1137, %1131
  br label %1148

1148:                                             ; preds = %1147
  br label %1149

1149:                                             ; preds = %1148
  %1150 = getelementptr inbounds %"class.cse_impl::CommonSubexpressionElimination", ptr %129, i32 0, i32 1
  %1151 = call noundef i64 @_ZNKSt6vectorIN8cse_impl30CommonSubexpressionElimination7ForwardESaIS2_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1150) #10
  %1152 = getelementptr inbounds %"class.cse_impl::CommonSubexpressionElimination", ptr %129, i32 0, i32 5
  %1153 = getelementptr inbounds %"struct.cse_impl::Stats", ptr %1152, i32 0, i32 3
  %1154 = load i64, ptr %1153, align 8, !tbaa !43
  %1155 = add i64 %1154, %1151
  store i64 %1155, ptr %1153, align 8, !tbaa !43
  %1156 = getelementptr inbounds %"class.cse_impl::CommonSubexpressionElimination", ptr %129, i32 0, i32 9
  %1157 = call noundef zeroext i1 @_ZNKSt6vectorIP13IRInstructionSaIS1_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %1156) #10
  br i1 %1157, label %1315, label %1158

1158:                                             ; preds = %1149
  call void @llvm.lifetime.start.p0(i64 64, ptr %110) #10
  %1159 = getelementptr inbounds %"class.cse_impl::CommonSubexpressionElimination", ptr %129, i32 0, i32 4
  %1160 = load ptr, ptr %1159, align 8, !tbaa !11
  invoke void @_ZN3cfg11CFGMutationC2ERNS_16ControlFlowGraphE(ptr noundef nonnull align 8 dereferenceable(64) %110, ptr noundef nonnull align 8 dereferenceable(160) %1160)
          to label %1161 unwind label %1172

1161:                                             ; preds = %1158
  call void @llvm.lifetime.start.p0(i64 8, ptr %111) #10
  %1162 = getelementptr inbounds %"class.cse_impl::CommonSubexpressionElimination", ptr %129, i32 0, i32 9
  store ptr %1162, ptr %111, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %112) #10
  %1163 = load ptr, ptr %111, align 8, !tbaa !5
  %1164 = call ptr @_ZNSt6vectorIP13IRInstructionSaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %1163) #10
  %1165 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.689", ptr %112, i32 0, i32 0
  store ptr %1164, ptr %1165, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %113) #10
  %1166 = load ptr, ptr %111, align 8, !tbaa !5
  %1167 = call ptr @_ZNSt6vectorIP13IRInstructionSaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %1166) #10
  %1168 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.689", ptr %113, i32 0, i32 0
  store ptr %1167, ptr %1168, align 8
  br label %1169

1169:                                             ; preds = %1265, %1161
  %1170 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPP13IRInstructionSt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %112, ptr noundef nonnull align 8 dereferenceable(8) %113) #10
  br i1 %1170, label %1176, label %1171

1171:                                             ; preds = %1169
  store i32 31, ptr %18, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %113) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %112) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %111) #10
  br label %1307

1172:                                             ; preds = %1158
  %1173 = landingpad { ptr, i32 }
          cleanup
  %1174 = extractvalue { ptr, i32 } %1173, 0
  store ptr %1174, ptr %10, align 8
  %1175 = extractvalue { ptr, i32 } %1173, 1
  store i32 %1175, ptr %11, align 4
  br label %1314

1176:                                             ; preds = %1169
  call void @llvm.lifetime.start.p0(i64 8, ptr %114) #10
  %1177 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPP13IRInstructionSt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %112) #10
  %1178 = load ptr, ptr %1177, align 8, !tbaa !5
  store ptr %1178, ptr %114, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %115) #10
  %1179 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN12UnorderedMapIP13IRInstructionN3cfg23InstructionIteratorImplILb0EEESt4hashIS1_ESt8equal_toIS1_EE2atERKS1_(ptr noundef nonnull align 8 dereferenceable(56) %40, ptr noundef nonnull align 8 dereferenceable(8) %114)
          to label %1180 unwind label %1207

1180:                                             ; preds = %1176
  store ptr %1179, ptr %115, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %116) #10
  %1181 = load ptr, ptr %114, align 8, !tbaa !5
  %1182 = invoke noundef ptr @_ZNK13IRInstruction10get_methodEv(ptr noundef nonnull align 8 dereferenceable(32) %1181)
          to label %1183 unwind label %1211

1183:                                             ; preds = %1180
  store ptr %1182, ptr %116, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %117) #10
  %1184 = getelementptr inbounds %"class.cse_impl::CommonSubexpressionElimination", ptr %129, i32 0, i32 10
  %1185 = load ptr, ptr %1184, align 8, !tbaa !70
  %1186 = getelementptr inbounds %class.anon.743, ptr %118, i32 0, i32 0
  %1187 = load ptr, ptr %116, align 8, !tbaa !5
  store ptr %1187, ptr %1186, align 8, !tbaa !71
  %1188 = getelementptr inbounds %class.anon.743, ptr %118, i32 0, i32 0
  %1189 = load ptr, ptr %1188, align 8
  %1190 = invoke ptr @"_Z17unordered_find_ifI12UnorderedMapIPK12DexMethodRefS3_St4hashIS3_ESt8equal_toIS3_EEZN8cse_impl30CommonSubexpressionElimination5patchEbE3$_0EDaRKT_T0_"(ptr noundef nonnull align 8 dereferenceable(56) %1185, ptr %1189)
          to label %1191 unwind label %1215

1191:                                             ; preds = %1183
  %1192 = getelementptr inbounds %"class.UnorderedMap<const DexMethodRef *, const DexMethodRef *>::ConstFixedIterator", ptr %117, i32 0, i32 0
  %1193 = getelementptr inbounds %"struct.std::__detail::_Node_const_iterator.257", ptr %1192, i32 0, i32 0
  %1194 = getelementptr inbounds %"struct.std::__detail::_Node_iterator_base.152", ptr %1193, i32 0, i32 0
  store ptr %1190, ptr %1194, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %119) #10
  %1195 = getelementptr inbounds %"class.cse_impl::CommonSubexpressionElimination", ptr %129, i32 0, i32 10
  %1196 = load ptr, ptr %1195, align 8, !tbaa !70
  %1197 = invoke ptr @_ZNK12UnorderedMapIPK12DexMethodRefS2_St4hashIS2_ESt8equal_toIS2_EE3endEv(ptr noundef nonnull align 8 dereferenceable(56) %1196)
          to label %1198 unwind label %1219

1198:                                             ; preds = %1191
  %1199 = getelementptr inbounds %"class.UnorderedMap<const DexMethodRef *, const DexMethodRef *>::ConstFixedIterator", ptr %119, i32 0, i32 0
  %1200 = getelementptr inbounds %"struct.std::__detail::_Node_const_iterator.257", ptr %1199, i32 0, i32 0
  %1201 = getelementptr inbounds %"struct.std::__detail::_Node_iterator_base.152", ptr %1200, i32 0, i32 0
  store ptr %1197, ptr %1201, align 8
  %1202 = invoke noundef zeroext i1 @_ZNK12UnorderedMapIPK12DexMethodRefS2_St4hashIS2_ESt8equal_toIS2_EE18ConstFixedIteratorneERKS8_(ptr noundef nonnull align 8 dereferenceable(8) %117, ptr noundef nonnull align 8 dereferenceable(8) %119)
          to label %1203 unwind label %1219

1203:                                             ; preds = %1198
  br i1 %1202, label %1204, label %1205

1204:                                             ; preds = %1203
  br label %1224

1205:                                             ; preds = %1203
  invoke void (ptr, ptr, i32, ptr, i32, ptr, ...) @_Z11assert_failPKcS0_jS0_10RedexErrorS0_z(ptr noundef @.str.133, ptr noundef @.str.108, i32 noundef 1875, ptr noundef @__PRETTY_FUNCTION__._ZN8cse_impl30CommonSubexpressionElimination5patchEb, i32 noundef 2, ptr noundef @.str.109) #11
          to label %1206 unwind label %1219

1206:                                             ; preds = %1205
  unreachable

1207:                                             ; preds = %1176
  %1208 = landingpad { ptr, i32 }
          cleanup
  %1209 = extractvalue { ptr, i32 } %1208, 0
  store ptr %1209, ptr %10, align 8
  %1210 = extractvalue { ptr, i32 } %1208, 1
  store i32 %1210, ptr %11, align 4
  br label %1306

1211:                                             ; preds = %1180
  %1212 = landingpad { ptr, i32 }
          cleanup
  %1213 = extractvalue { ptr, i32 } %1212, 0
  store ptr %1213, ptr %10, align 8
  %1214 = extractvalue { ptr, i32 } %1212, 1
  store i32 %1214, ptr %11, align 4
  br label %1305

1215:                                             ; preds = %1183
  %1216 = landingpad { ptr, i32 }
          cleanup
  %1217 = extractvalue { ptr, i32 } %1216, 0
  store ptr %1217, ptr %10, align 8
  %1218 = extractvalue { ptr, i32 } %1216, 1
  store i32 %1218, ptr %11, align 4
  br label %1304

1219:                                             ; preds = %1205, %1198, %1191
  %1220 = landingpad { ptr, i32 }
          cleanup
  %1221 = extractvalue { ptr, i32 } %1220, 0
  store ptr %1221, ptr %10, align 8
  %1222 = extractvalue { ptr, i32 } %1220, 1
  store i32 %1222, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %119) #10
  br label %1304

1223:                                             ; No predecessors!
  br label %1224

1224:                                             ; preds = %1223, %1204
  call void @llvm.lifetime.end.p0(i64 8, ptr %119) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %120) #10
  %1225 = invoke noundef ptr @_ZNK12UnorderedMapIPK12DexMethodRefS2_St4hashIS2_ESt8equal_toIS2_EE18ConstFixedIteratorptEv(ptr noundef nonnull align 8 dereferenceable(8) %117)
          to label %1226 unwind label %1267

1226:                                             ; preds = %1224
  %1227 = getelementptr inbounds %"struct.std::pair.258", ptr %1225, i32 0, i32 0
  %1228 = load ptr, ptr %1227, align 8, !tbaa !73
  store ptr %1228, ptr %120, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %121) #10
  %1229 = load ptr, ptr %114, align 8, !tbaa !5
  %1230 = invoke noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %1229, i16 noundef zeroext 0)
          to label %1231 unwind label %1271

1231:                                             ; preds = %1226
  store i32 %1230, ptr %121, align 4, !tbaa !55
  call void @llvm.lifetime.start.p0(i64 8, ptr %122) #10
  %1232 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 32) #12
          to label %1233 unwind label %1275

1233:                                             ; preds = %1231
  invoke void @_ZN13IRInstructionC1E8IROpcode(ptr noundef nonnull align 8 dereferenceable(32) %1232, i16 noundef zeroext 18)
          to label %1234 unwind label %1279

1234:                                             ; preds = %1233
  %1235 = load i32, ptr %121, align 4, !tbaa !55
  %1236 = invoke noundef ptr @_ZN13IRInstruction7set_srcEtj(ptr noundef nonnull align 8 dereferenceable(32) %1232, i16 noundef zeroext 0, i32 noundef %1235)
          to label %1237 unwind label %1275

1237:                                             ; preds = %1234
  %1238 = load ptr, ptr %120, align 8, !tbaa !5
  %1239 = invoke noundef ptr @_ZNK12DexMethodRef9get_classEv(ptr noundef nonnull align 8 dereferenceable(26) %1238)
          to label %1240 unwind label %1275

1240:                                             ; preds = %1237
  %1241 = invoke noundef ptr @_ZN13IRInstruction8set_typeEP7DexType(ptr noundef nonnull align 8 dereferenceable(32) %1236, ptr noundef %1239)
          to label %1242 unwind label %1275

1242:                                             ; preds = %1240
  store ptr %1241, ptr %122, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %123) #10
  %1243 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 32) #12
          to label %1244 unwind label %1283

1244:                                             ; preds = %1242
  invoke void @_ZN13IRInstructionC1E8IROpcode(ptr noundef nonnull align 8 dereferenceable(32) %1243, i16 noundef zeroext 164)
          to label %1245 unwind label %1287

1245:                                             ; preds = %1244
  %1246 = load i32, ptr %121, align 4, !tbaa !55
  %1247 = invoke noundef ptr @_ZN13IRInstruction8set_destEj(ptr noundef nonnull align 8 dereferenceable(32) %1243, i32 noundef %1246)
          to label %1248 unwind label %1283

1248:                                             ; preds = %1245
  store ptr %1247, ptr %123, align 8, !tbaa !5
  %1249 = load ptr, ptr %115, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %126) #10
  %1250 = load ptr, ptr %122, align 8, !tbaa !5
  store ptr %1250, ptr %126, align 8, !tbaa !5
  %1251 = getelementptr inbounds ptr, ptr %126, i64 1
  %1252 = load ptr, ptr %123, align 8, !tbaa !5
  store ptr %1252, ptr %1251, align 8, !tbaa !5
  %1253 = getelementptr inbounds %"class.std::initializer_list.744", ptr %125, i32 0, i32 0
  store ptr %126, ptr %1253, align 8, !tbaa !75
  %1254 = getelementptr inbounds %"class.std::initializer_list.744", ptr %125, i32 0, i32 1
  store i64 2, ptr %1254, align 8, !tbaa !77
  call void @llvm.lifetime.start.p0(i64 1, ptr %127) #10
  call void @_ZNSaIP13IRInstructionEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %127) #10
  %1255 = getelementptr inbounds { ptr, i64 }, ptr %125, i32 0, i32 0
  %1256 = load ptr, ptr %1255, align 8
  %1257 = getelementptr inbounds { ptr, i64 }, ptr %125, i32 0, i32 1
  %1258 = load i64, ptr %1257, align 8
  invoke void @_ZNSt6vectorIP13IRInstructionSaIS1_EEC2ESt16initializer_listIS1_ERKS2_(ptr noundef nonnull align 8 dereferenceable(24) %124, ptr %1256, i64 %1258, ptr noundef nonnull align 1 dereferenceable(1) %127)
          to label %1259 unwind label %1291

1259:                                             ; preds = %1248
  invoke void @_ZN3cfg11CFGMutation13insert_beforeERKNS_23InstructionIteratorImplILb0EEESt6vectorIP13IRInstructionSaIS7_EE(ptr noundef nonnull align 8 dereferenceable(64) %110, ptr noundef nonnull align 8 dereferenceable(32) %1249, ptr noundef %124)
          to label %1260 unwind label %1295

1260:                                             ; preds = %1259
  call void @_ZNSt6vectorIP13IRInstructionSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %124) #10
  call void @_ZNSt15__new_allocatorIP13IRInstructionED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %127) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %127) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %126) #10
  %1261 = load ptr, ptr %114, align 8, !tbaa !5
  %1262 = load ptr, ptr %120, align 8, !tbaa !5
  %1263 = invoke noundef ptr @_ZN13IRInstruction10set_methodEP12DexMethodRef(ptr noundef nonnull align 8 dereferenceable(32) %1261, ptr noundef %1262)
          to label %1264 unwind label %1283

1264:                                             ; preds = %1260
  call void @llvm.lifetime.end.p0(i64 8, ptr %123) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %122) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %121) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %120) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %117) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %116) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %115) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %114) #10
  br label %1265

1265:                                             ; preds = %1264
  %1266 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPP13IRInstructionSt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %112) #10
  br label %1169

1267:                                             ; preds = %1224
  %1268 = landingpad { ptr, i32 }
          cleanup
  %1269 = extractvalue { ptr, i32 } %1268, 0
  store ptr %1269, ptr %10, align 8
  %1270 = extractvalue { ptr, i32 } %1268, 1
  store i32 %1270, ptr %11, align 4
  br label %1303

1271:                                             ; preds = %1226
  %1272 = landingpad { ptr, i32 }
          cleanup
  %1273 = extractvalue { ptr, i32 } %1272, 0
  store ptr %1273, ptr %10, align 8
  %1274 = extractvalue { ptr, i32 } %1272, 1
  store i32 %1274, ptr %11, align 4
  br label %1302

1275:                                             ; preds = %1240, %1237, %1234, %1231
  %1276 = landingpad { ptr, i32 }
          cleanup
  %1277 = extractvalue { ptr, i32 } %1276, 0
  store ptr %1277, ptr %10, align 8
  %1278 = extractvalue { ptr, i32 } %1276, 1
  store i32 %1278, ptr %11, align 4
  br label %1301

1279:                                             ; preds = %1233
  %1280 = landingpad { ptr, i32 }
          cleanup
  %1281 = extractvalue { ptr, i32 } %1280, 0
  store ptr %1281, ptr %10, align 8
  %1282 = extractvalue { ptr, i32 } %1280, 1
  store i32 %1282, ptr %11, align 4
  call void @_ZdlPvm(ptr noundef %1232, i64 noundef 32) #13
  br label %1301

1283:                                             ; preds = %1260, %1245, %1242
  %1284 = landingpad { ptr, i32 }
          cleanup
  %1285 = extractvalue { ptr, i32 } %1284, 0
  store ptr %1285, ptr %10, align 8
  %1286 = extractvalue { ptr, i32 } %1284, 1
  store i32 %1286, ptr %11, align 4
  br label %1300

1287:                                             ; preds = %1244
  %1288 = landingpad { ptr, i32 }
          cleanup
  %1289 = extractvalue { ptr, i32 } %1288, 0
  store ptr %1289, ptr %10, align 8
  %1290 = extractvalue { ptr, i32 } %1288, 1
  store i32 %1290, ptr %11, align 4
  call void @_ZdlPvm(ptr noundef %1243, i64 noundef 32) #13
  br label %1300

1291:                                             ; preds = %1248
  %1292 = landingpad { ptr, i32 }
          cleanup
  %1293 = extractvalue { ptr, i32 } %1292, 0
  store ptr %1293, ptr %10, align 8
  %1294 = extractvalue { ptr, i32 } %1292, 1
  store i32 %1294, ptr %11, align 4
  br label %1299

1295:                                             ; preds = %1259
  %1296 = landingpad { ptr, i32 }
          cleanup
  %1297 = extractvalue { ptr, i32 } %1296, 0
  store ptr %1297, ptr %10, align 8
  %1298 = extractvalue { ptr, i32 } %1296, 1
  store i32 %1298, ptr %11, align 4
  call void @_ZNSt6vectorIP13IRInstructionSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %124) #10
  br label %1299

1299:                                             ; preds = %1295, %1291
  call void @_ZNSt15__new_allocatorIP13IRInstructionED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %127) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %127) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %126) #10
  br label %1300

1300:                                             ; preds = %1299, %1287, %1283
  call void @llvm.lifetime.end.p0(i64 8, ptr %123) #10
  br label %1301

1301:                                             ; preds = %1300, %1279, %1275
  call void @llvm.lifetime.end.p0(i64 8, ptr %122) #10
  br label %1302

1302:                                             ; preds = %1301, %1271
  call void @llvm.lifetime.end.p0(i64 4, ptr %121) #10
  br label %1303

1303:                                             ; preds = %1302, %1267
  call void @llvm.lifetime.end.p0(i64 8, ptr %120) #10
  br label %1304

1304:                                             ; preds = %1303, %1219, %1215
  call void @llvm.lifetime.end.p0(i64 8, ptr %117) #10
  br label %1305

1305:                                             ; preds = %1304, %1211
  call void @llvm.lifetime.end.p0(i64 8, ptr %116) #10
  br label %1306

1306:                                             ; preds = %1305, %1207
  call void @llvm.lifetime.end.p0(i64 8, ptr %115) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %114) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %113) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %112) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %111) #10
  br label %1313

1307:                                             ; preds = %1171
  invoke void @_ZN3cfg11CFGMutation5flushEv(ptr noundef nonnull align 8 dereferenceable(64) %110)
          to label %1308 unwind label %1309

1308:                                             ; preds = %1307
  call void @_ZN3cfg11CFGMutationD2Ev(ptr noundef nonnull align 8 dereferenceable(64) %110) #10
  call void @llvm.lifetime.end.p0(i64 64, ptr %110) #10
  br label %1315

1309:                                             ; preds = %1307
  %1310 = landingpad { ptr, i32 }
          cleanup
  %1311 = extractvalue { ptr, i32 } %1310, 0
  store ptr %1311, ptr %10, align 8
  %1312 = extractvalue { ptr, i32 } %1310, 1
  store i32 %1312, ptr %11, align 4
  br label %1313

1313:                                             ; preds = %1309, %1306
  call void @_ZN3cfg11CFGMutationD2Ev(ptr noundef nonnull align 8 dereferenceable(64) %110) #10
  br label %1314

1314:                                             ; preds = %1313, %1172
  call void @llvm.lifetime.end.p0(i64 64, ptr %110) #10
  br label %1316

1315:                                             ; preds = %1308, %1149
  store i1 true, ptr %3, align 1
  store i32 1, ptr %18, align 4
  call void @_ZNSt6vectorISt4pairIN8cse_impl30CommonSubexpressionElimination7ForwardEP13IRInstructionESaIS6_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %46) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %46) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #10
  call void @_ZN12UnorderedMapIP13IRInstructionN3cfg23InstructionIteratorImplILb0EEESt4hashIS1_ESt8equal_toIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %40) #10
  call void @llvm.lifetime.end.p0(i64 56, ptr %40) #10
  call void @_ZN12UnorderedSetIPK13IRInstructionSt4hashIS2_ESt8equal_toIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %14) #10
  call void @llvm.lifetime.end.p0(i64 56, ptr %14) #10
  call void @_ZN12UnorderedSetIPK13IRInstructionSt4hashIS2_ESt8equal_toIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %13) #10
  call void @llvm.lifetime.end.p0(i64 56, ptr %13) #10
  call void @_ZN12UnorderedMapImSt4pairI8IROpcodejESt4hashImESt8equal_toImEED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %12) #10
  call void @llvm.lifetime.end.p0(i64 56, ptr %12) #10
  br label %1322

1316:                                             ; preds = %1314, %1146, %1118, %1111, %874
  call void @_ZNSt6vectorISt4pairIN8cse_impl30CommonSubexpressionElimination7ForwardEP13IRInstructionESaIS6_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %46) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %46) #10
  br label %1317

1317:                                             ; preds = %1316, %478, %443
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #10
  call void @_ZN12UnorderedMapIP13IRInstructionN3cfg23InstructionIteratorImplILb0EEESt4hashIS1_ESt8equal_toIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %40) #10
  br label %1318

1318:                                             ; preds = %1317, %439
  call void @llvm.lifetime.end.p0(i64 56, ptr %40) #10
  br label %1319

1319:                                             ; preds = %1318, %424, %401, %306
  call void @_ZN12UnorderedSetIPK13IRInstructionSt4hashIS2_ESt8equal_toIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %14) #10
  br label %1320

1320:                                             ; preds = %1319, %195
  call void @llvm.lifetime.end.p0(i64 56, ptr %14) #10
  call void @_ZN12UnorderedSetIPK13IRInstructionSt4hashIS2_ESt8equal_toIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %13) #10
  br label %1321

1321:                                             ; preds = %1320, %191
  call void @llvm.lifetime.end.p0(i64 56, ptr %13) #10
  call void @_ZN12UnorderedMapImSt4pairI8IROpcodejESt4hashImESt8equal_toImEED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %12) #10
  call void @llvm.lifetime.end.p0(i64 56, ptr %12) #10
  br label %1324

1322:                                             ; preds = %1315, %161
  %1323 = load i1, ptr %3, align 1
  ret i1 %1323

1324:                                             ; preds = %1321, %173
  %1325 = load ptr, ptr %10, align 8
  %1326 = load i32, ptr %11, align 4
  %1327 = insertvalue { ptr, i32 } poison, ptr %1325, 0
  %1328 = insertvalue { ptr, i32 } %1327, i32 %1326, 1
  resume { ptr, i32 } %1328

1329:                                             ; preds = %1101, %280
  unreachable
}

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3cfg16ControlFlowGraph12delete_edgesIN9__gnu_cxx17__normal_iteratorIPPNS_4EdgeESt6vectorIS5_SaIS5_EEEEEEvRKT_SD_(ptr noundef nonnull align 8 dereferenceable(160), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) #7 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

declare i64 @_ZN3cfg16ControlFlowGraph25remove_unreachable_blocksEv(ptr noundef nonnull align 8 dereferenceable(160)) #3

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef i64 @_ZNK12UnorderedMapImSt4pairI8IROpcodejESt4hashImESt8equal_toImEE5countERKm(ptr noundef nonnull align 8 dereferenceable(56), ptr noundef nonnull align 8 dereferenceable(8)) #7 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) #7 align 2

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN8cse_implL25get_move_or_const_literalERKN6sparta15PatriciaTreeSetIPK13IRInstructionEE(ptr dead_on_unwind noalias writable sret(%"struct.std::pair.680") align 8, ptr noundef nonnull align 8 dereferenceable(8)) #7

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local i64 @_ZSt9make_pairIR8IROpcodeRjESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS4_INS5_IT0_E4typeEE6__typeEEOS6_OSB_(ptr noundef nonnull align 2 dereferenceable(2), ptr noundef nonnull align 4 dereferenceable(4)) #7

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN6opcode18is_a_literal_constE8IROpcode(i16 noundef zeroext) #6

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

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

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

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

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

declare noundef zeroext i1 @_ZN3cfg16ControlFlowGraph12insert_afterERKNS_23InstructionIteratorImplILb0EEEP13IRInstruction(ptr noundef nonnull align 8 dereferenceable(160), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef) #3

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorISt4pairIN8cse_impl30CommonSubexpressionElimination7ForwardEP13IRInstructionESaIS6_EE12emplace_backIJRKS3_RS5_EEERS6_DpOT_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(8)) #7 align 2

declare noundef zeroext i1 @_ZN6opcode18is_move_result_anyE8IROpcode(i16 noundef zeroext) #3

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

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare hidden void @"_ZSt4sortIN9__gnu_cxx17__normal_iteratorIPPK13IRInstructionSt6vectorIS4_SaIS4_EEEEZN8cse_impl30CommonSubexpressionElimination5patchEbE3$_1EvT_SD_T0_"(ptr, ptr, ptr) #9

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

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

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

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

declare noundef zeroext i1 @_ZN3cfg16ControlFlowGraph13insert_beforeERKNS_23InstructionIteratorImplILb0EEEP13IRInstruction(ptr noundef nonnull align 8 dereferenceable(160), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef) #3

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN3cfg11CFGMutationC2ERNS_16ControlFlowGraphE(ptr noundef nonnull align 8 dereferenceable(64), ptr noundef nonnull align 8 dereferenceable(160)) unnamed_addr #9 align 2

; Function Attrs: mustprogress uwtable
declare hidden ptr @"_Z17unordered_find_ifI12UnorderedMapIPK12DexMethodRefS3_St4hashIS3_ESt8equal_toIS3_EEZN8cse_impl30CommonSubexpressionElimination5patchEbE3$_0EDaRKT_T0_"(ptr noundef nonnull align 8 dereferenceable(56), ptr) #7

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN3cfg11CFGMutation13insert_beforeERKNS_23InstructionIteratorImplILb0EEESt6vectorIP13IRInstructionSaIS7_EE(ptr noundef nonnull align 8 dereferenceable(64), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef) #9 align 2

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

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

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

declare void @_ZN3cfg11CFGMutation5flushEv(ptr noundef nonnull align 8 dereferenceable(64)) #3

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

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

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

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

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

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"bool", !7, i64 0}
!11 = !{!12, !6, i64 128}
!12 = !{!"_ZTSN8cse_impl30CommonSubexpressionEliminationE", !13, i64 0, !20, i64 56, !24, i64 80, !28, i64 104, !6, i64 128, !32, i64 136, !10, i64 256, !6, i64 264, !6, i64 272, !36, i64 280, !6, i64 304}
!13 = !{!"_ZTS12UnorderedMapIPK13IRInstructionmSt4hashIS2_ESt8equal_toIS2_EE", !14, i64 0}
!14 = !{!"_ZTSSt13unordered_mapIPK13IRInstructionmSt4hashIS2_ESt8equal_toIS2_ESaISt4pairIKS2_mEEE", !15, i64 0}
!15 = !{!"_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, !16, i64 8, !17, i64 16, !16, i64 24, !18, i64 32, !6, i64 48}
!16 = !{!"long", !7, i64 0}
!17 = !{!"_ZTSNSt8__detail15_Hash_node_baseE", !6, i64 0}
!18 = !{!"_ZTSNSt8__detail20_Prime_rehash_policyE", !19, i64 0, !16, i64 8}
!19 = !{!"float", !7, i64 0}
!20 = !{!"_ZTSSt6vectorIN8cse_impl30CommonSubexpressionElimination7ForwardESaIS2_EE", !21, i64 0}
!21 = !{!"_ZTSSt12_Vector_baseIN8cse_impl30CommonSubexpressionElimination7ForwardESaIS2_EE", !22, i64 0}
!22 = !{!"_ZTSNSt12_Vector_baseIN8cse_impl30CommonSubexpressionElimination7ForwardESaIS2_EE12_Vector_implE", !23, i64 0}
!23 = !{!"_ZTSNSt12_Vector_baseIN8cse_impl30CommonSubexpressionElimination7ForwardESaIS2_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!24 = !{!"_ZTSSt6vectorIPN3cfg4EdgeESaIS2_EE", !25, i64 0}
!25 = !{!"_ZTSSt12_Vector_baseIPN3cfg4EdgeESaIS2_EE", !26, i64 0}
!26 = !{!"_ZTSNSt12_Vector_baseIPN3cfg4EdgeESaIS2_EE12_Vector_implE", !27, i64 0}
!27 = !{!"_ZTSNSt12_Vector_baseIPN3cfg4EdgeESaIS2_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!28 = !{!"_ZTSSt6vectorIN6sparta15PatriciaTreeSetIPK13IRInstructionEESaIS5_EE", !29, i64 0}
!29 = !{!"_ZTSSt12_Vector_baseIN6sparta15PatriciaTreeSetIPK13IRInstructionEESaIS5_EE", !30, i64 0}
!30 = !{!"_ZTSNSt12_Vector_baseIN6sparta15PatriciaTreeSetIPK13IRInstructionEESaIS5_EE12_Vector_implE", !31, i64 0}
!31 = !{!"_ZTSNSt12_Vector_baseIN6sparta15PatriciaTreeSetIPK13IRInstructionEESaIS5_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!32 = !{!"_ZTSN8cse_impl5StatsE", !16, i64 0, !16, i64 8, !16, i64 16, !16, i64 24, !16, i64 32, !16, i64 40, !33, i64 48, !16, i64 104, !16, i64 112}
!33 = !{!"_ZTS12UnorderedMapItmSt4hashItESt8equal_toItEE", !34, i64 0}
!34 = !{!"_ZTSSt13unordered_mapItmSt4hashItESt8equal_toItESaISt4pairIKtmEEE", !35, i64 0}
!35 = !{!"_ZTSSt10_HashtableItSt4pairIKtmESaIS2_ENSt8__detail10_Select1stESt8equal_toItESt4hashItENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb0ELb0ELb1EEEE", !6, i64 0, !16, i64 8, !17, i64 16, !16, i64 24, !18, i64 32, !6, i64 48}
!36 = !{!"_ZTSSt6vectorIP13IRInstructionSaIS1_EE", !37, i64 0}
!37 = !{!"_ZTSSt12_Vector_baseIP13IRInstructionSaIS1_EE", !38, i64 0}
!38 = !{!"_ZTSNSt12_Vector_baseIP13IRInstructionSaIS1_EE12_Vector_implE", !39, i64 0}
!39 = !{!"_ZTSNSt12_Vector_baseIP13IRInstructionSaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!40 = !{!41, !42, i64 0}
!41 = !{!"_ZTSSt4pairIjbE", !42, i64 0, !10, i64 4}
!42 = !{!"int", !7, i64 0}
!43 = !{!12, !16, i64 160}
!44 = !{!12, !16, i64 248}
!45 = !{!46, !16, i64 0}
!46 = !{!"_ZTSN8cse_impl30CommonSubexpressionElimination7ForwardE", !16, i64 0, !6, i64 8}
!47 = !{!48, !49, i64 0}
!48 = !{!"_ZTSSt4pairI8IROpcodeSt8optionalIlEE", !49, i64 0, !50, i64 8}
!49 = !{!"_ZTS8IROpcode", !7, i64 0}
!50 = !{!"_ZTSSt8optionalIlE", !51, i64 0}
!51 = !{!"_ZTSSt14_Optional_baseIlLb1ELb1EE", !52, i64 0}
!52 = !{!"_ZTSSt17_Optional_payloadIlLb1ELb1ELb1EE", !53, i64 0}
!53 = !{!"_ZTSSt22_Optional_payload_baseIlE", !7, i64 0, !10, i64 8}
!54 = !{!49, !49, i64 0}
!55 = !{!42, !42, i64 0}
!56 = !{!12, !16, i64 136}
!57 = !{!12, !16, i64 152}
!58 = !{!12, !16, i64 144}
!59 = !{!7, !7, i64 0}
!60 = distinct !{!60, !61}
!61 = !{!"llvm.loop.mustprogress"}
!62 = !{!46, !6, i64 8}
!63 = !{!16, !16, i64 0}
!64 = !{i8 0, i8 2}
!65 = !{}
!66 = !{!67, !67, i64 0}
!67 = !{!"short", !7, i64 0}
!68 = !{!69, !6, i64 0}
!69 = !{!"_ZTSZN8cse_impl30CommonSubexpressionElimination5patchEbE3$_1", !6, i64 0}
!70 = !{!12, !6, i64 304}
!71 = !{!72, !6, i64 0}
!72 = !{!"_ZTSZN8cse_impl30CommonSubexpressionElimination5patchEbE3$_0", !6, i64 0}
!73 = !{!74, !6, i64 0}
!74 = !{!"_ZTSSt4pairIKPK12DexMethodRefS2_E", !6, i64 0, !6, i64 8}
!75 = !{!76, !6, i64 0}
!76 = !{!"_ZTSSt16initializer_listIP13IRInstructionE", !6, i64 0, !16, i64 8}
!77 = !{!76, !16, i64 8}


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

%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"class.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.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.UnorderedMap.642 = type { %"class.std::unordered_map.644" }
%"class.std::unordered_map.644" = type { %"class.std::_Hashtable.645" }
%"class.std::_Hashtable.645" = 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.UnorderedSet.658 = type { %"class.std::unordered_set.660" }
%"class.std::unordered_set.660" = type { %"class.std::_Hashtable.661" }
%"class.std::_Hashtable.661" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"class.__gnu_cxx::__normal_iterator.674" = type { ptr }
%"struct.std::pair.680" = type { i16, [6 x i8], %"class.std::optional" }
%"class.std::optional" = type { %"struct.std::_Optional_base" }
%"struct.std::_Optional_base" = type { %"struct.std::_Optional_payload" }
%"struct.std::_Optional_payload" = type { %"struct.std::_Optional_payload_base.base", [7 x i8] }
%"struct.std::_Optional_payload_base.base" = type <{ %"union.std::_Optional_payload_base<long>::_Storage", i8 }>
%"union.std::_Optional_payload_base<long>::_Storage" = type { i64 }
%"struct.std::pair.687" = type { i16, i32 }
%"class.UnorderedSet<const IRInstruction *>::UnorderedIterable" = type { ptr }
%"struct.std::__detail::_Node_iterator.677" = type { %"struct.std::__detail::_Node_iterator_base.678" }
%"struct.std::__detail::_Node_iterator_base.678" = type { ptr }
%"class.__gnu_cxx::__normal_iterator.689" = type { ptr }
%class.UnorderedMap.690 = type { %"class.std::unordered_map.692" }
%"class.std::unordered_map.692" = type { %"class.std::_Hashtable.693" }
%"class.std::_Hashtable.693" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"class.cfg::InstructionIterableImpl" = type { ptr }
%"class.std::vector.711" = type { %"struct.std::_Vector_base.712" }
%"struct.std::_Vector_base.712" = type { %"struct.std::_Vector_base<std::pair<cse_impl::CommonSubexpressionElimination::Forward, IRInstruction *>, std::allocator<std::pair<cse_impl::CommonSubexpressionElimination::Forward, IRInstruction *>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::pair<cse_impl::CommonSubexpressionElimination::Forward, IRInstruction *>, std::allocator<std::pair<cse_impl::CommonSubexpressionElimination::Forward, IRInstruction *>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::pair<cse_impl::CommonSubexpressionElimination::Forward, IRInstruction *>, std::allocator<std::pair<cse_impl::CommonSubexpressionElimination::Forward, IRInstruction *>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::pair<cse_impl::CommonSubexpressionElimination::Forward, IRInstruction *>, std::allocator<std::pair<cse_impl::CommonSubexpressionElimination::Forward, IRInstruction *>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.UnorderedMap<unsigned long, std::pair<IROpcode, unsigned int>>::FixedIterator" = type { %"struct.std::__detail::_Node_iterator.684" }
%"struct.std::__detail::_Node_iterator.684" = type { %"struct.std::__detail::_Node_iterator_base.685" }
%"struct.std::__detail::_Node_iterator_base.685" = type { ptr }
%"class.std::vector.720" = type { %"struct.std::_Vector_base.721" }
%"struct.std::_Vector_base.721" = type { %"struct.std::_Vector_base<const IRInstruction *, std::allocator<const IRInstruction *>>::_Vector_impl" }
%"struct.std::_Vector_base<const IRInstruction *, std::allocator<const IRInstruction *>>::_Vector_impl" = type { %"struct.std::_Vector_base<const IRInstruction *, std::allocator<const IRInstruction *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<const IRInstruction *, std::allocator<const IRInstruction *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::allocator.722" = type { i8 }
%"class.__gnu_cxx::__normal_iterator.725" = type { ptr }
%"class.cfg::CFGMutation" = type { ptr, %class.UnorderedMap.727 }
%class.UnorderedMap.727 = type { %"class.std::unordered_map.729" }
%"class.std::unordered_map.729" = type { %"class.std::_Hashtable.730" }
%"class.std::_Hashtable.730" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"class.UnorderedMap<const DexMethodRef *, const DexMethodRef *>::ConstFixedIterator" = type { %"struct.std::__detail::_Node_const_iterator.257" }
%"struct.std::__detail::_Node_const_iterator.257" = type { %"struct.std::__detail::_Node_iterator_base.152" }
%"struct.std::__detail::_Node_iterator_base.152" = type { 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 }
%"class.std::allocator.333" = type { 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.122 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.123 = external hidden unnamed_addr constant [135 x i8], align 1
@__PRETTY_FUNCTION__._ZN8cse_impl30CommonSubexpressionElimination5patchEb = external hidden unnamed_addr constant [59 x i8], align 1
@.str.124 = external hidden unnamed_addr constant [41 x i8], align 1
@.str.125 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.126 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.127 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.128 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.129 = external hidden unnamed_addr constant [35 x i8], align 1
@.str.130 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.131 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.132 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.133 = external hidden unnamed_addr constant [26 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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN6opcode12is_an_invokeE8IROpcode(i16 noundef zeroext) local_unnamed_addr #5

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN6opcode10is_an_aputE8IROpcode(i16 noundef zeroext) local_unnamed_addr #5

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN6opcode10is_an_iputE8IROpcode(i16 noundef zeroext) local_unnamed_addr #5

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN6opcode10is_an_sputE8IROpcode(i16 noundef zeroext) local_unnamed_addr #5

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN6opcode9is_a_moveE8IROpcode(i16 noundef zeroext) local_unnamed_addr #5

; 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 void @_ZNSt6vectorIP13IRInstructionSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #1 align 2

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3cfg23InstructionIterableImplILb0EE3endEv(ptr dead_on_unwind noalias writable sret(%"class.cfg::InstructionIteratorImpl") 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 @_ZNK3cfg23InstructionIteratorImplILb0EEneERKS1_(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #6 align 2

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

; Function Attrs: mustprogress uwtable
define dso_local noundef zeroext i1 @_ZN8cse_impl30CommonSubexpressionElimination5patchEb(ptr noundef nonnull align 8 dereferenceable(312) %0, i1 noundef zeroext %1) local_unnamed_addr #6 align 2 personality ptr @__gxx_personality_v0 {
  %3 = alloca %"class.__gnu_cxx::__normal_iterator.638", align 8
  %4 = alloca %"class.__gnu_cxx::__normal_iterator.638", align 8
  %5 = alloca %"class.std::__cxx11::basic_string", align 8
  %6 = alloca %class.UnorderedMap.642, align 8
  %7 = alloca %class.UnorderedSet.658, align 8
  %8 = alloca %class.UnorderedSet.658, align 8
  %9 = alloca %"class.__gnu_cxx::__normal_iterator.674", align 8
  %10 = alloca %"class.__gnu_cxx::__normal_iterator.674", align 8
  %11 = alloca %"struct.std::pair.680", align 8
  %12 = alloca i16, align 2
  %13 = alloca %"class.sparta::pt_core::PatriciaTreeIterator", align 8
  %14 = alloca %"class.sparta::pt_core::PatriciaTreeIterator", align 8
  %15 = alloca i32, align 4
  %16 = alloca %"struct.std::pair.687", align 8
  %17 = alloca %"class.UnorderedSet<const IRInstruction *>::UnorderedIterable", align 8
  %18 = alloca %"struct.std::__detail::_Node_iterator.677", align 8
  %19 = alloca %"struct.std::__detail::_Node_iterator.677", align 8
  %20 = alloca ptr, align 8
  %21 = alloca %"class.__gnu_cxx::__normal_iterator.689", align 8
  %22 = alloca %"class.__gnu_cxx::__normal_iterator.689", align 8
  %23 = alloca ptr, align 8
  %24 = alloca %class.UnorderedMap.690, align 8
  %25 = alloca %"class.cfg::InstructionIterableImpl", align 8
  %26 = alloca %"class.cfg::InstructionIteratorImpl", align 8
  %27 = alloca %"class.cfg::InstructionIteratorImpl", align 8
  %28 = alloca ptr, align 8
  %29 = alloca %"class.std::vector.711", align 8
  %30 = alloca %"class.__gnu_cxx::__normal_iterator.674", align 8
  %31 = alloca %"class.__gnu_cxx::__normal_iterator.674", align 8
  %32 = alloca ptr, align 8
  %33 = alloca %"class.UnorderedMap<unsigned long, std::pair<IROpcode, unsigned int>>::FixedIterator", align 8
  %34 = alloca %"class.UnorderedMap<unsigned long, std::pair<IROpcode, unsigned int>>::FixedIterator", align 8
  %35 = alloca %"struct.std::pair.680", align 8
  %36 = alloca %"class.sparta::pt_core::PatriciaTreeIterator", align 8
  %37 = alloca %"class.sparta::pt_core::PatriciaTreeIterator", align 8
  %38 = alloca %"class.std::__cxx11::basic_string", align 8
  %39 = alloca %"class.std::__cxx11::basic_string", align 8
  %40 = alloca %"struct.std::pair.687", align 8
  %41 = alloca ptr, align 8
  %42 = alloca %"class.sparta::pt_core::PatriciaTreeIterator", align 8
  %43 = alloca %"class.sparta::pt_core::PatriciaTreeIterator", align 8
  %44 = alloca %"class.std::__cxx11::basic_string", align 8
  %45 = alloca %"class.std::__cxx11::basic_string", align 8
  %46 = alloca %"class.cfg::InstructionIteratorImpl", align 8
  %47 = alloca %"class.std::__cxx11::basic_string", align 8
  %48 = alloca i16, align 2
  %49 = alloca %"class.__gnu_cxx::__normal_iterator.674", align 8
  %50 = alloca %"class.__gnu_cxx::__normal_iterator.674", align 8
  %51 = alloca %"class.UnorderedMap<unsigned long, std::pair<IROpcode, unsigned int>>::FixedIterator", align 8
  %52 = alloca %"class.UnorderedMap<unsigned long, std::pair<IROpcode, unsigned int>>::FixedIterator", align 8
  %53 = alloca %"struct.std::pair.687", align 8
  %54 = alloca %"class.std::vector.720", align 8
  %55 = alloca %"class.sparta::pt_core::PatriciaTreeIterator", align 8
  %56 = alloca %"class.sparta::pt_core::PatriciaTreeIterator", align 8
  %57 = alloca %"class.std::allocator.722", align 1
  %58 = alloca %"class.__gnu_cxx::__normal_iterator.725", align 8
  %59 = alloca %"class.__gnu_cxx::__normal_iterator.725", align 8
  %60 = alloca ptr, align 8
  %61 = alloca %"class.std::__cxx11::basic_string", align 8
  %62 = alloca %"class.cfg::CFGMutation", align 8
  %63 = alloca %"class.__gnu_cxx::__normal_iterator.689", align 8
  %64 = alloca %"class.__gnu_cxx::__normal_iterator.689", align 8
  %65 = alloca ptr, align 8
  %66 = alloca %"class.UnorderedMap<const DexMethodRef *, const DexMethodRef *>::ConstFixedIterator", align 8
  %67 = alloca %"class.UnorderedMap<const DexMethodRef *, const DexMethodRef *>::ConstFixedIterator", align 8
  %68 = alloca %"class.std::vector.331", align 8
  %69 = alloca [2 x ptr], align 8
  %70 = alloca %"class.std::allocator.333", align 1
  %71 = getelementptr inbounds i8, ptr %0, i64 80
  %72 = tail call noundef zeroext i1 @_ZNKSt6vectorIPN3cfg4EdgeESaIS2_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %71) #9
  br i1 %72, label %88, label %73

73:                                               ; preds = %2
  %74 = getelementptr inbounds i8, ptr %0, i64 128
  %75 = load ptr, ptr %74, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %3) #9
  %76 = tail call ptr @_ZNSt6vectorIPN3cfg4EdgeESaIS2_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %71) #9
  store ptr %76, ptr %3, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %4) #9
  %77 = tail call ptr @_ZNSt6vectorIPN3cfg4EdgeESaIS2_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %71) #9
  store ptr %77, ptr %4, align 8
  call void @_ZN3cfg16ControlFlowGraph12delete_edgesIN9__gnu_cxx17__normal_iteratorIPPNS_4EdgeESt6vectorIS5_SaIS5_EEEEEEvRKT_SD_(ptr noundef nonnull align 8 dereferenceable(160) %75, ptr noundef nonnull align 8 dereferenceable(8) %3, ptr noundef nonnull align 8 dereferenceable(8) %4)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %3) #9
  %78 = load ptr, ptr %74, align 8, !tbaa !5
  %79 = call i64 @_ZN3cfg16ControlFlowGraph25remove_unreachable_blocksEv(ptr noundef nonnull align 8 dereferenceable(160) %78)
  %80 = and i64 %79, 4294967295
  %81 = getelementptr inbounds i8, ptr %0, i64 160
  %82 = load i64, ptr %81, align 8, !tbaa !38
  %83 = add i64 %82, %80
  store i64 %83, ptr %81, align 8, !tbaa !38
  %84 = call noundef i64 @_ZNKSt6vectorIPN3cfg4EdgeESaIS2_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %71) #9
  %85 = getelementptr inbounds i8, ptr %0, i64 248
  %86 = load i64, ptr %85, align 8, !tbaa !39
  %87 = add i64 %86, %84
  store i64 %87, ptr %85, align 8, !tbaa !39
  br label %88

88:                                               ; preds = %73, %2
  %89 = getelementptr inbounds i8, ptr %0, i64 56
  %90 = call noundef zeroext i1 @_ZNKSt6vectorIN8cse_impl30CommonSubexpressionElimination7ForwardESaIS2_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %89) #9
  br i1 %90, label %91, label %94

91:                                               ; preds = %88
  %92 = call noundef zeroext i1 @_ZNKSt6vectorIPN3cfg4EdgeESaIS2_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %71) #9
  %93 = xor i1 %92, true
  br label %680

94:                                               ; preds = %88
  %95 = call noundef zeroext i1 @_Z12traceEnabled11TraceModulei(i32 noundef 29, i32 noundef 5)
  br i1 %95, label %96, label %103

96:                                               ; preds = %94
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %5) #9
  %97 = getelementptr inbounds i8, ptr %0, i64 128
  %98 = load ptr, ptr %97, align 8, !tbaa !5
  call void @_Z4showB5cxx11RKN3cfg16ControlFlowGraphEb(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %5, ptr noundef nonnull align 8 dereferenceable(160) %98, i1 noundef zeroext false)
  %99 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %5) #9
  invoke void (i32, i32, i1, ptr, ...) @_Z5trace11TraceModuleibPKcz(i32 noundef 29, i32 noundef 5, i1 noundef zeroext false, ptr noundef nonnull @.str.122, ptr noundef %99)
          to label %100 unwind label %101

100:                                              ; preds = %96
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %5) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5) #9
  br label %103

101:                                              ; preds = %96
  %102 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %5) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5) #9
  br label %681

103:                                              ; preds = %94, %100
  call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %6) #9
  call void @_ZN12UnorderedMapImSt4pairI8IROpcodejESt4hashImESt8equal_toImEEC2Ev(ptr noundef nonnull align 8 dereferenceable(56) %6)
  call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %7) #9
  call void @_ZN12UnorderedSetIPK13IRInstructionSt4hashIS2_ESt8equal_toIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(56) %7)
  call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %8) #9
  call void @_ZN12UnorderedSetIPK13IRInstructionSt4hashIS2_ESt8equal_toIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(56) %8)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %9) #9
  %104 = call ptr @_ZNSt6vectorIN8cse_impl30CommonSubexpressionElimination7ForwardESaIS2_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %89) #9
  store ptr %104, ptr %9, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %10) #9
  %105 = call ptr @_ZNSt6vectorIN8cse_impl30CommonSubexpressionElimination7ForwardESaIS2_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %89) #9
  store ptr %105, ptr %10, align 8
  %106 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN8cse_impl30CommonSubexpressionElimination7ForwardESt6vectorIS3_SaIS3_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %9, ptr noundef nonnull align 8 dereferenceable(8) %10) #9
  br i1 %106, label %.lr.ph, label %._crit_edge

.lr.ph:                                           ; preds = %103
  %107 = getelementptr inbounds i8, ptr %0, i64 104
  %108 = getelementptr inbounds i8, ptr %0, i64 128
  br label %110

._crit_edge:                                      ; preds = %150, %103
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %17) #9
  %109 = invoke ptr @_Z17UnorderedIterableI12UnorderedSetIPK13IRInstructionSt4hashIS3_ESt8equal_toIS3_EETnNSt9enable_ifIXsr3stdE12is_base_of_vI13UnorderedBaseIT_ESB_EEbE4typeELb1EEDaRSB_(ptr noundef nonnull align 8 dereferenceable(56) %8)
          to label %163 unwind label %174

110:                                              ; preds = %.lr.ph, %150
  %111 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN8cse_impl30CommonSubexpressionElimination7ForwardESt6vectorIS3_SaIS3_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %9) #9
  %112 = getelementptr inbounds i8, ptr %111, i64 8
  %113 = invoke { ptr, i8 } @_ZN12UnorderedSetIPK13IRInstructionSt4hashIS2_ESt8equal_toIS2_EE6insertERKS2_(ptr noundef nonnull align 8 dereferenceable(56) %7, ptr noundef nonnull align 8 dereferenceable(8) %112)
          to label %114 unwind label %117

114:                                              ; preds = %110
  %115 = invoke noundef i64 @_ZNK12UnorderedMapImSt4pairI8IROpcodejESt4hashImESt8equal_toImEE5countERKm(ptr noundef nonnull align 8 dereferenceable(56) %6, ptr noundef nonnull align 8 dereferenceable(8) %111)
          to label %116 unwind label %117

116:                                              ; preds = %114
  %.not217 = icmp eq i64 %115, 0
  br i1 %.not217, label %119, label %150

117:                                              ; preds = %114, %110
  %118 = landingpad { ptr, i32 }
          cleanup
  br label %162

119:                                              ; preds = %116
  %120 = load i64, ptr %111, align 8, !tbaa !40
  %121 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIN6sparta15PatriciaTreeSetIPK13IRInstructionEESaIS5_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %107, i64 noundef %120)
          to label %122 unwind label %126

122:                                              ; preds = %119
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %11) #9
  invoke void @_ZN8cse_implL25get_move_or_const_literalERKN6sparta15PatriciaTreeSetIPK13IRInstructionEE(ptr dead_on_unwind nonnull writable sret(%"struct.std::pair.680") align 8 %11, ptr noundef nonnull align 8 dereferenceable(8) %121)
          to label %123 unwind label %128

123:                                              ; preds = %122
  call void @llvm.lifetime.start.p0(i64 2, ptr nonnull %12) #9
  %124 = load i16, ptr %11, align 8, !tbaa !42
  store i16 %124, ptr %12, align 2, !tbaa !49
  %125 = call noundef zeroext i1 @_ZN6opcode9is_a_moveE8IROpcode(i16 noundef zeroext %124)
  br i1 %125, label %132, label %149

126:                                              ; preds = %119
  %127 = landingpad { ptr, i32 }
          cleanup
  br label %162

128:                                              ; preds = %122
  %129 = landingpad { ptr, i32 }
          cleanup
  br label %161

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

132:                                              ; preds = %123
  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) %121)
          to label %133 unwind label %130

133:                                              ; preds = %132
  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) %121)
          to label %134 unwind label %153

134:                                              ; preds = %133
  invoke void @_ZN12UnorderedSetIPK13IRInstructionSt4hashIS2_ESt8equal_toIS2_EE6insertIN6sparta7pt_core20PatriciaTreeIteratorIS2_NSA_10EmptyValueEEEEEvT_SE_(ptr noundef nonnull align 8 dereferenceable(56) %8, ptr noundef nonnull %13, ptr noundef nonnull %14)
          to label %135 unwind label %155

135:                                              ; preds = %134
  call void @_ZN6sparta7pt_core20PatriciaTreeIteratorIPK13IRInstructionNS0_10EmptyValueEED2Ev(ptr noundef nonnull align 8 dereferenceable(96) %14) #9
  call void @_ZN6sparta7pt_core20PatriciaTreeIteratorIPK13IRInstructionNS0_10EmptyValueEED2Ev(ptr noundef nonnull align 8 dereferenceable(96) %13) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %15) #9
  %136 = load i16, ptr %12, align 2, !tbaa !49
  %137 = icmp eq i16 %136, 2
  %138 = load ptr, ptr %108, align 8, !tbaa !5
  br i1 %137, label %139, label %141

139:                                              ; preds = %135
  %140 = call noundef i32 @_ZN3cfg16ControlFlowGraph18allocate_wide_tempEv(ptr noundef nonnull align 8 dereferenceable(160) %138)
  br label %143

141:                                              ; preds = %135
  %142 = call noundef i32 @_ZN3cfg16ControlFlowGraph13allocate_tempEv(ptr noundef nonnull align 8 dereferenceable(160) %138)
  br label %143

143:                                              ; preds = %141, %139
  %144 = phi i32 [ %140, %139 ], [ %142, %141 ]
  store i32 %144, ptr %15, align 4, !tbaa !50
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %16) #9
  %145 = invoke i64 @_ZSt9make_pairIR8IROpcodeRjESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS4_INS5_IT0_E4typeEE6__typeEEOS6_OSB_(ptr noundef nonnull align 2 dereferenceable(2) %12, ptr noundef nonnull align 4 dereferenceable(4) %15)
          to label %146 unwind label %158

146:                                              ; preds = %143
  store i64 %145, ptr %16, align 8
  %147 = invoke { ptr, i8 } @_ZN12UnorderedMapImSt4pairI8IROpcodejESt4hashImESt8equal_toImEE7emplaceIJRKmS2_EEES0_INS7_13FixedIteratorEbEDpOT_(ptr noundef nonnull align 8 dereferenceable(56) %6, ptr noundef nonnull align 8 dereferenceable(8) %111, ptr noundef nonnull align 4 dereferenceable(8) %16)
          to label %148 unwind label %158

148:                                              ; preds = %146
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %15) #9
  br label %149

149:                                              ; preds = %123, %148
  call void @llvm.lifetime.end.p0(i64 2, ptr nonnull %12) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %11) #9
  br label %150

150:                                              ; preds = %116, %149
  %151 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPN8cse_impl30CommonSubexpressionElimination7ForwardESt6vectorIS3_SaIS3_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %9) #9
  %152 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN8cse_impl30CommonSubexpressionElimination7ForwardESt6vectorIS3_SaIS3_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %9, ptr noundef nonnull align 8 dereferenceable(8) %10) #9
  br i1 %152, label %110, label %._crit_edge

153:                                              ; preds = %133
  %154 = landingpad { ptr, i32 }
          cleanup
  br label %157

155:                                              ; preds = %134
  %156 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN6sparta7pt_core20PatriciaTreeIteratorIPK13IRInstructionNS0_10EmptyValueEED2Ev(ptr noundef nonnull align 8 dereferenceable(96) %14) #9
  br label %157

157:                                              ; preds = %155, %153
  %.pn218 = phi { ptr, i32 } [ %156, %155 ], [ %154, %153 ]
  call void @_ZN6sparta7pt_core20PatriciaTreeIteratorIPK13IRInstructionNS0_10EmptyValueEED2Ev(ptr noundef nonnull align 8 dereferenceable(96) %13) #9
  br label %160

158:                                              ; preds = %146, %143
  %159 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %15) #9
  br label %160

160:                                              ; preds = %158, %157, %130
  %.pn220 = phi { ptr, i32 } [ %159, %158 ], [ %.pn218, %157 ], [ %131, %130 ]
  call void @llvm.lifetime.end.p0(i64 2, ptr nonnull %12) #9
  br label %161

161:                                              ; preds = %160, %128
  %.pn220.pn = phi { ptr, i32 } [ %.pn220, %160 ], [ %129, %128 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %11) #9
  br label %162

162:                                              ; preds = %126, %161, %117
  %.pn220.pn.pn.pn = phi { ptr, i32 } [ %118, %117 ], [ %.pn220.pn, %161 ], [ %127, %126 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #9
  br label %679

163:                                              ; preds = %._crit_edge
  store ptr %109, ptr %17, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %18) #9
  %164 = call ptr @_ZN12UnorderedSetIPK13IRInstructionSt4hashIS2_ESt8equal_toIS2_EE17UnorderedIterable5beginEv(ptr noundef nonnull align 8 dereferenceable(8) %17)
  store ptr %164, ptr %18, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %19) #9
  %165 = call ptr @_ZN12UnorderedSetIPK13IRInstructionSt4hashIS2_ESt8equal_toIS2_EE17UnorderedIterable3endEv(ptr noundef nonnull align 8 dereferenceable(8) %17)
  store ptr %165, ptr %19, align 8
  %166 = call noundef zeroext i1 @_ZNSt8__detailneERKNS_19_Node_iterator_baseIPK13IRInstructionLb0EEES6_(ptr noundef nonnull align 8 dereferenceable(8) %18, ptr noundef nonnull align 8 dereferenceable(8) %19) #9
  br i1 %166, label %.lr.ph303, label %._crit_edge304

.lr.ph303:                                        ; preds = %163
  %167 = getelementptr inbounds i8, ptr %0, i64 144
  %168 = getelementptr inbounds i8, ptr %0, i64 152
  %169 = getelementptr inbounds i8, ptr %0, i64 136
  br label %176

._crit_edge304:                                   ; preds = %203, %163
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #9
  %170 = getelementptr inbounds i8, ptr %0, i64 280
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %21) #9
  %171 = call ptr @_ZNSt6vectorIP13IRInstructionSaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %170) #9
  store ptr %171, ptr %21, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %22) #9
  %172 = call ptr @_ZNSt6vectorIP13IRInstructionSaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %170) #9
  store ptr %172, ptr %22, align 8
  %173 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPP13IRInstructionSt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %21, ptr noundef nonnull align 8 dereferenceable(8) %22) #9
  br i1 %173, label %.lr.ph306, label %._crit_edge307

174:                                              ; preds = %._crit_edge
  %175 = landingpad { ptr, i32 }
          cleanup
  br label %679

176:                                              ; preds = %.lr.ph303, %203
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %20) #9
  %177 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8__detail14_Node_iteratorIPK13IRInstructionLb1ELb0EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %18) #9
  %178 = load ptr, ptr %177, align 8, !tbaa !52
  store ptr %178, ptr %20, align 8, !tbaa !52
  %179 = invoke { ptr, i8 } @_ZN12UnorderedSetIPK13IRInstructionSt4hashIS2_ESt8equal_toIS2_EE6insertERKS2_(ptr noundef nonnull align 8 dereferenceable(56) %7, ptr noundef nonnull align 8 dereferenceable(8) %20)
          to label %180 unwind label %.loopexit264

180:                                              ; preds = %176
  %181 = load ptr, ptr %20, align 8, !tbaa !52
  %182 = invoke noundef zeroext i1 @_ZNK13IRInstruction8has_destEv(ptr noundef nonnull align 8 dereferenceable(32) %181)
          to label %183 unwind label %.loopexit264

183:                                              ; preds = %180
  br i1 %182, label %203, label %185

.loopexit264:                                     ; preds = %176, %180
  %lpad.loopexit266 = landingpad { ptr, i32 }
          cleanup
  br label %184

.loopexit.split-lp265:                            ; preds = %201
  %lpad.loopexit.split-lp267 = landingpad { ptr, i32 }
          cleanup
  br label %184

184:                                              ; preds = %.loopexit.split-lp265, %.loopexit264
  %lpad.phi268 = phi { ptr, i32 } [ %lpad.loopexit266, %.loopexit264 ], [ %lpad.loopexit.split-lp267, %.loopexit.split-lp265 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #9
  br label %679

185:                                              ; preds = %183
  %186 = load ptr, ptr %20, align 8, !tbaa !52
  %187 = call noundef zeroext i16 @_ZNK13IRInstruction6opcodeEv(ptr noundef nonnull align 8 dereferenceable(32) %186)
  %188 = icmp eq i16 %187, 22
  br i1 %188, label %203, label %189

189:                                              ; preds = %185
  %190 = load ptr, ptr %20, align 8, !tbaa !52
  %191 = call noundef zeroext i16 @_ZNK13IRInstruction6opcodeEv(ptr noundef nonnull align 8 dereferenceable(32) %190)
  %192 = call noundef zeroext i1 @_ZN6opcode10is_an_aputE8IROpcode(i16 noundef zeroext %191)
  br i1 %192, label %203, label %193

193:                                              ; preds = %189
  %194 = load ptr, ptr %20, align 8, !tbaa !52
  %195 = call noundef zeroext i16 @_ZNK13IRInstruction6opcodeEv(ptr noundef nonnull align 8 dereferenceable(32) %194)
  %196 = call noundef zeroext i1 @_ZN6opcode10is_an_iputE8IROpcode(i16 noundef zeroext %195)
  br i1 %196, label %203, label %197

197:                                              ; preds = %193
  %198 = load ptr, ptr %20, align 8, !tbaa !52
  %199 = call noundef zeroext i16 @_ZNK13IRInstruction6opcodeEv(ptr noundef nonnull align 8 dereferenceable(32) %198)
  %200 = call noundef zeroext i1 @_ZN6opcode10is_an_sputE8IROpcode(i16 noundef zeroext %199)
  br i1 %200, label %203, label %201

201:                                              ; preds = %197
  invoke void (ptr, ptr, i32, ptr, i32, ptr, ...) @_Z11assert_failPKcS0_jS0_10RedexErrorS0_z(ptr noundef nonnull @.str.123, ptr noundef nonnull @.str.108, i32 noundef 1722, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN8cse_impl30CommonSubexpressionElimination5patchEb, i32 noundef 2, ptr noundef nonnull @.str.109) #10
          to label %202 unwind label %.loopexit.split-lp265

202:                                              ; preds = %201
  unreachable

203:                                              ; preds = %197, %193, %189, %185, %183
  %.sink = phi ptr [ %169, %183 ], [ %168, %185 ], [ %167, %189 ], [ %167, %193 ], [ %167, %197 ]
  %204 = load i64, ptr %.sink, align 8, !tbaa !53
  %205 = add i64 %204, 1
  store i64 %205, ptr %.sink, align 8, !tbaa !53
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #9
  %206 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8__detail14_Node_iteratorIPK13IRInstructionLb1ELb0EEppEv(ptr noundef nonnull align 8 dereferenceable(8) %18) #9
  %207 = call noundef zeroext i1 @_ZNSt8__detailneERKNS_19_Node_iterator_baseIPK13IRInstructionLb0EEES6_(ptr noundef nonnull align 8 dereferenceable(8) %18, ptr noundef nonnull align 8 dereferenceable(8) %19) #9
  br i1 %207, label %176, label %._crit_edge304

._crit_edge307:                                   ; preds = %213, %._crit_edge304
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #9
  call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %24) #9
  call void @_ZN12UnorderedMapIP13IRInstructionN3cfg23InstructionIteratorImplILb0EEESt4hashIS1_ESt8equal_toIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(56) %24)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %25) #9
  %208 = getelementptr inbounds i8, ptr %0, i64 128
  %209 = load ptr, ptr %208, align 8, !tbaa !5
  call void @_ZN3cfg23InstructionIterableImplILb0EEC2ERNS_16ControlFlowGraphE(ptr noundef nonnull align 8 dereferenceable(8) %25, ptr noundef nonnull align 8 dereferenceable(160) %209)
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %26) #9
  invoke void @_ZN3cfg23InstructionIterableImplILb0EE5beginEv(ptr dead_on_unwind nonnull writable sret(%"class.cfg::InstructionIteratorImpl") align 8 %26, ptr noundef nonnull align 8 dereferenceable(8) %25)
          to label %.preheader258 unwind label %.loopexit.split-lp260

.lr.ph306:                                        ; preds = %._crit_edge304, %213
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %23) #9
  %210 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPP13IRInstructionSt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %21) #9
  %211 = load ptr, ptr %210, align 8, !tbaa !52
  store ptr %211, ptr %23, align 8, !tbaa !52
  %212 = invoke { ptr, i8 } @_ZN12UnorderedSetIPK13IRInstructionSt4hashIS2_ESt8equal_toIS2_EE6insertERKS2_(ptr noundef nonnull align 8 dereferenceable(56) %7, ptr noundef nonnull align 8 dereferenceable(8) %23)
          to label %213 unwind label %216

213:                                              ; preds = %.lr.ph306
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #9
  %214 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPP13IRInstructionSt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %21) #9
  %215 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPP13IRInstructionSt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %21, ptr noundef nonnull align 8 dereferenceable(8) %22) #9
  br i1 %215, label %.lr.ph306, label %._crit_edge307

216:                                              ; preds = %.lr.ph306
  %217 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #9
  br label %679

.preheader258:                                    ; preds = %._crit_edge307, %241
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %27) #9
  invoke void @_ZN3cfg23InstructionIterableImplILb0EE3endEv(ptr dead_on_unwind nonnull writable sret(%"class.cfg::InstructionIteratorImpl") align 8 %27, ptr noundef nonnull align 8 dereferenceable(8) %25)
          to label %218 unwind label %228

218:                                              ; preds = %.preheader258
  %219 = invoke noundef zeroext i1 @_ZNK3cfg23InstructionIteratorImplILb0EEneERKS1_(ptr noundef nonnull align 8 dereferenceable(32) %26, ptr noundef nonnull align 8 dereferenceable(32) %27)
          to label %220 unwind label %228

220:                                              ; preds = %218
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %27) #9
  br i1 %219, label %230, label %221

221:                                              ; preds = %220
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %26) #9
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %29) #9
  call void @_ZNSt6vectorISt4pairIN8cse_impl30CommonSubexpressionElimination7ForwardEP13IRInstructionESaIS6_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %29) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %30) #9
  %222 = call ptr @_ZNSt6vectorIN8cse_impl30CommonSubexpressionElimination7ForwardESaIS2_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %89) #9
  store ptr %222, ptr %30, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %31) #9
  %223 = call ptr @_ZNSt6vectorIN8cse_impl30CommonSubexpressionElimination7ForwardESaIS2_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %89) #9
  store ptr %223, ptr %31, align 8
  %224 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN8cse_impl30CommonSubexpressionElimination7ForwardESt6vectorIS3_SaIS3_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %30, ptr noundef nonnull align 8 dereferenceable(8) %31) #9
  br i1 %224, label %.lr.ph309, label %._crit_edge310

.lr.ph309:                                        ; preds = %221
  %225 = getelementptr inbounds i8, ptr %0, i64 104
  %226 = getelementptr inbounds i8, ptr %35, i64 8
  %227 = getelementptr inbounds i8, ptr %0, i64 184
  br label %248

.loopexit259:                                     ; preds = %241
  %lpad.loopexit261 = landingpad { ptr, i32 }
          cleanup
  br label %243

.loopexit.split-lp260:                            ; preds = %._crit_edge307
  %lpad.loopexit.split-lp262 = landingpad { ptr, i32 }
          cleanup
  br label %243

228:                                              ; preds = %218, %.preheader258
  %229 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %27) #9
  br label %243

230:                                              ; preds = %220
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %28) #9
  %231 = invoke noundef ptr @_ZNK3cfg23InstructionIteratorImplILb0EEptEv(ptr noundef nonnull align 8 dereferenceable(32) %26)
          to label %232 unwind label %239

232:                                              ; preds = %230
  %233 = getelementptr inbounds i8, ptr %231, i64 24
  %234 = load ptr, ptr %233, align 8, !tbaa !54
  store ptr %234, ptr %28, align 8, !tbaa !52
  %235 = invoke noundef i64 @_ZNK12UnorderedSetIPK13IRInstructionSt4hashIS2_ESt8equal_toIS2_EE5countERKS2_(ptr noundef nonnull align 8 dereferenceable(56) %7, ptr noundef nonnull align 8 dereferenceable(8) %28)
          to label %236 unwind label %239

236:                                              ; preds = %232
  %.not = icmp eq i64 %235, 0
  br i1 %.not, label %241, label %237

237:                                              ; preds = %236
  %238 = invoke { ptr, i8 } @_ZN12UnorderedMapIP13IRInstructionN3cfg23InstructionIteratorImplILb0EEESt4hashIS1_ESt8equal_toIS1_EE7emplaceIJRS1_RS4_EEESt4pairINS9_13FixedIteratorEbEDpOT_(ptr noundef nonnull align 8 dereferenceable(56) %24, ptr noundef nonnull align 8 dereferenceable(8) %28, ptr noundef nonnull align 8 dereferenceable(32) %26)
          to label %241 unwind label %239

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

241:                                              ; preds = %237, %236
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %28) #9
  %242 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN3cfg23InstructionIteratorImplILb0EEppEv(ptr noundef nonnull align 8 dereferenceable(32) %26)
          to label %.preheader258 unwind label %.loopexit259, !llvm.loop !55

243:                                              ; preds = %.loopexit259, %.loopexit.split-lp260, %239, %228
  %.pn212 = phi { ptr, i32 } [ %240, %239 ], [ %229, %228 ], [ %lpad.loopexit261, %.loopexit259 ], [ %lpad.loopexit.split-lp262, %.loopexit.split-lp260 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %26) #9
  br label %678

._crit_edge310:                                   ; preds = %457, %221
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %31) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %30) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %49) #9
  %244 = call ptr @_ZNSt6vectorIN8cse_impl30CommonSubexpressionElimination7ForwardESaIS2_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %89) #9
  store ptr %244, ptr %49, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %50) #9
  %245 = call ptr @_ZNSt6vectorIN8cse_impl30CommonSubexpressionElimination7ForwardESaIS2_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %89) #9
  store ptr %245, ptr %50, align 8
  %246 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN8cse_impl30CommonSubexpressionElimination7ForwardESt6vectorIS3_SaIS3_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %49, ptr noundef nonnull align 8 dereferenceable(8) %50) #9
  br i1 %246, label %.lr.ph315, label %._crit_edge316

.lr.ph315:                                        ; preds = %._crit_edge310
  %247 = getelementptr inbounds i8, ptr %0, i64 104
  br label %468

248:                                              ; preds = %.lr.ph309, %457
  %249 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN8cse_impl30CommonSubexpressionElimination7ForwardESt6vectorIS3_SaIS3_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %30) #9
  %250 = load i64, ptr %249, align 8, !tbaa !40
  %251 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIN6sparta15PatriciaTreeSetIPK13IRInstructionEESaIS5_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %225, i64 noundef %250)
          to label %252 unwind label %268

252:                                              ; preds = %248
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %32) #9
  %253 = getelementptr inbounds i8, ptr %249, i64 8
  %254 = load ptr, ptr %253, align 8, !tbaa !57
  store ptr %254, ptr %32, align 8, !tbaa !52
  %255 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN12UnorderedMapIP13IRInstructionN3cfg23InstructionIteratorImplILb0EEESt4hashIS1_ESt8equal_toIS1_EE2atERKS1_(ptr noundef nonnull align 8 dereferenceable(56) %24, ptr noundef nonnull align 8 dereferenceable(8) %32)
          to label %256 unwind label %270

256:                                              ; preds = %252
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %33) #9
  %257 = invoke ptr @_ZN12UnorderedMapImSt4pairI8IROpcodejESt4hashImESt8equal_toImEE4findERKm(ptr noundef nonnull align 8 dereferenceable(56) %6, ptr noundef nonnull align 8 dereferenceable(8) %249)
          to label %258 unwind label %272

258:                                              ; preds = %256
  store ptr %257, ptr %33, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %34) #9
  %259 = invoke ptr @_ZN12UnorderedMapImSt4pairI8IROpcodejESt4hashImESt8equal_toImEE3endEv(ptr noundef nonnull align 8 dereferenceable(56) %6)
          to label %260 unwind label %274

260:                                              ; preds = %258
  store ptr %259, ptr %34, align 8
  %261 = call noundef zeroext i1 @_ZNK12UnorderedMapImSt4pairI8IROpcodejESt4hashImESt8equal_toImEE13FixedIteratoreqERKS8_(ptr noundef nonnull align 8 dereferenceable(8) %33, ptr noundef nonnull align 8 dereferenceable(8) %34)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %34) #9
  br i1 %261, label %262, label %342

262:                                              ; preds = %260
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %35) #9
  invoke void @_ZN8cse_implL25get_move_or_const_literalERKN6sparta15PatriciaTreeSetIPK13IRInstructionEE(ptr dead_on_unwind nonnull writable sret(%"struct.std::pair.680") align 8 %35, ptr noundef nonnull align 8 dereferenceable(8) %251)
          to label %263 unwind label %276

263:                                              ; preds = %262
  %264 = load i16, ptr %35, align 8, !tbaa !42
  %265 = call noundef zeroext i1 @_ZN6opcode18is_a_literal_constE8IROpcode(i16 noundef zeroext %264)
  br i1 %265, label %280, label %266

266:                                              ; preds = %263
  invoke void (ptr, ptr, i32, ptr, i32, ptr, ...) @_Z11assert_failPKcS0_jS0_10RedexErrorS0_z(ptr noundef nonnull @.str.124, ptr noundef nonnull @.str.108, i32 noundef 1755, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN8cse_impl30CommonSubexpressionElimination5patchEb, i32 noundef 2, ptr noundef nonnull @.str.109) #10
          to label %267 unwind label %278

267:                                              ; preds = %266
  unreachable

268:                                              ; preds = %248
  %269 = landingpad { ptr, i32 }
          cleanup
  br label %466

270:                                              ; preds = %252
  %271 = landingpad { ptr, i32 }
          cleanup
  br label %465

272:                                              ; preds = %436, %422, %256
  %273 = landingpad { ptr, i32 }
          cleanup
  br label %464

274:                                              ; preds = %258
  %275 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %34) #9
  br label %464

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

278:                                              ; preds = %266
  %279 = landingpad { ptr, i32 }
          cleanup
  br label %341

280:                                              ; preds = %263
  %281 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNRSt8optionalIlEdeEv(ptr noundef nonnull align 8 dereferenceable(16) %226) #9
  %282 = load i64, ptr %281, align 8, !tbaa !53
  %283 = invoke noalias noundef nonnull dereferenceable(32) ptr @_Znwm(i64 noundef 32) #11
          to label %284 unwind label %298

284:                                              ; preds = %280
  invoke void @_ZN13IRInstructionC1E8IROpcode(ptr noundef nonnull align 8 dereferenceable(32) %283, i16 noundef zeroext %264)
          to label %285 unwind label %300

285:                                              ; preds = %284
  %286 = invoke noundef ptr @_ZN13IRInstruction11set_literalEl(ptr noundef nonnull align 8 dereferenceable(32) %283, i64 noundef %282)
          to label %287 unwind label %298

287:                                              ; preds = %285
  %288 = load ptr, ptr %32, align 8, !tbaa !52
  %289 = invoke noundef i32 @_ZNK13IRInstruction4destEv(ptr noundef nonnull align 8 dereferenceable(32) %288)
          to label %290 unwind label %298

290:                                              ; preds = %287
  %291 = invoke noundef ptr @_ZN13IRInstruction8set_destEj(ptr noundef nonnull align 8 dereferenceable(32) %286, i32 noundef %289)
          to label %292 unwind label %298

292:                                              ; preds = %290
  %293 = load ptr, ptr %208, align 8, !tbaa !5
  %294 = invoke noundef zeroext i1 @_ZN3cfg16ControlFlowGraph12insert_afterERKNS_23InstructionIteratorImplILb0EEEP13IRInstruction(ptr noundef nonnull align 8 dereferenceable(160) %293, ptr noundef nonnull align 8 dereferenceable(32) %255, ptr noundef nonnull %283)
          to label %295 unwind label %.loopexit253

295:                                              ; preds = %292
  br i1 %294, label %296, label %302

296:                                              ; preds = %295
  invoke void (ptr, ptr, i32, ptr, i32, ptr, ...) @_Z11assert_failPKcS0_jS0_10RedexErrorS0_z(ptr noundef nonnull @.str.125, ptr noundef nonnull @.str.108, i32 noundef 1775, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN8cse_impl30CommonSubexpressionElimination5patchEb, i32 noundef 2, ptr noundef nonnull @.str.109) #10
          to label %297 unwind label %.loopexit.split-lp254

297:                                              ; preds = %296
  unreachable

298:                                              ; preds = %290, %287, %285, %280
  %299 = landingpad { ptr, i32 }
          cleanup
  br label %341

300:                                              ; preds = %284
  %301 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %283, i64 noundef 32) #12
  br label %341

.loopexit253:                                     ; preds = %292
  %lpad.loopexit255 = landingpad { ptr, i32 }
          cleanup
  br label %341

.loopexit.split-lp254:                            ; preds = %296
  %lpad.loopexit.split-lp256 = landingpad { ptr, i32 }
          cleanup
  br label %341

302:                                              ; preds = %295
  call void @llvm.lifetime.start.p0(i64 96, ptr nonnull %36) #9
  invoke void @_ZNK6sparta15PatriciaTreeSetIPK13IRInstructionE5beginEv(ptr dead_on_unwind nonnull writable sret(%"class.sparta::pt_core::PatriciaTreeIterator") align 8 %36, ptr noundef nonnull align 8 dereferenceable(8) %251)
          to label %303 unwind label %307

303:                                              ; preds = %302
  call void @llvm.lifetime.start.p0(i64 96, ptr nonnull %37) #9
  invoke void @_ZNK6sparta15PatriciaTreeSetIPK13IRInstructionE3endEv(ptr dead_on_unwind nonnull writable sret(%"class.sparta::pt_core::PatriciaTreeIterator") align 8 %37, ptr noundef nonnull align 8 dereferenceable(8) %251)
          to label %.preheader unwind label %309

.preheader:                                       ; preds = %303, %336
  %304 = invoke noundef zeroext i1 @_ZNK6sparta7pt_core20PatriciaTreeIteratorIPK13IRInstructionNS0_10EmptyValueEEneERKS6_(ptr noundef nonnull align 8 dereferenceable(96) %36, ptr noundef nonnull align 8 dereferenceable(96) %37)
          to label %305 unwind label %311

305:                                              ; preds = %.preheader
  br i1 %304, label %313, label %306

306:                                              ; preds = %305
  call void @_ZN6sparta7pt_core20PatriciaTreeIteratorIPK13IRInstructionNS0_10EmptyValueEED2Ev(ptr noundef nonnull align 8 dereferenceable(96) %37) #9
  call void @llvm.lifetime.end.p0(i64 96, ptr nonnull %37) #9
  call void @_ZN6sparta7pt_core20PatriciaTreeIteratorIPK13IRInstructionNS0_10EmptyValueEED2Ev(ptr noundef nonnull align 8 dereferenceable(96) %36) #9
  call void @llvm.lifetime.end.p0(i64 96, ptr nonnull %36) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %35) #9
  br label %422

307:                                              ; preds = %302
  %308 = landingpad { ptr, i32 }
          cleanup
  br label %340

309:                                              ; preds = %303
  %310 = landingpad { ptr, i32 }
          cleanup
  br label %339

311:                                              ; preds = %336, %.preheader
  %312 = landingpad { ptr, i32 }
          cleanup
  br label %338

313:                                              ; preds = %305
  %314 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK6sparta7pt_core20PatriciaTreeIteratorIPK13IRInstructionNS0_10EmptyValueEEdeEv(ptr noundef nonnull align 8 dereferenceable(96) %36)
          to label %315 unwind label %326

315:                                              ; preds = %313
  %316 = load ptr, ptr %314, align 8, !tbaa !52
  %317 = invoke noundef zeroext i1 @_Z12traceEnabled11TraceModulei(i32 noundef 29, i32 noundef 4)
          to label %318 unwind label %326

318:                                              ; preds = %315
  br i1 %317, label %319, label %336

319:                                              ; preds = %318
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %38) #9
  invoke void @_Z4showB5cxx11PK13IRInstruction(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %38, ptr noundef %316)
          to label %320 unwind label %328

320:                                              ; preds = %319
  %321 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %38) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %39) #9
  %322 = load ptr, ptr %32, align 8, !tbaa !52
  invoke void @_Z4showI13IRInstructionRSoENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPT_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %39, ptr noundef %322)
          to label %323 unwind label %330

323:                                              ; preds = %320
  %324 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %39) #9
  invoke void (i32, i32, i1, ptr, ...) @_Z5trace11TraceModuleibPKcz(i32 noundef 29, i32 noundef 4, i1 noundef zeroext false, ptr noundef nonnull @.str.126, ptr noundef %321, ptr noundef %324, i64 noundef %282)
          to label %325 unwind label %332

325:                                              ; preds = %323
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %39) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %39) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %38) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %38) #9
  br label %336

326:                                              ; preds = %315, %313
  %327 = landingpad { ptr, i32 }
          cleanup
  br label %338

328:                                              ; preds = %319
  %329 = landingpad { ptr, i32 }
          cleanup
  br label %335

330:                                              ; preds = %320
  %331 = landingpad { ptr, i32 }
          cleanup
  br label %334

332:                                              ; preds = %323
  %333 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %39) #9
  br label %334

334:                                              ; preds = %332, %330
  %.pn195 = phi { ptr, i32 } [ %333, %332 ], [ %331, %330 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %39) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %38) #9
  br label %335

335:                                              ; preds = %334, %328
  %.pn195.pn = phi { ptr, i32 } [ %.pn195, %334 ], [ %329, %328 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %38) #9
  br label %338

336:                                              ; preds = %325, %318
  %337 = invoke noundef nonnull align 8 dereferenceable(96) ptr @_ZN6sparta7pt_core20PatriciaTreeIteratorIPK13IRInstructionNS0_10EmptyValueEEppEv(ptr noundef nonnull align 8 dereferenceable(96) %36)
          to label %.preheader unwind label %311

338:                                              ; preds = %326, %335, %311
  %.pn199 = phi { ptr, i32 } [ %312, %311 ], [ %.pn195.pn, %335 ], [ %327, %326 ]
  call void @_ZN6sparta7pt_core20PatriciaTreeIteratorIPK13IRInstructionNS0_10EmptyValueEED2Ev(ptr noundef nonnull align 8 dereferenceable(96) %37) #9
  br label %339

339:                                              ; preds = %338, %309
  %.pn199.pn = phi { ptr, i32 } [ %.pn199, %338 ], [ %310, %309 ]
  call void @llvm.lifetime.end.p0(i64 96, ptr nonnull %37) #9
  call void @_ZN6sparta7pt_core20PatriciaTreeIteratorIPK13IRInstructionNS0_10EmptyValueEED2Ev(ptr noundef nonnull align 8 dereferenceable(96) %36) #9
  br label %340

340:                                              ; preds = %339, %307
  %.pn199.pn.pn = phi { ptr, i32 } [ %.pn199.pn, %339 ], [ %308, %307 ]
  call void @llvm.lifetime.end.p0(i64 96, ptr nonnull %36) #9
  br label %341

341:                                              ; preds = %.loopexit253, %.loopexit.split-lp254, %278, %340, %300, %298, %276
  %.pn203.pn.pn.pn = phi { ptr, i32 } [ %277, %276 ], [ %279, %278 ], [ %299, %298 ], [ %301, %300 ], [ %.pn199.pn.pn, %340 ], [ %lpad.loopexit255, %.loopexit253 ], [ %lpad.loopexit.split-lp256, %.loopexit.split-lp254 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %35) #9
  br label %464

342:                                              ; preds = %260
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %40) #9
  %343 = call noundef ptr @_ZNK12UnorderedMapImSt4pairI8IROpcodejESt4hashImESt8equal_toImEE13FixedIteratorptEv(ptr noundef nonnull align 8 dereferenceable(8) %33)
  %344 = getelementptr inbounds i8, ptr %343, i64 8
  %345 = load i64, ptr %344, align 8
  store i64 %345, ptr %40, align 8
  %346 = call noundef nonnull align 2 dereferenceable(2) ptr @_ZSt3getILm0E8IROpcodejEONSt13tuple_elementIXT_ESt4pairIT0_T1_EE4typeEOS5_(ptr noundef nonnull align 4 dereferenceable(8) %40) #9
  %347 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3getILm1E8IROpcodejEONSt13tuple_elementIXT_ESt4pairIT0_T1_EE4typeEOS5_(ptr noundef nonnull align 4 dereferenceable(8) %40) #9
  %348 = load i16, ptr %346, align 2, !tbaa !49
  %349 = call noundef zeroext i1 @_ZN6opcode9is_a_moveE8IROpcode(i16 noundef zeroext %348)
  br i1 %349, label %354, label %350

350:                                              ; preds = %342
  invoke void (ptr, ptr, i32, ptr, i32, ptr, ...) @_Z11assert_failPKcS0_jS0_10RedexErrorS0_z(ptr noundef nonnull @.str.127, ptr noundef nonnull @.str.108, i32 noundef 1783, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN8cse_impl30CommonSubexpressionElimination5patchEb, i32 noundef 2, ptr noundef nonnull @.str.109) #10
          to label %351 unwind label %352

351:                                              ; preds = %350
  unreachable

352:                                              ; preds = %350
  %353 = landingpad { ptr, i32 }
          cleanup
  br label %421

354:                                              ; preds = %342
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %41) #9
  %355 = invoke noalias noundef nonnull dereferenceable(32) ptr @_Znwm(i64 noundef 32) #11
          to label %356 unwind label %373

356:                                              ; preds = %354
  %357 = load i16, ptr %346, align 2, !tbaa !49
  invoke void @_ZN13IRInstructionC1E8IROpcode(ptr noundef nonnull align 8 dereferenceable(32) %355, i16 noundef zeroext %357)
          to label %358 unwind label %375

358:                                              ; preds = %356
  store ptr %355, ptr %41, align 8, !tbaa !52
  %359 = load i32, ptr %347, align 4, !tbaa !50
  %360 = invoke noundef ptr @_ZN13IRInstruction7set_srcEtj(ptr noundef nonnull align 8 dereferenceable(32) %355, i16 noundef zeroext 0, i32 noundef %359)
          to label %361 unwind label %373

361:                                              ; preds = %358
  %362 = load ptr, ptr %32, align 8, !tbaa !52
  %363 = invoke noundef i32 @_ZNK13IRInstruction4destEv(ptr noundef nonnull align 8 dereferenceable(32) %362)
          to label %364 unwind label %373

364:                                              ; preds = %361
  %365 = invoke noundef ptr @_ZN13IRInstruction8set_destEj(ptr noundef nonnull align 8 dereferenceable(32) %360, i32 noundef %363)
          to label %366 unwind label %373

366:                                              ; preds = %364
  %367 = load ptr, ptr %208, align 8, !tbaa !5
  %368 = load ptr, ptr %41, align 8, !tbaa !52
  %369 = invoke noundef zeroext i1 @_ZN3cfg16ControlFlowGraph12insert_afterERKNS_23InstructionIteratorImplILb0EEEP13IRInstruction(ptr noundef nonnull align 8 dereferenceable(160) %367, ptr noundef nonnull align 8 dereferenceable(32) %255, ptr noundef %368)
          to label %370 unwind label %.loopexit248

370:                                              ; preds = %366
  br i1 %369, label %371, label %377

371:                                              ; preds = %370
  invoke void (ptr, ptr, i32, ptr, i32, ptr, ...) @_Z11assert_failPKcS0_jS0_10RedexErrorS0_z(ptr noundef nonnull @.str.125, ptr noundef nonnull @.str.108, i32 noundef 1788, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN8cse_impl30CommonSubexpressionElimination5patchEb, i32 noundef 2, ptr noundef nonnull @.str.109) #10
          to label %372 unwind label %.loopexit.split-lp249

372:                                              ; preds = %371
  unreachable

373:                                              ; preds = %364, %361, %358, %354
  %374 = landingpad { ptr, i32 }
          cleanup
  br label %420

375:                                              ; preds = %356
  %376 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %355, i64 noundef 32) #12
  br label %420

.loopexit248:                                     ; preds = %366, %378
  %lpad.loopexit250 = landingpad { ptr, i32 }
          cleanup
  br label %420

.loopexit.split-lp249:                            ; preds = %371
  %lpad.loopexit.split-lp251 = landingpad { ptr, i32 }
          cleanup
  br label %420

377:                                              ; preds = %370
  br i1 %1, label %378, label %380

378:                                              ; preds = %377
  %379 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorISt4pairIN8cse_impl30CommonSubexpressionElimination7ForwardEP13IRInstructionESaIS6_EE12emplace_backIJRKS3_RS5_EEERS6_DpOT_(ptr noundef nonnull align 8 dereferenceable(24) %29, ptr noundef nonnull align 8 dereferenceable(16) %249, ptr noundef nonnull align 8 dereferenceable(8) %41)
          to label %380 unwind label %.loopexit248

380:                                              ; preds = %378, %377
  call void @llvm.lifetime.start.p0(i64 96, ptr nonnull %42) #9
  invoke void @_ZNK6sparta15PatriciaTreeSetIPK13IRInstructionE5beginEv(ptr dead_on_unwind nonnull writable sret(%"class.sparta::pt_core::PatriciaTreeIterator") align 8 %42, ptr noundef nonnull align 8 dereferenceable(8) %251)
          to label %381 unwind label %385

381:                                              ; preds = %380
  call void @llvm.lifetime.start.p0(i64 96, ptr nonnull %43) #9
  invoke void @_ZNK6sparta15PatriciaTreeSetIPK13IRInstructionE3endEv(ptr dead_on_unwind nonnull writable sret(%"class.sparta::pt_core::PatriciaTreeIterator") align 8 %43, ptr noundef nonnull align 8 dereferenceable(8) %251)
          to label %.preheader247 unwind label %387

.preheader247:                                    ; preds = %381, %415
  %382 = invoke noundef zeroext i1 @_ZNK6sparta7pt_core20PatriciaTreeIteratorIPK13IRInstructionNS0_10EmptyValueEEneERKS6_(ptr noundef nonnull align 8 dereferenceable(96) %42, ptr noundef nonnull align 8 dereferenceable(96) %43)
          to label %383 unwind label %389

383:                                              ; preds = %.preheader247
  br i1 %382, label %391, label %384

384:                                              ; preds = %383
  call void @_ZN6sparta7pt_core20PatriciaTreeIteratorIPK13IRInstructionNS0_10EmptyValueEED2Ev(ptr noundef nonnull align 8 dereferenceable(96) %43) #9
  call void @llvm.lifetime.end.p0(i64 96, ptr nonnull %43) #9
  call void @_ZN6sparta7pt_core20PatriciaTreeIteratorIPK13IRInstructionNS0_10EmptyValueEED2Ev(ptr noundef nonnull align 8 dereferenceable(96) %42) #9
  call void @llvm.lifetime.end.p0(i64 96, ptr nonnull %42) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %41) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %40) #9
  br label %422

385:                                              ; preds = %380
  %386 = landingpad { ptr, i32 }
          cleanup
  br label %419

387:                                              ; preds = %381
  %388 = landingpad { ptr, i32 }
          cleanup
  br label %418

389:                                              ; preds = %415, %.preheader247
  %390 = landingpad { ptr, i32 }
          cleanup
  br label %417

391:                                              ; preds = %383
  %392 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK6sparta7pt_core20PatriciaTreeIteratorIPK13IRInstructionNS0_10EmptyValueEEdeEv(ptr noundef nonnull align 8 dereferenceable(96) %42)
          to label %393 unwind label %405

393:                                              ; preds = %391
  %394 = load ptr, ptr %392, align 8, !tbaa !52
  %395 = invoke noundef zeroext i1 @_Z12traceEnabled11TraceModulei(i32 noundef 29, i32 noundef 4)
          to label %396 unwind label %405

396:                                              ; preds = %393
  br i1 %395, label %397, label %415

397:                                              ; preds = %396
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %44) #9
  invoke void @_Z4showB5cxx11PK13IRInstruction(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %44, ptr noundef %394)
          to label %398 unwind label %407

398:                                              ; preds = %397
  %399 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %44) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %45) #9
  %400 = load ptr, ptr %32, align 8, !tbaa !52
  invoke void @_Z4showI13IRInstructionRSoENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPT_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %45, ptr noundef %400)
          to label %401 unwind label %409

401:                                              ; preds = %398
  %402 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %45) #9
  %403 = load i32, ptr %347, align 4, !tbaa !50
  invoke void (i32, i32, i1, ptr, ...) @_Z5trace11TraceModuleibPKcz(i32 noundef 29, i32 noundef 4, i1 noundef zeroext false, ptr noundef nonnull @.str.128, ptr noundef %399, ptr noundef %402, i32 noundef %403)
          to label %404 unwind label %411

404:                                              ; preds = %401
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %45) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %45) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %44) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %44) #9
  br label %415

405:                                              ; preds = %393, %391
  %406 = landingpad { ptr, i32 }
          cleanup
  br label %417

407:                                              ; preds = %397
  %408 = landingpad { ptr, i32 }
          cleanup
  br label %414

409:                                              ; preds = %398
  %410 = landingpad { ptr, i32 }
          cleanup
  br label %413

411:                                              ; preds = %401
  %412 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %45) #9
  br label %413

413:                                              ; preds = %411, %409
  %.pn181 = phi { ptr, i32 } [ %412, %411 ], [ %410, %409 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %45) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %44) #9
  br label %414

414:                                              ; preds = %413, %407
  %.pn181.pn = phi { ptr, i32 } [ %.pn181, %413 ], [ %408, %407 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %44) #9
  br label %417

415:                                              ; preds = %404, %396
  %416 = invoke noundef nonnull align 8 dereferenceable(96) ptr @_ZN6sparta7pt_core20PatriciaTreeIteratorIPK13IRInstructionNS0_10EmptyValueEEppEv(ptr noundef nonnull align 8 dereferenceable(96) %42)
          to label %.preheader247 unwind label %389

417:                                              ; preds = %405, %414, %389
  %.pn185 = phi { ptr, i32 } [ %390, %389 ], [ %.pn181.pn, %414 ], [ %406, %405 ]
  call void @_ZN6sparta7pt_core20PatriciaTreeIteratorIPK13IRInstructionNS0_10EmptyValueEED2Ev(ptr noundef nonnull align 8 dereferenceable(96) %43) #9
  br label %418

418:                                              ; preds = %417, %387
  %.pn185.pn = phi { ptr, i32 } [ %.pn185, %417 ], [ %388, %387 ]
  call void @llvm.lifetime.end.p0(i64 96, ptr nonnull %43) #9
  call void @_ZN6sparta7pt_core20PatriciaTreeIteratorIPK13IRInstructionNS0_10EmptyValueEED2Ev(ptr noundef nonnull align 8 dereferenceable(96) %42) #9
  br label %419

419:                                              ; preds = %418, %385
  %.pn185.pn.pn = phi { ptr, i32 } [ %.pn185.pn, %418 ], [ %386, %385 ]
  call void @llvm.lifetime.end.p0(i64 96, ptr nonnull %42) #9
  br label %420

420:                                              ; preds = %.loopexit248, %.loopexit.split-lp249, %419, %375, %373
  %.pn189.pn = phi { ptr, i32 } [ %374, %373 ], [ %376, %375 ], [ %.pn185.pn.pn, %419 ], [ %lpad.loopexit250, %.loopexit248 ], [ %lpad.loopexit.split-lp251, %.loopexit.split-lp249 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %41) #9
  br label %421

421:                                              ; preds = %420, %352
  %.pn189.pn.pn = phi { ptr, i32 } [ %.pn189.pn, %420 ], [ %353, %352 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %40) #9
  br label %464

422:                                              ; preds = %384, %306
  %423 = load ptr, ptr %32, align 8, !tbaa !52
  %424 = call noundef zeroext i16 @_ZNK13IRInstruction6opcodeEv(ptr noundef nonnull align 8 dereferenceable(32) %423)
  %425 = invoke noundef zeroext i1 @_ZN6opcode18is_move_result_anyE8IROpcode(i16 noundef zeroext %424)
          to label %426 unwind label %272

426:                                              ; preds = %422
  br i1 %425, label %427, label %453

427:                                              ; preds = %426
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %46) #9
  %428 = load ptr, ptr %208, align 8, !tbaa !5
  invoke void @_ZN3cfg16ControlFlowGraph34primary_instruction_of_move_resultERKNS_23InstructionIteratorImplILb0EEE(ptr dead_on_unwind nonnull writable sret(%"class.cfg::InstructionIteratorImpl") align 8 %46, ptr noundef nonnull align 8 dereferenceable(160) %428, ptr noundef nonnull align 8 dereferenceable(32) %255)
          to label %429 unwind label %446

429:                                              ; preds = %427
  %430 = invoke noundef ptr @_ZNK3cfg23InstructionIteratorImplILb0EEptEv(ptr noundef nonnull align 8 dereferenceable(32) %46)
          to label %431 unwind label %446

431:                                              ; preds = %429
  %432 = getelementptr inbounds i8, ptr %430, i64 24
  %433 = load ptr, ptr %432, align 8, !tbaa !54
  store ptr %433, ptr %32, align 8, !tbaa !52
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %46) #9
  %434 = call noundef zeroext i16 @_ZNK13IRInstruction6opcodeEv(ptr noundef nonnull align 8 dereferenceable(32) %433)
  %435 = call noundef zeroext i1 @_ZN6opcode12is_an_invokeE8IROpcode(i16 noundef zeroext %434)
  br i1 %435, label %436, label %453

436:                                              ; preds = %431
  %437 = invoke noundef zeroext i1 @_Z12traceEnabled11TraceModulei(i32 noundef 29, i32 noundef 3)
          to label %438 unwind label %272

438:                                              ; preds = %436
  br i1 %437, label %439, label %453

439:                                              ; preds = %438
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %47) #9
  %440 = load ptr, ptr %32, align 8, !tbaa !52
  %441 = invoke noundef ptr @_ZNK13IRInstruction10get_methodEv(ptr noundef nonnull align 8 dereferenceable(32) %440)
          to label %442 unwind label %448

442:                                              ; preds = %439
  invoke void @_Z4showB5cxx11PK12DexMethodRef(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %47, ptr noundef %441)
          to label %443 unwind label %448

443:                                              ; preds = %442
  %444 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %47) #9
  invoke void (i32, i32, i1, ptr, ...) @_Z5trace11TraceModuleibPKcz(i32 noundef 29, i32 noundef 3, i1 noundef zeroext false, ptr noundef nonnull @.str.129, ptr noundef %444)
          to label %445 unwind label %450

445:                                              ; preds = %443
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %47) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %47) #9
  br label %453

446:                                              ; preds = %429, %427
  %447 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %46) #9
  br label %464

448:                                              ; preds = %442, %439
  %449 = landingpad { ptr, i32 }
          cleanup
  br label %452

450:                                              ; preds = %443
  %451 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %47) #9
  br label %452

452:                                              ; preds = %450, %448
  %.pn193 = phi { ptr, i32 } [ %451, %450 ], [ %449, %448 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %47) #9
  br label %464

453:                                              ; preds = %431, %445, %438, %426
  call void @llvm.lifetime.start.p0(i64 2, ptr nonnull %48) #9
  %454 = load ptr, ptr %32, align 8, !tbaa !52
  %455 = call noundef zeroext i16 @_ZNK13IRInstruction6opcodeEv(ptr noundef nonnull align 8 dereferenceable(32) %454)
  store i16 %455, ptr %48, align 2, !tbaa !58
  %456 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN12UnorderedMapItmSt4hashItESt8equal_toItEEixEOt(ptr noundef nonnull align 8 dereferenceable(56) %227, ptr noundef nonnull align 2 dereferenceable(2) %48)
          to label %457 unwind label %462

457:                                              ; preds = %453
  %458 = load i64, ptr %456, align 8, !tbaa !53
  %459 = add i64 %458, 1
  store i64 %459, ptr %456, align 8, !tbaa !53
  call void @llvm.lifetime.end.p0(i64 2, ptr nonnull %48) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %33) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %32) #9
  %460 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPN8cse_impl30CommonSubexpressionElimination7ForwardESt6vectorIS3_SaIS3_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %30) #9
  %461 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN8cse_impl30CommonSubexpressionElimination7ForwardESt6vectorIS3_SaIS3_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %30, ptr noundef nonnull align 8 dereferenceable(8) %31) #9
  br i1 %461, label %248, label %._crit_edge310

462:                                              ; preds = %453
  %463 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 2, ptr nonnull %48) #9
  br label %464

464:                                              ; preds = %462, %452, %446, %421, %341, %274, %272
  %.pn203.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn203.pn.pn.pn, %341 ], [ %463, %462 ], [ %.pn193, %452 ], [ %273, %272 ], [ %447, %446 ], [ %.pn189.pn.pn, %421 ], [ %275, %274 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %33) #9
  br label %465

465:                                              ; preds = %464, %270
  %.pn203.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn203.pn.pn.pn.pn, %464 ], [ %271, %270 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %32) #9
  br label %466

466:                                              ; preds = %465, %268
  %.pn203.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn203.pn.pn.pn.pn.pn, %465 ], [ %269, %268 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %31) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %30) #9
  br label %677

._crit_edge316:                                   ; preds = %562, %._crit_edge310
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %50) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %49) #9
  %467 = call noundef zeroext i1 @_ZNK12UnorderedMapImSt4pairI8IROpcodejESt4hashImESt8equal_toImEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(56) %6)
  br i1 %467, label %573, label %569

468:                                              ; preds = %.lr.ph315, %562
  %469 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN8cse_impl30CommonSubexpressionElimination7ForwardESt6vectorIS3_SaIS3_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %49) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %51) #9
  %470 = invoke ptr @_ZN12UnorderedMapImSt4pairI8IROpcodejESt4hashImESt8equal_toImEE4findERKm(ptr noundef nonnull align 8 dereferenceable(56) %6, ptr noundef nonnull align 8 dereferenceable(8) %469)
          to label %471 unwind label %475

471:                                              ; preds = %468
  store ptr %470, ptr %51, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %52) #9
  %472 = invoke ptr @_ZN12UnorderedMapImSt4pairI8IROpcodejESt4hashImESt8equal_toImEE3endEv(ptr noundef nonnull align 8 dereferenceable(56) %6)
          to label %473 unwind label %477

473:                                              ; preds = %471
  store ptr %472, ptr %52, align 8
  %474 = call noundef zeroext i1 @_ZNK12UnorderedMapImSt4pairI8IROpcodejESt4hashImESt8equal_toImEE13FixedIteratoreqERKS8_(ptr noundef nonnull align 8 dereferenceable(8) %51, ptr noundef nonnull align 8 dereferenceable(8) %52)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %52) #9
  br i1 %474, label %562, label %479

475:                                              ; preds = %468
  %476 = landingpad { ptr, i32 }
          cleanup
  br label %568

477:                                              ; preds = %471
  %478 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %52) #9
  br label %568

479:                                              ; preds = %473
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %53) #9
  %480 = call noundef ptr @_ZNK12UnorderedMapImSt4pairI8IROpcodejESt4hashImESt8equal_toImEE13FixedIteratorptEv(ptr noundef nonnull align 8 dereferenceable(8) %51)
  %481 = getelementptr inbounds i8, ptr %480, i64 8
  %482 = load i64, ptr %481, align 8
  store i64 %482, ptr %53, align 8
  %483 = call noundef nonnull align 2 dereferenceable(2) ptr @_ZSt3getILm0E8IROpcodejEONSt13tuple_elementIXT_ESt4pairIT0_T1_EE4typeEOS5_(ptr noundef nonnull align 4 dereferenceable(8) %53) #9
  %484 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3getILm1E8IROpcodejEONSt13tuple_elementIXT_ESt4pairIT0_T1_EE4typeEOS5_(ptr noundef nonnull align 4 dereferenceable(8) %53) #9
  %485 = load i16, ptr %483, align 2, !tbaa !49
  %486 = call noundef zeroext i1 @_ZN6opcode9is_a_moveE8IROpcode(i16 noundef zeroext %485)
  br i1 %486, label %489, label %487

487:                                              ; preds = %479
  invoke void (ptr, ptr, i32, ptr, i32, ptr, ...) @_Z11assert_failPKcS0_jS0_10RedexErrorS0_z(ptr noundef nonnull @.str.127, ptr noundef nonnull @.str.108, i32 noundef 1821, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN8cse_impl30CommonSubexpressionElimination5patchEb, i32 noundef 2, ptr noundef nonnull @.str.109) #10
          to label %488 unwind label %.loopexit.split-lp238

488:                                              ; preds = %487
  unreachable

.loopexit237:                                     ; preds = %489
  %lpad.loopexit239 = landingpad { ptr, i32 }
          cleanup
  br label %567

.loopexit.split-lp238:                            ; preds = %487
  %lpad.loopexit.split-lp240 = landingpad { ptr, i32 }
          cleanup
  br label %567

489:                                              ; preds = %479
  %.sroa.032.0.copyload = load ptr, ptr %51, align 8
  invoke void @_ZN12UnorderedMapImSt4pairI8IROpcodejESt4hashImESt8equal_toImEE5eraseENS7_13FixedIteratorE(ptr noundef nonnull align 8 dereferenceable(56) %6, ptr %.sroa.032.0.copyload)
          to label %490 unwind label %.loopexit237

490:                                              ; preds = %489
  %491 = load i64, ptr %469, align 8, !tbaa !40
  %492 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIN6sparta15PatriciaTreeSetIPK13IRInstructionEESaIS5_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %247, i64 noundef %491)
          to label %493 unwind label %500

493:                                              ; preds = %490
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %54) #9
  invoke void @_ZNK6sparta15PatriciaTreeSetIPK13IRInstructionE5beginEv(ptr dead_on_unwind nonnull writable sret(%"class.sparta::pt_core::PatriciaTreeIterator") align 8 %55, ptr noundef nonnull align 8 dereferenceable(8) %492)
          to label %494 unwind label %502

494:                                              ; preds = %493
  invoke void @_ZNK6sparta15PatriciaTreeSetIPK13IRInstructionE3endEv(ptr dead_on_unwind nonnull writable sret(%"class.sparta::pt_core::PatriciaTreeIterator") align 8 %56, ptr noundef nonnull align 8 dereferenceable(8) %492)
          to label %495 unwind label %504

495:                                              ; preds = %494
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %57) #9
  call void @_ZNSaIPK13IRInstructionEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %57) #9
  invoke void @_ZNSt6vectorIPK13IRInstructionSaIS2_EEC2IN6sparta7pt_core20PatriciaTreeIteratorIS2_NS7_10EmptyValueEEEvEET_SB_RKS3_(ptr noundef nonnull align 8 dereferenceable(24) %54, ptr noundef nonnull %55, ptr noundef nonnull %56, ptr noundef nonnull align 1 dereferenceable(1) %57)
          to label %496 unwind label %506

496:                                              ; preds = %495
  call void @_ZNSt15__new_allocatorIPK13IRInstructionED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %57) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %57) #9
  call void @_ZN6sparta7pt_core20PatriciaTreeIteratorIPK13IRInstructionNS0_10EmptyValueEED2Ev(ptr noundef nonnull align 8 dereferenceable(96) %56) #9
  call void @_ZN6sparta7pt_core20PatriciaTreeIteratorIPK13IRInstructionNS0_10EmptyValueEED2Ev(ptr noundef nonnull align 8 dereferenceable(96) %55) #9
  %497 = call noundef zeroext i1 @_ZNK12UnorderedMapIPK13IRInstructionmSt4hashIS2_ESt8equal_toIS2_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(56) %0)
  br i1 %497, label %498, label %509

498:                                              ; preds = %496
  invoke void (ptr, ptr, i32, ptr, i32, ptr, ...) @_Z11assert_failPKcS0_jS0_10RedexErrorS0_z(ptr noundef nonnull @.str.130, ptr noundef nonnull @.str.108, i32 noundef 1827, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN8cse_impl30CommonSubexpressionElimination5patchEb, i32 noundef 2, ptr noundef nonnull @.str.109) #10
          to label %499 unwind label %.loopexit.split-lp243

499:                                              ; preds = %498
  unreachable

500:                                              ; preds = %490
  %501 = landingpad { ptr, i32 }
          cleanup
  br label %567

502:                                              ; preds = %493
  %503 = landingpad { ptr, i32 }
          cleanup
  br label %566

504:                                              ; preds = %494
  %505 = landingpad { ptr, i32 }
          cleanup
  br label %508

506:                                              ; preds = %495
  %507 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIPK13IRInstructionED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %57) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %57) #9
  call void @_ZN6sparta7pt_core20PatriciaTreeIteratorIPK13IRInstructionNS0_10EmptyValueEED2Ev(ptr noundef nonnull align 8 dereferenceable(96) %56) #9
  br label %508

508:                                              ; preds = %506, %504
  %.pn169 = phi { ptr, i32 } [ %507, %506 ], [ %505, %504 ]
  call void @_ZN6sparta7pt_core20PatriciaTreeIteratorIPK13IRInstructionNS0_10EmptyValueEED2Ev(ptr noundef nonnull align 8 dereferenceable(96) %55) #9
  br label %566

.loopexit242:                                     ; preds = %509
  %lpad.loopexit244 = landingpad { ptr, i32 }
          cleanup
  br label %565

.loopexit.split-lp243:                            ; preds = %498
  %lpad.loopexit.split-lp245 = landingpad { ptr, i32 }
          cleanup
  br label %565

509:                                              ; preds = %496
  %510 = call ptr @_ZNSt6vectorIPK13IRInstructionSaIS2_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %54) #9
  %511 = call ptr @_ZNSt6vectorIPK13IRInstructionSaIS2_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %54) #9
  invoke void @"_ZSt4sortIN9__gnu_cxx17__normal_iteratorIPPK13IRInstructionSt6vectorIS4_SaIS4_EEEEZN8cse_impl30CommonSubexpressionElimination5patchEbE3$_1EvT_SD_T0_"(ptr %510, ptr %511, ptr nonnull %0)
          to label %512 unwind label %.loopexit242

512:                                              ; preds = %509
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %58) #9
  %513 = call ptr @_ZNSt6vectorIPK13IRInstructionSaIS2_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %54) #9
  store ptr %513, ptr %58, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %59) #9
  %514 = call ptr @_ZNSt6vectorIPK13IRInstructionSaIS2_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %54) #9
  store ptr %514, ptr %59, align 8
  %515 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPPK13IRInstructionSt6vectorIS3_SaIS3_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %58, ptr noundef nonnull align 8 dereferenceable(8) %59) #9
  br i1 %515, label %.lr.ph312, label %._crit_edge313

._crit_edge313:                                   ; preds = %558, %512
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %59) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %58) #9
  call void @_ZNSt6vectorIPK13IRInstructionSaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %54) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %54) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %53) #9
  br label %562

.lr.ph312:                                        ; preds = %512, %558
  %516 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPPK13IRInstructionSt6vectorIS3_SaIS3_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %58) #9
  %517 = load ptr, ptr %516, align 8, !tbaa !52
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %60) #9
  store ptr %517, ptr %60, align 8, !tbaa !52
  %518 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN12UnorderedMapIP13IRInstructionN3cfg23InstructionIteratorImplILb0EEESt4hashIS1_ESt8equal_toIS1_EE2atERKS1_(ptr noundef nonnull align 8 dereferenceable(56) %24, ptr noundef nonnull align 8 dereferenceable(8) %60)
          to label %519 unwind label %545

519:                                              ; preds = %.lr.ph312
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %60) #9
  %520 = invoke noalias noundef nonnull dereferenceable(32) ptr @_Znwm(i64 noundef 32) #11
          to label %521 unwind label %547

521:                                              ; preds = %519
  %522 = load i16, ptr %483, align 2, !tbaa !49
  invoke void @_ZN13IRInstructionC1E8IROpcode(ptr noundef nonnull align 8 dereferenceable(32) %520, i16 noundef zeroext %522)
          to label %523 unwind label %549

523:                                              ; preds = %521
  %524 = invoke noundef zeroext i1 @_ZNK13IRInstruction8has_destEv(ptr noundef nonnull align 8 dereferenceable(32) %517)
          to label %525 unwind label %551

525:                                              ; preds = %523
  br i1 %524, label %526, label %528

526:                                              ; preds = %525
  %527 = invoke noundef i32 @_ZNK13IRInstruction4destEv(ptr noundef nonnull align 8 dereferenceable(32) %517)
          to label %530 unwind label %551

528:                                              ; preds = %525
  %529 = invoke noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %517, i16 noundef zeroext 0)
          to label %530 unwind label %551

530:                                              ; preds = %528, %526
  %531 = phi i32 [ %527, %526 ], [ %529, %528 ]
  %532 = invoke noundef ptr @_ZN13IRInstruction7set_srcEtj(ptr noundef nonnull align 8 dereferenceable(32) %520, i16 noundef zeroext 0, i32 noundef %531)
          to label %533 unwind label %551

533:                                              ; preds = %530
  %534 = load i32, ptr %484, align 4, !tbaa !50
  %535 = invoke noundef ptr @_ZN13IRInstruction8set_destEj(ptr noundef nonnull align 8 dereferenceable(32) %532, i32 noundef %534)
          to label %536 unwind label %551

536:                                              ; preds = %533
  %537 = call noundef zeroext i16 @_ZNK13IRInstruction6opcodeEv(ptr noundef nonnull align 8 dereferenceable(32) %517)
  %538 = icmp eq i16 %537, 22
  %539 = load ptr, ptr %208, align 8, !tbaa !5
  br i1 %538, label %540, label %553

540:                                              ; preds = %536
  %541 = invoke noundef zeroext i1 @_ZN3cfg16ControlFlowGraph13insert_beforeERKNS_23InstructionIteratorImplILb0EEEP13IRInstruction(ptr noundef nonnull align 8 dereferenceable(160) %539, ptr noundef nonnull align 8 dereferenceable(32) %518, ptr noundef nonnull %520)
          to label %542 unwind label %.loopexit232

542:                                              ; preds = %540
  br i1 %541, label %543, label %558

543:                                              ; preds = %542
  invoke void (ptr, ptr, i32, ptr, i32, ptr, ...) @_Z11assert_failPKcS0_jS0_10RedexErrorS0_z(ptr noundef nonnull @.str.125, ptr noundef nonnull @.str.108, i32 noundef 1844, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN8cse_impl30CommonSubexpressionElimination5patchEb, i32 noundef 2, ptr noundef nonnull @.str.109) #10
          to label %544 unwind label %.loopexit.split-lp233

544:                                              ; preds = %543
  unreachable

545:                                              ; preds = %.lr.ph312
  %546 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %60) #9
  br label %561

547:                                              ; preds = %519
  %548 = landingpad { ptr, i32 }
          cleanup
  br label %561

549:                                              ; preds = %521
  %550 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %520, i64 noundef 32) #12
  br label %561

551:                                              ; preds = %533, %530, %528, %526, %523
  %552 = landingpad { ptr, i32 }
          cleanup
  br label %561

.loopexit232:                                     ; preds = %540
  %lpad.loopexit234 = landingpad { ptr, i32 }
          cleanup
  br label %561

.loopexit.split-lp233:                            ; preds = %543
  %lpad.loopexit.split-lp235 = landingpad { ptr, i32 }
          cleanup
  br label %561

553:                                              ; preds = %536
  %554 = invoke noundef zeroext i1 @_ZN3cfg16ControlFlowGraph12insert_afterERKNS_23InstructionIteratorImplILb0EEEP13IRInstruction(ptr noundef nonnull align 8 dereferenceable(160) %539, ptr noundef nonnull align 8 dereferenceable(32) %518, ptr noundef nonnull %520)
          to label %555 unwind label %.loopexit227

555:                                              ; preds = %553
  br i1 %554, label %556, label %558

556:                                              ; preds = %555
  invoke void (ptr, ptr, i32, ptr, i32, ptr, ...) @_Z11assert_failPKcS0_jS0_10RedexErrorS0_z(ptr noundef nonnull @.str.125, ptr noundef nonnull @.str.108, i32 noundef 1847, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN8cse_impl30CommonSubexpressionElimination5patchEb, i32 noundef 2, ptr noundef nonnull @.str.109) #10
          to label %557 unwind label %.loopexit.split-lp228

557:                                              ; preds = %556
  unreachable

.loopexit227:                                     ; preds = %553
  %lpad.loopexit229 = landingpad { ptr, i32 }
          cleanup
  br label %561

.loopexit.split-lp228:                            ; preds = %556
  %lpad.loopexit.split-lp230 = landingpad { ptr, i32 }
          cleanup
  br label %561

558:                                              ; preds = %555, %542
  %559 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPPK13IRInstructionSt6vectorIS3_SaIS3_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %58) #9
  %560 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPPK13IRInstructionSt6vectorIS3_SaIS3_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %58, ptr noundef nonnull align 8 dereferenceable(8) %59) #9
  br i1 %560, label %.lr.ph312, label %._crit_edge313

561:                                              ; preds = %.loopexit227, %.loopexit.split-lp228, %.loopexit232, %.loopexit.split-lp233, %547, %549, %551, %545
  %.pn171.pn.pn = phi { ptr, i32 } [ %546, %545 ], [ %550, %549 ], [ %548, %547 ], [ %552, %551 ], [ %lpad.loopexit234, %.loopexit232 ], [ %lpad.loopexit.split-lp235, %.loopexit.split-lp233 ], [ %lpad.loopexit229, %.loopexit227 ], [ %lpad.loopexit.split-lp230, %.loopexit.split-lp228 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %59) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %58) #9
  br label %565

562:                                              ; preds = %473, %._crit_edge313
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %51) #9
  %563 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPN8cse_impl30CommonSubexpressionElimination7ForwardESt6vectorIS3_SaIS3_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %49) #9
  %564 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN8cse_impl30CommonSubexpressionElimination7ForwardESt6vectorIS3_SaIS3_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %49, ptr noundef nonnull align 8 dereferenceable(8) %50) #9
  br i1 %564, label %468, label %._crit_edge316

565:                                              ; preds = %.loopexit242, %.loopexit.split-lp243, %561
  %.pn175 = phi { ptr, i32 } [ %.pn171.pn.pn, %561 ], [ %lpad.loopexit244, %.loopexit242 ], [ %lpad.loopexit.split-lp245, %.loopexit.split-lp243 ]
  call void @_ZNSt6vectorIPK13IRInstructionSaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %54) #9
  br label %566

566:                                              ; preds = %565, %508, %502
  %.pn175.pn = phi { ptr, i32 } [ %.pn175, %565 ], [ %.pn169, %508 ], [ %503, %502 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %54) #9
  br label %567

567:                                              ; preds = %.loopexit237, %.loopexit.split-lp238, %500, %566
  %.pn175.pn.pn.pn = phi { ptr, i32 } [ %.pn175.pn, %566 ], [ %501, %500 ], [ %lpad.loopexit239, %.loopexit237 ], [ %lpad.loopexit.split-lp240, %.loopexit.split-lp238 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %53) #9
  br label %568

568:                                              ; preds = %567, %477, %475
  %.pn175.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn175.pn.pn.pn, %567 ], [ %478, %477 ], [ %476, %475 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %51) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %50) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %49) #9
  br label %677

569:                                              ; preds = %._crit_edge316
  invoke void (ptr, ptr, i32, ptr, i32, ptr, ...) @_Z11assert_failPKcS0_jS0_10RedexErrorS0_z(ptr noundef nonnull @.str.131, ptr noundef nonnull @.str.108, i32 noundef 1851, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN8cse_impl30CommonSubexpressionElimination5patchEb, i32 noundef 2, ptr noundef nonnull @.str.109) #10
          to label %570 unwind label %571

570:                                              ; preds = %569
  unreachable

571:                                              ; preds = %575, %574, %569
  %572 = landingpad { ptr, i32 }
          cleanup
  br label %677

573:                                              ; preds = %._crit_edge316
  br i1 %1, label %574, label %575

574:                                              ; preds = %573
  invoke void @_ZN8cse_impl30CommonSubexpressionElimination25insert_runtime_assertionsERKSt6vectorISt4pairINS0_7ForwardEP13IRInstructionESaIS6_EE(ptr noundef nonnull align 8 dereferenceable(312) %0, ptr noundef nonnull align 8 dereferenceable(24) %29)
          to label %575 unwind label %571

575:                                              ; preds = %573, %574
  %576 = invoke noundef zeroext i1 @_Z12traceEnabled11TraceModulei(i32 noundef 29, i32 noundef 5)
          to label %577 unwind label %571

577:                                              ; preds = %575
  br i1 %576, label %578, label %588

578:                                              ; preds = %577
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %61) #9
  %579 = load ptr, ptr %208, align 8, !tbaa !5
  invoke void @_Z4showB5cxx11RKN3cfg16ControlFlowGraphEb(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %61, ptr noundef nonnull align 8 dereferenceable(160) %579, i1 noundef zeroext false)
          to label %580 unwind label %583

580:                                              ; preds = %578
  %581 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %61) #9
  invoke void (i32, i32, i1, ptr, ...) @_Z5trace11TraceModuleibPKcz(i32 noundef 29, i32 noundef 5, i1 noundef zeroext false, ptr noundef nonnull @.str.132, ptr noundef %581)
          to label %582 unwind label %585

582:                                              ; preds = %580
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %61) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %61) #9
  br label %588

583:                                              ; preds = %578
  %584 = landingpad { ptr, i32 }
          cleanup
  br label %587

585:                                              ; preds = %580
  %586 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %61) #9
  br label %587

587:                                              ; preds = %585, %583
  %.pn = phi { ptr, i32 } [ %586, %585 ], [ %584, %583 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %61) #9
  br label %677

588:                                              ; preds = %582, %577
  %589 = call noundef i64 @_ZNKSt6vectorIN8cse_impl30CommonSubexpressionElimination7ForwardESaIS2_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %89) #9
  %590 = getelementptr inbounds i8, ptr %0, i64 160
  %591 = load i64, ptr %590, align 8, !tbaa !38
  %592 = add i64 %591, %589
  store i64 %592, ptr %590, align 8, !tbaa !38
  %593 = call noundef zeroext i1 @_ZNKSt6vectorIP13IRInstructionSaIS1_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %170) #9
  br i1 %593, label %676, label %594

594:                                              ; preds = %588
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %62) #9
  %595 = load ptr, ptr %208, align 8, !tbaa !5
  invoke void @_ZN3cfg11CFGMutationC2ERNS_16ControlFlowGraphE(ptr noundef nonnull align 8 dereferenceable(64) %62, ptr noundef nonnull align 8 dereferenceable(160) %595)
          to label %596 unwind label %602

596:                                              ; preds = %594
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %63) #9
  %597 = call ptr @_ZNSt6vectorIP13IRInstructionSaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %170) #9
  store ptr %597, ptr %63, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %64) #9
  %598 = call ptr @_ZNSt6vectorIP13IRInstructionSaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %170) #9
  store ptr %598, ptr %64, align 8
  %599 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPP13IRInstructionSt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %63, ptr noundef nonnull align 8 dereferenceable(8) %64) #9
  br i1 %599, label %.lr.ph318, label %._crit_edge319

.lr.ph318:                                        ; preds = %596
  %600 = getelementptr inbounds i8, ptr %0, i64 304
  %601 = getelementptr inbounds i8, ptr %69, i64 8
  br label %604

._crit_edge319:                                   ; preds = %651, %596
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %64) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %63) #9
  invoke void @_ZN3cfg11CFGMutation5flushEv(ptr noundef nonnull align 8 dereferenceable(64) %62)
          to label %671 unwind label %672

602:                                              ; preds = %594
  %603 = landingpad { ptr, i32 }
          cleanup
  br label %675

604:                                              ; preds = %.lr.ph318, %651
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %65) #9
  %605 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPP13IRInstructionSt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %63) #9
  %606 = load ptr, ptr %605, align 8, !tbaa !52
  store ptr %606, ptr %65, align 8, !tbaa !52
  %607 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN12UnorderedMapIP13IRInstructionN3cfg23InstructionIteratorImplILb0EEESt4hashIS1_ESt8equal_toIS1_EE2atERKS1_(ptr noundef nonnull align 8 dereferenceable(56) %24, ptr noundef nonnull align 8 dereferenceable(8) %65)
          to label %608 unwind label %621

608:                                              ; preds = %604
  %609 = load ptr, ptr %65, align 8, !tbaa !52
  %610 = invoke noundef ptr @_ZNK13IRInstruction10get_methodEv(ptr noundef nonnull align 8 dereferenceable(32) %609)
          to label %611 unwind label %623

611:                                              ; preds = %608
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %66) #9
  %612 = load ptr, ptr %600, align 8, !tbaa !60
  %613 = invoke ptr @"_Z17unordered_find_ifI12UnorderedMapIPK12DexMethodRefS3_St4hashIS3_ESt8equal_toIS3_EEZN8cse_impl30CommonSubexpressionElimination5patchEbE3$_0EDaRKT_T0_"(ptr noundef nonnull align 8 dereferenceable(56) %612, ptr %610)
          to label %614 unwind label %625

614:                                              ; preds = %611
  store ptr %613, ptr %66, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %67) #9
  %615 = load ptr, ptr %600, align 8, !tbaa !60
  %616 = invoke ptr @_ZNK12UnorderedMapIPK12DexMethodRefS2_St4hashIS2_ESt8equal_toIS2_EE3endEv(ptr noundef nonnull align 8 dereferenceable(56) %615)
          to label %617 unwind label %.loopexit

617:                                              ; preds = %614
  store ptr %616, ptr %67, align 8
  %618 = call noundef zeroext i1 @_ZNK12UnorderedMapIPK12DexMethodRefS2_St4hashIS2_ESt8equal_toIS2_EE18ConstFixedIteratorneERKS8_(ptr noundef nonnull align 8 dereferenceable(8) %66, ptr noundef nonnull align 8 dereferenceable(8) %67)
  br i1 %618, label %628, label %619

619:                                              ; preds = %617
  invoke void (ptr, ptr, i32, ptr, i32, ptr, ...) @_Z11assert_failPKcS0_jS0_10RedexErrorS0_z(ptr noundef nonnull @.str.133, ptr noundef nonnull @.str.108, i32 noundef 1875, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN8cse_impl30CommonSubexpressionElimination5patchEb, i32 noundef 2, ptr noundef nonnull @.str.109) #10
          to label %620 unwind label %.loopexit.split-lp

620:                                              ; preds = %619
  unreachable

621:                                              ; preds = %604
  %622 = landingpad { ptr, i32 }
          cleanup
  br label %670

623:                                              ; preds = %608
  %624 = landingpad { ptr, i32 }
          cleanup
  br label %670

625:                                              ; preds = %611
  %626 = landingpad { ptr, i32 }
          cleanup
  br label %669

.loopexit:                                        ; preds = %614
  %lpad.loopexit = landingpad { ptr, i32 }
          cleanup
  br label %627

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

627:                                              ; preds = %.loopexit.split-lp, %.loopexit
  %lpad.phi = phi { ptr, i32 } [ %lpad.loopexit, %.loopexit ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %67) #9
  br label %669

628:                                              ; preds = %617
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %67) #9
  %629 = call noundef ptr @_ZNK12UnorderedMapIPK12DexMethodRefS2_St4hashIS2_ESt8equal_toIS2_EE18ConstFixedIteratorptEv(ptr noundef nonnull align 8 dereferenceable(8) %66)
  %630 = load ptr, ptr %629, align 8, !tbaa !61
  %631 = load ptr, ptr %65, align 8, !tbaa !52
  %632 = invoke noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %631, i16 noundef zeroext 0)
          to label %633 unwind label %654

633:                                              ; preds = %628
  %634 = invoke noalias noundef nonnull dereferenceable(32) ptr @_Znwm(i64 noundef 32) #11
          to label %635 unwind label %656

635:                                              ; preds = %633
  invoke void @_ZN13IRInstructionC1E8IROpcode(ptr noundef nonnull align 8 dereferenceable(32) %634, i16 noundef zeroext 18)
          to label %636 unwind label %658

636:                                              ; preds = %635
  %637 = invoke noundef ptr @_ZN13IRInstruction7set_srcEtj(ptr noundef nonnull align 8 dereferenceable(32) %634, i16 noundef zeroext 0, i32 noundef %632)
          to label %638 unwind label %656

638:                                              ; preds = %636
  %639 = call noundef ptr @_ZNK12DexMethodRef9get_classEv(ptr noundef nonnull align 8 dereferenceable(26) %630)
  %640 = invoke noundef ptr @_ZN13IRInstruction8set_typeEP7DexType(ptr noundef nonnull align 8 dereferenceable(32) %637, ptr noundef %639)
          to label %641 unwind label %656

641:                                              ; preds = %638
  %642 = invoke noalias noundef nonnull dereferenceable(32) ptr @_Znwm(i64 noundef 32) #11
          to label %643 unwind label %660

643:                                              ; preds = %641
  invoke void @_ZN13IRInstructionC1E8IROpcode(ptr noundef nonnull align 8 dereferenceable(32) %642, i16 noundef zeroext 164)
          to label %644 unwind label %662

644:                                              ; preds = %643
  %645 = invoke noundef ptr @_ZN13IRInstruction8set_destEj(ptr noundef nonnull align 8 dereferenceable(32) %642, i32 noundef %632)
          to label %646 unwind label %660

646:                                              ; preds = %644
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %69) #9
  store ptr %640, ptr %69, align 8, !tbaa !52
  store ptr %645, ptr %601, align 8, !tbaa !52
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %70) #9
  call void @_ZNSaIP13IRInstructionEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %70) #9
  invoke void @_ZNSt6vectorIP13IRInstructionSaIS1_EEC2ESt16initializer_listIS1_ERKS2_(ptr noundef nonnull align 8 dereferenceable(24) %68, ptr nonnull %69, i64 2, ptr noundef nonnull align 1 dereferenceable(1) %70)
          to label %647 unwind label %664

647:                                              ; preds = %646
  invoke void @_ZN3cfg11CFGMutation13insert_beforeERKNS_23InstructionIteratorImplILb0EEESt6vectorIP13IRInstructionSaIS7_EE(ptr noundef nonnull align 8 dereferenceable(64) %62, ptr noundef nonnull align 8 dereferenceable(32) %607, ptr noundef nonnull %68)
          to label %648 unwind label %666

648:                                              ; preds = %647
  call void @_ZNSt6vectorIP13IRInstructionSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %68) #9
  call void @_ZNSt15__new_allocatorIP13IRInstructionED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %70) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %70) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %69) #9
  %649 = load ptr, ptr %65, align 8, !tbaa !52
  %650 = invoke noundef ptr @_ZN13IRInstruction10set_methodEP12DexMethodRef(ptr noundef nonnull align 8 dereferenceable(32) %649, ptr noundef nonnull %630)
          to label %651 unwind label %660

651:                                              ; preds = %648
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %66) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %65) #9
  %652 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPP13IRInstructionSt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %63) #9
  %653 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPP13IRInstructionSt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %63, ptr noundef nonnull align 8 dereferenceable(8) %64) #9
  br i1 %653, label %604, label %._crit_edge319

654:                                              ; preds = %628
  %655 = landingpad { ptr, i32 }
          cleanup
  br label %669

656:                                              ; preds = %638, %636, %633
  %657 = landingpad { ptr, i32 }
          cleanup
  br label %669

658:                                              ; preds = %635
  %659 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %634, i64 noundef 32) #12
  br label %669

660:                                              ; preds = %648, %644, %641
  %661 = landingpad { ptr, i32 }
          cleanup
  br label %669

662:                                              ; preds = %643
  %663 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %642, i64 noundef 32) #12
  br label %669

664:                                              ; preds = %646
  %665 = landingpad { ptr, i32 }
          cleanup
  br label %668

666:                                              ; preds = %647
  %667 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorIP13IRInstructionSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %68) #9
  br label %668

668:                                              ; preds = %666, %664
  %.pn158 = phi { ptr, i32 } [ %667, %666 ], [ %665, %664 ]
  call void @_ZNSt15__new_allocatorIP13IRInstructionED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %70) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %70) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %69) #9
  br label %669

669:                                              ; preds = %654, %660, %662, %668, %658, %656, %627, %625
  %.pn160.pn.pn.pn = phi { ptr, i32 } [ %lpad.phi, %627 ], [ %626, %625 ], [ %655, %654 ], [ %657, %656 ], [ %659, %658 ], [ %661, %660 ], [ %.pn158, %668 ], [ %663, %662 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %66) #9
  br label %670

670:                                              ; preds = %623, %669, %621
  %.pn160.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %622, %621 ], [ %.pn160.pn.pn.pn, %669 ], [ %624, %623 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %65) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %64) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %63) #9
  br label %674

671:                                              ; preds = %._crit_edge319
  call void @_ZN3cfg11CFGMutationD2Ev(ptr noundef nonnull align 8 dereferenceable(64) %62) #9
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %62) #9
  br label %676

672:                                              ; preds = %._crit_edge319
  %673 = landingpad { ptr, i32 }
          cleanup
  br label %674

674:                                              ; preds = %672, %670
  %.pn160.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn160.pn.pn.pn.pn.pn, %670 ], [ %673, %672 ]
  call void @_ZN3cfg11CFGMutationD2Ev(ptr noundef nonnull align 8 dereferenceable(64) %62) #9
  br label %675

675:                                              ; preds = %674, %602
  %.pn160.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn160.pn.pn.pn.pn.pn.pn, %674 ], [ %603, %602 ]
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %62) #9
  br label %677

676:                                              ; preds = %671, %588
  call void @_ZNSt6vectorISt4pairIN8cse_impl30CommonSubexpressionElimination7ForwardEP13IRInstructionESaIS6_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %29) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %29) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #9
  call void @_ZN12UnorderedMapIP13IRInstructionN3cfg23InstructionIteratorImplILb0EEESt4hashIS1_ESt8equal_toIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %24) #9
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %24) #9
  call void @_ZN12UnorderedSetIPK13IRInstructionSt4hashIS2_ESt8equal_toIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %8) #9
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %8) #9
  call void @_ZN12UnorderedSetIPK13IRInstructionSt4hashIS2_ESt8equal_toIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %7) #9
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %7) #9
  call void @_ZN12UnorderedMapImSt4pairI8IROpcodejESt4hashImESt8equal_toImEED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %6) #9
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %6) #9
  br label %680

677:                                              ; preds = %675, %587, %571, %568, %466
  %.pn203.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn203.pn.pn.pn.pn.pn.pn, %466 ], [ %.pn175.pn.pn.pn.pn, %568 ], [ %.pn160.pn.pn.pn.pn.pn.pn.pn, %675 ], [ %.pn, %587 ], [ %572, %571 ]
  call void @_ZNSt6vectorISt4pairIN8cse_impl30CommonSubexpressionElimination7ForwardEP13IRInstructionESaIS6_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %29) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %29) #9
  br label %678

678:                                              ; preds = %677, %243
  %.pn212.pn = phi { ptr, i32 } [ %.pn212, %243 ], [ %.pn203.pn.pn.pn.pn.pn.pn.pn, %677 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #9
  call void @_ZN12UnorderedMapIP13IRInstructionN3cfg23InstructionIteratorImplILb0EEESt4hashIS1_ESt8equal_toIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %24) #9
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %24) #9
  br label %679

679:                                              ; preds = %174, %184, %678, %216, %162
  %.pn220.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn220.pn.pn.pn, %162 ], [ %217, %216 ], [ %.pn212.pn, %678 ], [ %lpad.phi268, %184 ], [ %175, %174 ]
  call void @_ZN12UnorderedSetIPK13IRInstructionSt4hashIS2_ESt8equal_toIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %8) #9
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %8) #9
  call void @_ZN12UnorderedSetIPK13IRInstructionSt4hashIS2_ESt8equal_toIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %7) #9
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %7) #9
  call void @_ZN12UnorderedMapImSt4pairI8IROpcodejESt4hashImESt8equal_toImEED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %6) #9
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %6) #9
  br label %681

680:                                              ; preds = %676, %91
  %.0 = phi i1 [ %93, %91 ], [ true, %676 ]
  ret i1 %.0

681:                                              ; preds = %679, %101
  %.pn220.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn220.pn.pn.pn.pn, %679 ], [ %102, %101 ]
  resume { ptr, i32 } %.pn220.pn.pn.pn.pn.pn
}

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local { ptr, i8 } @_ZN12UnorderedSetIPK13IRInstructionSt4hashIS2_ESt8equal_toIS2_EE6insertERKS2_(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 noundef i64 @_ZNK12UnorderedMapImSt4pairI8IROpcodejESt4hashImESt8equal_toImEE5countERKm(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 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 uwtable
declare hidden void @_ZN8cse_implL25get_move_or_const_literalERKN6sparta15PatriciaTreeSetIPK13IRInstructionEE(ptr dead_on_unwind noalias writable sret(%"struct.std::pair.680") align 8, ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #6

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef i64 @_ZNK12UnorderedSetIPK13IRInstructionSt4hashIS2_ESt8equal_toIS2_EE5countERKS2_(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 { ptr, i8 } @_ZN12UnorderedMapIP13IRInstructionN3cfg23InstructionIteratorImplILb0EEESt4hashIS1_ESt8equal_toIS1_EE7emplaceIJRS1_RS4_EEESt4pairINS9_13FixedIteratorEbEDpOT_(ptr noundef nonnull align 8 dereferenceable(56), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #6 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(32) ptr @_ZN12UnorderedMapIP13IRInstructionN3cfg23InstructionIteratorImplILb0EEESt4hashIS1_ESt8equal_toIS1_EE2atERKS1_(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 ptr @_ZN12UnorderedMapImSt4pairI8IROpcodejESt4hashImESt8equal_toImEE4findERKm(ptr noundef nonnull align 8 dereferenceable(56), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #6 align 2

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN6opcode18is_a_literal_constE8IROpcode(i16 noundef zeroext) local_unnamed_addr #5

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNRSt8optionalIlEdeEv(ptr noundef nonnull align 8 dereferenceable(16)) 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 noundef zeroext i1 @_ZN3cfg16ControlFlowGraph12insert_afterERKNS_23InstructionIteratorImplILb0EEEP13IRInstruction(ptr noundef nonnull align 8 dereferenceable(160), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef) local_unnamed_addr #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

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

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

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

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

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

declare noundef zeroext i1 @_ZN6opcode18is_move_result_anyE8IROpcode(i16 noundef zeroext) local_unnamed_addr #2

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

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare hidden void @"_ZSt4sortIN9__gnu_cxx17__normal_iteratorIPPK13IRInstructionSt6vectorIS4_SaIS4_EEEEZN8cse_impl30CommonSubexpressionElimination5patchEbE3$_1EvT_SD_T0_"(ptr, ptr, ptr) local_unnamed_addr #8

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare hidden ptr @"_Z17unordered_find_ifI12UnorderedMapIPK12DexMethodRefS3_St4hashIS3_ESt8equal_toIS3_EEZN8cse_impl30CommonSubexpressionElimination5patchEbE3$_0EDaRKT_T0_"(ptr noundef nonnull align 8 dereferenceable(56), ptr) local_unnamed_addr #6

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN3cfg11CFGMutation13insert_beforeERKNS_23InstructionIteratorImplILb0EEESt6vectorIP13IRInstructionSaIS7_EE(ptr noundef nonnull align 8 dereferenceable(64), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef) local_unnamed_addr #8 align 2

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

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

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

declare void @_ZN3cfg11CFGMutation5flushEv(ptr noundef nonnull align 8 dereferenceable(64)) local_unnamed_addr #2

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

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

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

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

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

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !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 = !{!6, !13, i64 160}
!39 = !{!6, !13, i64 248}
!40 = !{!41, !13, i64 0}
!41 = !{!"_ZTSN8cse_impl30CommonSubexpressionElimination7ForwardE", !13, i64 0, !10, i64 8}
!42 = !{!43, !44, i64 0}
!43 = !{!"_ZTSSt4pairI8IROpcodeSt8optionalIlEE", !44, i64 0, !45, i64 8}
!44 = !{!"_ZTS8IROpcode", !11, i64 0}
!45 = !{!"_ZTSSt8optionalIlE", !46, i64 0}
!46 = !{!"_ZTSSt14_Optional_baseIlLb1ELb1EE", !47, i64 0}
!47 = !{!"_ZTSSt17_Optional_payloadIlLb1ELb1ELb1EE", !48, i64 0}
!48 = !{!"_ZTSSt22_Optional_payload_baseIlE", !11, i64 0, !33, i64 8}
!49 = !{!44, !44, i64 0}
!50 = !{!51, !51, i64 0}
!51 = !{!"int", !11, i64 0}
!52 = !{!10, !10, i64 0}
!53 = !{!13, !13, i64 0}
!54 = !{!11, !11, i64 0}
!55 = distinct !{!55, !56}
!56 = !{!"llvm.loop.mustprogress"}
!57 = !{!41, !10, i64 8}
!58 = !{!59, !59, i64 0}
!59 = !{!"short", !11, i64 0}
!60 = !{!6, !10, i64 304}
!61 = !{!62, !10, i64 0}
!62 = !{!"_ZTSSt4pairIKPK12DexMethodRefS2_E", !10, i64 0, !10, i64 8}


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