; LLVM IR from facebook/redex :: service/constant-propagation (ConstantPropagationTransform)

; 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.AccumulatingTimer = type { %"class.std::shared_ptr" }
%"class.std::shared_ptr" = type { %"class.std::__shared_ptr" }
%"class.std::__shared_ptr" = type { ptr, %"class.std::__shared_count" }
%"class.std::__shared_count" = type { ptr }
%"class.std::vector.556" = type { %"struct.std::_Vector_base.557" }
%"struct.std::_Vector_base.557" = type { %"struct.std::_Vector_base<cfg::Block *, std::allocator<cfg::Block *>>::_Vector_impl" }
%"struct.std::_Vector_base<cfg::Block *, std::allocator<cfg::Block *>>::_Vector_impl" = type { %"struct.std::_Vector_base<cfg::Block *, std::allocator<cfg::Block *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<cfg::Block *, std::allocator<cfg::Block *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.ir_list::InstructionIterableImpl" = type { %"class.boost::intrusive::list_iterator", %"class.boost::intrusive::list_iterator" }
%"class.boost::intrusive::list_iterator" = type { %"struct.boost::intrusive::iiterator_members" }
%"struct.boost::intrusive::iiterator_members" = type { ptr }
%"class.ir_list::InstructionIteratorImpl" = type { %"class.boost::intrusive::list_iterator", %"class.boost::intrusive::list_iterator" }
%"class.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.std::allocator" = type { i8 }
%"class.AccumulatingTimer::AccumulatingTimerScope" = type { ptr, %"class.std::chrono::time_point" }
%"class.std::chrono::time_point" = type { %"class.std::chrono::duration" }
%"class.std::chrono::duration" = type { i64 }
%"class.__gnu_cxx::__normal_iterator.561" = type { ptr }
%class.anon.580 = type { i8 }
%class.anon.582 = type { i8 }
%"class.cfg::InstructionIterableImpl" = type { 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.anon.584 = type { ptr }
%class.anon.619 = type { ptr, ptr, ptr, ptr }
%"class.reaching_defs::MoveAwareFixpointIterator" = type { %"class.ir_analyzer::BaseIRAnalyzer", %"class.std::function.655" }
%"class.ir_analyzer::BaseIRAnalyzer" = type { %"class.sparta::MonotonicFixpointIterator.620" }
%"class.sparta::MonotonicFixpointIterator.620" = type { %"class.sparta::fp_impl::MonotonicFixpointIteratorBase.621", %"class.sparta::WeakPartialOrdering" }
%"class.sparta::fp_impl::MonotonicFixpointIteratorBase.621" = type { %"class.sparta::FixpointIterator.622", ptr, %"class.sparta::AbstractEnvironment.623", %"class.std::unordered_map.641", %"class.std::unordered_map.641" }
%"class.sparta::FixpointIterator.622" = type { ptr }
%"class.sparta::AbstractEnvironment.623" = type { %"class.sparta::AbstractDomainScaffolding.624" }
%"class.sparta::AbstractDomainScaffolding.624" = type { i32, %"class.sparta::environment_impl::MapValue.629" }
%"class.sparta::environment_impl::MapValue.629" = type { %"class.sparta::PatriciaTreeMap.632" }
%"class.sparta::PatriciaTreeMap.632" = type { %"class.sparta::pt_core::PatriciaTreeCore.637" }
%"class.sparta::pt_core::PatriciaTreeCore.637" = type { %"class.boost::intrusive_ptr.638" }
%"class.boost::intrusive_ptr.638" = type { ptr }
%"class.std::unordered_map.641" = type { %"class.std::_Hashtable.642" }
%"class.std::_Hashtable.642" = 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.sparta::WeakPartialOrdering" = type <{ %"class.std::vector.340", %"class.std::vector.345", %"class.std::unordered_map.311", i8, [7 x i8] }>
%"class.std::vector.340" = type { %"struct.std::_Vector_base.341" }
%"struct.std::_Vector_base.341" = type { %"struct.std::_Vector_base<sparta::WpoNode<cfg::Block *>, std::allocator<sparta::WpoNode<cfg::Block *>>>::_Vector_impl" }
%"struct.std::_Vector_base<sparta::WpoNode<cfg::Block *>, std::allocator<sparta::WpoNode<cfg::Block *>>>::_Vector_impl" = type { %"struct.std::_Vector_base<sparta::WpoNode<cfg::Block *>, std::allocator<sparta::WpoNode<cfg::Block *>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<sparta::WpoNode<cfg::Block *>, std::allocator<sparta::WpoNode<cfg::Block *>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.345" = type { %"struct.std::_Vector_base.346" }
%"struct.std::_Vector_base.346" = type { %"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl" }
%"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl" = type { %"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl_data" }
%"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::unordered_map.311" = type { %"class.std::_Hashtable.312" }
%"class.std::_Hashtable.312" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"class.std::function.655" = type { %"class.std::_Function_base", ptr }
%"class.std::_Function_base" = type { %"union.std::_Any_data", ptr }
%"union.std::_Any_data" = type { %"union.std::_Nocopy_types" }
%"union.std::_Nocopy_types" = type { { i64, i64 } }
%"class.std::unique_ptr.657" = type { %"struct.std::__uniq_ptr_data.658" }
%"struct.std::__uniq_ptr_data.658" = type { %"class.std::__uniq_ptr_impl.659" }
%"class.std::__uniq_ptr_impl.659" = type { %"class.std::tuple.660" }
%"class.std::tuple.660" = type { %"struct.std::_Tuple_impl.661" }
%"struct.std::_Tuple_impl.661" = type { %"struct.std::_Head_base.664" }
%"struct.std::_Head_base.664" = type { ptr }
%"class.sparta::pt_core::PatriciaTreeIterator" = type { %"class.sparta::pt_core::PatriciaTreePostOrder" }
%"class.sparta::pt_core::PatriciaTreePostOrder" = type { %"class.boost::intrusive_ptr.673", %"class.std::stack", ptr }
%"class.boost::intrusive_ptr.673" = type { ptr }
%"class.std::stack" = type { %"class.std::deque.674" }
%"class.std::deque.674" = type { %"class.std::_Deque_base.675" }
%"class.std::_Deque_base.675" = 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.679", %"struct.std::_Deque_iterator.679" }
%"struct.std::_Deque_iterator.679" = type { ptr, ptr, ptr, ptr }
%class.UnorderedSet.787 = type { %"class.std::unordered_set.789" }
%"class.std::unordered_set.789" = type { %"class.std::_Hashtable.790" }
%"class.std::_Hashtable.790" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"class.boost::optional.809" = type { %"class.boost::optional_detail::tc_optional_base.810" }
%"class.boost::optional_detail::tc_optional_base.810" = type { i8, ptr }
%struct.MethodItemEntry = type { %"class.boost::intrusive::list_member_hook", i32, %union.anon.0 }
%"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.0 = type { ptr }

@__dso_handle = external hidden global i8
@.str.9 = external hidden unnamed_addr constant [110 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [2 x i8], align 1
@_ZZN20constant_propagation9Transform22has_problematic_returnERN3cfg16ControlFlowGraphEbP7DexTypeP8DexProtoPK10XStoreRefsE7s_timer = external hidden global %class.AccumulatingTimer, align 8
@_ZGVZN20constant_propagation9Transform22has_problematic_returnERN3cfg16ControlFlowGraphEbP7DexTypeP8DexProtoPK10XStoreRefsE7s_timer = external hidden global i64, align 8
@.str.28 = external hidden unnamed_addr constant [56 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [18 x i8], align 1
@__PRETTY_FUNCTION__._ZN20constant_propagation9Transform22has_problematic_returnERN3cfg16ControlFlowGraphEbP7DexTypeP8DexProtoPK10XStoreRefs = external hidden unnamed_addr constant [135 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [18 x i8], align 1

; Function Attrs: nounwind
declare i32 @__cxa_guard_acquire(ptr) #0

declare i32 @__gxx_personality_v0(...)

; Function Attrs: nounwind
declare void @__cxa_guard_abort(ptr) #0

; Function Attrs: nounwind
declare void @__cxa_guard_release(ptr) #0

; Function Attrs: nounwind
declare i32 @__cxa_atexit(ptr, ptr, ptr) #0

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

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

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

declare void @_ZN17AccumulatingTimerC1ENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef) unnamed_addr #4

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local noundef zeroext i1 @_ZN20constant_propagation9Transform22has_problematic_returnERN3cfg16ControlFlowGraphEbP7DexTypeP8DexProtoPK10XStoreRefs(ptr noundef nonnull align 8 dereferenceable(248) %0, ptr noundef nonnull align 8 dereferenceable(160) %1, i1 noundef zeroext %2, ptr noundef %3, ptr noundef %4, ptr noundef %5) #3 align 2 personality ptr @__gxx_personality_v0 {
  %7 = alloca i1, align 1
  %8 = alloca ptr, align 8
  %9 = alloca ptr, align 8
  %10 = alloca i8, align 1
  %11 = alloca ptr, align 8
  %12 = alloca ptr, align 8
  %13 = alloca ptr, align 8
  %14 = alloca %"class.std::__cxx11::basic_string", align 8
  %15 = alloca %"class.std::allocator", align 1
  %16 = alloca ptr, align 8
  %17 = alloca i32, align 4
  %18 = alloca %"class.AccumulatingTimer::AccumulatingTimerScope", align 8
  %19 = alloca i32, align 4
  %20 = alloca ptr, align 8
  %21 = alloca %"class.std::vector.556", align 8
  %22 = alloca i8, align 1
  %23 = alloca %"class.__gnu_cxx::__normal_iterator.561", align 8
  %24 = alloca %"class.__gnu_cxx::__normal_iterator.561", align 8
  %25 = alloca %class.anon.580, align 1
  %26 = alloca %class.anon.582, align 1
  %27 = alloca %"class.cfg::InstructionIterableImpl", align 8
  %28 = alloca i8, align 1
  %29 = alloca %"class.cfg::InstructionIteratorImpl", align 8
  %30 = alloca %"class.cfg::InstructionIteratorImpl", align 8
  %31 = alloca %class.anon.584, align 8
  %32 = alloca i64, align 8
  %33 = alloca %class.anon.619, align 8
  %34 = alloca %"class.reaching_defs::MoveAwareFixpointIterator", align 8
  %35 = alloca %"class.std::function.655", align 8
  %36 = alloca %"class.sparta::AbstractEnvironment.623", align 8
  %37 = alloca %"class.std::unique_ptr.657", align 8
  %38 = alloca ptr, align 8
  %39 = alloca %"class.__gnu_cxx::__normal_iterator.561", align 8
  %40 = alloca %"class.__gnu_cxx::__normal_iterator.561", align 8
  %41 = alloca ptr, align 8
  %42 = alloca %"class.sparta::AbstractEnvironment.623", align 8
  %43 = alloca ptr, align 8
  %44 = alloca %"class.ir_list::InstructionIterableImpl", align 8
  %45 = alloca %"class.ir_list::InstructionIteratorImpl", align 8
  %46 = alloca %"class.ir_list::InstructionIteratorImpl", align 8
  %47 = alloca ptr, align 8
  %48 = alloca ptr, align 8
  %49 = alloca ptr, align 8
  %50 = alloca i32, align 4
  %51 = alloca ptr, align 8
  %52 = alloca %"class.sparta::pt_core::PatriciaTreeIterator", align 8
  %53 = alloca %"class.sparta::pt_core::PatriciaTreeIterator", align 8
  %54 = alloca ptr, align 8
  %55 = alloca i16, align 2
  %56 = alloca %class.UnorderedSet.787, align 8
  %57 = alloca i1, align 1
  %58 = alloca ptr, align 8
  %59 = alloca ptr, align 8
  %60 = alloca %"class.boost::optional.809", align 8
  store ptr %0, ptr %8, align 8, !tbaa !5
  store ptr %1, ptr %9, align 8, !tbaa !5
  %61 = zext i1 %2 to i8
  store i8 %61, ptr %10, align 1, !tbaa !9
  store ptr %3, ptr %11, align 8, !tbaa !5
  store ptr %4, ptr %12, align 8, !tbaa !5
  store ptr %5, ptr %13, align 8, !tbaa !5
  %62 = load ptr, ptr %8, align 8
  %63 = load atomic i8, ptr @_ZGVZN20constant_propagation9Transform22has_problematic_returnERN3cfg16ControlFlowGraphEbP7DexTypeP8DexProtoPK10XStoreRefsE7s_timer acquire, align 8
  %64 = icmp eq i8 %63, 0
  br i1 %64, label %65, label %72, !prof !11

65:                                               ; preds = %6
  %66 = call i32 @__cxa_guard_acquire(ptr @_ZGVZN20constant_propagation9Transform22has_problematic_returnERN3cfg16ControlFlowGraphEbP7DexTypeP8DexProtoPK10XStoreRefsE7s_timer) #0
  %67 = icmp ne i32 %66, 0
  br i1 %67, label %68, label %72

68:                                               ; preds = %65
  call void @llvm.lifetime.start.p0(i64 1, ptr %15) #0
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %15) #0
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %14, ptr noundef @.str.28, ptr noundef nonnull align 1 dereferenceable(1) %15)
          to label %69 unwind label %79

69:                                               ; preds = %68
  invoke void @_ZN17AccumulatingTimerC1ENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(16) @_ZZN20constant_propagation9Transform22has_problematic_returnERN3cfg16ControlFlowGraphEbP7DexTypeP8DexProtoPK10XStoreRefsE7s_timer, ptr noundef %14)
          to label %70 unwind label %83

70:                                               ; preds = %69
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %14) #0
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %15) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %15) #0
  %71 = call i32 @__cxa_atexit(ptr @_ZN17AccumulatingTimerD2Ev, ptr @_ZZN20constant_propagation9Transform22has_problematic_returnERN3cfg16ControlFlowGraphEbP7DexTypeP8DexProtoPK10XStoreRefsE7s_timer, ptr @__dso_handle) #0
  call void @__cxa_guard_release(ptr @_ZGVZN20constant_propagation9Transform22has_problematic_returnERN3cfg16ControlFlowGraphEbP7DexTypeP8DexProtoPK10XStoreRefsE7s_timer) #0
  br label %72

72:                                               ; preds = %70, %65, %6
  call void @llvm.lifetime.start.p0(i64 16, ptr %18) #0
  call void @_ZN17AccumulatingTimer5scopeEv(ptr dead_on_unwind writable sret(%"class.AccumulatingTimer::AccumulatingTimerScope") align 8 %18, ptr noundef nonnull align 8 dereferenceable(16) @_ZZN20constant_propagation9Transform22has_problematic_returnERN3cfg16ControlFlowGraphEbP7DexTypeP8DexProtoPK10XStoreRefsE7s_timer)
  %73 = load ptr, ptr %11, align 8, !tbaa !5
  %74 = icmp ne ptr %73, null
  br i1 %74, label %75, label %78

75:                                               ; preds = %72
  %76 = load ptr, ptr %12, align 8, !tbaa !5
  %77 = icmp ne ptr %76, null
  br i1 %77, label %88, label %78

78:                                               ; preds = %75, %72
  store i1 false, ptr %7, align 1
  store i32 1, ptr %19, align 4
  br label %536

79:                                               ; preds = %68
  %80 = landingpad { ptr, i32 }
          cleanup
  %81 = extractvalue { ptr, i32 } %80, 0
  store ptr %81, ptr %16, align 8
  %82 = extractvalue { ptr, i32 } %80, 1
  store i32 %82, ptr %17, align 4
  br label %87

83:                                               ; preds = %69
  %84 = landingpad { ptr, i32 }
          cleanup
  %85 = extractvalue { ptr, i32 } %84, 0
  store ptr %85, ptr %16, align 8
  %86 = extractvalue { ptr, i32 } %84, 1
  store i32 %86, ptr %17, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %14) #0
  br label %87

87:                                               ; preds = %83, %79
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %15) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %15) #0
  call void @__cxa_guard_abort(ptr @_ZGVZN20constant_propagation9Transform22has_problematic_returnERN3cfg16ControlFlowGraphEbP7DexTypeP8DexProtoPK10XStoreRefsE7s_timer) #0
  br label %538

88:                                               ; preds = %75
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #0
  %89 = load ptr, ptr %12, align 8, !tbaa !5
  %90 = invoke noundef ptr @_ZNK8DexProto9get_rtypeEv(ptr noundef nonnull align 8 dereferenceable(24) %89)
          to label %91 unwind label %96

91:                                               ; preds = %88
  store ptr %90, ptr %20, align 8, !tbaa !5
  %92 = load ptr, ptr %20, align 8, !tbaa !5
  %93 = invoke noundef zeroext i1 @_ZN4type12is_primitiveEPK7DexType(ptr noundef %92)
          to label %94 unwind label %96

94:                                               ; preds = %91
  br i1 %93, label %95, label %100

95:                                               ; preds = %94
  store i1 false, ptr %7, align 1
  store i32 1, ptr %19, align 4
  br label %534

96:                                               ; preds = %91, %88
  %97 = landingpad { ptr, i32 }
          cleanup
  %98 = extractvalue { ptr, i32 } %97, 0
  store ptr %98, ptr %16, align 8
  %99 = extractvalue { ptr, i32 } %97, 1
  store i32 %99, ptr %17, align 4
  br label %535

100:                                              ; preds = %94
  call void @llvm.lifetime.start.p0(i64 24, ptr %21) #0
  %101 = load ptr, ptr %9, align 8, !tbaa !5
  invoke void @_ZNK3cfg16ControlFlowGraph6blocksEv(ptr dead_on_unwind writable sret(%"class.std::vector.556") align 8 %21, ptr noundef nonnull align 8 dereferenceable(160) %101)
          to label %102 unwind label %117

102:                                              ; preds = %100
  call void @llvm.lifetime.start.p0(i64 1, ptr %22) #0
  %103 = call ptr @_ZNSt6vectorIPN3cfg5BlockESaIS2_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %21) #0
  %104 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.561", ptr %23, i32 0, i32 0
  store ptr %103, ptr %104, align 8
  %105 = call ptr @_ZNSt6vectorIPN3cfg5BlockESaIS2_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %21) #0
  %106 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.561", ptr %24, i32 0, i32 0
  store ptr %105, ptr %106, align 8
  %107 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.561", ptr %23, i32 0, i32 0
  %108 = load ptr, ptr %107, align 8
  %109 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.561", ptr %24, i32 0, i32 0
  %110 = load ptr, ptr %109, align 8
  %111 = invoke noundef zeroext i1 @"_ZSt6any_ofIN9__gnu_cxx17__normal_iteratorIPPN3cfg5BlockESt6vectorIS4_SaIS4_EEEEZN20constant_propagation9Transform22has_problematic_returnERNS2_16ControlFlowGraphEbP7DexTypeP8DexProtoPK10XStoreRefsE3$_1EbT_SM_T0_"(ptr %108, ptr %110)
          to label %112 unwind label %121

112:                                              ; preds = %102
  %113 = zext i1 %111 to i8
  store i8 %113, ptr %22, align 1, !tbaa !9
  %114 = load i8, ptr %22, align 1, !tbaa !9, !range !12, !noundef !13
  %115 = trunc i8 %114 to i1
  br i1 %115, label %125, label %116

116:                                              ; preds = %112
  store i1 false, ptr %7, align 1
  store i32 1, ptr %19, align 4
  br label %531

117:                                              ; preds = %100
  %118 = landingpad { ptr, i32 }
          cleanup
  %119 = extractvalue { ptr, i32 } %118, 0
  store ptr %119, ptr %16, align 8
  %120 = extractvalue { ptr, i32 } %118, 1
  store i32 %120, ptr %17, align 4
  br label %533

121:                                              ; preds = %102
  %122 = landingpad { ptr, i32 }
          cleanup
  %123 = extractvalue { ptr, i32 } %122, 0
  store ptr %123, ptr %16, align 8
  %124 = extractvalue { ptr, i32 } %122, 1
  store i32 %124, ptr %17, align 4
  br label %532

125:                                              ; preds = %112
  call void @llvm.lifetime.start.p0(i64 1, ptr %26) #0
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #0
  %126 = load ptr, ptr %9, align 8, !tbaa !5
  %127 = invoke ptr @_Z19InstructionIterableRN3cfg16ControlFlowGraphE(ptr noundef nonnull align 8 dereferenceable(160) %126)
          to label %128 unwind label %141

128:                                              ; preds = %125
  %129 = getelementptr inbounds %"class.cfg::InstructionIterableImpl", ptr %27, i32 0, i32 0
  store ptr %127, ptr %129, align 8
  call void @llvm.lifetime.start.p0(i64 1, ptr %28) #0
  invoke void @_ZN3cfg23InstructionIterableImplILb0EE5beginEv(ptr dead_on_unwind writable sret(%"class.cfg::InstructionIteratorImpl") align 8 %29, ptr noundef nonnull align 8 dereferenceable(8) %27)
          to label %130 unwind label %145

130:                                              ; preds = %128
  invoke void @_ZN3cfg23InstructionIterableImplILb0EE3endEv(ptr dead_on_unwind writable sret(%"class.cfg::InstructionIteratorImpl") align 8 %30, ptr noundef nonnull align 8 dereferenceable(8) %27)
          to label %131 unwind label %145

131:                                              ; preds = %130
  %132 = getelementptr inbounds %class.anon.584, ptr %31, i32 0, i32 0
  store ptr %26, ptr %132, align 8, !tbaa !5
  %133 = getelementptr inbounds %class.anon.584, ptr %31, i32 0, i32 0
  %134 = load ptr, ptr %133, align 8
  %135 = invoke noundef zeroext i1 @"_ZSt6any_ofIN3cfg23InstructionIteratorImplILb0EEEZN20constant_propagation9Transform22has_problematic_returnERNS0_16ControlFlowGraphEbP7DexTypeP8DexProtoPK10XStoreRefsE3$_2EbT_SF_T0_"(ptr noundef %29, ptr noundef %30, ptr %134)
          to label %136 unwind label %145

136:                                              ; preds = %131
  %137 = zext i1 %135 to i8
  store i8 %137, ptr %28, align 1, !tbaa !9
  %138 = load i8, ptr %28, align 1, !tbaa !9, !range !12, !noundef !13
  %139 = trunc i8 %138 to i1
  br i1 %139, label %149, label %140

140:                                              ; preds = %136
  store i1 false, ptr %7, align 1
  store i32 1, ptr %19, align 4
  br label %528

141:                                              ; preds = %125
  %142 = landingpad { ptr, i32 }
          cleanup
  %143 = extractvalue { ptr, i32 } %142, 0
  store ptr %143, ptr %16, align 8
  %144 = extractvalue { ptr, i32 } %142, 1
  store i32 %144, ptr %17, align 4
  br label %530

145:                                              ; preds = %131, %130, %128
  %146 = landingpad { ptr, i32 }
          cleanup
  %147 = extractvalue { ptr, i32 } %146, 0
  store ptr %147, ptr %16, align 8
  %148 = extractvalue { ptr, i32 } %146, 1
  store i32 %148, ptr %17, align 4
  br label %529

149:                                              ; preds = %136
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #0
  %150 = load ptr, ptr %13, align 8, !tbaa !5
  %151 = load ptr, ptr %11, align 8, !tbaa !5
  %152 = invoke noundef i64 @_ZNK10XStoreRefs13get_store_idxEPK7DexType(ptr noundef nonnull align 8 dereferenceable(2840) %150, ptr noundef %151)
          to label %153 unwind label %171

153:                                              ; preds = %149
  store i64 %152, ptr %32, align 8, !tbaa !14
  call void @llvm.lifetime.start.p0(i64 32, ptr %33) #0
  %154 = getelementptr inbounds %class.anon.619, ptr %33, i32 0, i32 0
  store ptr %11, ptr %154, align 8, !tbaa !5
  %155 = getelementptr inbounds %class.anon.619, ptr %33, i32 0, i32 1
  store ptr %12, ptr %155, align 8, !tbaa !5
  %156 = getelementptr inbounds %class.anon.619, ptr %33, i32 0, i32 2
  store ptr %13, ptr %156, align 8, !tbaa !5
  %157 = getelementptr inbounds %class.anon.619, ptr %33, i32 0, i32 3
  store ptr %32, ptr %157, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 288, ptr %34) #0
  %158 = load ptr, ptr %9, align 8, !tbaa !5
  call void @"_ZNSt8functionIFbPK13IRInstructionEEC2IRZN20constant_propagation9Transform22has_problematic_returnERN3cfg16ControlFlowGraphEbP7DexTypeP8DexProtoPK10XStoreRefsE3$_0vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %35, ptr noundef nonnull align 1 dereferenceable(1) %26) #0
  invoke void @_ZN13reaching_defs25MoveAwareFixpointIteratorC2ERKN3cfg16ControlFlowGraphESt8functionIFbPK13IRInstructionEE(ptr noundef nonnull align 8 dereferenceable(288) %34, ptr noundef nonnull align 8 dereferenceable(160) %158, ptr noundef %35)
          to label %159 unwind label %175

159:                                              ; preds = %153
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %35) #0
  call void @llvm.lifetime.start.p0(i64 16, ptr %36) #0
  invoke void @_ZN6sparta19AbstractEnvironmentINS_15PatriciaTreeMapIjNS_17SetAbstractDomainINS_15PatriciaTreeSetIP13IRInstructionEEEENS_17TopValueInterfaceIS7_EEEEEC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %36)
          to label %160 unwind label %179

160:                                              ; preds = %159
  invoke void @_ZN6sparta25MonotonicFixpointIteratorIN3cfg14GraphInterfaceENS_19AbstractEnvironmentINS_15PatriciaTreeMapIjNS_17SetAbstractDomainINS_15PatriciaTreeSetIP13IRInstructionEEEENS_17TopValueInterfaceISA_EEEEEESt4hashIPNS1_5BlockEEE3runERKSE_(ptr noundef nonnull align 8 dereferenceable(256) %34, ptr noundef nonnull align 8 dereferenceable(16) %36)
          to label %161 unwind label %183

161:                                              ; preds = %160
  call void @_ZN6sparta19AbstractEnvironmentINS_15PatriciaTreeMapIjNS_17SetAbstractDomainINS_15PatriciaTreeSetIP13IRInstructionEEEENS_17TopValueInterfaceIS7_EEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %36) #0
  call void @llvm.lifetime.end.p0(i64 16, ptr %36) #0
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #0
  call void @_ZNSt10unique_ptrIN14type_inference13TypeInferenceESt14default_deleteIS1_EEC2IS3_vEEv(ptr noundef nonnull align 8 dereferenceable(8) %37) #0
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #0
  store ptr %21, ptr %38, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #0
  %162 = load ptr, ptr %38, align 8, !tbaa !5
  %163 = call ptr @_ZNSt6vectorIPN3cfg5BlockESaIS2_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %162) #0
  %164 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.561", ptr %39, i32 0, i32 0
  store ptr %163, ptr %164, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #0
  %165 = load ptr, ptr %38, align 8, !tbaa !5
  %166 = call ptr @_ZNSt6vectorIPN3cfg5BlockESaIS2_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %165) #0
  %167 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.561", ptr %40, i32 0, i32 0
  store ptr %166, ptr %167, align 8
  br label %168

168:                                              ; preds = %517, %161
  %169 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPPN3cfg5BlockESt6vectorIS3_SaIS3_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %39, ptr noundef nonnull align 8 dereferenceable(8) %40) #0
  br i1 %169, label %188, label %170

170:                                              ; preds = %168
  store i32 2, ptr %19, align 4
  br label %521

171:                                              ; preds = %149
  %172 = landingpad { ptr, i32 }
          cleanup
  %173 = extractvalue { ptr, i32 } %172, 0
  store ptr %173, ptr %16, align 8
  %174 = extractvalue { ptr, i32 } %172, 1
  store i32 %174, ptr %17, align 4
  br label %527

175:                                              ; preds = %153
  %176 = landingpad { ptr, i32 }
          cleanup
  %177 = extractvalue { ptr, i32 } %176, 0
  store ptr %177, ptr %16, align 8
  %178 = extractvalue { ptr, i32 } %176, 1
  store i32 %178, ptr %17, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %35) #0
  br label %526

179:                                              ; preds = %159
  %180 = landingpad { ptr, i32 }
          cleanup
  %181 = extractvalue { ptr, i32 } %180, 0
  store ptr %181, ptr %16, align 8
  %182 = extractvalue { ptr, i32 } %180, 1
  store i32 %182, ptr %17, align 4
  br label %187

183:                                              ; preds = %160
  %184 = landingpad { ptr, i32 }
          cleanup
  %185 = extractvalue { ptr, i32 } %184, 0
  store ptr %185, ptr %16, align 8
  %186 = extractvalue { ptr, i32 } %184, 1
  store i32 %186, ptr %17, align 4
  call void @_ZN6sparta19AbstractEnvironmentINS_15PatriciaTreeMapIjNS_17SetAbstractDomainINS_15PatriciaTreeSetIP13IRInstructionEEEENS_17TopValueInterfaceIS7_EEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %36) #0
  br label %187

187:                                              ; preds = %183, %179
  call void @llvm.lifetime.end.p0(i64 16, ptr %36) #0
  br label %525

188:                                              ; preds = %168
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #0
  %189 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPPN3cfg5BlockESt6vectorIS3_SaIS3_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %39) #0
  %190 = load ptr, ptr %189, align 8, !tbaa !5
  store ptr %190, ptr %41, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %42) #0
  %191 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNK6sparta7fp_impl29MonotonicFixpointIteratorBaseIN3cfg14GraphInterfaceENS_19AbstractEnvironmentINS_15PatriciaTreeMapIjNS_17SetAbstractDomainINS_15PatriciaTreeSetIP13IRInstructionEEEENS_17TopValueInterfaceISB_EEEEEESt4hashIPNS2_5BlockEEE18get_entry_state_atERKSI_(ptr noundef nonnull align 8 dereferenceable(144) %34, ptr noundef nonnull align 8 dereferenceable(8) %41)
          to label %192 unwind label %197

192:                                              ; preds = %188
  invoke void @_ZN6sparta19AbstractEnvironmentINS_15PatriciaTreeMapIjNS_17SetAbstractDomainINS_15PatriciaTreeSetIP13IRInstructionEEEENS_17TopValueInterfaceIS7_EEEEEC2ERKSB_(ptr noundef nonnull align 8 dereferenceable(16) %42, ptr noundef nonnull align 8 dereferenceable(16) %191)
          to label %193 unwind label %197

193:                                              ; preds = %192
  %194 = invoke noundef zeroext i1 @_ZNK6sparta25AbstractDomainScaffoldingINS_16environment_impl8MapValueINS_15PatriciaTreeMapIjNS_17SetAbstractDomainINS_15PatriciaTreeSetIP13IRInstructionEEEENS_17TopValueInterfaceIS9_EEEEEENS_19AbstractEnvironmentISC_EEE9is_bottomEv(ptr noundef nonnull align 8 dereferenceable(16) %42)
          to label %195 unwind label %201

195:                                              ; preds = %193
  br i1 %194, label %196, label %205

196:                                              ; preds = %195
  store i32 3, ptr %19, align 4
  br label %511

197:                                              ; preds = %192, %188
  %198 = landingpad { ptr, i32 }
          cleanup
  %199 = extractvalue { ptr, i32 } %198, 0
  store ptr %199, ptr %16, align 8
  %200 = extractvalue { ptr, i32 } %198, 1
  store i32 %200, ptr %17, align 4
  br label %520

201:                                              ; preds = %193
  %202 = landingpad { ptr, i32 }
          cleanup
  %203 = extractvalue { ptr, i32 } %202, 0
  store ptr %203, ptr %16, align 8
  %204 = extractvalue { ptr, i32 } %202, 1
  store i32 %204, ptr %17, align 4
  br label %519

205:                                              ; preds = %195
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #0
  call void @llvm.lifetime.start.p0(i64 16, ptr %44) #0
  %206 = load ptr, ptr %41, align 8, !tbaa !5
  invoke void @_Z19InstructionIterableIN3cfg5BlockEEN7ir_list23InstructionIterableImplILb0EEEPT_(ptr dead_on_unwind writable sret(%"class.ir_list::InstructionIterableImpl") align 8 %44, ptr noundef %206)
          to label %207 unwind label %216

207:                                              ; preds = %205
  store ptr %44, ptr %43, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %45) #0
  %208 = load ptr, ptr %43, align 8, !tbaa !5
  invoke void @_ZNK7ir_list23InstructionIterableImplILb0EE5beginEv(ptr dead_on_unwind writable sret(%"class.ir_list::InstructionIteratorImpl") align 8 %45, ptr noundef nonnull align 8 dereferenceable(16) %208)
          to label %209 unwind label %220

209:                                              ; preds = %207
  call void @llvm.lifetime.start.p0(i64 16, ptr %46) #0
  %210 = load ptr, ptr %43, align 8, !tbaa !5
  invoke void @_ZNK7ir_list23InstructionIterableImplILb0EE3endEv(ptr dead_on_unwind writable sret(%"class.ir_list::InstructionIteratorImpl") align 8 %46, ptr noundef nonnull align 8 dereferenceable(16) %210)
          to label %211 unwind label %224

211:                                              ; preds = %209
  br label %212

212:                                              ; preds = %502, %211
  %213 = invoke noundef zeroext i1 @_ZNK7ir_list23InstructionIteratorImplILb0EEneERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %45, ptr noundef nonnull align 8 dereferenceable(16) %46)
          to label %214 unwind label %224

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

215:                                              ; preds = %214
  store i32 4, ptr %19, align 4
  br label %505

216:                                              ; preds = %205
  %217 = landingpad { ptr, i32 }
          cleanup
  %218 = extractvalue { ptr, i32 } %217, 0
  store ptr %218, ptr %16, align 8
  %219 = extractvalue { ptr, i32 } %217, 1
  store i32 %219, ptr %17, align 4
  br label %509

220:                                              ; preds = %207
  %221 = landingpad { ptr, i32 }
          cleanup
  %222 = extractvalue { ptr, i32 } %221, 0
  store ptr %222, ptr %16, align 8
  %223 = extractvalue { ptr, i32 } %221, 1
  store i32 %223, ptr %17, align 4
  br label %508

224:                                              ; preds = %500, %212, %209
  %225 = landingpad { ptr, i32 }
          cleanup
  %226 = extractvalue { ptr, i32 } %225, 0
  store ptr %226, ptr %16, align 8
  %227 = extractvalue { ptr, i32 } %225, 1
  store i32 %227, ptr %17, align 4
  br label %507

228:                                              ; preds = %214
  call void @llvm.lifetime.start.p0(i64 8, ptr %47) #0
  %229 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK7ir_list23InstructionIteratorImplILb0EEdeEv(ptr noundef nonnull align 8 dereferenceable(16) %45)
          to label %230 unwind label %251

230:                                              ; preds = %228
  store ptr %229, ptr %47, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %48) #0
  %231 = load ptr, ptr %47, align 8, !tbaa !5
  %232 = getelementptr inbounds %struct.MethodItemEntry, ptr %231, i32 0, i32 2
  %233 = load ptr, ptr %232, align 8, !tbaa !16
  store ptr %233, ptr %48, align 8, !tbaa !5
  %234 = load ptr, ptr %48, align 8, !tbaa !5
  %235 = invoke noundef zeroext i16 @_ZNK13IRInstruction6opcodeEv(ptr noundef nonnull align 8 dereferenceable(32) %234)
          to label %236 unwind label %255

236:                                              ; preds = %230
  %237 = invoke noundef zeroext i1 @_ZN6opcode11is_a_returnE8IROpcode(i16 noundef zeroext %235)
          to label %238 unwind label %255

238:                                              ; preds = %236
  br i1 %237, label %239, label %491

239:                                              ; preds = %238
  call void @llvm.lifetime.start.p0(i64 8, ptr %49) #0
  call void @llvm.lifetime.start.p0(i64 4, ptr %50) #0
  %240 = load ptr, ptr %48, align 8, !tbaa !5
  %241 = invoke noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %240, i16 noundef zeroext 0)
          to label %242 unwind label %259

242:                                              ; preds = %239
  store i32 %241, ptr %50, align 4, !tbaa !17
  %243 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNK6sparta19AbstractEnvironmentINS_15PatriciaTreeMapIjNS_17SetAbstractDomainINS_15PatriciaTreeSetIP13IRInstructionEEEENS_17TopValueInterfaceIS7_EEEEE3getERKj(ptr noundef nonnull align 8 dereferenceable(16) %42, ptr noundef nonnull align 4 dereferenceable(4) %50)
          to label %244 unwind label %259

244:                                              ; preds = %242
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #0
  store ptr %243, ptr %49, align 8, !tbaa !5
  %245 = load ptr, ptr %49, align 8, !tbaa !5
  %246 = invoke noundef zeroext i1 @_ZNK6sparta25AbstractDomainScaffoldingINS_8set_impl8SetValueINS_15PatriciaTreeSetIP13IRInstructionEEEENS_17SetAbstractDomainIS6_EEE9is_bottomEv(ptr noundef nonnull align 8 dereferenceable(16) %245)
          to label %247 unwind label %263

247:                                              ; preds = %244
  br i1 %246, label %249, label %248

248:                                              ; preds = %247
  br label %268

249:                                              ; preds = %247
  invoke void (ptr, ptr, i32, ptr, i32, ptr, ...) @_Z11assert_failPKcS0_jS0_10RedexErrorS0_z(ptr noundef @.str.29, ptr noundef @.str.9, i32 noundef 1142, ptr noundef @__PRETTY_FUNCTION__._ZN20constant_propagation9Transform22has_problematic_returnERN3cfg16ControlFlowGraphEbP7DexTypeP8DexProtoPK10XStoreRefs, i32 noundef 2, ptr noundef @.str.10) #11
          to label %250 unwind label %263

250:                                              ; preds = %249
  unreachable

251:                                              ; preds = %228
  %252 = landingpad { ptr, i32 }
          cleanup
  %253 = extractvalue { ptr, i32 } %252, 0
  store ptr %253, ptr %16, align 8
  %254 = extractvalue { ptr, i32 } %252, 1
  store i32 %254, ptr %17, align 4
  br label %504

255:                                              ; preds = %491, %236, %230
  %256 = landingpad { ptr, i32 }
          cleanup
  %257 = extractvalue { ptr, i32 } %256, 0
  store ptr %257, ptr %16, align 8
  %258 = extractvalue { ptr, i32 } %256, 1
  store i32 %258, ptr %17, align 4
  br label %503

259:                                              ; preds = %242, %239
  %260 = landingpad { ptr, i32 }
          cleanup
  %261 = extractvalue { ptr, i32 } %260, 0
  store ptr %261, ptr %16, align 8
  %262 = extractvalue { ptr, i32 } %260, 1
  store i32 %262, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #0
  br label %490

263:                                              ; preds = %273, %268, %249, %244
  %264 = landingpad { ptr, i32 }
          cleanup
  %265 = extractvalue { ptr, i32 } %264, 0
  store ptr %265, ptr %16, align 8
  %266 = extractvalue { ptr, i32 } %264, 1
  store i32 %266, ptr %17, align 4
  br label %490

267:                                              ; No predecessors!
  br label %268

268:                                              ; preds = %267, %248
  %269 = load ptr, ptr %49, align 8, !tbaa !5
  %270 = invoke noundef zeroext i1 @_ZNK6sparta25AbstractDomainScaffoldingINS_8set_impl8SetValueINS_15PatriciaTreeSetIP13IRInstructionEEEENS_17SetAbstractDomainIS6_EEE6is_topEv(ptr noundef nonnull align 8 dereferenceable(16) %269)
          to label %271 unwind label %263

271:                                              ; preds = %268
  br i1 %270, label %273, label %272

272:                                              ; preds = %271
  br label %276

273:                                              ; preds = %271
  invoke void (ptr, ptr, i32, ptr, i32, ptr, ...) @_Z11assert_failPKcS0_jS0_10RedexErrorS0_z(ptr noundef @.str.30, ptr noundef @.str.9, i32 noundef 1143, ptr noundef @__PRETTY_FUNCTION__._ZN20constant_propagation9Transform22has_problematic_returnERN3cfg16ControlFlowGraphEbP7DexTypeP8DexProtoPK10XStoreRefs, i32 noundef 2, ptr noundef @.str.10) #11
          to label %274 unwind label %263

274:                                              ; preds = %273
  unreachable

275:                                              ; No predecessors!
  br label %276

276:                                              ; preds = %275, %272
  call void @llvm.lifetime.start.p0(i64 8, ptr %51) #0
  %277 = load ptr, ptr %49, align 8, !tbaa !5
  %278 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK6sparta22PowersetAbstractDomainIP13IRInstructionNS_8set_impl8SetValueINS_15PatriciaTreeSetIS2_EEEERKS6_NS_17SetAbstractDomainIS6_EEE8elementsEv(ptr noundef nonnull align 8 dereferenceable(16) %277)
          to label %279 unwind label %288

279:                                              ; preds = %276
  store ptr %278, ptr %51, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 96, ptr %52) #0
  %280 = load ptr, ptr %51, align 8, !tbaa !5
  invoke void @_ZNK6sparta15PatriciaTreeSetIP13IRInstructionE5beginEv(ptr dead_on_unwind writable sret(%"class.sparta::pt_core::PatriciaTreeIterator") align 8 %52, ptr noundef nonnull align 8 dereferenceable(8) %280)
          to label %281 unwind label %292

281:                                              ; preds = %279
  call void @llvm.lifetime.start.p0(i64 96, ptr %53) #0
  %282 = load ptr, ptr %51, align 8, !tbaa !5
  invoke void @_ZNK6sparta15PatriciaTreeSetIP13IRInstructionE3endEv(ptr dead_on_unwind writable sret(%"class.sparta::pt_core::PatriciaTreeIterator") align 8 %53, ptr noundef nonnull align 8 dereferenceable(8) %282)
          to label %283 unwind label %296

283:                                              ; preds = %281
  br label %284

284:                                              ; preds = %477, %283
  %285 = invoke noundef zeroext i1 @_ZNK6sparta7pt_core20PatriciaTreeIteratorIP13IRInstructionNS0_10EmptyValueEEneERKS5_(ptr noundef nonnull align 8 dereferenceable(96) %52, ptr noundef nonnull align 8 dereferenceable(96) %53)
          to label %286 unwind label %300

286:                                              ; preds = %284
  br i1 %285, label %304, label %287

287:                                              ; preds = %286
  store i32 6, ptr %19, align 4
  br label %480

288:                                              ; preds = %276
  %289 = landingpad { ptr, i32 }
          cleanup
  %290 = extractvalue { ptr, i32 } %289, 0
  store ptr %290, ptr %16, align 8
  %291 = extractvalue { ptr, i32 } %289, 1
  store i32 %291, ptr %17, align 4
  br label %485

292:                                              ; preds = %279
  %293 = landingpad { ptr, i32 }
          cleanup
  %294 = extractvalue { ptr, i32 } %293, 0
  store ptr %294, ptr %16, align 8
  %295 = extractvalue { ptr, i32 } %293, 1
  store i32 %295, ptr %17, align 4
  br label %484

296:                                              ; preds = %281
  %297 = landingpad { ptr, i32 }
          cleanup
  %298 = extractvalue { ptr, i32 } %297, 0
  store ptr %298, ptr %16, align 8
  %299 = extractvalue { ptr, i32 } %297, 1
  store i32 %299, ptr %17, align 4
  br label %483

300:                                              ; preds = %475, %284
  %301 = landingpad { ptr, i32 }
          cleanup
  %302 = extractvalue { ptr, i32 } %301, 0
  store ptr %302, ptr %16, align 8
  %303 = extractvalue { ptr, i32 } %301, 1
  store i32 %303, ptr %17, align 4
  br label %482

304:                                              ; preds = %286
  call void @llvm.lifetime.start.p0(i64 8, ptr %54) #0
  %305 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK6sparta7pt_core20PatriciaTreeIteratorIP13IRInstructionNS0_10EmptyValueEEdeEv(ptr noundef nonnull align 8 dereferenceable(96) %52)
          to label %306 unwind label %322

306:                                              ; preds = %304
  %307 = load ptr, ptr %305, align 8, !tbaa !5
  store ptr %307, ptr %54, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 2, ptr %55) #0
  %308 = load ptr, ptr %54, align 8, !tbaa !5
  %309 = invoke noundef zeroext i16 @_ZNK13IRInstruction6opcodeEv(ptr noundef nonnull align 8 dereferenceable(32) %308)
          to label %310 unwind label %326

310:                                              ; preds = %306
  store i16 %309, ptr %55, align 2, !tbaa !19
  %311 = load ptr, ptr %54, align 8, !tbaa !5
  %312 = invoke noundef zeroext i1 @_ZNK13IRInstruction8has_typeEv(ptr noundef nonnull align 8 dereferenceable(32) %311)
          to label %313 unwind label %326

313:                                              ; preds = %310
  br i1 %312, label %314, label %331

314:                                              ; preds = %313
  %315 = load ptr, ptr %54, align 8, !tbaa !5
  %316 = invoke noundef ptr @_ZNK13IRInstruction8get_typeEv(ptr noundef nonnull align 8 dereferenceable(32) %315)
          to label %317 unwind label %326

317:                                              ; preds = %314
  %318 = load ptr, ptr %54, align 8, !tbaa !5
  %319 = invoke noundef zeroext i1 @"_ZZN20constant_propagation9Transform22has_problematic_returnERN3cfg16ControlFlowGraphEbP7DexTypeP8DexProtoPK10XStoreRefsENK3$_3clEPKS4_P13IRInstruction"(ptr noundef nonnull align 8 dereferenceable(32) %33, ptr noundef %316, ptr noundef %318)
          to label %320 unwind label %326

320:                                              ; preds = %317
  br i1 %319, label %321, label %330

321:                                              ; preds = %320
  store i1 true, ptr %7, align 1
  store i32 1, ptr %19, align 4
  br label %469

322:                                              ; preds = %304
  %323 = landingpad { ptr, i32 }
          cleanup
  %324 = extractvalue { ptr, i32 } %323, 0
  store ptr %324, ptr %16, align 8
  %325 = extractvalue { ptr, i32 } %323, 1
  store i32 %325, ptr %17, align 4
  br label %479

326:                                              ; preds = %461, %393, %386, %381, %369, %367, %364, %350, %348, %346, %343, %340, %335, %331, %317, %314, %310, %306
  %327 = landingpad { ptr, i32 }
          cleanup
  %328 = extractvalue { ptr, i32 } %327, 0
  store ptr %328, ptr %16, align 8
  %329 = extractvalue { ptr, i32 } %327, 1
  store i32 %329, ptr %17, align 4
  br label %478

330:                                              ; preds = %320
  br label %468

331:                                              ; preds = %313
  %332 = load ptr, ptr %54, align 8, !tbaa !5
  %333 = invoke noundef zeroext i1 @_ZNK13IRInstruction10has_methodEv(ptr noundef nonnull align 8 dereferenceable(32) %332)
          to label %334 unwind label %326

334:                                              ; preds = %331
  br i1 %333, label %335, label %356

335:                                              ; preds = %334
  %336 = load i16, ptr %55, align 2, !tbaa !19
  %337 = invoke noundef zeroext i1 @_ZN6opcode12is_an_invokeE8IROpcode(i16 noundef zeroext %336)
          to label %338 unwind label %326

338:                                              ; preds = %335
  br i1 %337, label %339, label %340

339:                                              ; preds = %338
  br label %343

340:                                              ; preds = %338
  invoke void (ptr, ptr, i32, ptr, i32, ptr, ...) @_Z11assert_failPKcS0_jS0_10RedexErrorS0_z(ptr noundef @.str.31, ptr noundef @.str.9, i32 noundef 1151, ptr noundef @__PRETTY_FUNCTION__._ZN20constant_propagation9Transform22has_problematic_returnERN3cfg16ControlFlowGraphEbP7DexTypeP8DexProtoPK10XStoreRefs, i32 noundef 2, ptr noundef @.str.10) #11
          to label %341 unwind label %326

341:                                              ; preds = %340
  unreachable

342:                                              ; No predecessors!
  br label %343

343:                                              ; preds = %342, %339
  %344 = load ptr, ptr %54, align 8, !tbaa !5
  %345 = invoke noundef ptr @_ZNK13IRInstruction10get_methodEv(ptr noundef nonnull align 8 dereferenceable(32) %344)
          to label %346 unwind label %326

346:                                              ; preds = %343
  %347 = invoke noundef ptr @_ZNK12DexMethodRef9get_protoEv(ptr noundef nonnull align 8 dereferenceable(26) %345)
          to label %348 unwind label %326

348:                                              ; preds = %346
  %349 = invoke noundef ptr @_ZNK8DexProto9get_rtypeEv(ptr noundef nonnull align 8 dereferenceable(24) %347)
          to label %350 unwind label %326

350:                                              ; preds = %348
  %351 = load ptr, ptr %54, align 8, !tbaa !5
  %352 = invoke noundef zeroext i1 @"_ZZN20constant_propagation9Transform22has_problematic_returnERN3cfg16ControlFlowGraphEbP7DexTypeP8DexProtoPK10XStoreRefsENK3$_3clEPKS4_P13IRInstruction"(ptr noundef nonnull align 8 dereferenceable(32) %33, ptr noundef %349, ptr noundef %351)
          to label %353 unwind label %326

353:                                              ; preds = %350
  br i1 %352, label %354, label %355

354:                                              ; preds = %353
  store i1 true, ptr %7, align 1
  store i32 1, ptr %19, align 4
  br label %469

355:                                              ; preds = %353
  br label %467

356:                                              ; preds = %334
  %357 = load i16, ptr %55, align 2, !tbaa !19
  %358 = zext i16 %357 to i32
  %359 = icmp eq i32 %358, 61
  br i1 %359, label %364, label %360

360:                                              ; preds = %356
  %361 = load i16, ptr %55, align 2, !tbaa !19
  %362 = zext i16 %361 to i32
  %363 = icmp eq i32 %362, 75
  br i1 %363, label %364, label %375

364:                                              ; preds = %360, %356
  %365 = load ptr, ptr %54, align 8, !tbaa !5
  %366 = invoke noundef ptr @_ZNK13IRInstruction9get_fieldEv(ptr noundef nonnull align 8 dereferenceable(32) %365)
          to label %367 unwind label %326

367:                                              ; preds = %364
  %368 = invoke noundef ptr @_ZNK11DexFieldRef8get_typeEv(ptr noundef nonnull align 8 dereferenceable(26) %366)
          to label %369 unwind label %326

369:                                              ; preds = %367
  %370 = load ptr, ptr %54, align 8, !tbaa !5
  %371 = invoke noundef zeroext i1 @"_ZZN20constant_propagation9Transform22has_problematic_returnERN3cfg16ControlFlowGraphEbP7DexTypeP8DexProtoPK10XStoreRefsENK3$_3clEPKS4_P13IRInstruction"(ptr noundef nonnull align 8 dereferenceable(32) %33, ptr noundef %368, ptr noundef %370)
          to label %372 unwind label %326

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

373:                                              ; preds = %372
  store i1 true, ptr %7, align 1
  store i32 1, ptr %19, align 4
  br label %469

374:                                              ; preds = %372
  br label %466

375:                                              ; preds = %360
  %376 = load i16, ptr %55, align 2, !tbaa !19
  %377 = zext i16 %376 to i32
  %378 = icmp eq i32 %377, 47
  br i1 %378, label %379, label %460

379:                                              ; preds = %375
  %380 = call noundef zeroext i1 @_ZNKSt10unique_ptrIN14type_inference13TypeInferenceESt14default_deleteIS1_EEcvbEv(ptr noundef nonnull align 8 dereferenceable(8) %37) #0
  br i1 %380, label %407, label %381

381:                                              ; preds = %379
  %382 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 432) #12
          to label %383 unwind label %326

383:                                              ; preds = %381
  store i1 true, ptr %57, align 1
  %384 = load ptr, ptr %9, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 56, ptr %56) #0
  invoke void @_ZN12UnorderedSetIP7DexTypeSt4hashIS1_ESt8equal_toIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(56) %56)
          to label %385 unwind label %395

385:                                              ; preds = %383
  invoke void @_ZN14type_inference13TypeInferenceC2ERKN3cfg16ControlFlowGraphEbRK12UnorderedSetIP7DexTypeSt4hashIS7_ESt8equal_toIS7_EEPKN21method_override_graph5GraphE(ptr noundef nonnull align 8 dereferenceable(432) %382, ptr noundef nonnull align 8 dereferenceable(160) %384, i1 noundef zeroext false, ptr noundef nonnull align 8 dereferenceable(56) %56, ptr noundef null)
          to label %386 unwind label %399

386:                                              ; preds = %385
  store i1 false, ptr %57, align 1
  call void @_ZNSt10unique_ptrIN14type_inference13TypeInferenceESt14default_deleteIS1_EE5resetEPS1_(ptr noundef nonnull align 8 dereferenceable(8) %37, ptr noundef %382) #0
  call void @_ZN12UnorderedSetIP7DexTypeSt4hashIS1_ESt8equal_toIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %56) #0
  call void @llvm.lifetime.end.p0(i64 56, ptr %56) #0
  %387 = call noundef ptr @_ZNKSt10unique_ptrIN14type_inference13TypeInferenceESt14default_deleteIS1_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %37) #0
  %388 = load i8, ptr %10, align 1, !tbaa !9, !range !12, !noundef !13
  %389 = trunc i8 %388 to i1
  %390 = load ptr, ptr %11, align 8, !tbaa !5
  %391 = load ptr, ptr %12, align 8, !tbaa !5
  %392 = invoke noundef ptr @_ZNK8DexProto8get_argsEv(ptr noundef nonnull align 8 dereferenceable(24) %391)
          to label %393 unwind label %326

393:                                              ; preds = %386
  invoke void @_ZN14type_inference13TypeInference3runEbP7DexTypeP11DexTypeListPKSt3mapIiSt10unique_ptrI16DexAnnotationSetSt14default_deleteIS7_EESt4lessIiESaISt4pairIKiSA_EEE(ptr noundef nonnull align 8 dereferenceable(432) %387, i1 noundef zeroext %389, ptr noundef %390, ptr noundef %392, ptr noundef null)
          to label %394 unwind label %326

394:                                              ; preds = %393
  br label %407

395:                                              ; preds = %383
  %396 = landingpad { ptr, i32 }
          cleanup
  %397 = extractvalue { ptr, i32 } %396, 0
  store ptr %397, ptr %16, align 8
  %398 = extractvalue { ptr, i32 } %396, 1
  store i32 %398, ptr %17, align 4
  br label %403

399:                                              ; preds = %385
  %400 = landingpad { ptr, i32 }
          cleanup
  %401 = extractvalue { ptr, i32 } %400, 0
  store ptr %401, ptr %16, align 8
  %402 = extractvalue { ptr, i32 } %400, 1
  store i32 %402, ptr %17, align 4
  call void @_ZN12UnorderedSetIP7DexTypeSt4hashIS1_ESt8equal_toIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %56) #0
  br label %403

403:                                              ; preds = %399, %395
  call void @llvm.lifetime.end.p0(i64 56, ptr %56) #0
  %404 = load i1, ptr %57, align 1
  br i1 %404, label %405, label %406

405:                                              ; preds = %403
  call void @_ZdlPvm(ptr noundef %382, i64 noundef 432) #13
  br label %406

406:                                              ; preds = %405, %403
  br label %478

407:                                              ; preds = %394, %379
  call void @llvm.lifetime.start.p0(i64 8, ptr %58) #0
  %408 = call noundef ptr @_ZNKSt10unique_ptrIN14type_inference13TypeInferenceESt14default_deleteIS1_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %37) #0
  %409 = invoke noundef nonnull align 8 dereferenceable(56) ptr @_ZN14type_inference13TypeInference21get_type_environmentsEv(ptr noundef nonnull align 8 dereferenceable(432) %408)
          to label %410 unwind label %442

410:                                              ; preds = %407
  store ptr %409, ptr %58, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %59) #0
  %411 = load ptr, ptr %58, align 8, !tbaa !5
  %412 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZN12UnorderedMapIPK13IRInstructionN14type_inference15TypeEnvironmentESt4hashIS2_ESt8equal_toIS2_EE2atERKS2_(ptr noundef nonnull align 8 dereferenceable(56) %411, ptr noundef nonnull align 8 dereferenceable(8) %54)
          to label %413 unwind label %446

413:                                              ; preds = %410
  store ptr %412, ptr %59, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %60) #0
  %414 = load ptr, ptr %59, align 8, !tbaa !5
  %415 = load ptr, ptr %54, align 8, !tbaa !5
  %416 = invoke noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %415, i16 noundef zeroext 1)
          to label %417 unwind label %450

417:                                              ; preds = %413
  %418 = invoke { i8, ptr } @_ZNK14type_inference15TypeEnvironment12get_dex_typeEj(ptr noundef nonnull align 8 dereferenceable(48) %414, i32 noundef %416)
          to label %419 unwind label %450

419:                                              ; preds = %417
  %420 = getelementptr inbounds %"class.boost::optional.809", ptr %60, i32 0, i32 0
  %421 = getelementptr inbounds { i8, ptr }, ptr %420, i32 0, i32 0
  %422 = extractvalue { i8, ptr } %418, 0
  store i8 %422, ptr %421, align 8
  %423 = getelementptr inbounds { i8, ptr }, ptr %420, i32 0, i32 1
  %424 = extractvalue { i8, ptr } %418, 1
  store ptr %424, ptr %423, align 8
  %425 = call noundef zeroext i1 @_ZNK5boost8optionalIPK7DexTypeEcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %60) #0
  br i1 %425, label %426, label %454

426:                                              ; preds = %419
  %427 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNR5boost8optionalIPK7DexTypeEdeEv(ptr noundef nonnull align 8 dereferenceable(16) %60)
          to label %428 unwind label %450

428:                                              ; preds = %426
  %429 = load ptr, ptr %427, align 8, !tbaa !5
  %430 = invoke noundef zeroext i1 @_ZN4type8is_arrayEPK7DexType(ptr noundef %429)
          to label %431 unwind label %450

431:                                              ; preds = %428
  br i1 %430, label %432, label %454

432:                                              ; preds = %431
  %433 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNR5boost8optionalIPK7DexTypeEdeEv(ptr noundef nonnull align 8 dereferenceable(16) %60)
          to label %434 unwind label %450

434:                                              ; preds = %432
  %435 = load ptr, ptr %433, align 8, !tbaa !5
  %436 = invoke noundef ptr @_ZN4type24get_array_component_typeEPK7DexType(ptr noundef %435)
          to label %437 unwind label %450

437:                                              ; preds = %434
  %438 = load ptr, ptr %54, align 8, !tbaa !5
  %439 = invoke noundef zeroext i1 @"_ZZN20constant_propagation9Transform22has_problematic_returnERN3cfg16ControlFlowGraphEbP7DexTypeP8DexProtoPK10XStoreRefsENK3$_3clEPKS4_P13IRInstruction"(ptr noundef nonnull align 8 dereferenceable(32) %33, ptr noundef %436, ptr noundef %438)
          to label %440 unwind label %450

440:                                              ; preds = %437
  br i1 %439, label %441, label %454

441:                                              ; preds = %440
  store i1 true, ptr %7, align 1
  store i32 1, ptr %19, align 4
  br label %455

442:                                              ; preds = %407
  %443 = landingpad { ptr, i32 }
          cleanup
  %444 = extractvalue { ptr, i32 } %443, 0
  store ptr %444, ptr %16, align 8
  %445 = extractvalue { ptr, i32 } %443, 1
  store i32 %445, ptr %17, align 4
  br label %459

446:                                              ; preds = %410
  %447 = landingpad { ptr, i32 }
          cleanup
  %448 = extractvalue { ptr, i32 } %447, 0
  store ptr %448, ptr %16, align 8
  %449 = extractvalue { ptr, i32 } %447, 1
  store i32 %449, ptr %17, align 4
  br label %458

450:                                              ; preds = %437, %434, %432, %428, %426, %417, %413
  %451 = landingpad { ptr, i32 }
          cleanup
  %452 = extractvalue { ptr, i32 } %451, 0
  store ptr %452, ptr %16, align 8
  %453 = extractvalue { ptr, i32 } %451, 1
  store i32 %453, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %60) #0
  br label %458

454:                                              ; preds = %440, %431, %419
  store i32 0, ptr %19, align 4
  br label %455

455:                                              ; preds = %454, %441
  call void @llvm.lifetime.end.p0(i64 16, ptr %60) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #0
  %456 = load i32, ptr %19, align 4
  switch i32 %456, label %469 [
    i32 0, label %457
  ]

457:                                              ; preds = %455
  br label %465

458:                                              ; preds = %450, %446
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #0
  br label %459

459:                                              ; preds = %458, %442
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #0
  br label %478

460:                                              ; preds = %375
  br label %461

461:                                              ; preds = %463, %460
  invoke void (ptr, ptr, i32, ptr, i32, ptr, ...) @_Z11assert_failPKcS0_jS0_10RedexErrorS0_z(ptr noundef @.str.32, ptr noundef @.str.9, i32 noundef 1174, ptr noundef @__PRETTY_FUNCTION__._ZN20constant_propagation9Transform22has_problematic_returnERN3cfg16ControlFlowGraphEbP7DexTypeP8DexProtoPK10XStoreRefs, i32 noundef 2, ptr noundef @.str.10) #11
          to label %462 unwind label %326

462:                                              ; preds = %461
  unreachable

463:                                              ; No predecessors!
  br i1 true, label %461, label %464, !llvm.loop !21

464:                                              ; preds = %463
  br label %465

465:                                              ; preds = %464, %457
  br label %466

466:                                              ; preds = %465, %374
  br label %467

467:                                              ; preds = %466, %355
  br label %468

468:                                              ; preds = %467, %330
  store i32 0, ptr %19, align 4
  br label %469

469:                                              ; preds = %468, %455, %373, %354, %321
  call void @llvm.lifetime.end.p0(i64 2, ptr %55) #0
  %470 = load i32, ptr %19, align 4
  switch i32 %470, label %472 [
    i32 0, label %471
  ]

471:                                              ; preds = %469
  store i32 0, ptr %19, align 4
  br label %472

472:                                              ; preds = %471, %469
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #0
  %473 = load i32, ptr %19, align 4
  switch i32 %473, label %480 [
    i32 0, label %474
  ]

474:                                              ; preds = %472
  br label %475

475:                                              ; preds = %474
  %476 = invoke noundef nonnull align 8 dereferenceable(96) ptr @_ZN6sparta7pt_core20PatriciaTreeIteratorIP13IRInstructionNS0_10EmptyValueEEppEv(ptr noundef nonnull align 8 dereferenceable(96) %52)
          to label %477 unwind label %300

477:                                              ; preds = %475
  br label %284

478:                                              ; preds = %459, %406, %326
  call void @llvm.lifetime.end.p0(i64 2, ptr %55) #0
  br label %479

479:                                              ; preds = %478, %322
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #0
  br label %482

480:                                              ; preds = %472, %287
  call void @_ZN6sparta7pt_core20PatriciaTreeIteratorIP13IRInstructionNS0_10EmptyValueEED2Ev(ptr noundef nonnull align 8 dereferenceable(96) %53) #0
  call void @llvm.lifetime.end.p0(i64 96, ptr %53) #0
  call void @_ZN6sparta7pt_core20PatriciaTreeIteratorIP13IRInstructionNS0_10EmptyValueEED2Ev(ptr noundef nonnull align 8 dereferenceable(96) %52) #0
  call void @llvm.lifetime.end.p0(i64 96, ptr %52) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #0
  %481 = load i32, ptr %19, align 4
  switch i32 %481, label %487 [
    i32 6, label %486
  ]

482:                                              ; preds = %479, %300
  call void @_ZN6sparta7pt_core20PatriciaTreeIteratorIP13IRInstructionNS0_10EmptyValueEED2Ev(ptr noundef nonnull align 8 dereferenceable(96) %53) #0
  br label %483

483:                                              ; preds = %482, %296
  call void @llvm.lifetime.end.p0(i64 96, ptr %53) #0
  call void @_ZN6sparta7pt_core20PatriciaTreeIteratorIP13IRInstructionNS0_10EmptyValueEED2Ev(ptr noundef nonnull align 8 dereferenceable(96) %52) #0
  br label %484

484:                                              ; preds = %483, %292
  call void @llvm.lifetime.end.p0(i64 96, ptr %52) #0
  br label %485

485:                                              ; preds = %484, %288
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #0
  br label %490

486:                                              ; preds = %480
  store i32 0, ptr %19, align 4
  br label %487

487:                                              ; preds = %486, %480
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #0
  %488 = load i32, ptr %19, align 4
  switch i32 %488, label %494 [
    i32 0, label %489
  ]

489:                                              ; preds = %487
  br label %491

490:                                              ; preds = %485, %263, %259
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #0
  br label %503

491:                                              ; preds = %489, %238
  %492 = load ptr, ptr %48, align 8, !tbaa !5
  invoke void @_ZNK13reaching_defs25MoveAwareFixpointIterator19analyze_instructionEPK13IRInstructionPN6sparta19AbstractEnvironmentINS4_15PatriciaTreeMapIjNS4_17SetAbstractDomainINS4_15PatriciaTreeSetIPS1_EEEENS4_17TopValueInterfaceISB_EEEEEE(ptr noundef nonnull align 8 dereferenceable(288) %34, ptr noundef %492, ptr noundef %42)
          to label %493 unwind label %255

493:                                              ; preds = %491
  store i32 0, ptr %19, align 4
  br label %494

494:                                              ; preds = %493, %487
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #0
  %495 = load i32, ptr %19, align 4
  switch i32 %495, label %497 [
    i32 0, label %496
  ]

496:                                              ; preds = %494
  store i32 0, ptr %19, align 4
  br label %497

497:                                              ; preds = %496, %494
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #0
  %498 = load i32, ptr %19, align 4
  switch i32 %498, label %505 [
    i32 0, label %499
  ]

499:                                              ; preds = %497
  br label %500

500:                                              ; preds = %499
  %501 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN7ir_list23InstructionIteratorImplILb0EEppEv(ptr noundef nonnull align 8 dereferenceable(16) %45)
          to label %502 unwind label %224

502:                                              ; preds = %500
  br label %212

503:                                              ; preds = %490, %255
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #0
  br label %504

504:                                              ; preds = %503, %251
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #0
  br label %507

505:                                              ; preds = %497, %215
  call void @llvm.lifetime.end.p0(i64 16, ptr %46) #0
  call void @llvm.lifetime.end.p0(i64 16, ptr %45) #0
  call void @llvm.lifetime.end.p0(i64 16, ptr %44) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #0
  %506 = load i32, ptr %19, align 4
  switch i32 %506, label %511 [
    i32 4, label %510
  ]

507:                                              ; preds = %504, %224
  call void @llvm.lifetime.end.p0(i64 16, ptr %46) #0
  br label %508

508:                                              ; preds = %507, %220
  call void @llvm.lifetime.end.p0(i64 16, ptr %45) #0
  call void @llvm.lifetime.end.p0(i64 16, ptr %44) #0
  br label %509

509:                                              ; preds = %508, %216
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #0
  br label %519

510:                                              ; preds = %505
  store i32 0, ptr %19, align 4
  br label %511

511:                                              ; preds = %510, %505, %196
  call void @_ZN6sparta19AbstractEnvironmentINS_15PatriciaTreeMapIjNS_17SetAbstractDomainINS_15PatriciaTreeSetIP13IRInstructionEEEENS_17TopValueInterfaceIS7_EEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %42) #0
  call void @llvm.lifetime.end.p0(i64 16, ptr %42) #0
  %512 = load i32, ptr %19, align 4
  switch i32 %512, label %514 [
    i32 0, label %513
  ]

513:                                              ; preds = %511
  store i32 0, ptr %19, align 4
  br label %514

514:                                              ; preds = %513, %511
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #0
  %515 = load i32, ptr %19, align 4
  switch i32 %515, label %521 [
    i32 0, label %516
    i32 3, label %517
  ]

516:                                              ; preds = %514
  br label %517

517:                                              ; preds = %516, %514
  %518 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPPN3cfg5BlockESt6vectorIS3_SaIS3_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %39) #0
  br label %168

519:                                              ; preds = %509, %201
  call void @_ZN6sparta19AbstractEnvironmentINS_15PatriciaTreeMapIjNS_17SetAbstractDomainINS_15PatriciaTreeSetIP13IRInstructionEEEENS_17TopValueInterfaceIS7_EEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %42) #0
  br label %520

520:                                              ; preds = %519, %197
  call void @llvm.lifetime.end.p0(i64 16, ptr %42) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #0
  call void @_ZNSt10unique_ptrIN14type_inference13TypeInferenceESt14default_deleteIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %37) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #0
  br label %525

521:                                              ; preds = %514, %170
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #0
  %522 = load i32, ptr %19, align 4
  switch i32 %522, label %524 [
    i32 2, label %523
  ]

523:                                              ; preds = %521
  store i1 false, ptr %7, align 1
  store i32 1, ptr %19, align 4
  br label %524

524:                                              ; preds = %523, %521
  call void @_ZNSt10unique_ptrIN14type_inference13TypeInferenceESt14default_deleteIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %37) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #0
  call void @_ZN13reaching_defs25MoveAwareFixpointIteratorD2Ev(ptr noundef nonnull align 8 dereferenceable(288) %34) #0
  call void @llvm.lifetime.end.p0(i64 288, ptr %34) #0
  call void @llvm.lifetime.end.p0(i64 32, ptr %33) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #0
  br label %528

525:                                              ; preds = %520, %187
  call void @_ZN13reaching_defs25MoveAwareFixpointIteratorD2Ev(ptr noundef nonnull align 8 dereferenceable(288) %34) #0
  br label %526

526:                                              ; preds = %525, %175
  call void @llvm.lifetime.end.p0(i64 288, ptr %34) #0
  call void @llvm.lifetime.end.p0(i64 32, ptr %33) #0
  br label %527

527:                                              ; preds = %526, %171
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #0
  br label %529

528:                                              ; preds = %524, %140
  call void @llvm.lifetime.end.p0(i64 1, ptr %28) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %26) #0
  br label %531

529:                                              ; preds = %527, %145
  call void @llvm.lifetime.end.p0(i64 1, ptr %28) #0
  br label %530

530:                                              ; preds = %529, %141
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %26) #0
  br label %532

531:                                              ; preds = %528, %116
  call void @llvm.lifetime.end.p0(i64 1, ptr %22) #0
  call void @_ZNSt6vectorIPN3cfg5BlockESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %21) #0
  call void @llvm.lifetime.end.p0(i64 24, ptr %21) #0
  br label %534

532:                                              ; preds = %530, %121
  call void @llvm.lifetime.end.p0(i64 1, ptr %22) #0
  call void @_ZNSt6vectorIPN3cfg5BlockESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %21) #0
  br label %533

533:                                              ; preds = %532, %117
  call void @llvm.lifetime.end.p0(i64 24, ptr %21) #0
  br label %535

534:                                              ; preds = %531, %95
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #0
  br label %536

535:                                              ; preds = %533, %96
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #0
  call void @_ZN17AccumulatingTimer22AccumulatingTimerScopeD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %18) #0
  call void @llvm.lifetime.end.p0(i64 16, ptr %18) #0
  br label %538

536:                                              ; preds = %534, %78
  call void @_ZN17AccumulatingTimer22AccumulatingTimerScopeD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %18) #0
  call void @llvm.lifetime.end.p0(i64 16, ptr %18) #0
  %537 = load i1, ptr %7, align 1
  ret i1 %537

538:                                              ; preds = %535, %87
  %539 = load ptr, ptr %16, align 8
  %540 = load i32, ptr %17, align 4
  %541 = insertvalue { ptr, i32 } poison, ptr %539, 0
  %542 = insertvalue { ptr, i32 } %541, i32 %540, 1
  resume { ptr, i32 } %542
}

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN17AccumulatingTimer5scopeEv(ptr dead_on_unwind noalias writable sret(%"class.AccumulatingTimer::AccumulatingTimerScope") align 8, ptr noundef nonnull align 8 dereferenceable(16)) #3 align 2

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

declare noundef zeroext i1 @_ZN4type12is_primitiveEPK7DexType(ptr noundef) #4

; Function Attrs: inlinehint mustprogress uwtable
declare hidden noundef zeroext i1 @"_ZSt6any_ofIN9__gnu_cxx17__normal_iteratorIPPN3cfg5BlockESt6vectorIS4_SaIS4_EEEEZN20constant_propagation9Transform22has_problematic_returnERNS2_16ControlFlowGraphEbP7DexTypeP8DexProtoPK10XStoreRefsE3$_1EbT_SM_T0_"(ptr, ptr) #7

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local ptr @_Z19InstructionIterableRN3cfg16ControlFlowGraphE(ptr noundef nonnull align 8 dereferenceable(160)) #7

; Function Attrs: inlinehint mustprogress uwtable
declare hidden noundef zeroext i1 @"_ZSt6any_ofIN3cfg23InstructionIteratorImplILb0EEEZN20constant_propagation9Transform22has_problematic_returnERNS0_16ControlFlowGraphEbP7DexTypeP8DexProtoPK10XStoreRefsE3$_2EbT_SF_T0_"(ptr noundef, ptr noundef, ptr) #7

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef i64 @_ZNK10XStoreRefs13get_store_idxEPK7DexType(ptr noundef nonnull align 8 dereferenceable(2840), ptr noundef) #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @"_ZNSt8functionIFbPK13IRInstructionEEC2IRZN20constant_propagation9Transform22has_problematic_returnERN3cfg16ControlFlowGraphEbP7DexTypeP8DexProtoPK10XStoreRefsE3$_0vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN13reaching_defs25MoveAwareFixpointIteratorC2ERKN3cfg16ControlFlowGraphESt8functionIFbPK13IRInstructionEE(ptr noundef nonnull align 8 dereferenceable(288), ptr noundef nonnull align 8 dereferenceable(160), ptr noundef) unnamed_addr #3 align 2

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(16) ptr @_ZNK6sparta7fp_impl29MonotonicFixpointIteratorBaseIN3cfg14GraphInterfaceENS_19AbstractEnvironmentINS_15PatriciaTreeMapIjNS_17SetAbstractDomainINS_15PatriciaTreeSetIP13IRInstructionEEEENS_17TopValueInterfaceISB_EEEEEESt4hashIPNS2_5BlockEEE18get_entry_state_atERKSI_(ptr noundef nonnull align 8 dereferenceable(144), ptr noundef nonnull align 8 dereferenceable(8)) #3 align 2

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare hidden noundef zeroext i1 @"_ZZN20constant_propagation9Transform22has_problematic_returnERN3cfg16ControlFlowGraphEbP7DexTypeP8DexProtoPK10XStoreRefsENK3$_3clEPKS4_P13IRInstruction"(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef, ptr noundef) #7 align 2

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local { i8, ptr } @_ZNK14type_inference15TypeEnvironment12get_dex_typeEj(ptr noundef nonnull align 8 dereferenceable(48), i32 noundef) #3 align 2

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

declare noundef zeroext i1 @_ZN4type8is_arrayEPK7DexType(ptr noundef) #4

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

declare noundef ptr @_ZN4type24get_array_component_typeEPK7DexType(ptr noundef) #4

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK13reaching_defs25MoveAwareFixpointIterator19analyze_instructionEPK13IRInstructionPN6sparta19AbstractEnvironmentINS4_15PatriciaTreeMapIjNS4_17SetAbstractDomainINS4_15PatriciaTreeSetIPS1_EEEENS4_17TopValueInterfaceISB_EEEEEE(ptr noundef nonnull align 8 dereferenceable(288), ptr noundef, ptr noundef) unnamed_addr #3 align 2

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

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

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

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

attributes #0 = { nounwind }
attributes #1 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { "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 = { 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 #7 = { 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 #8 = { 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 #9 = { 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 #10 = { alwaysinline 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 #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 = !{!"branch_weights", i32 1, i32 1048575}
!12 = !{i8 0, i8 2}
!13 = !{}
!14 = !{!15, !15, i64 0}
!15 = !{!"long", !7, i64 0}
!16 = !{!7, !7, i64 0}
!17 = !{!18, !18, i64 0}
!18 = !{!"int", !7, i64 0}
!19 = !{!20, !20, i64 0}
!20 = !{!"_ZTS8IROpcode", !7, i64 0}
!21 = distinct !{!21, !22}
!22 = !{!"llvm.loop.mustprogress"}


; 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.AccumulatingTimer = type { %"class.std::shared_ptr" }
%"class.std::shared_ptr" = type { %"class.std::__shared_ptr" }
%"class.std::__shared_ptr" = type { ptr, %"class.std::__shared_count" }
%"class.std::__shared_count" = type { ptr }
%"class.std::vector.556" = type { %"struct.std::_Vector_base.557" }
%"struct.std::_Vector_base.557" = type { %"struct.std::_Vector_base<cfg::Block *, std::allocator<cfg::Block *>>::_Vector_impl" }
%"struct.std::_Vector_base<cfg::Block *, std::allocator<cfg::Block *>>::_Vector_impl" = type { %"struct.std::_Vector_base<cfg::Block *, std::allocator<cfg::Block *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<cfg::Block *, std::allocator<cfg::Block *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.ir_list::InstructionIterableImpl" = type { %"class.boost::intrusive::list_iterator", %"class.boost::intrusive::list_iterator" }
%"class.boost::intrusive::list_iterator" = type { %"struct.boost::intrusive::iiterator_members" }
%"struct.boost::intrusive::iiterator_members" = type { ptr }
%"class.ir_list::InstructionIteratorImpl" = type { %"class.boost::intrusive::list_iterator", %"class.boost::intrusive::list_iterator" }
%"class.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.std::allocator" = type { i8 }
%"class.AccumulatingTimer::AccumulatingTimerScope" = type { ptr, %"class.std::chrono::time_point" }
%"class.std::chrono::time_point" = type { %"class.std::chrono::duration" }
%"class.std::chrono::duration" = type { i64 }
%class.anon.582 = type { i8 }
%"class.cfg::InstructionIterableImpl" = type { 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.anon.619 = type { ptr, ptr, ptr, ptr }
%"class.reaching_defs::MoveAwareFixpointIterator" = type { %"class.ir_analyzer::BaseIRAnalyzer", %"class.std::function.655" }
%"class.ir_analyzer::BaseIRAnalyzer" = type { %"class.sparta::MonotonicFixpointIterator.620" }
%"class.sparta::MonotonicFixpointIterator.620" = type { %"class.sparta::fp_impl::MonotonicFixpointIteratorBase.621", %"class.sparta::WeakPartialOrdering" }
%"class.sparta::fp_impl::MonotonicFixpointIteratorBase.621" = type { %"class.sparta::FixpointIterator.622", ptr, %"class.sparta::AbstractEnvironment.623", %"class.std::unordered_map.641", %"class.std::unordered_map.641" }
%"class.sparta::FixpointIterator.622" = type { ptr }
%"class.sparta::AbstractEnvironment.623" = type { %"class.sparta::AbstractDomainScaffolding.624" }
%"class.sparta::AbstractDomainScaffolding.624" = type { i32, %"class.sparta::environment_impl::MapValue.629" }
%"class.sparta::environment_impl::MapValue.629" = type { %"class.sparta::PatriciaTreeMap.632" }
%"class.sparta::PatriciaTreeMap.632" = type { %"class.sparta::pt_core::PatriciaTreeCore.637" }
%"class.sparta::pt_core::PatriciaTreeCore.637" = type { %"class.boost::intrusive_ptr.638" }
%"class.boost::intrusive_ptr.638" = type { ptr }
%"class.std::unordered_map.641" = type { %"class.std::_Hashtable.642" }
%"class.std::_Hashtable.642" = 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.sparta::WeakPartialOrdering" = type <{ %"class.std::vector.340", %"class.std::vector.345", %"class.std::unordered_map.311", i8, [7 x i8] }>
%"class.std::vector.340" = type { %"struct.std::_Vector_base.341" }
%"struct.std::_Vector_base.341" = type { %"struct.std::_Vector_base<sparta::WpoNode<cfg::Block *>, std::allocator<sparta::WpoNode<cfg::Block *>>>::_Vector_impl" }
%"struct.std::_Vector_base<sparta::WpoNode<cfg::Block *>, std::allocator<sparta::WpoNode<cfg::Block *>>>::_Vector_impl" = type { %"struct.std::_Vector_base<sparta::WpoNode<cfg::Block *>, std::allocator<sparta::WpoNode<cfg::Block *>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<sparta::WpoNode<cfg::Block *>, std::allocator<sparta::WpoNode<cfg::Block *>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.345" = type { %"struct.std::_Vector_base.346" }
%"struct.std::_Vector_base.346" = type { %"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl" }
%"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl" = type { %"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl_data" }
%"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::unordered_map.311" = type { %"class.std::_Hashtable.312" }
%"class.std::_Hashtable.312" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"class.std::function.655" = type { %"class.std::_Function_base", ptr }
%"class.std::_Function_base" = type { %"union.std::_Any_data", ptr }
%"union.std::_Any_data" = type { %"union.std::_Nocopy_types" }
%"union.std::_Nocopy_types" = type { { i64, i64 } }
%"class.std::unique_ptr.657" = type { %"struct.std::__uniq_ptr_data.658" }
%"struct.std::__uniq_ptr_data.658" = type { %"class.std::__uniq_ptr_impl.659" }
%"class.std::__uniq_ptr_impl.659" = type { %"class.std::tuple.660" }
%"class.std::tuple.660" = type { %"struct.std::_Tuple_impl.661" }
%"struct.std::_Tuple_impl.661" = type { %"struct.std::_Head_base.664" }
%"struct.std::_Head_base.664" = type { ptr }
%"class.__gnu_cxx::__normal_iterator.561" = type { ptr }
%"class.sparta::pt_core::PatriciaTreeIterator" = type { %"class.sparta::pt_core::PatriciaTreePostOrder" }
%"class.sparta::pt_core::PatriciaTreePostOrder" = type { %"class.boost::intrusive_ptr.673", %"class.std::stack", ptr }
%"class.boost::intrusive_ptr.673" = type { ptr }
%"class.std::stack" = type { %"class.std::deque.674" }
%"class.std::deque.674" = type { %"class.std::_Deque_base.675" }
%"class.std::_Deque_base.675" = 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.679", %"struct.std::_Deque_iterator.679" }
%"struct.std::_Deque_iterator.679" = type { ptr, ptr, ptr, ptr }
%class.UnorderedSet.787 = type { %"class.std::unordered_set.789" }
%"class.std::unordered_set.789" = type { %"class.std::_Hashtable.790" }
%"class.std::_Hashtable.790" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"class.boost::optional.809" = type { %"class.boost::optional_detail::tc_optional_base.810" }
%"class.boost::optional_detail::tc_optional_base.810" = type { i8, ptr }

@__dso_handle = external hidden global i8
@.str.9 = external hidden unnamed_addr constant [110 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [2 x i8], align 1
@_ZZN20constant_propagation9Transform22has_problematic_returnERN3cfg16ControlFlowGraphEbP7DexTypeP8DexProtoPK10XStoreRefsE7s_timer = external hidden global %class.AccumulatingTimer, align 8
@_ZGVZN20constant_propagation9Transform22has_problematic_returnERN3cfg16ControlFlowGraphEbP7DexTypeP8DexProtoPK10XStoreRefsE7s_timer = external hidden global i64, align 8
@.str.28 = external hidden unnamed_addr constant [56 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [18 x i8], align 1
@__PRETTY_FUNCTION__._ZN20constant_propagation9Transform22has_problematic_returnERN3cfg16ControlFlowGraphEbP7DexTypeP8DexProtoPK10XStoreRefs = external hidden unnamed_addr constant [135 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [18 x i8], align 1

; Function Attrs: nofree nounwind
declare i32 @__cxa_guard_acquire(ptr) local_unnamed_addr #0

declare i32 @__gxx_personality_v0(...)

; Function Attrs: nofree nounwind
declare void @__cxa_guard_abort(ptr) local_unnamed_addr #0

; Function Attrs: nofree nounwind
declare void @__cxa_guard_release(ptr) local_unnamed_addr #0

; Function Attrs: nofree nounwind
declare i32 @__cxa_atexit(ptr, ptr, ptr) local_unnamed_addr #0

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

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

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

declare void @_ZN17AccumulatingTimerC1ENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef) unnamed_addr #4

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local noundef zeroext i1 @_ZN20constant_propagation9Transform22has_problematic_returnERN3cfg16ControlFlowGraphEbP7DexTypeP8DexProtoPK10XStoreRefs(ptr nocapture noundef nonnull readnone align 8 dereferenceable(248) %0, ptr noundef nonnull align 8 dereferenceable(160) %1, i1 noundef zeroext %2, ptr noundef %3, ptr noundef %4, ptr noundef %5) local_unnamed_addr #3 align 2 personality ptr @__gxx_personality_v0 {
  %7 = alloca ptr, align 8
  %8 = alloca ptr, align 8
  %9 = alloca ptr, align 8
  %10 = alloca %"class.std::__cxx11::basic_string", align 8
  %11 = alloca %"class.std::allocator", align 1
  %12 = alloca %"class.AccumulatingTimer::AccumulatingTimerScope", align 8
  %13 = alloca %"class.std::vector.556", align 8
  %14 = alloca %class.anon.582, align 1
  %15 = alloca %"class.cfg::InstructionIterableImpl", align 8
  %16 = alloca %"class.cfg::InstructionIteratorImpl", align 8
  %17 = alloca %"class.cfg::InstructionIteratorImpl", align 8
  %18 = alloca i64, align 8
  %19 = alloca %class.anon.619, align 8
  %20 = alloca %"class.reaching_defs::MoveAwareFixpointIterator", align 8
  %21 = alloca %"class.std::function.655", align 8
  %22 = alloca %"class.sparta::AbstractEnvironment.623", align 8
  %23 = alloca %"class.std::unique_ptr.657", align 8
  %24 = alloca %"class.__gnu_cxx::__normal_iterator.561", align 8
  %25 = alloca %"class.__gnu_cxx::__normal_iterator.561", align 8
  %26 = alloca ptr, align 8
  %27 = alloca %"class.sparta::AbstractEnvironment.623", align 8
  %28 = alloca %"class.ir_list::InstructionIterableImpl", align 8
  %29 = alloca %"class.ir_list::InstructionIteratorImpl", align 8
  %30 = alloca %"class.ir_list::InstructionIteratorImpl", align 8
  %31 = alloca i32, align 4
  %32 = alloca %"class.sparta::pt_core::PatriciaTreeIterator", align 8
  %33 = alloca %"class.sparta::pt_core::PatriciaTreeIterator", align 8
  %34 = alloca ptr, align 8
  %35 = alloca %class.UnorderedSet.787, align 8
  %36 = alloca %"class.boost::optional.809", align 8
  store ptr %3, ptr %7, align 8, !tbaa !5
  store ptr %4, ptr %8, align 8, !tbaa !5
  store ptr %5, ptr %9, align 8, !tbaa !5
  %37 = load atomic i8, ptr @_ZGVZN20constant_propagation9Transform22has_problematic_returnERN3cfg16ControlFlowGraphEbP7DexTypeP8DexProtoPK10XStoreRefsE7s_timer acquire, align 8
  %38 = icmp eq i8 %37, 0
  br i1 %38, label %39, label %45, !prof !9

39:                                               ; preds = %6
  %40 = tail call i32 @__cxa_guard_acquire(ptr nonnull @_ZGVZN20constant_propagation9Transform22has_problematic_returnERN3cfg16ControlFlowGraphEbP7DexTypeP8DexProtoPK10XStoreRefsE7s_timer) #11
  %.not = icmp eq i32 %40, 0
  br i1 %.not, label %45, label %41

41:                                               ; preds = %39
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %11) #11
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %11) #11
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %10, ptr noundef nonnull @.str.28, ptr noundef nonnull align 1 dereferenceable(1) %11)
          to label %42 unwind label %50

42:                                               ; preds = %41
  invoke void @_ZN17AccumulatingTimerC1ENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(16) @_ZZN20constant_propagation9Transform22has_problematic_returnERN3cfg16ControlFlowGraphEbP7DexTypeP8DexProtoPK10XStoreRefsE7s_timer, ptr noundef nonnull %10)
          to label %43 unwind label %52

43:                                               ; preds = %42
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #11
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %11) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %11) #11
  %44 = call i32 @__cxa_atexit(ptr nonnull @_ZN17AccumulatingTimerD2Ev, ptr nonnull @_ZZN20constant_propagation9Transform22has_problematic_returnERN3cfg16ControlFlowGraphEbP7DexTypeP8DexProtoPK10XStoreRefsE7s_timer, ptr nonnull @__dso_handle) #11
  call void @__cxa_guard_release(ptr nonnull @_ZGVZN20constant_propagation9Transform22has_problematic_returnERN3cfg16ControlFlowGraphEbP7DexTypeP8DexProtoPK10XStoreRefsE7s_timer) #11
  br label %45

45:                                               ; preds = %43, %39, %6
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %12) #11
  call void @_ZN17AccumulatingTimer5scopeEv(ptr dead_on_unwind nonnull writable sret(%"class.AccumulatingTimer::AccumulatingTimerScope") align 8 %12, ptr noundef nonnull align 8 dereferenceable(16) @_ZZN20constant_propagation9Transform22has_problematic_returnERN3cfg16ControlFlowGraphEbP7DexTypeP8DexProtoPK10XStoreRefsE7s_timer)
  %46 = load ptr, ptr %7, align 8, !tbaa !5
  %47 = icmp ne ptr %46, null
  %48 = load ptr, ptr %8, align 8
  %49 = icmp ne ptr %48, null
  %or.cond = select i1 %47, i1 %49, i1 false
  br i1 %or.cond, label %55, label %276

50:                                               ; preds = %41
  %51 = landingpad { ptr, i32 }
          cleanup
  br label %54

52:                                               ; preds = %42
  %53 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #11
  br label %54

54:                                               ; preds = %52, %50
  %.pn = phi { ptr, i32 } [ %53, %52 ], [ %51, %50 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %11) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %11) #11
  call void @__cxa_guard_abort(ptr nonnull @_ZGVZN20constant_propagation9Transform22has_problematic_returnERN3cfg16ControlFlowGraphEbP7DexTypeP8DexProtoPK10XStoreRefsE7s_timer) #11
  br label %277

55:                                               ; preds = %45
  %56 = call noundef ptr @_ZNK8DexProto9get_rtypeEv(ptr noundef nonnull align 8 dereferenceable(24) %48)
  %57 = invoke noundef zeroext i1 @_ZN4type12is_primitiveEPK7DexType(ptr noundef %56)
          to label %58 unwind label %59

58:                                               ; preds = %55
  br i1 %57, label %276, label %61

59:                                               ; preds = %55
  %60 = landingpad { ptr, i32 }
          cleanup
  br label %275

61:                                               ; preds = %58
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %13) #11
  invoke void @_ZNK3cfg16ControlFlowGraph6blocksEv(ptr dead_on_unwind nonnull writable sret(%"class.std::vector.556") align 8 %13, ptr noundef nonnull align 8 dereferenceable(160) %1)
          to label %62 unwind label %67

62:                                               ; preds = %61
  %63 = call ptr @_ZNSt6vectorIPN3cfg5BlockESaIS2_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %13) #11
  %64 = call ptr @_ZNSt6vectorIPN3cfg5BlockESaIS2_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %13) #11
  %65 = invoke noundef zeroext i1 @"_ZSt6any_ofIN9__gnu_cxx17__normal_iteratorIPPN3cfg5BlockESt6vectorIS4_SaIS4_EEEEZN20constant_propagation9Transform22has_problematic_returnERNS2_16ControlFlowGraphEbP7DexTypeP8DexProtoPK10XStoreRefsE3$_1EbT_SM_T0_"(ptr %63, ptr %64)
          to label %66 unwind label %69

66:                                               ; preds = %62
  br i1 %65, label %71, label %272

67:                                               ; preds = %61
  %68 = landingpad { ptr, i32 }
          cleanup
  br label %274

69:                                               ; preds = %62
  %70 = landingpad { ptr, i32 }
          cleanup
  br label %273

71:                                               ; preds = %66
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %14) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %15) #11
  %72 = invoke ptr @_Z19InstructionIterableRN3cfg16ControlFlowGraphE(ptr noundef nonnull align 8 dereferenceable(160) %1)
          to label %73 unwind label %78

73:                                               ; preds = %71
  store ptr %72, ptr %15, align 8
  invoke void @_ZN3cfg23InstructionIterableImplILb0EE5beginEv(ptr dead_on_unwind nonnull writable sret(%"class.cfg::InstructionIteratorImpl") align 8 %16, ptr noundef nonnull align 8 dereferenceable(8) %15)
          to label %74 unwind label %80

74:                                               ; preds = %73
  invoke void @_ZN3cfg23InstructionIterableImplILb0EE3endEv(ptr dead_on_unwind nonnull writable sret(%"class.cfg::InstructionIteratorImpl") align 8 %17, ptr noundef nonnull align 8 dereferenceable(8) %15)
          to label %75 unwind label %80

75:                                               ; preds = %74
  %76 = invoke noundef zeroext i1 @"_ZSt6any_ofIN3cfg23InstructionIteratorImplILb0EEEZN20constant_propagation9Transform22has_problematic_returnERNS0_16ControlFlowGraphEbP7DexTypeP8DexProtoPK10XStoreRefsE3$_2EbT_SF_T0_"(ptr noundef nonnull %16, ptr noundef nonnull %17, ptr nonnull %14)
          to label %77 unwind label %80

77:                                               ; preds = %75
  br i1 %76, label %82, label %270

78:                                               ; preds = %71
  %79 = landingpad { ptr, i32 }
          cleanup
  br label %271

80:                                               ; preds = %75, %74, %73
  %81 = landingpad { ptr, i32 }
          cleanup
  br label %271

82:                                               ; preds = %77
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %18) #11
  %83 = load ptr, ptr %9, align 8, !tbaa !5
  %84 = load ptr, ptr %7, align 8, !tbaa !5
  %85 = invoke noundef i64 @_ZNK10XStoreRefs13get_store_idxEPK7DexType(ptr noundef nonnull align 8 dereferenceable(2840) %83, ptr noundef %84)
          to label %86 unwind label %97

86:                                               ; preds = %82
  store i64 %85, ptr %18, align 8, !tbaa !10
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %19) #11
  store ptr %7, ptr %19, align 8, !tbaa !5
  %87 = getelementptr inbounds i8, ptr %19, i64 8
  store ptr %8, ptr %87, align 8, !tbaa !5
  %88 = getelementptr inbounds i8, ptr %19, i64 16
  store ptr %9, ptr %88, align 8, !tbaa !5
  %89 = getelementptr inbounds i8, ptr %19, i64 24
  store ptr %18, ptr %89, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 288, ptr nonnull %20) #11
  call void @"_ZNSt8functionIFbPK13IRInstructionEEC2IRZN20constant_propagation9Transform22has_problematic_returnERN3cfg16ControlFlowGraphEbP7DexTypeP8DexProtoPK10XStoreRefsE3$_0vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %21, ptr noundef nonnull align 1 dereferenceable(1) %14) #11
  invoke void @_ZN13reaching_defs25MoveAwareFixpointIteratorC2ERKN3cfg16ControlFlowGraphESt8functionIFbPK13IRInstructionEE(ptr noundef nonnull align 8 dereferenceable(288) %20, ptr noundef nonnull align 8 dereferenceable(160) %1, ptr noundef nonnull %21)
          to label %90 unwind label %99

90:                                               ; preds = %86
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %22) #11
  invoke void @_ZN6sparta19AbstractEnvironmentINS_15PatriciaTreeMapIjNS_17SetAbstractDomainINS_15PatriciaTreeSetIP13IRInstructionEEEENS_17TopValueInterfaceIS7_EEEEEC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %22)
          to label %91 unwind label %101

91:                                               ; preds = %90
  invoke void @_ZN6sparta25MonotonicFixpointIteratorIN3cfg14GraphInterfaceENS_19AbstractEnvironmentINS_15PatriciaTreeMapIjNS_17SetAbstractDomainINS_15PatriciaTreeSetIP13IRInstructionEEEENS_17TopValueInterfaceISA_EEEEEESt4hashIPNS1_5BlockEEE3runERKSE_(ptr noundef nonnull align 8 dereferenceable(256) %20, ptr noundef nonnull align 8 dereferenceable(16) %22)
          to label %92 unwind label %103

92:                                               ; preds = %91
  call void @_ZN6sparta19AbstractEnvironmentINS_15PatriciaTreeMapIjNS_17SetAbstractDomainINS_15PatriciaTreeSetIP13IRInstructionEEEENS_17TopValueInterfaceIS7_EEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %22) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %22) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %23) #11
  call void @_ZNSt10unique_ptrIN14type_inference13TypeInferenceESt14default_deleteIS1_EEC2IS3_vEEv(ptr noundef nonnull align 8 dereferenceable(8) %23) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %24) #11
  %93 = call ptr @_ZNSt6vectorIPN3cfg5BlockESaIS2_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %13) #11
  store ptr %93, ptr %24, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %25) #11
  %94 = call ptr @_ZNSt6vectorIPN3cfg5BlockESaIS2_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %13) #11
  store ptr %94, ptr %25, align 8
  %95 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPPN3cfg5BlockESt6vectorIS3_SaIS3_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %24, ptr noundef nonnull align 8 dereferenceable(8) %25) #11
  br i1 %95, label %.lr.ph, label %.loopexit160

.lr.ph:                                           ; preds = %92
  %96 = getelementptr inbounds i8, ptr %36, i64 8
  br label %106

97:                                               ; preds = %82
  %98 = landingpad { ptr, i32 }
          cleanup
  br label %269

99:                                               ; preds = %86
  %100 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #11
  br label %268

101:                                              ; preds = %90
  %102 = landingpad { ptr, i32 }
          cleanup
  br label %105

103:                                              ; preds = %91
  %104 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN6sparta19AbstractEnvironmentINS_15PatriciaTreeMapIjNS_17SetAbstractDomainINS_15PatriciaTreeSetIP13IRInstructionEEEENS_17TopValueInterfaceIS7_EEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %22) #11
  br label %105

105:                                              ; preds = %103, %101
  %.pn113 = phi { ptr, i32 } [ %104, %103 ], [ %102, %101 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %22) #11
  br label %267

106:                                              ; preds = %.lr.ph, %262
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %26) #11
  %107 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPPN3cfg5BlockESt6vectorIS3_SaIS3_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %24) #11
  %108 = load ptr, ptr %107, align 8, !tbaa !5
  store ptr %108, ptr %26, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %27) #11
  %109 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNK6sparta7fp_impl29MonotonicFixpointIteratorBaseIN3cfg14GraphInterfaceENS_19AbstractEnvironmentINS_15PatriciaTreeMapIjNS_17SetAbstractDomainINS_15PatriciaTreeSetIP13IRInstructionEEEENS_17TopValueInterfaceISB_EEEEEESt4hashIPNS2_5BlockEEE18get_entry_state_atERKSI_(ptr noundef nonnull align 8 dereferenceable(144) %20, ptr noundef nonnull align 8 dereferenceable(8) %26)
          to label %110 unwind label %113

110:                                              ; preds = %106
  invoke void @_ZN6sparta19AbstractEnvironmentINS_15PatriciaTreeMapIjNS_17SetAbstractDomainINS_15PatriciaTreeSetIP13IRInstructionEEEENS_17TopValueInterfaceIS7_EEEEEC2ERKSB_(ptr noundef nonnull align 8 dereferenceable(16) %27, ptr noundef nonnull align 8 dereferenceable(16) %109)
          to label %111 unwind label %113

111:                                              ; preds = %110
  %112 = call noundef zeroext i1 @_ZNK6sparta25AbstractDomainScaffoldingINS_16environment_impl8MapValueINS_15PatriciaTreeMapIjNS_17SetAbstractDomainINS_15PatriciaTreeSetIP13IRInstructionEEEENS_17TopValueInterfaceIS9_EEEEEENS_19AbstractEnvironmentISC_EEE9is_bottomEv(ptr noundef nonnull align 8 dereferenceable(16) %27)
  br i1 %112, label %262, label %115

113:                                              ; preds = %110, %106
  %114 = landingpad { ptr, i32 }
          cleanup
  br label %265

115:                                              ; preds = %111
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %28) #11
  %116 = load ptr, ptr %26, align 8, !tbaa !5
  invoke void @_Z19InstructionIterableIN3cfg5BlockEEN7ir_list23InstructionIterableImplILb0EEEPT_(ptr dead_on_unwind nonnull writable sret(%"class.ir_list::InstructionIterableImpl") align 8 %28, ptr noundef %116)
          to label %117 unwind label %121

117:                                              ; preds = %115
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %29) #11
  invoke void @_ZNK7ir_list23InstructionIterableImplILb0EE5beginEv(ptr dead_on_unwind nonnull writable sret(%"class.ir_list::InstructionIteratorImpl") align 8 %29, ptr noundef nonnull align 8 dereferenceable(16) %28)
          to label %118 unwind label %123

118:                                              ; preds = %117
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %30) #11
  invoke void @_ZNK7ir_list23InstructionIterableImplILb0EE3endEv(ptr dead_on_unwind nonnull writable sret(%"class.ir_list::InstructionIteratorImpl") align 8 %30, ptr noundef nonnull align 8 dereferenceable(16) %28)
          to label %.preheader154 unwind label %.loopexit.split-lp156

.preheader154:                                    ; preds = %118, %.thread
  %119 = invoke noundef zeroext i1 @_ZNK7ir_list23InstructionIteratorImplILb0EEneERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %29, ptr noundef nonnull align 8 dereferenceable(16) %30)
          to label %120 unwind label %.loopexit155

120:                                              ; preds = %.preheader154
  br i1 %119, label %125, label %258

121:                                              ; preds = %115
  %122 = landingpad { ptr, i32 }
          cleanup
  br label %261

123:                                              ; preds = %117
  %124 = landingpad { ptr, i32 }
          cleanup
  br label %260

.loopexit155:                                     ; preds = %.preheader154, %.thread
  %lpad.loopexit157 = landingpad { ptr, i32 }
          cleanup
  br label %259

.loopexit.split-lp156:                            ; preds = %118
  %lpad.loopexit.split-lp158 = landingpad { ptr, i32 }
          cleanup
  br label %259

125:                                              ; preds = %120
  %126 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK7ir_list23InstructionIteratorImplILb0EEdeEv(ptr noundef nonnull align 8 dereferenceable(16) %29)
          to label %127 unwind label %138

127:                                              ; preds = %125
  %128 = getelementptr inbounds i8, ptr %126, i64 24
  %129 = load ptr, ptr %128, align 8, !tbaa !12
  %130 = call noundef zeroext i16 @_ZNK13IRInstruction6opcodeEv(ptr noundef nonnull align 8 dereferenceable(32) %129)
  %131 = call noundef zeroext i1 @_ZN6opcode11is_a_returnE8IROpcode(i16 noundef zeroext %130)
  br i1 %131, label %132, label %256

132:                                              ; preds = %127
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %31) #11
  %133 = invoke noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %129, i16 noundef zeroext 0)
          to label %134 unwind label %142

134:                                              ; preds = %132
  store i32 %133, ptr %31, align 4, !tbaa !13
  %135 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNK6sparta19AbstractEnvironmentINS_15PatriciaTreeMapIjNS_17SetAbstractDomainINS_15PatriciaTreeSetIP13IRInstructionEEEENS_17TopValueInterfaceIS7_EEEEE3getERKj(ptr noundef nonnull align 8 dereferenceable(16) %27, ptr noundef nonnull align 4 dereferenceable(4) %31)
          to label %136 unwind label %142

136:                                              ; preds = %134
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %31) #11
  %137 = call noundef zeroext i1 @_ZNK6sparta25AbstractDomainScaffoldingINS_8set_impl8SetValueINS_15PatriciaTreeSetIP13IRInstructionEEEENS_17SetAbstractDomainIS6_EEE9is_bottomEv(ptr noundef nonnull align 8 dereferenceable(16) %135)
  br i1 %137, label %.invoke, label %146

138:                                              ; preds = %125
  %139 = landingpad { ptr, i32 }
          cleanup
  br label %259

140:                                              ; preds = %256
  %141 = landingpad { ptr, i32 }
          cleanup
  br label %259

142:                                              ; preds = %134, %132
  %143 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %31) #11
  br label %259

144:                                              ; preds = %.invoke
  %145 = landingpad { ptr, i32 }
          cleanup
  br label %259

146:                                              ; preds = %136
  %147 = call noundef zeroext i1 @_ZNK6sparta25AbstractDomainScaffoldingINS_8set_impl8SetValueINS_15PatriciaTreeSetIP13IRInstructionEEEENS_17SetAbstractDomainIS6_EEE6is_topEv(ptr noundef nonnull align 8 dereferenceable(16) %135)
  br i1 %147, label %.invoke, label %150

.invoke:                                          ; preds = %136, %146
  %148 = phi ptr [ @.str.30, %146 ], [ @.str.29, %136 ]
  %149 = phi i32 [ 1143, %146 ], [ 1142, %136 ]
  invoke void (ptr, ptr, i32, ptr, i32, ptr, ...) @_Z11assert_failPKcS0_jS0_10RedexErrorS0_z(ptr noundef nonnull %148, ptr noundef nonnull @.str.9, i32 noundef %149, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN20constant_propagation9Transform22has_problematic_returnERN3cfg16ControlFlowGraphEbP7DexTypeP8DexProtoPK10XStoreRefs, i32 noundef 2, ptr noundef nonnull @.str.10) #12
          to label %.cont unwind label %144

.cont:                                            ; preds = %.invoke
  unreachable

150:                                              ; preds = %146
  %151 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK6sparta22PowersetAbstractDomainIP13IRInstructionNS_8set_impl8SetValueINS_15PatriciaTreeSetIS2_EEEERKS6_NS_17SetAbstractDomainIS6_EEE8elementsEv(ptr noundef nonnull align 8 dereferenceable(16) %135)
          to label %152 unwind label %156

152:                                              ; preds = %150
  call void @llvm.lifetime.start.p0(i64 96, ptr nonnull %32) #11
  invoke void @_ZNK6sparta15PatriciaTreeSetIP13IRInstructionE5beginEv(ptr dead_on_unwind nonnull writable sret(%"class.sparta::pt_core::PatriciaTreeIterator") align 8 %32, ptr noundef nonnull align 8 dereferenceable(8) %151)
          to label %153 unwind label %158

153:                                              ; preds = %152
  call void @llvm.lifetime.start.p0(i64 96, ptr nonnull %33) #11
  invoke void @_ZNK6sparta15PatriciaTreeSetIP13IRInstructionE3endEv(ptr dead_on_unwind nonnull writable sret(%"class.sparta::pt_core::PatriciaTreeIterator") align 8 %33, ptr noundef nonnull align 8 dereferenceable(8) %151)
          to label %.preheader unwind label %160

.preheader:                                       ; preds = %153, %.critedge143
  %154 = invoke noundef zeroext i1 @_ZNK6sparta7pt_core20PatriciaTreeIteratorIP13IRInstructionNS0_10EmptyValueEEneERKS5_(ptr noundef nonnull align 8 dereferenceable(96) %32, ptr noundef nonnull align 8 dereferenceable(96) %33)
          to label %155 unwind label %162

155:                                              ; preds = %.preheader
  br i1 %154, label %164, label %.critedge152

156:                                              ; preds = %150
  %157 = landingpad { ptr, i32 }
          cleanup
  br label %259

158:                                              ; preds = %152
  %159 = landingpad { ptr, i32 }
          cleanup
  br label %255

160:                                              ; preds = %153
  %161 = landingpad { ptr, i32 }
          cleanup
  br label %254

162:                                              ; preds = %.critedge143, %.preheader
  %163 = landingpad { ptr, i32 }
          cleanup
  br label %253

164:                                              ; preds = %155
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %34) #11
  %165 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK6sparta7pt_core20PatriciaTreeIteratorIP13IRInstructionNS0_10EmptyValueEEdeEv(ptr noundef nonnull align 8 dereferenceable(96) %32)
          to label %166 unwind label %179

166:                                              ; preds = %164
  %167 = load ptr, ptr %165, align 8, !tbaa !5
  store ptr %167, ptr %34, align 8, !tbaa !5
  %168 = call noundef zeroext i16 @_ZNK13IRInstruction6opcodeEv(ptr noundef nonnull align 8 dereferenceable(32) %167)
  %169 = load ptr, ptr %34, align 8, !tbaa !5
  %170 = invoke noundef zeroext i1 @_ZNK13IRInstruction8has_typeEv(ptr noundef nonnull align 8 dereferenceable(32) %169)
          to label %171 unwind label %.loopexit

171:                                              ; preds = %166
  %172 = load ptr, ptr %34, align 8, !tbaa !5
  br i1 %170, label %173, label %181

173:                                              ; preds = %171
  %174 = invoke noundef ptr @_ZNK13IRInstruction8get_typeEv(ptr noundef nonnull align 8 dereferenceable(32) %172)
          to label %175 unwind label %.loopexit

175:                                              ; preds = %173
  %176 = load ptr, ptr %34, align 8, !tbaa !5
  %177 = invoke noundef zeroext i1 @"_ZZN20constant_propagation9Transform22has_problematic_returnERN3cfg16ControlFlowGraphEbP7DexTypeP8DexProtoPK10XStoreRefsENK3$_3clEPKS4_P13IRInstruction"(ptr noundef nonnull align 8 dereferenceable(32) %19, ptr noundef %174, ptr noundef %176)
          to label %178 unwind label %.loopexit

178:                                              ; preds = %175
  br i1 %177, label %.loopexit228, label %.critedge143

179:                                              ; preds = %164
  %180 = landingpad { ptr, i32 }
          cleanup
  br label %252

.loopexit:                                        ; preds = %166, %173, %175, %181, %188, %191, %198, %201, %208, %211
  %lpad.loopexit = landingpad { ptr, i32 }
          cleanup
  br label %252

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

181:                                              ; preds = %171
  %182 = invoke noundef zeroext i1 @_ZNK13IRInstruction10has_methodEv(ptr noundef nonnull align 8 dereferenceable(32) %172)
          to label %183 unwind label %.loopexit

183:                                              ; preds = %181
  br i1 %182, label %184, label %197

184:                                              ; preds = %183
  %185 = call noundef zeroext i1 @_ZN6opcode12is_an_invokeE8IROpcode(i16 noundef zeroext %168)
  br i1 %185, label %188, label %.invoke229

.invoke229:                                       ; preds = %197, %184
  %186 = phi ptr [ @.str.31, %184 ], [ @.str.32, %197 ]
  %187 = phi i32 [ 1151, %184 ], [ 1174, %197 ]
  invoke void (ptr, ptr, i32, ptr, i32, ptr, ...) @_Z11assert_failPKcS0_jS0_10RedexErrorS0_z(ptr noundef nonnull %186, ptr noundef nonnull @.str.9, i32 noundef %187, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN20constant_propagation9Transform22has_problematic_returnERN3cfg16ControlFlowGraphEbP7DexTypeP8DexProtoPK10XStoreRefs, i32 noundef 2, ptr noundef nonnull @.str.10) #12
          to label %.cont230 unwind label %.loopexit.split-lp

.cont230:                                         ; preds = %.invoke229
  unreachable

188:                                              ; preds = %184
  %189 = load ptr, ptr %34, align 8, !tbaa !5
  %190 = invoke noundef ptr @_ZNK13IRInstruction10get_methodEv(ptr noundef nonnull align 8 dereferenceable(32) %189)
          to label %191 unwind label %.loopexit

191:                                              ; preds = %188
  %192 = call noundef ptr @_ZNK12DexMethodRef9get_protoEv(ptr noundef nonnull align 8 dereferenceable(26) %190)
  %193 = call noundef ptr @_ZNK8DexProto9get_rtypeEv(ptr noundef nonnull align 8 dereferenceable(24) %192)
  %194 = load ptr, ptr %34, align 8, !tbaa !5
  %195 = invoke noundef zeroext i1 @"_ZZN20constant_propagation9Transform22has_problematic_returnERN3cfg16ControlFlowGraphEbP7DexTypeP8DexProtoPK10XStoreRefsENK3$_3clEPKS4_P13IRInstruction"(ptr noundef nonnull align 8 dereferenceable(32) %19, ptr noundef %193, ptr noundef %194)
          to label %196 unwind label %.loopexit

196:                                              ; preds = %191
  br i1 %195, label %.loopexit228, label %.critedge143

197:                                              ; preds = %183
  switch i16 %168, label %.invoke229 [
    i16 75, label %198
    i16 61, label %198
    i16 47, label %206
  ]

198:                                              ; preds = %197, %197
  %199 = load ptr, ptr %34, align 8, !tbaa !5
  %200 = invoke noundef ptr @_ZNK13IRInstruction9get_fieldEv(ptr noundef nonnull align 8 dereferenceable(32) %199)
          to label %201 unwind label %.loopexit

201:                                              ; preds = %198
  %202 = call noundef ptr @_ZNK11DexFieldRef8get_typeEv(ptr noundef nonnull align 8 dereferenceable(26) %200)
  %203 = load ptr, ptr %34, align 8, !tbaa !5
  %204 = invoke noundef zeroext i1 @"_ZZN20constant_propagation9Transform22has_problematic_returnERN3cfg16ControlFlowGraphEbP7DexTypeP8DexProtoPK10XStoreRefsENK3$_3clEPKS4_P13IRInstruction"(ptr noundef nonnull align 8 dereferenceable(32) %19, ptr noundef %202, ptr noundef %203)
          to label %205 unwind label %.loopexit

205:                                              ; preds = %201
  br i1 %204, label %.loopexit228, label %.critedge143

206:                                              ; preds = %197
  %207 = call noundef zeroext i1 @_ZNKSt10unique_ptrIN14type_inference13TypeInferenceESt14default_deleteIS1_EEcvbEv(ptr noundef nonnull align 8 dereferenceable(8) %23) #11
  br i1 %207, label %218, label %208

208:                                              ; preds = %206
  %209 = invoke noalias noundef nonnull dereferenceable(432) ptr @_Znwm(i64 noundef 432) #13
          to label %210 unwind label %.loopexit

210:                                              ; preds = %208
  call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %35) #11
  call void @_ZN12UnorderedSetIP7DexTypeSt4hashIS1_ESt8equal_toIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(56) %35)
  invoke void @_ZN14type_inference13TypeInferenceC2ERKN3cfg16ControlFlowGraphEbRK12UnorderedSetIP7DexTypeSt4hashIS7_ESt8equal_toIS7_EEPKN21method_override_graph5GraphE(ptr noundef nonnull align 8 dereferenceable(432) %209, ptr noundef nonnull align 8 dereferenceable(160) %1, i1 noundef zeroext false, ptr noundef nonnull align 8 dereferenceable(56) %35, ptr noundef null)
          to label %211 unwind label %216

211:                                              ; preds = %210
  call void @_ZNSt10unique_ptrIN14type_inference13TypeInferenceESt14default_deleteIS1_EE5resetEPS1_(ptr noundef nonnull align 8 dereferenceable(8) %23, ptr noundef nonnull %209) #11
  call void @_ZN12UnorderedSetIP7DexTypeSt4hashIS1_ESt8equal_toIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %35) #11
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %35) #11
  %212 = call noundef ptr @_ZNKSt10unique_ptrIN14type_inference13TypeInferenceESt14default_deleteIS1_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %23) #11
  %213 = load ptr, ptr %7, align 8, !tbaa !5
  %214 = load ptr, ptr %8, align 8, !tbaa !5
  %215 = call noundef ptr @_ZNK8DexProto8get_argsEv(ptr noundef nonnull align 8 dereferenceable(24) %214)
  invoke void @_ZN14type_inference13TypeInference3runEbP7DexTypeP11DexTypeListPKSt3mapIiSt10unique_ptrI16DexAnnotationSetSt14default_deleteIS7_EESt4lessIiESaISt4pairIKiSA_EEE(ptr noundef nonnull align 8 dereferenceable(432) %212, i1 noundef zeroext %2, ptr noundef %213, ptr noundef %215, ptr noundef null)
          to label %218 unwind label %.loopexit

216:                                              ; preds = %210
  %217 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN12UnorderedSetIP7DexTypeSt4hashIS1_ESt8equal_toIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %35) #11
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %35) #11
  call void @_ZdlPvm(ptr noundef nonnull %209, i64 noundef 432) #14
  br label %252

218:                                              ; preds = %211, %206
  %219 = call noundef ptr @_ZNKSt10unique_ptrIN14type_inference13TypeInferenceESt14default_deleteIS1_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %23) #11
  %220 = call noundef nonnull align 8 dereferenceable(56) ptr @_ZN14type_inference13TypeInference21get_type_environmentsEv(ptr noundef nonnull align 8 dereferenceable(432) %219)
  %221 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZN12UnorderedMapIPK13IRInstructionN14type_inference15TypeEnvironmentESt4hashIS2_ESt8equal_toIS2_EE2atERKS2_(ptr noundef nonnull align 8 dereferenceable(56) %220, ptr noundef nonnull align 8 dereferenceable(8) %34)
          to label %222 unwind label %246

222:                                              ; preds = %218
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %36) #11
  %223 = load ptr, ptr %34, align 8, !tbaa !5
  %224 = invoke noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %223, i16 noundef zeroext 1)
          to label %225 unwind label %248

225:                                              ; preds = %222
  %226 = invoke { i8, ptr } @_ZNK14type_inference15TypeEnvironment12get_dex_typeEj(ptr noundef nonnull align 8 dereferenceable(48) %221, i32 noundef %224)
          to label %227 unwind label %248

227:                                              ; preds = %225
  %228 = extractvalue { i8, ptr } %226, 0
  store i8 %228, ptr %36, align 8
  %229 = extractvalue { i8, ptr } %226, 1
  store ptr %229, ptr %96, align 8
  %230 = call noundef zeroext i1 @_ZNK5boost8optionalIPK7DexTypeEcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %36) #11
  br i1 %230, label %231, label %.critedge

231:                                              ; preds = %227
  %232 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNR5boost8optionalIPK7DexTypeEdeEv(ptr noundef nonnull align 8 dereferenceable(16) %36)
          to label %233 unwind label %248

233:                                              ; preds = %231
  %234 = load ptr, ptr %232, align 8, !tbaa !5
  %235 = invoke noundef zeroext i1 @_ZN4type8is_arrayEPK7DexType(ptr noundef %234)
          to label %236 unwind label %248

236:                                              ; preds = %233
  br i1 %235, label %237, label %.critedge

237:                                              ; preds = %236
  %238 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNR5boost8optionalIPK7DexTypeEdeEv(ptr noundef nonnull align 8 dereferenceable(16) %36)
          to label %239 unwind label %248

239:                                              ; preds = %237
  %240 = load ptr, ptr %238, align 8, !tbaa !5
  %241 = invoke noundef ptr @_ZN4type24get_array_component_typeEPK7DexType(ptr noundef %240)
          to label %242 unwind label %248

242:                                              ; preds = %239
  %243 = load ptr, ptr %34, align 8, !tbaa !5
  %244 = invoke noundef zeroext i1 @"_ZZN20constant_propagation9Transform22has_problematic_returnERN3cfg16ControlFlowGraphEbP7DexTypeP8DexProtoPK10XStoreRefsENK3$_3clEPKS4_P13IRInstruction"(ptr noundef nonnull align 8 dereferenceable(32) %19, ptr noundef %241, ptr noundef %243)
          to label %245 unwind label %248

245:                                              ; preds = %242
  br i1 %244, label %250, label %.critedge

246:                                              ; preds = %218
  %247 = landingpad { ptr, i32 }
          cleanup
  br label %252

248:                                              ; preds = %242, %239, %237, %233, %231, %225, %222
  %249 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %36) #11
  br label %252

.critedge:                                        ; preds = %245, %236, %227
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %36) #11
  br label %.critedge143

250:                                              ; preds = %245
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %36) #11
  br label %.loopexit228

.critedge143:                                     ; preds = %.critedge, %196, %205, %178
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %34) #11
  %251 = invoke noundef nonnull align 8 dereferenceable(96) ptr @_ZN6sparta7pt_core20PatriciaTreeIteratorIP13IRInstructionNS0_10EmptyValueEEppEv(ptr noundef nonnull align 8 dereferenceable(96) %32)
          to label %.preheader unwind label %162

252:                                              ; preds = %.loopexit, %.loopexit.split-lp, %216, %248, %246, %179
  %.pn117.pn = phi { ptr, i32 } [ %180, %179 ], [ %217, %216 ], [ %249, %248 ], [ %247, %246 ], [ %lpad.loopexit, %.loopexit ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %34) #11
  br label %253

253:                                              ; preds = %252, %162
  %.pn120 = phi { ptr, i32 } [ %163, %162 ], [ %.pn117.pn, %252 ]
  call void @_ZN6sparta7pt_core20PatriciaTreeIteratorIP13IRInstructionNS0_10EmptyValueEED2Ev(ptr noundef nonnull align 8 dereferenceable(96) %33) #11
  br label %254

254:                                              ; preds = %253, %160
  %.pn120.pn = phi { ptr, i32 } [ %.pn120, %253 ], [ %161, %160 ]
  call void @llvm.lifetime.end.p0(i64 96, ptr nonnull %33) #11
  call void @_ZN6sparta7pt_core20PatriciaTreeIteratorIP13IRInstructionNS0_10EmptyValueEED2Ev(ptr noundef nonnull align 8 dereferenceable(96) %32) #11
  br label %255

255:                                              ; preds = %254, %158
  %.pn120.pn.pn = phi { ptr, i32 } [ %.pn120.pn, %254 ], [ %159, %158 ]
  call void @llvm.lifetime.end.p0(i64 96, ptr nonnull %32) #11
  br label %259

.critedge152:                                     ; preds = %155
  call void @_ZN6sparta7pt_core20PatriciaTreeIteratorIP13IRInstructionNS0_10EmptyValueEED2Ev(ptr noundef nonnull align 8 dereferenceable(96) %33) #11
  call void @llvm.lifetime.end.p0(i64 96, ptr nonnull %33) #11
  call void @_ZN6sparta7pt_core20PatriciaTreeIteratorIP13IRInstructionNS0_10EmptyValueEED2Ev(ptr noundef nonnull align 8 dereferenceable(96) %32) #11
  call void @llvm.lifetime.end.p0(i64 96, ptr nonnull %32) #11
  br label %256

256:                                              ; preds = %.critedge152, %127
  invoke void @_ZNK13reaching_defs25MoveAwareFixpointIterator19analyze_instructionEPK13IRInstructionPN6sparta19AbstractEnvironmentINS4_15PatriciaTreeMapIjNS4_17SetAbstractDomainINS4_15PatriciaTreeSetIPS1_EEEENS4_17TopValueInterfaceISB_EEEEEE(ptr noundef nonnull align 8 dereferenceable(288) %20, ptr noundef nonnull %129, ptr noundef nonnull %27)
          to label %.thread unwind label %140

.thread:                                          ; preds = %256
  %257 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN7ir_list23InstructionIteratorImplILb0EEppEv(ptr noundef nonnull align 8 dereferenceable(16) %29)
          to label %.preheader154 unwind label %.loopexit155

258:                                              ; preds = %120
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %30) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %29) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %28) #11
  br label %262

259:                                              ; preds = %.loopexit155, %.loopexit.split-lp156, %138, %142, %144, %255, %156, %140
  %.pn125.pn.pn.pn = phi { ptr, i32 } [ %139, %138 ], [ %141, %140 ], [ %145, %144 ], [ %143, %142 ], [ %.pn120.pn.pn, %255 ], [ %157, %156 ], [ %lpad.loopexit157, %.loopexit155 ], [ %lpad.loopexit.split-lp158, %.loopexit.split-lp156 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %30) #11
  br label %260

260:                                              ; preds = %259, %123
  %.pn125.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn125.pn.pn.pn, %259 ], [ %124, %123 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %29) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %28) #11
  br label %261

261:                                              ; preds = %260, %121
  %.pn125.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn125.pn.pn.pn.pn, %260 ], [ %122, %121 ]
  call void @_ZN6sparta19AbstractEnvironmentINS_15PatriciaTreeMapIjNS_17SetAbstractDomainINS_15PatriciaTreeSetIP13IRInstructionEEEENS_17TopValueInterfaceIS7_EEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %27) #11
  br label %265

.loopexit228:                                     ; preds = %178, %196, %205, %250
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %34) #11
  call void @_ZN6sparta7pt_core20PatriciaTreeIteratorIP13IRInstructionNS0_10EmptyValueEED2Ev(ptr noundef nonnull align 8 dereferenceable(96) %33) #11
  call void @llvm.lifetime.end.p0(i64 96, ptr nonnull %33) #11
  call void @_ZN6sparta7pt_core20PatriciaTreeIteratorIP13IRInstructionNS0_10EmptyValueEED2Ev(ptr noundef nonnull align 8 dereferenceable(96) %32) #11
  call void @llvm.lifetime.end.p0(i64 96, ptr nonnull %32) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %30) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %29) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %28) #11
  call void @_ZN6sparta19AbstractEnvironmentINS_15PatriciaTreeMapIjNS_17SetAbstractDomainINS_15PatriciaTreeSetIP13IRInstructionEEEENS_17TopValueInterfaceIS7_EEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %27) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %27) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) #11
  br label %.loopexit160

262:                                              ; preds = %111, %258
  call void @_ZN6sparta19AbstractEnvironmentINS_15PatriciaTreeMapIjNS_17SetAbstractDomainINS_15PatriciaTreeSetIP13IRInstructionEEEENS_17TopValueInterfaceIS7_EEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %27) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %27) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) #11
  %263 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPPN3cfg5BlockESt6vectorIS3_SaIS3_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %24) #11
  %264 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPPN3cfg5BlockESt6vectorIS3_SaIS3_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %24, ptr noundef nonnull align 8 dereferenceable(8) %25) #11
  br i1 %264, label %106, label %.loopexit160

265:                                              ; preds = %261, %113
  %.pn125.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn125.pn.pn.pn.pn.pn, %261 ], [ %114, %113 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %27) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #11
  call void @_ZNSt10unique_ptrIN14type_inference13TypeInferenceESt14default_deleteIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %23) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #11
  br label %267

.loopexit160:                                     ; preds = %262, %92, %.loopexit228
  %266 = phi i1 [ true, %.loopexit228 ], [ false, %92 ], [ false, %262 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #11
  call void @_ZNSt10unique_ptrIN14type_inference13TypeInferenceESt14default_deleteIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %23) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #11
  call void @_ZN13reaching_defs25MoveAwareFixpointIteratorD2Ev(ptr noundef nonnull align 8 dereferenceable(288) %20) #11
  call void @llvm.lifetime.end.p0(i64 288, ptr nonnull %20) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %19) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #11
  br label %270

267:                                              ; preds = %265, %105
  %.pn125.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn125.pn.pn.pn.pn.pn.pn, %265 ], [ %.pn113, %105 ]
  call void @_ZN13reaching_defs25MoveAwareFixpointIteratorD2Ev(ptr noundef nonnull align 8 dereferenceable(288) %20) #11
  br label %268

268:                                              ; preds = %267, %99
  %.pn125.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn125.pn.pn.pn.pn.pn.pn.pn, %267 ], [ %100, %99 ]
  call void @llvm.lifetime.end.p0(i64 288, ptr nonnull %20) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %19) #11
  br label %269

269:                                              ; preds = %268, %97
  %.pn125.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn125.pn.pn.pn.pn.pn.pn.pn.pn, %268 ], [ %98, %97 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #11
  br label %271

270:                                              ; preds = %77, %.loopexit160
  %.13 = phi i1 [ %266, %.loopexit160 ], [ false, %77 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %14) #11
  br label %272

271:                                              ; preds = %80, %269, %78
  %.pn125.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %79, %78 ], [ %.pn125.pn.pn.pn.pn.pn.pn.pn.pn.pn, %269 ], [ %81, %80 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %14) #11
  br label %273

272:                                              ; preds = %66, %270
  %.14 = phi i1 [ %.13, %270 ], [ false, %66 ]
  call void @_ZNSt6vectorIPN3cfg5BlockESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %13) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %13) #11
  br label %276

273:                                              ; preds = %271, %69
  %.pn125.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn125.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %271 ], [ %70, %69 ]
  call void @_ZNSt6vectorIPN3cfg5BlockESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %13) #11
  br label %274

274:                                              ; preds = %273, %67
  %.pn125.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn125.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %273 ], [ %68, %67 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %13) #11
  br label %275

275:                                              ; preds = %274, %59
  %.pn125.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn125.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %274 ], [ %60, %59 ]
  call void @_ZN17AccumulatingTimer22AccumulatingTimerScopeD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %12) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %12) #11
  br label %277

276:                                              ; preds = %272, %58, %45
  %.16 = phi i1 [ false, %45 ], [ %.14, %272 ], [ false, %58 ]
  call void @_ZN17AccumulatingTimer22AccumulatingTimerScopeD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %12) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %12) #11
  ret i1 %.16

277:                                              ; preds = %275, %54
  %.pn125.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn125.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %275 ], [ %.pn, %54 ]
  resume { ptr, i32 } %.pn125.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn
}

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN17AccumulatingTimer5scopeEv(ptr dead_on_unwind noalias writable sret(%"class.AccumulatingTimer::AccumulatingTimerScope") align 8, ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #3 align 2

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

declare noundef zeroext i1 @_ZN4type12is_primitiveEPK7DexType(ptr noundef) local_unnamed_addr #4

; Function Attrs: inlinehint mustprogress uwtable
declare hidden noundef zeroext i1 @"_ZSt6any_ofIN9__gnu_cxx17__normal_iteratorIPPN3cfg5BlockESt6vectorIS4_SaIS4_EEEEZN20constant_propagation9Transform22has_problematic_returnERNS2_16ControlFlowGraphEbP7DexTypeP8DexProtoPK10XStoreRefsE3$_1EbT_SM_T0_"(ptr, ptr) local_unnamed_addr #7

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local ptr @_Z19InstructionIterableRN3cfg16ControlFlowGraphE(ptr noundef nonnull align 8 dereferenceable(160)) local_unnamed_addr #7

; Function Attrs: inlinehint mustprogress uwtable
declare hidden noundef zeroext i1 @"_ZSt6any_ofIN3cfg23InstructionIteratorImplILb0EEEZN20constant_propagation9Transform22has_problematic_returnERNS0_16ControlFlowGraphEbP7DexTypeP8DexProtoPK10XStoreRefsE3$_2EbT_SF_T0_"(ptr noundef, ptr noundef, ptr) local_unnamed_addr #7

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef i64 @_ZNK10XStoreRefs13get_store_idxEPK7DexType(ptr noundef nonnull align 8 dereferenceable(2840), ptr noundef) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @"_ZNSt8functionIFbPK13IRInstructionEEC2IRZN20constant_propagation9Transform22has_problematic_returnERN3cfg16ControlFlowGraphEbP7DexTypeP8DexProtoPK10XStoreRefsE3$_0vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN13reaching_defs25MoveAwareFixpointIteratorC2ERKN3cfg16ControlFlowGraphESt8functionIFbPK13IRInstructionEE(ptr noundef nonnull align 8 dereferenceable(288), ptr noundef nonnull align 8 dereferenceable(160), ptr noundef) unnamed_addr #3 align 2

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(16) ptr @_ZNK6sparta7fp_impl29MonotonicFixpointIteratorBaseIN3cfg14GraphInterfaceENS_19AbstractEnvironmentINS_15PatriciaTreeMapIjNS_17SetAbstractDomainINS_15PatriciaTreeSetIP13IRInstructionEEEENS_17TopValueInterfaceISB_EEEEEESt4hashIPNS2_5BlockEEE18get_entry_state_atERKSI_(ptr noundef nonnull align 8 dereferenceable(144), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #3 align 2

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare hidden noundef zeroext i1 @"_ZZN20constant_propagation9Transform22has_problematic_returnERN3cfg16ControlFlowGraphEbP7DexTypeP8DexProtoPK10XStoreRefsENK3$_3clEPKS4_P13IRInstruction"(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef, ptr noundef) local_unnamed_addr #7 align 2

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local { i8, ptr } @_ZNK14type_inference15TypeEnvironment12get_dex_typeEj(ptr noundef nonnull align 8 dereferenceable(48), i32 noundef) local_unnamed_addr #3 align 2

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

declare noundef zeroext i1 @_ZN4type8is_arrayEPK7DexType(ptr noundef) local_unnamed_addr #4

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

declare noundef ptr @_ZN4type24get_array_component_typeEPK7DexType(ptr noundef) local_unnamed_addr #4

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK13reaching_defs25MoveAwareFixpointIterator19analyze_instructionEPK13IRInstructionPN6sparta19AbstractEnvironmentINS4_15PatriciaTreeMapIjNS4_17SetAbstractDomainINS4_15PatriciaTreeSetIPS1_EEEENS4_17TopValueInterfaceISB_EEEEEE(ptr noundef nonnull align 8 dereferenceable(288), ptr noundef, ptr noundef) unnamed_addr #3 align 2

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

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

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

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

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


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