; LLVM IR from facebook/redex :: libredex/ControlFlow.ll (ZN3cfg16ControlFlowGraph19remove_empty_blocksEv)

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

%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"class.boost::intrusive::list_iterator" = type { %"struct.boost::intrusive::iiterator_members" }
%"struct.boost::intrusive::iiterator_members" = type { ptr }
%"class.std::vector.193" = type { %"struct.std::_Vector_base.194" }
%"struct.std::_Vector_base.194" = type { %"struct.std::_Vector_base<std::unique_ptr<DexPosition>, std::allocator<std::unique_ptr<DexPosition>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::unique_ptr<DexPosition>, std::allocator<std::unique_ptr<DexPosition>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::unique_ptr<DexPosition>, std::allocator<std::unique_ptr<DexPosition>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::unique_ptr<DexPosition>, std::allocator<std::unique_ptr<DexPosition>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.std::_Rb_tree_iterator" = type { ptr }
%"class.std::vector.11" = type { %"struct.std::_Vector_base.12" }
%"struct.std::_Vector_base.12" = type { %"struct.std::_Vector_base<cfg::Edge *, std::allocator<cfg::Edge *>>::_Vector_impl" }
%"struct.std::_Vector_base<cfg::Edge *, std::allocator<cfg::Edge *>>::_Vector_impl" = type { %"struct.std::_Vector_base<cfg::Edge *, std::allocator<cfg::Edge *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<cfg::Edge *, std::allocator<cfg::Edge *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%class.anon.229 = type { i8 }
%"class.__gnu_cxx::__normal_iterator.113" = type { ptr }
%"class.std::allocator.13" = type { i8 }
%"class.cfg::ControlFlowGraph" = type { %"class.std::map", %class.UnorderedSet, ptr, ptr, ptr, i32, i8, i8, i8, %"class.std::vector" }
%"class.std::map" = type { %"class.std::_Rb_tree" }
%"class.std::_Rb_tree" = type { %"struct.std::_Rb_tree<unsigned long, std::pair<const unsigned long, cfg::Block *>, std::_Select1st<std::pair<const unsigned long, cfg::Block *>>, std::less<unsigned long>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<unsigned long, std::pair<const unsigned long, cfg::Block *>, std::_Select1st<std::pair<const unsigned long, cfg::Block *>>, std::less<unsigned long>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"struct.std::_Rb_tree_header" = type { %"struct.std::_Rb_tree_node_base", i64 }
%"struct.std::_Rb_tree_node_base" = type { i32, ptr, ptr, ptr }
%class.UnorderedSet = type { %"class.std::unordered_set" }
%"class.std::unordered_set" = type { %"class.std::_Hashtable" }
%"class.std::_Hashtable" = 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.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<IRInstruction *, std::allocator<IRInstruction *>>::_Vector_impl" }
%"struct.std::_Vector_base<IRInstruction *, std::allocator<IRInstruction *>>::_Vector_impl" = type { %"struct.std::_Vector_base<IRInstruction *, std::allocator<IRInstruction *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<IRInstruction *, std::allocator<IRInstruction *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.std::pair.178" = type { i64, ptr }
%struct.RedexContext = type { i8, i8, %class.ConcurrentSet, %class.ConcurrentSet.238, %class.InsertOnlyConcurrentSet, %"struct.RedexContext::LargeStringSet", %"struct.std::array.260", %"struct.RedexContext::ConcurrentStringStorage", %"struct.RedexContext::ConcurrentStringStorage", %"struct.RedexContext::ConcurrentStringStorage", %class.AtomicMap, %class.AtomicMap.276, %"class.std::mutex", %class.AtomicMap.284, %class.InsertOnlyConcurrentSet.292, %class.AtomicMap.300, %"class.std::mutex", %class.AtomicMap.308, ptr, %class.InsertOnlyConcurrentSet.316, %"class.std::mutex", %"class.std::vector.324", %"class.std::vector.329", %"class.std::mutex", %"class.std::vector.334", %class.UnorderedMap.339, i8, i8, %"class.std::mutex", %class.FrequentlyUsedPointers, %class.ConcurrentMap, %class.ConcurrentMap.390, i8, %"class.std::queue", %"class.std::mutex" }
%class.ConcurrentSet = type { %class.ConcurrentContainer }
%class.ConcurrentContainer = type { ptr, [83 x %"class.cc_impl::ConcurrentHashtable"] }
%"class.cc_impl::ConcurrentHashtable" = type { %"struct.std::atomic.231", %"struct.std::atomic", %"struct.std::atomic.233", %"struct.std::atomic.235" }
%"struct.std::atomic.231" = type { %"struct.std::__atomic_base.232" }
%"struct.std::__atomic_base.232" = type { ptr }
%"struct.std::atomic" = type { %"struct.std::__atomic_base" }
%"struct.std::__atomic_base" = type { i64 }
%"struct.std::atomic.233" = type { %"struct.std::__atomic_base.234" }
%"struct.std::__atomic_base.234" = type { i8 }
%"struct.std::atomic.235" = type { %"struct.std::__atomic_base.236" }
%"struct.std::__atomic_base.236" = type { ptr }
%class.ConcurrentSet.238 = type { %class.ConcurrentContainer.239 }
%class.ConcurrentContainer.239 = type { ptr, [83 x %"class.cc_impl::ConcurrentHashtable.240"] }
%"class.cc_impl::ConcurrentHashtable.240" = type { %"struct.std::atomic.241", %"struct.std::atomic", %"struct.std::atomic.233", %"struct.std::atomic.243" }
%"struct.std::atomic.241" = type { %"struct.std::__atomic_base.242" }
%"struct.std::__atomic_base.242" = type { ptr }
%"struct.std::atomic.243" = type { %"struct.std::__atomic_base.244" }
%"struct.std::__atomic_base.244" = type { ptr }
%class.InsertOnlyConcurrentSet = type { %class.ConcurrentContainer.246 }
%class.ConcurrentContainer.246 = type { ptr, [83 x %"class.cc_impl::ConcurrentHashtable.247"] }
%"class.cc_impl::ConcurrentHashtable.247" = type { %"struct.std::atomic.248", %"struct.std::atomic", %"struct.std::atomic.233", %"struct.std::atomic.250" }
%"struct.std::atomic.248" = type { %"struct.std::__atomic_base.249" }
%"struct.std::__atomic_base.249" = type { ptr }
%"struct.std::atomic.250" = type { %"struct.std::__atomic_base.251" }
%"struct.std::__atomic_base.251" = type { ptr }
%"struct.RedexContext::LargeStringSet" = type { %"struct.std::array" }
%"struct.std::array" = type { [127 x %"class.RedexContext::ConcurrentProjectedStringSet"] }
%"class.RedexContext::ConcurrentProjectedStringSet" = type { %"struct.std::array.253", %"struct.std::array.259" }
%"struct.std::array.253" = type { [31 x %"class.std::set"] }
%"class.std::set" = type { %"class.std::_Rb_tree.254" }
%"class.std::_Rb_tree.254" = type { %"struct.std::_Rb_tree<const DexString *, const DexString *, std::_Identity<const DexString *>, RedexContext::StringSetKeyCompare>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<const DexString *, const DexString *, std::_Identity<const DexString *>, RedexContext::StringSetKeyCompare>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"struct.std::array.259" = type { [31 x %"class.std::mutex"] }
%"struct.std::array.260" = type { [128 x ptr] }
%"struct.RedexContext::ConcurrentStringStorage" = type { i64, i64, i64, %"struct.std::atomic", %"struct.std::atomic", %"struct.std::atomic", %"struct.std::atomic", %"struct.std::array.261", %"class.std::mutex", %"class.std::vector.264" }
%"struct.std::array.261" = type { [11 x %"struct.RedexContext::ConcurrentStringStorage::Slot"] }
%"struct.RedexContext::ConcurrentStringStorage::Slot" = type { %"struct.std::atomic.262", [56 x i8] }
%"struct.std::atomic.262" = type { %"struct.std::__atomic_base.263" }
%"struct.std::__atomic_base.263" = type { ptr }
%"class.std::vector.264" = type { %"struct.std::_Vector_base.265" }
%"struct.std::_Vector_base.265" = type { %"struct.std::_Vector_base<std::unique_ptr<RedexContext::ConcurrentStringStorage::Container>, std::allocator<std::unique_ptr<RedexContext::ConcurrentStringStorage::Container>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::unique_ptr<RedexContext::ConcurrentStringStorage::Container>, std::allocator<std::unique_ptr<RedexContext::ConcurrentStringStorage::Container>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::unique_ptr<RedexContext::ConcurrentStringStorage::Container>, std::allocator<std::unique_ptr<RedexContext::ConcurrentStringStorage::Container>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::unique_ptr<RedexContext::ConcurrentStringStorage::Container>, std::allocator<std::unique_ptr<RedexContext::ConcurrentStringStorage::Container>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%class.AtomicMap = type { %class.ConcurrentContainer.269 }
%class.ConcurrentContainer.269 = type { ptr, [83 x %"class.cc_impl::ConcurrentHashtable.270"] }
%"class.cc_impl::ConcurrentHashtable.270" = type { %"struct.std::atomic.271", %"struct.std::atomic", %"struct.std::atomic.233", %"struct.std::atomic.273" }
%"struct.std::atomic.271" = type { %"struct.std::__atomic_base.272" }
%"struct.std::__atomic_base.272" = type { ptr }
%"struct.std::atomic.273" = type { %"struct.std::__atomic_base.274" }
%"struct.std::__atomic_base.274" = type { ptr }
%class.AtomicMap.276 = type { %class.ConcurrentContainer.277 }
%class.ConcurrentContainer.277 = type { ptr, [83 x %"class.cc_impl::ConcurrentHashtable.278"] }
%"class.cc_impl::ConcurrentHashtable.278" = type { %"struct.std::atomic.279", %"struct.std::atomic", %"struct.std::atomic.233", %"struct.std::atomic.281" }
%"struct.std::atomic.279" = type { %"struct.std::__atomic_base.280" }
%"struct.std::__atomic_base.280" = type { ptr }
%"struct.std::atomic.281" = type { %"struct.std::__atomic_base.282" }
%"struct.std::__atomic_base.282" = type { ptr }
%class.AtomicMap.284 = type { %class.ConcurrentContainer.285 }
%class.ConcurrentContainer.285 = type { ptr, [83 x %"class.cc_impl::ConcurrentHashtable.286"] }
%"class.cc_impl::ConcurrentHashtable.286" = type { %"struct.std::atomic.287", %"struct.std::atomic", %"struct.std::atomic.233", %"struct.std::atomic.289" }
%"struct.std::atomic.287" = type { %"struct.std::__atomic_base.288" }
%"struct.std::__atomic_base.288" = type { ptr }
%"struct.std::atomic.289" = type { %"struct.std::__atomic_base.290" }
%"struct.std::__atomic_base.290" = type { ptr }
%class.InsertOnlyConcurrentSet.292 = type { %class.ConcurrentContainer.293 }
%class.ConcurrentContainer.293 = type { ptr, [83 x %"class.cc_impl::ConcurrentHashtable.294"] }
%"class.cc_impl::ConcurrentHashtable.294" = type { %"struct.std::atomic.295", %"struct.std::atomic", %"struct.std::atomic.233", %"struct.std::atomic.297" }
%"struct.std::atomic.295" = type { %"struct.std::__atomic_base.296" }
%"struct.std::__atomic_base.296" = type { ptr }
%"struct.std::atomic.297" = type { %"struct.std::__atomic_base.298" }
%"struct.std::__atomic_base.298" = type { ptr }
%class.AtomicMap.300 = type { %class.ConcurrentContainer.301 }
%class.ConcurrentContainer.301 = type { ptr, [83 x %"class.cc_impl::ConcurrentHashtable.302"] }
%"class.cc_impl::ConcurrentHashtable.302" = type { %"struct.std::atomic.303", %"struct.std::atomic", %"struct.std::atomic.233", %"struct.std::atomic.305" }
%"struct.std::atomic.303" = type { %"struct.std::__atomic_base.304" }
%"struct.std::__atomic_base.304" = type { ptr }
%"struct.std::atomic.305" = type { %"struct.std::__atomic_base.306" }
%"struct.std::__atomic_base.306" = type { ptr }
%class.AtomicMap.308 = type { %class.ConcurrentContainer.309 }
%class.ConcurrentContainer.309 = type { ptr, [83 x %"class.cc_impl::ConcurrentHashtable.310"] }
%"class.cc_impl::ConcurrentHashtable.310" = type { %"struct.std::atomic.311", %"struct.std::atomic", %"struct.std::atomic.233", %"struct.std::atomic.313" }
%"struct.std::atomic.311" = type { %"struct.std::__atomic_base.312" }
%"struct.std::__atomic_base.312" = type { ptr }
%"struct.std::atomic.313" = type { %"struct.std::__atomic_base.314" }
%"struct.std::__atomic_base.314" = type { ptr }
%class.InsertOnlyConcurrentSet.316 = type { %class.ConcurrentContainer.317 }
%class.ConcurrentContainer.317 = type { ptr, [83 x %"class.cc_impl::ConcurrentHashtable.318"] }
%"class.cc_impl::ConcurrentHashtable.318" = type { %"struct.std::atomic.319", %"struct.std::atomic", %"struct.std::atomic.233", %"struct.std::atomic.321" }
%"struct.std::atomic.319" = type { %"struct.std::__atomic_base.320" }
%"struct.std::__atomic_base.320" = type { ptr }
%"struct.std::atomic.321" = type { %"struct.std::__atomic_base.322" }
%"struct.std::__atomic_base.322" = type { ptr }
%"class.std::vector.324" = type { %"struct.std::_Vector_base.325" }
%"struct.std::_Vector_base.325" = type { %"struct.std::_Vector_base<DexClass *, std::allocator<DexClass *>>::_Vector_impl" }
%"struct.std::_Vector_base<DexClass *, std::allocator<DexClass *>>::_Vector_impl" = type { %"struct.std::_Vector_base<DexClass *, std::allocator<DexClass *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<DexClass *, std::allocator<DexClass *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.329" = type { %"struct.std::_Vector_base.330" }
%"struct.std::_Vector_base.330" = type { %"struct.std::_Vector_base<const DexType *, std::allocator<const DexType *>>::_Vector_impl" }
%"struct.std::_Vector_base<const DexType *, std::allocator<const DexType *>>::_Vector_impl" = type { %"struct.std::_Vector_base<const DexType *, std::allocator<const DexType *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<const DexType *, std::allocator<const DexType *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.334" = type { %"struct.std::_Vector_base.335" }
%"struct.std::_Vector_base.335" = type { %"struct.std::_Vector_base<std::function<void ()>, std::allocator<std::function<void ()>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::function<void ()>, std::allocator<std::function<void ()>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::function<void ()>, std::allocator<std::function<void ()>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::function<void ()>, std::allocator<std::function<void ()>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%class.UnorderedMap.339 = type { %"class.std::unordered_map.341" }
%"class.std::unordered_map.341" = type { %"class.std::_Hashtable.342" }
%"class.std::_Hashtable.342" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%class.FrequentlyUsedPointers = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, %class.UnorderedSet.361 }
%class.UnorderedSet.361 = type { %"class.std::unordered_set.363" }
%"class.std::unordered_set.363" = type { %"class.std::_Hashtable.364" }
%"class.std::_Hashtable.364" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%class.ConcurrentMap = type { %class.ConcurrentContainer.383, [83 x %"class.std::mutex"] }
%class.ConcurrentContainer.383 = type { ptr, [83 x %"class.cc_impl::ConcurrentHashtable.384"] }
%"class.cc_impl::ConcurrentHashtable.384" = type { %"struct.std::atomic.385", %"struct.std::atomic", %"struct.std::atomic.233", %"struct.std::atomic.387" }
%"struct.std::atomic.385" = type { %"struct.std::__atomic_base.386" }
%"struct.std::__atomic_base.386" = type { ptr }
%"struct.std::atomic.387" = type { %"struct.std::__atomic_base.388" }
%"struct.std::__atomic_base.388" = type { ptr }
%class.ConcurrentMap.390 = type { %class.ConcurrentContainer.391, [83 x %"class.std::mutex"] }
%class.ConcurrentContainer.391 = type { ptr, [83 x %"class.cc_impl::ConcurrentHashtable.392"] }
%"class.cc_impl::ConcurrentHashtable.392" = type { %"struct.std::atomic.393", %"struct.std::atomic", %"struct.std::atomic.233", %"struct.std::atomic.395" }
%"struct.std::atomic.393" = type { %"struct.std::__atomic_base.394" }
%"struct.std::__atomic_base.394" = type { ptr }
%"struct.std::atomic.395" = type { %"struct.std::__atomic_base.396" }
%"struct.std::__atomic_base.396" = type { ptr }
%"class.std::queue" = type { %"class.std::deque.398" }
%"class.std::deque.398" = type { %"class.std::_Deque_base.399" }
%"class.std::_Deque_base.399" = type { %"struct.std::_Deque_base<DexMethodRef *, std::allocator<DexMethodRef *>>::_Deque_impl" }
%"struct.std::_Deque_base<DexMethodRef *, std::allocator<DexMethodRef *>>::_Deque_impl" = type { %"struct.std::_Deque_base<DexMethodRef *, std::allocator<DexMethodRef *>>::_Deque_impl_data" }
%"struct.std::_Deque_base<DexMethodRef *, std::allocator<DexMethodRef *>>::_Deque_impl_data" = type { ptr, i64, %"struct.std::_Deque_iterator.403", %"struct.std::_Deque_iterator.403" }
%"struct.std::_Deque_iterator.403" = type { ptr, ptr, ptr, ptr }
%"class.std::mutex" = type { %"class.std::__mutex_base" }
%"class.std::__mutex_base" = type { %union.pthread_mutex_t }
%union.pthread_mutex_t = type { %struct.__pthread_mutex_s }
%struct.__pthread_mutex_s = type { i32, i32, i32, i32, i32, i16, i16, %struct.__pthread_internal_list }
%struct.__pthread_internal_list = type { ptr, ptr }
%"class.cfg::Block" = type { i64, %class.IRList, %"class.boost::intrusive::list_iterator", %"class.boost::intrusive::list_iterator", %"class.std::vector.11", %"class.std::vector.11", ptr }
%class.IRList = type { %"class.boost::intrusive::list" }
%"class.boost::intrusive::list" = type { %"class.boost::intrusive::list_impl" }
%"class.boost::intrusive::list_impl" = type { %"struct.boost::intrusive::list_impl<boost::intrusive::mhtraits<MethodItemEntry, boost::intrusive::list_member_hook<>, &MethodItemEntry::list_hook_>, unsigned long, true, void>::data_t" }
%"struct.boost::intrusive::list_impl<boost::intrusive::mhtraits<MethodItemEntry, boost::intrusive::list_member_hook<>, &MethodItemEntry::list_hook_>, unsigned long, true, void>::data_t" = type { %"struct.boost::intrusive::list_impl<boost::intrusive::mhtraits<MethodItemEntry, boost::intrusive::list_member_hook<>, &MethodItemEntry::list_hook_>, unsigned long, true, void>::root_plus_size" }
%"struct.boost::intrusive::list_impl<boost::intrusive::mhtraits<MethodItemEntry, boost::intrusive::list_member_hook<>, &MethodItemEntry::list_hook_>, unsigned long, true, void>::root_plus_size" = type { %"struct.boost::intrusive::detail::size_holder", %"struct.boost::intrusive::detail::default_header_holder" }
%"struct.boost::intrusive::detail::size_holder" = type { i64 }
%"struct.boost::intrusive::detail::default_header_holder" = type { %"struct.boost::intrusive::list_node" }
%"struct.boost::intrusive::list_node" = type { ptr, ptr }
%struct.MethodItemEntry = type { %"class.boost::intrusive::list_member_hook", i32, %union.anon.16 }
%"class.boost::intrusive::list_member_hook" = type { %"class.boost::intrusive::generic_hook" }
%"class.boost::intrusive::generic_hook" = type { %"struct.boost::intrusive::list_node" }
%union.anon.16 = type { ptr }

@.str.8 = external hidden unnamed_addr constant [73 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.46 = external hidden unnamed_addr constant [11 x i8], align 1
@__PRETTY_FUNCTION__._ZN3cfg16ControlFlowGraph19remove_empty_blocksEv = external hidden unnamed_addr constant [50 x i8], align 1
@.str.47 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.48 = external hidden unnamed_addr constant [44 x i8], align 1
@g_redex = external global ptr, align 8
@.str.49 = external hidden unnamed_addr constant [59 x i8], align 1

declare i32 @__gxx_personality_v0(...)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef ptr @_ZNK3cfg16ControlFlowGraph21get_succ_edge_of_typeEPKNS_5BlockENS_8EdgeTypeE(ptr noundef nonnull align 8 dereferenceable(160), ptr noundef, i8 noundef zeroext) #3 align 2

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN3cfg16ControlFlowGraph19remove_empty_blocksEv(ptr noundef nonnull align 8 dereferenceable(160) %0) #3 align 2 personality ptr @__gxx_personality_v0 {
  %2 = alloca ptr, align 8
  %3 = alloca %"class.std::vector.193", align 8
  %4 = alloca %"struct.std::_Rb_tree_iterator", align 8
  %5 = alloca %"struct.std::_Rb_tree_iterator", align 8
  %6 = alloca i32, align 4
  %7 = alloca ptr, align 8
  %8 = alloca %"class.boost::intrusive::list_iterator", align 8
  %9 = alloca ptr, align 8
  %10 = alloca i32, align 4
  %11 = alloca %"class.boost::intrusive::list_iterator", align 8
  %12 = alloca ptr, align 8
  %13 = alloca %"class.std::vector.11", align 8
  %14 = alloca %class.anon.229, align 1
  %15 = alloca %"class.std::__cxx11::basic_string", align 8
  %16 = alloca i1, align 1
  %17 = alloca i1, align 1
  %18 = alloca ptr, align 8
  %19 = alloca ptr, align 8
  %20 = alloca i8, align 1
  %21 = alloca ptr, align 8
  %22 = alloca %"class.std::vector.11", align 8
  %23 = alloca %"class.__gnu_cxx::__normal_iterator.113", align 8
  %24 = alloca %"class.__gnu_cxx::__normal_iterator.113", align 8
  %25 = alloca %"class.std::allocator.13", align 1
  %26 = alloca ptr, align 8
  %27 = alloca %"class.__gnu_cxx::__normal_iterator.113", align 8
  %28 = alloca %"class.__gnu_cxx::__normal_iterator.113", align 8
  %29 = alloca ptr, align 8
  %30 = alloca %"class.boost::intrusive::list_iterator", align 8
  %31 = alloca %"class.boost::intrusive::list_iterator", align 8
  %32 = alloca ptr, align 8
  %33 = alloca %"class.boost::intrusive::list_iterator", align 8
  %34 = alloca %"class.boost::intrusive::list_iterator", align 8
  %35 = alloca ptr, align 8
  %36 = alloca %"class.boost::intrusive::list_iterator", align 8
  %37 = alloca i8, align 1
  %38 = alloca ptr, align 8
  %39 = alloca %"class.boost::intrusive::list_iterator", align 8
  %40 = alloca %"class.boost::intrusive::list_iterator", align 8
  %41 = alloca ptr, align 8
  %42 = alloca %"class.boost::intrusive::list_iterator", align 8
  %43 = alloca %"class.boost::intrusive::list_iterator", align 8
  %44 = alloca %"class.boost::intrusive::list_iterator", align 8
  %45 = alloca %"class.boost::intrusive::list_iterator", align 8
  %46 = alloca ptr, align 8
  %47 = alloca %"class.boost::intrusive::list_iterator", align 8
  %48 = alloca %"class.boost::intrusive::list_iterator", align 8
  %49 = alloca ptr, align 8
  %50 = alloca %"struct.std::_Rb_tree_iterator", align 8
  %51 = alloca %"struct.std::_Rb_tree_iterator", align 8
  %52 = alloca %"class.std::vector.193", align 8
  store ptr %0, ptr %2, align 8, !tbaa !5
  %53 = load ptr, ptr %2, align 8
  %54 = call noundef zeroext i1 @_ZNK3cfg16ControlFlowGraph8editableEv(ptr noundef nonnull align 8 dereferenceable(160) %53)
  br i1 %54, label %55, label %56

55:                                               ; preds = %1
  br label %58

56:                                               ; preds = %1
  call void (ptr, ptr, i32, ptr, i32, ptr, ...) @_Z11assert_failPKcS0_jS0_10RedexErrorS0_z(ptr noundef @.str.46, ptr noundef @.str.8, i32 noundef 1190, ptr noundef @__PRETTY_FUNCTION__._ZN3cfg16ControlFlowGraph19remove_empty_blocksEv, i32 noundef 2, ptr noundef @.str.9) #9
  unreachable

57:                                               ; No predecessors!
  br label %58

58:                                               ; preds = %57, %55
  call void @llvm.lifetime.start.p0(i64 24, ptr %3) #10
  call void @_ZNSt6vectorISt10unique_ptrI11DexPositionSt14default_deleteIS1_EESaIS4_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %3) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %4) #10
  %59 = getelementptr inbounds %"class.cfg::ControlFlowGraph", ptr %53, i32 0, i32 0
  %60 = call ptr @_ZNSt3mapImPN3cfg5BlockESt4lessImESaISt4pairIKmS2_EEE5beginEv(ptr noundef nonnull align 8 dereferenceable(48) %59) #10
  %61 = getelementptr inbounds %"struct.std::_Rb_tree_iterator", ptr %4, i32 0, i32 0
  store ptr %60, ptr %61, align 8
  br label %62

62:                                               ; preds = %478, %476, %58
  call void @llvm.lifetime.start.p0(i64 8, ptr %5) #10
  %63 = getelementptr inbounds %"class.cfg::ControlFlowGraph", ptr %53, i32 0, i32 0
  %64 = call ptr @_ZNSt3mapImPN3cfg5BlockESt4lessImESaISt4pairIKmS2_EEE3endEv(ptr noundef nonnull align 8 dereferenceable(48) %63) #10
  %65 = getelementptr inbounds %"struct.std::_Rb_tree_iterator", ptr %5, i32 0, i32 0
  store ptr %64, ptr %65, align 8
  %66 = call noundef zeroext i1 @_ZStneRKSt17_Rb_tree_iteratorISt4pairIKmPN3cfg5BlockEEES8_(ptr noundef nonnull align 8 dereferenceable(8) %4, ptr noundef nonnull align 8 dereferenceable(8) %5) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %5) #10
  br i1 %66, label %68, label %67

67:                                               ; preds = %62
  store i32 2, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %4) #10
  br label %490

68:                                               ; preds = %62
  call void @llvm.lifetime.start.p0(i64 8, ptr %7) #10
  %69 = call noundef ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIKmPN3cfg5BlockEEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %4) #10
  %70 = getelementptr inbounds %"struct.std::pair.178", ptr %69, i32 0, i32 1
  %71 = load ptr, ptr %70, align 8, !tbaa !9
  store ptr %71, ptr %7, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %8) #10
  %72 = load ptr, ptr %7, align 8, !tbaa !5
  invoke void @_ZN3cfg5Block14get_first_insnEv(ptr dead_on_unwind writable sret(%"class.boost::intrusive::list_iterator") align 8 %8, ptr noundef nonnull align 8 dereferenceable(104) %72)
          to label %73 unwind label %87

73:                                               ; preds = %68
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #10
  %74 = load ptr, ptr %7, align 8, !tbaa !5
  invoke void @_ZN3cfg5Block3endEv(ptr dead_on_unwind writable sret(%"class.boost::intrusive::list_iterator") align 8 %11, ptr noundef nonnull align 8 dereferenceable(104) %74)
          to label %75 unwind label %91

75:                                               ; preds = %73
  %76 = invoke noundef zeroext i1 @_ZN5boost9intrusiveneERKNS0_13list_iteratorINS0_8mhtraitsI15MethodItemEntryNS0_16list_member_hookIJEEEXadL_ZNS3_10list_hook_EEEEELb0EEES9_(ptr noundef nonnull align 8 dereferenceable(8) %8, ptr noundef nonnull align 8 dereferenceable(8) %11)
          to label %77 unwind label %91

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

78:                                               ; preds = %77
  %79 = load ptr, ptr %7, align 8, !tbaa !5
  %80 = invoke noundef ptr @_ZNK3cfg16ControlFlowGraph10exit_blockEv(ptr noundef nonnull align 8 dereferenceable(160) %53)
          to label %81 unwind label %91

81:                                               ; preds = %78
  %82 = icmp eq ptr %79, %80
  br label %83

83:                                               ; preds = %81, %77
  %84 = phi i1 [ true, %77 ], [ %82, %81 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #10
  br i1 %84, label %85, label %96

85:                                               ; preds = %83
  %86 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt17_Rb_tree_iteratorISt4pairIKmPN3cfg5BlockEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %4) #10
  store i32 3, ptr %6, align 4
  br label %476, !llvm.loop !12

87:                                               ; preds = %68
  %88 = landingpad { ptr, i32 }
          cleanup
  %89 = extractvalue { ptr, i32 } %88, 0
  store ptr %89, ptr %9, align 8
  %90 = extractvalue { ptr, i32 } %88, 1
  store i32 %90, ptr %10, align 4
  br label %95

91:                                               ; preds = %78, %75, %73
  %92 = landingpad { ptr, i32 }
          cleanup
  %93 = extractvalue { ptr, i32 } %92, 0
  store ptr %93, ptr %9, align 8
  %94 = extractvalue { ptr, i32 } %92, 1
  store i32 %94, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #10
  br label %95

95:                                               ; preds = %91, %87
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #10
  br label %489

96:                                               ; preds = %83
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #10
  call void @llvm.lifetime.start.p0(i64 24, ptr %13) #10
  %97 = load ptr, ptr %7, align 8, !tbaa !5
  invoke void @"_ZNK3cfg16ControlFlowGraph17get_succ_edges_ifIZNS0_19remove_empty_blocksEvE3$_0EESt6vectorIPNS_4EdgeESaIS5_EEPKNS_5BlockET_"(ptr dead_on_unwind writable sret(%"class.std::vector.11") align 8 %13, ptr noundef nonnull align 8 dereferenceable(160) %53, ptr noundef %97)
          to label %98 unwind label %113

98:                                               ; preds = %96
  store ptr %13, ptr %12, align 8, !tbaa !5
  %99 = load ptr, ptr %12, align 8, !tbaa !5
  %100 = call noundef zeroext i1 @_ZNKSt6vectorIPN3cfg4EdgeESaIS2_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %99) #10
  br i1 %100, label %416, label %101

101:                                              ; preds = %98
  %102 = load ptr, ptr %12, align 8, !tbaa !5
  %103 = call noundef i64 @_ZNKSt6vectorIPN3cfg4EdgeESaIS2_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %102) #10
  %104 = icmp eq i64 %103, 1
  store i1 false, ptr %16, align 1
  store i1 false, ptr %17, align 1
  br i1 %104, label %105, label %106

105:                                              ; preds = %101
  br label %127

106:                                              ; preds = %101
  %107 = call noundef ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIKmPN3cfg5BlockEEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %4) #10
  %108 = getelementptr inbounds %"struct.std::pair.178", ptr %107, i32 0, i32 0
  %109 = load i64, ptr %108, align 8, !tbaa !14
  call void @llvm.lifetime.start.p0(i64 32, ptr %15) #10
  store i1 true, ptr %16, align 1
  invoke void @_Z4showB5cxx11RKN3cfg16ControlFlowGraphEb(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %15, ptr noundef nonnull align 8 dereferenceable(160) %53, i1 noundef zeroext false)
          to label %110 unwind label %117

110:                                              ; preds = %106
  store i1 true, ptr %17, align 1
  %111 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %15) #10
  invoke void (ptr, ptr, i32, ptr, i32, ptr, ...) @_Z11assert_failPKcS0_jS0_10RedexErrorS0_z(ptr noundef @.str.47, ptr noundef @.str.8, i32 noundef 1204, ptr noundef @__PRETTY_FUNCTION__._ZN3cfg16ControlFlowGraph19remove_empty_blocksEv, i32 noundef 2, ptr noundef @.str.48, i64 noundef %109, ptr noundef %111) #9
          to label %112 unwind label %121

112:                                              ; preds = %110
  unreachable

113:                                              ; preds = %96
  %114 = landingpad { ptr, i32 }
          cleanup
  %115 = extractvalue { ptr, i32 } %114, 0
  store ptr %115, ptr %9, align 8
  %116 = extractvalue { ptr, i32 } %114, 1
  store i32 %116, ptr %10, align 4
  br label %488

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

121:                                              ; preds = %110
  %122 = landingpad { ptr, i32 }
          cleanup
  %123 = extractvalue { ptr, i32 } %122, 0
  store ptr %123, ptr %9, align 8
  %124 = extractvalue { ptr, i32 } %122, 1
  store i32 %124, ptr %10, align 4
  %125 = load i1, ptr %17, align 1
  br i1 %125, label %145, label %146

126:                                              ; No predecessors!
  br label %127

127:                                              ; preds = %126, %105
  %128 = load i1, ptr %17, align 1
  br i1 %128, label %129, label %130

129:                                              ; preds = %127
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #10
  br label %130

130:                                              ; preds = %129, %127
  %131 = load i1, ptr %16, align 1
  br i1 %131, label %132, label %133

132:                                              ; preds = %130
  call void @llvm.lifetime.end.p0(i64 32, ptr %15) #10
  br label %133

133:                                              ; preds = %132, %130
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #10
  %134 = load ptr, ptr %12, align 8, !tbaa !5
  %135 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIPN3cfg4EdgeESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %134, i64 noundef 0) #10
  store ptr %135, ptr %18, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #10
  %136 = load ptr, ptr %18, align 8, !tbaa !5
  %137 = load ptr, ptr %136, align 8, !tbaa !5
  %138 = invoke noundef ptr @_ZNK3cfg4Edge6targetEv(ptr noundef nonnull align 8 dereferenceable(32) %137)
          to label %139 unwind label %151

139:                                              ; preds = %133
  store ptr %138, ptr %19, align 8, !tbaa !5
  %140 = load ptr, ptr %7, align 8, !tbaa !5
  %141 = load ptr, ptr %19, align 8, !tbaa !5
  %142 = icmp eq ptr %140, %141
  br i1 %142, label %143, label %155

143:                                              ; preds = %139
  %144 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt17_Rb_tree_iteratorISt4pairIKmPN3cfg5BlockEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %4) #10
  store i32 3, ptr %6, align 4
  br label %407, !llvm.loop !12

145:                                              ; preds = %121
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #10
  br label %146

146:                                              ; preds = %145, %121
  br label %147

147:                                              ; preds = %146, %117
  %148 = load i1, ptr %16, align 1
  br i1 %148, label %149, label %150

149:                                              ; preds = %147
  call void @llvm.lifetime.end.p0(i64 32, ptr %15) #10
  br label %150

150:                                              ; preds = %149, %147
  br label %487

151:                                              ; preds = %133
  %152 = landingpad { ptr, i32 }
          cleanup
  %153 = extractvalue { ptr, i32 } %152, 0
  store ptr %153, ptr %9, align 8
  %154 = extractvalue { ptr, i32 } %152, 1
  store i32 %154, ptr %10, align 4
  br label %415

155:                                              ; preds = %139
  call void @llvm.lifetime.start.p0(i64 1, ptr %20) #10
  store i8 0, ptr %20, align 1, !tbaa !15
  %156 = load ptr, ptr %7, align 8, !tbaa !5
  %157 = invoke noundef zeroext i1 @_ZN13source_blocks17has_source_blocksEPKN3cfg5BlockE(ptr noundef %156)
          to label %158 unwind label %171

158:                                              ; preds = %155
  br i1 %157, label %159, label %184

159:                                              ; preds = %158
  %160 = load ptr, ptr %19, align 8, !tbaa !5
  %161 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3cfg5Block5predsEv(ptr noundef nonnull align 8 dereferenceable(104) %160)
          to label %162 unwind label %171

162:                                              ; preds = %159
  %163 = call noundef i64 @_ZNKSt6vectorIPN3cfg4EdgeESaIS2_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %161) #10
  %164 = icmp eq i64 %163, 1
  br i1 %164, label %165, label %175

165:                                              ; preds = %162
  %166 = load ptr, ptr %19, align 8, !tbaa !5
  %167 = getelementptr inbounds %"class.cfg::ControlFlowGraph", ptr %53, i32 0, i32 3
  %168 = load ptr, ptr %167, align 8, !tbaa !17
  %169 = icmp ne ptr %166, %168
  br i1 %169, label %170, label %175

170:                                              ; preds = %165
  store i8 1, ptr %20, align 1, !tbaa !15
  br label %183

171:                                              ; preds = %184, %159, %155
  %172 = landingpad { ptr, i32 }
          cleanup
  %173 = extractvalue { ptr, i32 } %172, 0
  store ptr %173, ptr %9, align 8
  %174 = extractvalue { ptr, i32 } %172, 1
  store i32 %174, ptr %10, align 4
  br label %414

175:                                              ; preds = %165, %162
  %176 = load ptr, ptr @g_redex, align 8, !tbaa !5
  %177 = getelementptr inbounds %struct.RedexContext, ptr %176, i32 0, i32 0
  %178 = load i8, ptr %177, align 8, !tbaa !38, !range !102, !noundef !103
  %179 = trunc i8 %178 to i1
  br i1 %179, label %180, label %182

180:                                              ; preds = %175
  %181 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt17_Rb_tree_iteratorISt4pairIKmPN3cfg5BlockEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %4) #10
  store i32 3, ptr %6, align 4
  br label %406, !llvm.loop !12

182:                                              ; preds = %175
  br label %183

183:                                              ; preds = %182, %170
  br label %184

184:                                              ; preds = %183, %158
  %185 = load ptr, ptr %7, align 8, !tbaa !5
  %186 = load ptr, ptr %19, align 8, !tbaa !5
  invoke void @_ZN3cfg16ControlFlowGraph20delete_edges_betweenEPNS_5BlockES2_(ptr noundef nonnull align 8 dereferenceable(160) %53, ptr noundef %185, ptr noundef %186)
          to label %187 unwind label %171

187:                                              ; preds = %184
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #10
  %188 = load ptr, ptr %7, align 8, !tbaa !5
  %189 = invoke noundef ptr @_ZNK3cfg16ControlFlowGraph21get_succ_edge_of_typeEPKNS_5BlockENS_8EdgeTypeE(ptr noundef nonnull align 8 dereferenceable(160) %53, ptr noundef %188, i8 noundef zeroext 3)
          to label %190 unwind label %197

190:                                              ; preds = %187
  store ptr %189, ptr %21, align 8, !tbaa !5
  %191 = load ptr, ptr %21, align 8, !tbaa !5
  %192 = icmp ne ptr %191, null
  br i1 %192, label %193, label %201

193:                                              ; preds = %190
  %194 = load ptr, ptr %21, align 8, !tbaa !5
  %195 = load ptr, ptr %19, align 8, !tbaa !5
  invoke void @_ZN3cfg16ControlFlowGraph15set_edge_sourceEPNS_4EdgeEPNS_5BlockE(ptr noundef nonnull align 8 dereferenceable(160) %53, ptr noundef %194, ptr noundef %195)
          to label %196 unwind label %197

196:                                              ; preds = %193
  br label %201

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

201:                                              ; preds = %196, %190
  call void @llvm.lifetime.start.p0(i64 24, ptr %22) #10
  %202 = load ptr, ptr %7, align 8, !tbaa !5
  %203 = getelementptr inbounds %"class.cfg::Block", ptr %202, i32 0, i32 4
  %204 = call ptr @_ZNSt6vectorIPN3cfg4EdgeESaIS2_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %203) #10
  %205 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.113", ptr %23, i32 0, i32 0
  store ptr %204, ptr %205, align 8
  %206 = load ptr, ptr %7, align 8, !tbaa !5
  %207 = getelementptr inbounds %"class.cfg::Block", ptr %206, i32 0, i32 4
  %208 = call ptr @_ZNSt6vectorIPN3cfg4EdgeESaIS2_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %207) #10
  %209 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.113", ptr %24, i32 0, i32 0
  store ptr %208, ptr %209, align 8
  call void @llvm.lifetime.start.p0(i64 1, ptr %25) #10
  call void @_ZNSaIPN3cfg4EdgeEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %25) #10
  %210 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.113", ptr %23, i32 0, i32 0
  %211 = load ptr, ptr %210, align 8
  %212 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.113", ptr %24, i32 0, i32 0
  %213 = load ptr, ptr %212, align 8
  invoke void @_ZNSt6vectorIPN3cfg4EdgeESaIS2_EEC2IN9__gnu_cxx17__normal_iteratorIPS2_S4_EEvEET_SA_RKS3_(ptr noundef nonnull align 8 dereferenceable(24) %22, ptr %211, ptr %213, ptr noundef nonnull align 1 dereferenceable(1) %25)
          to label %214 unwind label %224

214:                                              ; preds = %201
  call void @_ZNSt15__new_allocatorIPN3cfg4EdgeEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %25) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %25) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #10
  store ptr %22, ptr %26, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #10
  %215 = load ptr, ptr %26, align 8, !tbaa !5
  %216 = call ptr @_ZNSt6vectorIPN3cfg4EdgeESaIS2_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %215) #10
  %217 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.113", ptr %27, i32 0, i32 0
  store ptr %216, ptr %217, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #10
  %218 = load ptr, ptr %26, align 8, !tbaa !5
  %219 = call ptr @_ZNSt6vectorIPN3cfg4EdgeESaIS2_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %218) #10
  %220 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.113", ptr %28, i32 0, i32 0
  store ptr %219, ptr %220, align 8
  br label %221

221:                                              ; preds = %234, %214
  %222 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPPN3cfg4EdgeESt6vectorIS3_SaIS3_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %27, ptr noundef nonnull align 8 dereferenceable(8) %28) #10
  br i1 %222, label %228, label %223

223:                                              ; preds = %221
  store i32 4, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #10
  br label %240

224:                                              ; preds = %201
  %225 = landingpad { ptr, i32 }
          cleanup
  %226 = extractvalue { ptr, i32 } %225, 0
  store ptr %226, ptr %9, align 8
  %227 = extractvalue { ptr, i32 } %225, 1
  store i32 %227, ptr %10, align 4
  call void @_ZNSt15__new_allocatorIPN3cfg4EdgeEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %25) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %25) #10
  br label %412

228:                                              ; preds = %221
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #10
  %229 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPPN3cfg4EdgeESt6vectorIS3_SaIS3_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %27) #10
  %230 = load ptr, ptr %229, align 8, !tbaa !5
  store ptr %230, ptr %29, align 8, !tbaa !5
  %231 = load ptr, ptr %29, align 8, !tbaa !5
  %232 = load ptr, ptr %19, align 8, !tbaa !5
  invoke void @_ZN3cfg16ControlFlowGraph15set_edge_targetEPNS_4EdgeEPNS_5BlockE(ptr noundef nonnull align 8 dereferenceable(160) %53, ptr noundef %231, ptr noundef %232)
          to label %233 unwind label %236

233:                                              ; preds = %228
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #10
  br label %234

234:                                              ; preds = %233
  %235 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPPN3cfg4EdgeESt6vectorIS3_SaIS3_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %27) #10
  br label %221

236:                                              ; preds = %228
  %237 = landingpad { ptr, i32 }
          cleanup
  %238 = extractvalue { ptr, i32 } %237, 0
  store ptr %238, ptr %9, align 8
  %239 = extractvalue { ptr, i32 } %237, 1
  store i32 %239, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #10
  br label %411

240:                                              ; preds = %223
  %241 = load ptr, ptr %7, align 8, !tbaa !5
  %242 = invoke noundef ptr @_ZNK3cfg16ControlFlowGraph11entry_blockEv(ptr noundef nonnull align 8 dereferenceable(160) %53)
          to label %243 unwind label %248

243:                                              ; preds = %240
  %244 = icmp eq ptr %241, %242
  br i1 %244, label %245, label %252

245:                                              ; preds = %243
  %246 = load ptr, ptr %19, align 8, !tbaa !5
  %247 = getelementptr inbounds %"class.cfg::ControlFlowGraph", ptr %53, i32 0, i32 3
  store ptr %246, ptr %247, align 8, !tbaa !17
  br label %252

248:                                              ; preds = %240
  %249 = landingpad { ptr, i32 }
          cleanup
  %250 = extractvalue { ptr, i32 } %249, 0
  store ptr %250, ptr %9, align 8
  %251 = extractvalue { ptr, i32 } %249, 1
  store i32 %251, ptr %10, align 4
  br label %411

252:                                              ; preds = %245, %243
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #10
  %253 = load ptr, ptr %19, align 8, !tbaa !5
  invoke void @_ZN3cfg5Block30get_first_insn_before_positionEv(ptr dead_on_unwind writable sret(%"class.boost::intrusive::list_iterator") align 8 %30, ptr noundef nonnull align 8 dereferenceable(104) %253)
          to label %254 unwind label %271

254:                                              ; preds = %252
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #10
  %255 = load ptr, ptr %19, align 8, !tbaa !5
  invoke void @_ZN3cfg5Block3endEv(ptr dead_on_unwind writable sret(%"class.boost::intrusive::list_iterator") align 8 %31, ptr noundef nonnull align 8 dereferenceable(104) %255)
          to label %256 unwind label %275

256:                                              ; preds = %254
  %257 = invoke noundef zeroext i1 @_ZN5boost9intrusiveneERKNS0_13list_iteratorINS0_8mhtraitsI15MethodItemEntryNS0_16list_member_hookIJEEEXadL_ZNS3_10list_hook_EEEEELb0EEES9_(ptr noundef nonnull align 8 dereferenceable(8) %30, ptr noundef nonnull align 8 dereferenceable(8) %31)
          to label %258 unwind label %275

258:                                              ; preds = %256
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #10
  br i1 %257, label %259, label %327

259:                                              ; preds = %258
  %260 = invoke noundef ptr @_ZNK5boost9intrusive13list_iteratorINS0_8mhtraitsI15MethodItemEntryNS0_16list_member_hookIJEEEXadL_ZNS3_10list_hook_EEEEELb0EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %30)
          to label %261 unwind label %271

261:                                              ; preds = %259
  %262 = getelementptr inbounds %struct.MethodItemEntry, ptr %260, i32 0, i32 2
  %263 = load ptr, ptr %262, align 8, !tbaa !104
  %264 = invoke noundef zeroext i16 @_ZNK13IRInstruction6opcodeEv(ptr noundef nonnull align 8 dereferenceable(32) %263)
          to label %265 unwind label %271

265:                                              ; preds = %261
  %266 = invoke noundef zeroext i1 @_ZN6opcode23is_a_move_result_pseudoE8IROpcode(i16 noundef zeroext %264)
          to label %267 unwind label %271

267:                                              ; preds = %265
  br i1 %266, label %269, label %268

268:                                              ; preds = %267
  br label %280

269:                                              ; preds = %267
  invoke void (ptr, ptr, i32, ptr, i32, ptr, ...) @_Z11assert_failPKcS0_jS0_10RedexErrorS0_z(ptr noundef @.str.49, ptr noundef @.str.8, i32 noundef 1259, ptr noundef @__PRETTY_FUNCTION__._ZN3cfg16ControlFlowGraph19remove_empty_blocksEv, i32 noundef 2, ptr noundef @.str.9) #9
          to label %270 unwind label %271

270:                                              ; preds = %269
  unreachable

271:                                              ; preds = %269, %265, %261, %259, %252
  %272 = landingpad { ptr, i32 }
          cleanup
  %273 = extractvalue { ptr, i32 } %272, 0
  store ptr %273, ptr %9, align 8
  %274 = extractvalue { ptr, i32 } %272, 1
  store i32 %274, ptr %10, align 4
  br label %410

275:                                              ; preds = %256, %254
  %276 = landingpad { ptr, i32 }
          cleanup
  %277 = extractvalue { ptr, i32 } %276, 0
  store ptr %277, ptr %9, align 8
  %278 = extractvalue { ptr, i32 } %276, 1
  store i32 %278, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #10
  br label %410

279:                                              ; No predecessors!
  br label %280

280:                                              ; preds = %279, %268
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #10
  %281 = load ptr, ptr %7, align 8, !tbaa !5
  store ptr %281, ptr %32, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #10
  %282 = load ptr, ptr %32, align 8, !tbaa !5
  invoke void @_ZN3cfg5Block5beginEv(ptr dead_on_unwind writable sret(%"class.boost::intrusive::list_iterator") align 8 %33, ptr noundef nonnull align 8 dereferenceable(104) %282)
          to label %283 unwind label %290

283:                                              ; preds = %280
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #10
  %284 = load ptr, ptr %32, align 8, !tbaa !5
  invoke void @_ZN3cfg5Block3endEv(ptr dead_on_unwind writable sret(%"class.boost::intrusive::list_iterator") align 8 %34, ptr noundef nonnull align 8 dereferenceable(104) %284)
          to label %285 unwind label %294

285:                                              ; preds = %283
  br label %286

286:                                              ; preds = %322, %285
  %287 = invoke noundef zeroext i1 @_ZN5boost9intrusiveneERKNS0_13list_iteratorINS0_8mhtraitsI15MethodItemEntryNS0_16list_member_hookIJEEEXadL_ZNS3_10list_hook_EEEEELb0EEES9_(ptr noundef nonnull align 8 dereferenceable(8) %33, ptr noundef nonnull align 8 dereferenceable(8) %34)
          to label %288 unwind label %294

288:                                              ; preds = %286
  br i1 %287, label %298, label %289

289:                                              ; preds = %288
  store i32 6, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #10
  br label %326

290:                                              ; preds = %280
  %291 = landingpad { ptr, i32 }
          cleanup
  %292 = extractvalue { ptr, i32 } %291, 0
  store ptr %292, ptr %9, align 8
  %293 = extractvalue { ptr, i32 } %291, 1
  store i32 %293, ptr %10, align 4
  br label %325

294:                                              ; preds = %320, %286, %283
  %295 = landingpad { ptr, i32 }
          cleanup
  %296 = extractvalue { ptr, i32 } %295, 0
  store ptr %296, ptr %9, align 8
  %297 = extractvalue { ptr, i32 } %295, 1
  store i32 %297, ptr %10, align 4
  br label %324

298:                                              ; preds = %288
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #10
  %299 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK5boost9intrusive13list_iteratorINS0_8mhtraitsI15MethodItemEntryNS0_16list_member_hookIJEEEXadL_ZNS3_10list_hook_EEEEELb0EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %33)
          to label %300 unwind label %311

300:                                              ; preds = %298
  store ptr %299, ptr %35, align 8, !tbaa !5
  %301 = load ptr, ptr %35, align 8, !tbaa !5
  %302 = getelementptr inbounds %struct.MethodItemEntry, ptr %301, i32 0, i32 1
  %303 = load i32, ptr %302, align 8, !tbaa !105
  %304 = icmp eq i32 %303, 6
  br i1 %304, label %305, label %319

305:                                              ; preds = %300
  %306 = load ptr, ptr %19, align 8, !tbaa !5
  %307 = getelementptr inbounds %"class.cfg::Block", ptr %306, i32 0, i32 1
  %308 = load ptr, ptr %35, align 8, !tbaa !5
  %309 = getelementptr inbounds %struct.MethodItemEntry, ptr %308, i32 0, i32 2
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #10
  invoke void @_ZN6IRList13insert_beforeIJSt10unique_ptrI11DexPositionSt14default_deleteIS2_EEEEEN5boost9intrusive13list_iteratorINS7_8mhtraitsI15MethodItemEntryNS7_16list_member_hookIJEEEXadL_ZNSA_10list_hook_EEEEELb0EEERKSE_DpOT_(ptr dead_on_unwind writable sret(%"class.boost::intrusive::list_iterator") align 8 %36, ptr noundef nonnull align 8 dereferenceable(24) %307, ptr noundef nonnull align 8 dereferenceable(8) %30, ptr noundef nonnull align 8 dereferenceable(8) %309)
          to label %310 unwind label %315

310:                                              ; preds = %305
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #10
  br label %319

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

315:                                              ; preds = %305
  %316 = landingpad { ptr, i32 }
          cleanup
  %317 = extractvalue { ptr, i32 } %316, 0
  store ptr %317, ptr %9, align 8
  %318 = extractvalue { ptr, i32 } %316, 1
  store i32 %318, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #10
  br label %323

319:                                              ; preds = %310, %300
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #10
  br label %320

320:                                              ; preds = %319
  %321 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN5boost9intrusive13list_iteratorINS0_8mhtraitsI15MethodItemEntryNS0_16list_member_hookIJEEEXadL_ZNS3_10list_hook_EEEEELb0EEppEv(ptr noundef nonnull align 8 dereferenceable(8) %33)
          to label %322 unwind label %294

322:                                              ; preds = %320
  br label %286

323:                                              ; preds = %315, %311
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #10
  br label %324

324:                                              ; preds = %323, %294
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #10
  br label %325

325:                                              ; preds = %324, %290
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #10
  br label %410

326:                                              ; preds = %289
  br label %327

327:                                              ; preds = %326, %258
  %328 = load i8, ptr %20, align 1, !tbaa !15, !range !102, !noundef !103
  %329 = trunc i8 %328 to i1
  br i1 %329, label %330, label %405

330:                                              ; preds = %327
  call void @llvm.lifetime.start.p0(i64 1, ptr %37) #10
  store i8 1, ptr %37, align 1, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #10
  %331 = load ptr, ptr %7, align 8, !tbaa !5
  store ptr %331, ptr %38, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #10
  %332 = load ptr, ptr %38, align 8, !tbaa !5
  invoke void @_ZN3cfg5Block5beginEv(ptr dead_on_unwind writable sret(%"class.boost::intrusive::list_iterator") align 8 %39, ptr noundef nonnull align 8 dereferenceable(104) %332)
          to label %333 unwind label %340

333:                                              ; preds = %330
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #10
  %334 = load ptr, ptr %38, align 8, !tbaa !5
  invoke void @_ZN3cfg5Block3endEv(ptr dead_on_unwind writable sret(%"class.boost::intrusive::list_iterator") align 8 %40, ptr noundef nonnull align 8 dereferenceable(104) %334)
          to label %335 unwind label %344

335:                                              ; preds = %333
  br label %336

336:                                              ; preds = %400, %335
  %337 = invoke noundef zeroext i1 @_ZN5boost9intrusiveneERKNS0_13list_iteratorINS0_8mhtraitsI15MethodItemEntryNS0_16list_member_hookIJEEEXadL_ZNS3_10list_hook_EEEEELb0EEES9_(ptr noundef nonnull align 8 dereferenceable(8) %39, ptr noundef nonnull align 8 dereferenceable(8) %40)
          to label %338 unwind label %344

338:                                              ; preds = %336
  br i1 %337, label %348, label %339

339:                                              ; preds = %338
  store i32 8, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #10
  br label %404

340:                                              ; preds = %330
  %341 = landingpad { ptr, i32 }
          cleanup
  %342 = extractvalue { ptr, i32 } %341, 0
  store ptr %342, ptr %9, align 8
  %343 = extractvalue { ptr, i32 } %341, 1
  store i32 %343, ptr %10, align 4
  br label %403

344:                                              ; preds = %398, %336, %333
  %345 = landingpad { ptr, i32 }
          cleanup
  %346 = extractvalue { ptr, i32 } %345, 0
  store ptr %346, ptr %9, align 8
  %347 = extractvalue { ptr, i32 } %345, 1
  store i32 %347, ptr %10, align 4
  br label %402

348:                                              ; preds = %338
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #10
  %349 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK5boost9intrusive13list_iteratorINS0_8mhtraitsI15MethodItemEntryNS0_16list_member_hookIJEEEXadL_ZNS3_10list_hook_EEEEELb0EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %39)
          to label %350 unwind label %366

350:                                              ; preds = %348
  store ptr %349, ptr %41, align 8, !tbaa !5
  %351 = load ptr, ptr %41, align 8, !tbaa !5
  %352 = getelementptr inbounds %struct.MethodItemEntry, ptr %351, i32 0, i32 1
  %353 = load i32, ptr %352, align 8, !tbaa !105
  %354 = icmp eq i32 %353, 7
  br i1 %354, label %355, label %397

355:                                              ; preds = %350
  %356 = load i8, ptr %37, align 1, !tbaa !15, !range !102, !noundef !103
  %357 = trunc i8 %356 to i1
  br i1 %357, label %358, label %379

358:                                              ; preds = %355
  %359 = load ptr, ptr %19, align 8, !tbaa !5
  %360 = getelementptr inbounds %"class.cfg::Block", ptr %359, i32 0, i32 1
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #10
  %361 = load ptr, ptr %19, align 8, !tbaa !5
  invoke void @_ZN3cfg5Block5beginEv(ptr dead_on_unwind writable sret(%"class.boost::intrusive::list_iterator") align 8 %42, ptr noundef nonnull align 8 dereferenceable(104) %361)
          to label %362 unwind label %370

362:                                              ; preds = %358
  %363 = load ptr, ptr %41, align 8, !tbaa !5
  %364 = getelementptr inbounds %struct.MethodItemEntry, ptr %363, i32 0, i32 2
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #10
  invoke void @_ZN6IRList13insert_beforeIJSt10unique_ptrI11SourceBlockSt14default_deleteIS2_EEEEEN5boost9intrusive13list_iteratorINS7_8mhtraitsI15MethodItemEntryNS7_16list_member_hookIJEEEXadL_ZNSA_10list_hook_EEEEELb0EEERKSE_DpOT_(ptr dead_on_unwind writable sret(%"class.boost::intrusive::list_iterator") align 8 %43, ptr noundef nonnull align 8 dereferenceable(24) %360, ptr noundef nonnull align 8 dereferenceable(8) %42, ptr noundef nonnull align 8 dereferenceable(8) %364)
          to label %365 unwind label %374

365:                                              ; preds = %362
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #10
  br label %396

366:                                              ; preds = %348
  %367 = landingpad { ptr, i32 }
          cleanup
  %368 = extractvalue { ptr, i32 } %367, 0
  store ptr %368, ptr %9, align 8
  %369 = extractvalue { ptr, i32 } %367, 1
  store i32 %369, ptr %10, align 4
  br label %401

370:                                              ; preds = %358
  %371 = landingpad { ptr, i32 }
          cleanup
  %372 = extractvalue { ptr, i32 } %371, 0
  store ptr %372, ptr %9, align 8
  %373 = extractvalue { ptr, i32 } %371, 1
  store i32 %373, ptr %10, align 4
  br label %378

374:                                              ; preds = %362
  %375 = landingpad { ptr, i32 }
          cleanup
  %376 = extractvalue { ptr, i32 } %375, 0
  store ptr %376, ptr %9, align 8
  %377 = extractvalue { ptr, i32 } %375, 1
  store i32 %377, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #10
  br label %378

378:                                              ; preds = %374, %370
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #10
  br label %401

379:                                              ; preds = %355
  %380 = load ptr, ptr %19, align 8, !tbaa !5
  %381 = getelementptr inbounds %"class.cfg::Block", ptr %380, i32 0, i32 1
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #10
  %382 = load ptr, ptr %19, align 8, !tbaa !5
  invoke void @_ZN3cfg5Block5beginEv(ptr dead_on_unwind writable sret(%"class.boost::intrusive::list_iterator") align 8 %44, ptr noundef nonnull align 8 dereferenceable(104) %382)
          to label %383 unwind label %387

383:                                              ; preds = %379
  %384 = load ptr, ptr %41, align 8, !tbaa !5
  %385 = getelementptr inbounds %struct.MethodItemEntry, ptr %384, i32 0, i32 2
  call void @llvm.lifetime.start.p0(i64 8, ptr %45) #10
  invoke void @_ZN6IRList12insert_afterIJSt10unique_ptrI11SourceBlockSt14default_deleteIS2_EEEEEN5boost9intrusive13list_iteratorINS7_8mhtraitsI15MethodItemEntryNS7_16list_member_hookIJEEEXadL_ZNSA_10list_hook_EEEEELb0EEERKSE_DpOT_(ptr dead_on_unwind writable sret(%"class.boost::intrusive::list_iterator") align 8 %45, ptr noundef nonnull align 8 dereferenceable(24) %381, ptr noundef nonnull align 8 dereferenceable(8) %44, ptr noundef nonnull align 8 dereferenceable(8) %385)
          to label %386 unwind label %391

386:                                              ; preds = %383
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #10
  br label %396

387:                                              ; preds = %379
  %388 = landingpad { ptr, i32 }
          cleanup
  %389 = extractvalue { ptr, i32 } %388, 0
  store ptr %389, ptr %9, align 8
  %390 = extractvalue { ptr, i32 } %388, 1
  store i32 %390, ptr %10, align 4
  br label %395

391:                                              ; preds = %383
  %392 = landingpad { ptr, i32 }
          cleanup
  %393 = extractvalue { ptr, i32 } %392, 0
  store ptr %393, ptr %9, align 8
  %394 = extractvalue { ptr, i32 } %392, 1
  store i32 %394, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #10
  br label %395

395:                                              ; preds = %391, %387
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #10
  br label %401

396:                                              ; preds = %386, %365
  store i8 0, ptr %37, align 1, !tbaa !15
  br label %397

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

398:                                              ; preds = %397
  %399 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN5boost9intrusive13list_iteratorINS0_8mhtraitsI15MethodItemEntryNS0_16list_member_hookIJEEEXadL_ZNS3_10list_hook_EEEEELb0EEppEv(ptr noundef nonnull align 8 dereferenceable(8) %39)
          to label %400 unwind label %344

400:                                              ; preds = %398
  br label %336

401:                                              ; preds = %395, %378, %366
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #10
  br label %402

402:                                              ; preds = %401, %344
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #10
  br label %403

403:                                              ; preds = %402, %340
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %37) #10
  br label %410

404:                                              ; preds = %339
  call void @llvm.lifetime.end.p0(i64 1, ptr %37) #10
  br label %405

405:                                              ; preds = %404, %327
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #10
  call void @_ZNSt6vectorIPN3cfg4EdgeESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %22) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %22) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #10
  store i32 0, ptr %6, align 4
  br label %406

406:                                              ; preds = %405, %180
  call void @llvm.lifetime.end.p0(i64 1, ptr %20) #10
  br label %407

407:                                              ; preds = %406, %143
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #10
  %408 = load i32, ptr %6, align 4
  switch i32 %408, label %475 [
    i32 0, label %409
  ]

409:                                              ; preds = %407
  br label %416

410:                                              ; preds = %403, %325, %275, %271
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #10
  br label %411

411:                                              ; preds = %410, %248, %236
  call void @_ZNSt6vectorIPN3cfg4EdgeESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %22) #10
  br label %412

412:                                              ; preds = %411, %224
  call void @llvm.lifetime.end.p0(i64 24, ptr %22) #10
  br label %413

413:                                              ; preds = %412, %197
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #10
  br label %414

414:                                              ; preds = %413, %171
  call void @llvm.lifetime.end.p0(i64 1, ptr %20) #10
  br label %415

415:                                              ; preds = %414, %151
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #10
  br label %487

416:                                              ; preds = %409, %98
  %417 = load ptr, ptr %7, align 8, !tbaa !5
  %418 = getelementptr inbounds %"class.cfg::ControlFlowGraph", ptr %53, i32 0, i32 3
  %419 = load ptr, ptr %418, align 8, !tbaa !17
  %420 = icmp eq ptr %417, %419
  br i1 %420, label %421, label %423

421:                                              ; preds = %416
  %422 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt17_Rb_tree_iteratorISt4pairIKmPN3cfg5BlockEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %4) #10
  store i32 3, ptr %6, align 4
  br label %475, !llvm.loop !12

423:                                              ; preds = %416
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #10
  %424 = load ptr, ptr %7, align 8, !tbaa !5
  store ptr %424, ptr %46, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %47) #10
  %425 = load ptr, ptr %46, align 8, !tbaa !5
  invoke void @_ZN3cfg5Block5beginEv(ptr dead_on_unwind writable sret(%"class.boost::intrusive::list_iterator") align 8 %47, ptr noundef nonnull align 8 dereferenceable(104) %425)
          to label %426 unwind label %433

426:                                              ; preds = %423
  call void @llvm.lifetime.start.p0(i64 8, ptr %48) #10
  %427 = load ptr, ptr %46, align 8, !tbaa !5
  invoke void @_ZN3cfg5Block3endEv(ptr dead_on_unwind writable sret(%"class.boost::intrusive::list_iterator") align 8 %48, ptr noundef nonnull align 8 dereferenceable(104) %427)
          to label %428 unwind label %437

428:                                              ; preds = %426
  br label %429

429:                                              ; preds = %459, %428
  %430 = invoke noundef zeroext i1 @_ZN5boost9intrusiveneERKNS0_13list_iteratorINS0_8mhtraitsI15MethodItemEntryNS0_16list_member_hookIJEEEXadL_ZNS3_10list_hook_EEEEELb0EEES9_(ptr noundef nonnull align 8 dereferenceable(8) %47, ptr noundef nonnull align 8 dereferenceable(8) %48)
          to label %431 unwind label %437

431:                                              ; preds = %429
  br i1 %430, label %441, label %432

432:                                              ; preds = %431
  store i32 10, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #10
  br label %462

433:                                              ; preds = %423
  %434 = landingpad { ptr, i32 }
          cleanup
  %435 = extractvalue { ptr, i32 } %434, 0
  store ptr %435, ptr %9, align 8
  %436 = extractvalue { ptr, i32 } %434, 1
  store i32 %436, ptr %10, align 4
  br label %461

437:                                              ; preds = %457, %429, %426
  %438 = landingpad { ptr, i32 }
          cleanup
  %439 = extractvalue { ptr, i32 } %438, 0
  store ptr %439, ptr %9, align 8
  %440 = extractvalue { ptr, i32 } %438, 1
  store i32 %440, ptr %10, align 4
  br label %460

441:                                              ; preds = %431
  call void @llvm.lifetime.start.p0(i64 8, ptr %49) #10
  %442 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK5boost9intrusive13list_iteratorINS0_8mhtraitsI15MethodItemEntryNS0_16list_member_hookIJEEEXadL_ZNS3_10list_hook_EEEEELb0EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %47)
          to label %443 unwind label %452

443:                                              ; preds = %441
  store ptr %442, ptr %49, align 8, !tbaa !5
  %444 = load ptr, ptr %49, align 8, !tbaa !5
  %445 = getelementptr inbounds %struct.MethodItemEntry, ptr %444, i32 0, i32 1
  %446 = load i32, ptr %445, align 8, !tbaa !105
  %447 = icmp eq i32 %446, 6
  br i1 %447, label %448, label %456

448:                                              ; preds = %443
  %449 = load ptr, ptr %49, align 8, !tbaa !5
  %450 = getelementptr inbounds %struct.MethodItemEntry, ptr %449, i32 0, i32 2
  invoke void @_ZNSt6vectorISt10unique_ptrI11DexPositionSt14default_deleteIS1_EESaIS4_EE9push_backEOS4_(ptr noundef nonnull align 8 dereferenceable(24) %3, ptr noundef nonnull align 8 dereferenceable(8) %450)
          to label %451 unwind label %452

451:                                              ; preds = %448
  br label %456

452:                                              ; preds = %448, %441
  %453 = landingpad { ptr, i32 }
          cleanup
  %454 = extractvalue { ptr, i32 } %453, 0
  store ptr %454, ptr %9, align 8
  %455 = extractvalue { ptr, i32 } %453, 1
  store i32 %455, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #10
  br label %460

456:                                              ; preds = %451, %443
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #10
  br label %457

457:                                              ; preds = %456
  %458 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN5boost9intrusive13list_iteratorINS0_8mhtraitsI15MethodItemEntryNS0_16list_member_hookIJEEEXadL_ZNS3_10list_hook_EEEEELb0EEppEv(ptr noundef nonnull align 8 dereferenceable(8) %47)
          to label %459 unwind label %437

459:                                              ; preds = %457
  br label %429

460:                                              ; preds = %452, %437
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #10
  br label %461

461:                                              ; preds = %460, %433
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #10
  br label %487

462:                                              ; preds = %432
  %463 = load ptr, ptr %7, align 8, !tbaa !5
  invoke void @_ZN3cfg5Block4freeEv(ptr noundef nonnull align 8 dereferenceable(104) %463)
          to label %464 unwind label %479

464:                                              ; preds = %462
  %465 = load ptr, ptr %7, align 8, !tbaa !5
  %466 = icmp eq ptr %465, null
  br i1 %466, label %468, label %467

467:                                              ; preds = %464
  call void @_ZN3cfg5BlockD2Ev(ptr noundef nonnull align 8 dereferenceable(104) %465) #10
  call void @_ZdlPvm(ptr noundef %465, i64 noundef 104) #11
  br label %468

468:                                              ; preds = %467, %464
  call void @llvm.lifetime.start.p0(i64 8, ptr %50) #10
  %469 = getelementptr inbounds %"class.cfg::ControlFlowGraph", ptr %53, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %51, ptr align 8 %4, i64 8, i1 false), !tbaa.struct !111
  %470 = getelementptr inbounds %"struct.std::_Rb_tree_iterator", ptr %51, i32 0, i32 0
  %471 = load ptr, ptr %470, align 8
  %472 = invoke ptr @_ZNSt3mapImPN3cfg5BlockESt4lessImESaISt4pairIKmS2_EEE5eraseB5cxx11ESt17_Rb_tree_iteratorIS7_E(ptr noundef nonnull align 8 dereferenceable(48) %469, ptr %471)
          to label %473 unwind label %483

473:                                              ; preds = %468
  %474 = getelementptr inbounds %"struct.std::_Rb_tree_iterator", ptr %50, i32 0, i32 0
  store ptr %472, ptr %474, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %4, ptr align 8 %50, i64 8, i1 false), !tbaa.struct !111
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #10
  store i32 0, ptr %6, align 4
  br label %475

475:                                              ; preds = %473, %421, %407
  call void @_ZNSt6vectorIPN3cfg4EdgeESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %13) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %13) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #10
  br label %476

476:                                              ; preds = %475, %85
  call void @llvm.lifetime.end.p0(i64 8, ptr %7) #10
  %477 = load i32, ptr %6, align 4
  switch i32 %477, label %502 [
    i32 0, label %478
    i32 3, label %62
  ]

478:                                              ; preds = %476
  br label %62, !llvm.loop !12

479:                                              ; preds = %462
  %480 = landingpad { ptr, i32 }
          cleanup
  %481 = extractvalue { ptr, i32 } %480, 0
  store ptr %481, ptr %9, align 8
  %482 = extractvalue { ptr, i32 } %480, 1
  store i32 %482, ptr %10, align 4
  br label %487

483:                                              ; preds = %468
  %484 = landingpad { ptr, i32 }
          cleanup
  %485 = extractvalue { ptr, i32 } %484, 0
  store ptr %485, ptr %9, align 8
  %486 = extractvalue { ptr, i32 } %484, 1
  store i32 %486, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #10
  br label %487

487:                                              ; preds = %483, %479, %461, %415, %150
  call void @_ZNSt6vectorIPN3cfg4EdgeESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %13) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %13) #10
  br label %488

488:                                              ; preds = %487, %113
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #10
  br label %489

489:                                              ; preds = %488, %95
  call void @llvm.lifetime.end.p0(i64 8, ptr %7) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %4) #10
  br label %496

490:                                              ; preds = %67
  call void @_ZNSt6vectorISt10unique_ptrI11DexPositionSt14default_deleteIS1_EESaIS4_EEC2EOS6_(ptr noundef nonnull align 8 dereferenceable(24) %52, ptr noundef nonnull align 8 dereferenceable(24) %3) #10
  invoke void @_ZN3cfg16ControlFlowGraph20fix_dangling_parentsESt6vectorISt10unique_ptrI11DexPositionSt14default_deleteIS3_EESaIS6_EE(ptr noundef nonnull align 8 dereferenceable(160) %53, ptr noundef %52)
          to label %491 unwind label %492

491:                                              ; preds = %490
  call void @_ZNSt6vectorISt10unique_ptrI11DexPositionSt14default_deleteIS1_EESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %52) #10
  call void @_ZNSt6vectorISt10unique_ptrI11DexPositionSt14default_deleteIS1_EESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %3) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %3) #10
  ret void

492:                                              ; preds = %490
  %493 = landingpad { ptr, i32 }
          cleanup
  %494 = extractvalue { ptr, i32 } %493, 0
  store ptr %494, ptr %9, align 8
  %495 = extractvalue { ptr, i32 } %493, 1
  store i32 %495, ptr %10, align 4
  call void @_ZNSt6vectorISt10unique_ptrI11DexPositionSt14default_deleteIS1_EESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %52) #10
  br label %496

496:                                              ; preds = %492, %489
  call void @_ZNSt6vectorISt10unique_ptrI11DexPositionSt14default_deleteIS1_EESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %3) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %3) #10
  br label %497

497:                                              ; preds = %496
  %498 = load ptr, ptr %9, align 8
  %499 = load i32, ptr %10, align 4
  %500 = insertvalue { ptr, i32 } poison, ptr %498, 0
  %501 = insertvalue { ptr, i32 } %500, i32 %499, 1
  resume { ptr, i32 } %501

502:                                              ; preds = %476
  unreachable
}

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare hidden void @"_ZNK3cfg16ControlFlowGraph17get_succ_edges_ifIZNS0_19remove_empty_blocksEvE3$_0EESt6vectorIPNS_4EdgeESaIS5_EEPKNS_5BlockET_"(ptr dead_on_unwind noalias writable sret(%"class.std::vector.11") align 8, ptr noundef nonnull align 8 dereferenceable(160), ptr noundef) #3 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN13source_blocks17has_source_blocksEPKN3cfg5BlockE(ptr noundef) #4

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

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

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

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

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

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

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

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

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

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

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !6, i64 8}
!10 = !{!"_ZTSSt4pairIKmPN3cfg5BlockEE", !11, i64 0, !6, i64 8}
!11 = !{!"long", !7, i64 0}
!12 = distinct !{!12, !13}
!13 = !{!"llvm.loop.mustprogress"}
!14 = !{!10, !11, i64 0}
!15 = !{!16, !16, i64 0}
!16 = !{!"bool", !7, i64 0}
!17 = !{!18, !6, i64 112}
!18 = !{!"_ZTSN3cfg16ControlFlowGraphE", !19, i64 0, !27, i64 48, !6, i64 104, !6, i64 112, !6, i64 120, !33, i64 128, !16, i64 132, !16, i64 133, !16, i64 134, !34, i64 136}
!19 = !{!"_ZTSSt3mapImPN3cfg5BlockESt4lessImESaISt4pairIKmS2_EEE", !20, i64 0}
!20 = !{!"_ZTSSt8_Rb_treeImSt4pairIKmPN3cfg5BlockEESt10_Select1stIS5_ESt4lessImESaIS5_EE", !21, i64 0}
!21 = !{!"_ZTSNSt8_Rb_treeImSt4pairIKmPN3cfg5BlockEESt10_Select1stIS5_ESt4lessImESaIS5_EE13_Rb_tree_implIS9_Lb1EEE", !22, i64 0, !24, i64 8}
!22 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessImEE", !23, i64 0}
!23 = !{!"_ZTSSt4lessImE"}
!24 = !{!"_ZTSSt15_Rb_tree_header", !25, i64 0, !11, i64 32}
!25 = !{!"_ZTSSt18_Rb_tree_node_base", !26, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!26 = !{!"_ZTSSt14_Rb_tree_color", !7, i64 0}
!27 = !{!"_ZTS12UnorderedSetIPN3cfg4EdgeESt4hashIS2_ESt8equal_toIS2_EE", !28, i64 0}
!28 = !{!"_ZTSSt13unordered_setIPN3cfg4EdgeESt4hashIS2_ESt8equal_toIS2_ESaIS2_EE", !29, i64 0}
!29 = !{!"_ZTSSt10_HashtableIPN3cfg4EdgeES2_SaIS2_ENSt8__detail9_IdentityESt8equal_toIS2_ESt4hashIS2_ENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb0ELb1ELb1EEEE", !6, i64 0, !11, i64 8, !30, i64 16, !11, i64 24, !31, i64 32, !6, i64 48}
!30 = !{!"_ZTSNSt8__detail15_Hash_node_baseE", !6, i64 0}
!31 = !{!"_ZTSNSt8__detail20_Prime_rehash_policyE", !32, i64 0, !11, i64 8}
!32 = !{!"float", !7, i64 0}
!33 = !{!"int", !7, i64 0}
!34 = !{!"_ZTSSt6vectorIP13IRInstructionSaIS1_EE", !35, i64 0}
!35 = !{!"_ZTSSt12_Vector_baseIP13IRInstructionSaIS1_EE", !36, i64 0}
!36 = !{!"_ZTSNSt12_Vector_baseIP13IRInstructionSaIS1_EE12_Vector_implE", !37, i64 0}
!37 = !{!"_ZTSNSt12_Vector_baseIP13IRInstructionSaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!38 = !{!39, !16, i64 0}
!39 = !{!"_ZTS12RedexContext", !16, i64 0, !16, i64 1, !40, i64 8, !42, i64 2672, !44, i64 5336, !46, i64 8000, !48, i64 354456, !49, i64 355480, !49, i64 356304, !49, i64 357128, !59, i64 357952, !61, i64 360616, !53, i64 363280, !63, i64 363320, !65, i64 365984, !67, i64 368648, !53, i64 371312, !69, i64 371352, !6, i64 374016, !71, i64 374024, !53, i64 376688, !73, i64 376728, !77, i64 376752, !53, i64 376776, !81, i64 376816, !85, i64 376840, !16, i64 376896, !16, i64 376897, !53, i64 376904, !88, i64 376944, !92, i64 377408, !94, i64 383392, !16, i64 389376, !96, i64 389384, !53, i64 389464}
!40 = !{!"_ZTS13ConcurrentSetIPK8DexClassSt4hashIS2_ESt8equal_toIS2_ELm83EE", !41, i64 0}
!41 = !{!"_ZTS19ConcurrentContainerISt13unordered_setIPK8DexClassSt4hashIS3_ESt8equal_toIS3_ESaIS3_EELm83EE", !7, i64 8}
!42 = !{!"_ZTS13ConcurrentSetIPK9DexMethodSt4hashIS2_ESt8equal_toIS2_ELm83EE", !43, i64 0}
!43 = !{!"_ZTS19ConcurrentContainerISt13unordered_setIPK9DexMethodSt4hashIS3_ESt8equal_toIS3_ESaIS3_EELm83EE", !7, i64 8}
!44 = !{!"_ZTS23InsertOnlyConcurrentSetIPK9DexStringSt4hashIS2_ESt8equal_toIS2_ELm83EE", !45, i64 0}
!45 = !{!"_ZTS19ConcurrentContainerISt13unordered_setIPK9DexStringSt4hashIS3_ESt8equal_toIS3_ESaIS3_EELm83EE", !7, i64 8}
!46 = !{!"_ZTSN12RedexContext14LargeStringSetILm31ELm127EEE", !47, i64 0}
!47 = !{!"_ZTSSt5arrayIN12RedexContext28ConcurrentProjectedStringSetILm31EEELm127EE", !7, i64 0}
!48 = !{!"_ZTSSt5arrayIP23InsertOnlyConcurrentSetI13DexStringReprN12RedexContext17DexStringReprHashENS2_18DexStringReprEqualELm83EELm128EE", !7, i64 0}
!49 = !{!"_ZTSN12RedexContext23ConcurrentStringStorageE", !11, i64 0, !11, i64 8, !11, i64 16, !50, i64 24, !50, i64 32, !50, i64 40, !50, i64 48, !52, i64 56, !53, i64 760, !55, i64 800}
!50 = !{!"_ZTSSt6atomicImE", !51, i64 0}
!51 = !{!"_ZTSSt13__atomic_baseImE", !11, i64 0}
!52 = !{!"_ZTSSt5arrayIN12RedexContext23ConcurrentStringStorage4SlotELm11EE", !7, i64 0}
!53 = !{!"_ZTSSt5mutex", !54, i64 0}
!54 = !{!"_ZTSSt12__mutex_base", !7, i64 0}
!55 = !{!"_ZTSSt6vectorISt10unique_ptrIN12RedexContext23ConcurrentStringStorage9ContainerESt14default_deleteIS3_EESaIS6_EE", !56, i64 0}
!56 = !{!"_ZTSSt12_Vector_baseISt10unique_ptrIN12RedexContext23ConcurrentStringStorage9ContainerESt14default_deleteIS3_EESaIS6_EE", !57, i64 0}
!57 = !{!"_ZTSNSt12_Vector_baseISt10unique_ptrIN12RedexContext23ConcurrentStringStorage9ContainerESt14default_deleteIS3_EESaIS6_EE12_Vector_implE", !58, i64 0}
!58 = !{!"_ZTSNSt12_Vector_baseISt10unique_ptrIN12RedexContext23ConcurrentStringStorage9ContainerESt14default_deleteIS3_EESaIS6_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!59 = !{!"_ZTS9AtomicMapIPK9DexStringP7DexTypeSt4hashIS2_ESt8equal_toIS2_ELm83EE", !60, i64 0}
!60 = !{!"_ZTS19ConcurrentContainerISt13unordered_mapIPK9DexStringSt6atomicIP7DexTypeESt4hashIS3_ESt8equal_toIS3_ESaISt4pairIKS3_S7_EEELm83EE", !7, i64 8}
!61 = !{!"_ZTS9AtomicMapI12DexFieldSpecP11DexFieldRefSt4hashIS0_ESt8equal_toIS0_ELm83EE", !62, i64 0}
!62 = !{!"_ZTS19ConcurrentContainerISt13unordered_mapI12DexFieldSpecSt6atomicIP11DexFieldRefESt4hashIS1_ESt8equal_toIS1_ESaISt4pairIKS1_S5_EEELm83EE", !7, i64 8}
!63 = !{!"_ZTS9AtomicMapIPKSt6vectorIP7DexTypeSaIS2_EEP11DexTypeListN12RedexContext31DexTypeListContainerTypePtrHashENS9_33DexTypeListContainerTypePtrEqualsELm83EE", !64, i64 0}
!64 = !{!"_ZTS19ConcurrentContainerISt13unordered_mapIPKSt6vectorIP7DexTypeSaIS3_EESt6atomicIP11DexTypeListEN12RedexContext31DexTypeListContainerTypePtrHashENSC_33DexTypeListContainerTypePtrEqualsESaISt4pairIKS7_SB_EEELm83EE", !7, i64 8}
!65 = !{!"_ZTS23InsertOnlyConcurrentSetIP8DexProtoN12RedexContext15DexProtoKeyHashENS2_16DexProtoKeyEqualELm83EE", !66, i64 0}
!66 = !{!"_ZTS19ConcurrentContainerISt13unordered_setIP8DexProtoN12RedexContext15DexProtoKeyHashENS3_16DexProtoKeyEqualESaIS2_EELm83EE", !7, i64 8}
!67 = !{!"_ZTS9AtomicMapI13DexMethodSpecP12DexMethodRefSt4hashIS0_ESt8equal_toIS0_ELm83EE", !68, i64 0}
!68 = !{!"_ZTS19ConcurrentContainerISt13unordered_mapI13DexMethodSpecSt6atomicIP12DexMethodRefESt4hashIS1_ESt8equal_toIS1_ESaISt4pairIKS1_S5_EEELm83EE", !7, i64 8}
!69 = !{!"_ZTS9AtomicMapISt4pairISt17basic_string_viewIcSt11char_traitsIcEES4_EP11DexLocationN12RedexContext20ClassLocationKeyHashESt8equal_toIS5_ELm83EE", !70, i64 0}
!70 = !{!"_ZTS19ConcurrentContainerISt13unordered_mapISt4pairISt17basic_string_viewIcSt11char_traitsIcEES5_ESt6atomicIP11DexLocationEN12RedexContext20ClassLocationKeyHashESt8equal_toIS6_ESaIS1_IKS6_SA_EEELm83EE", !7, i64 8}
!71 = !{!"_ZTS23InsertOnlyConcurrentSetIP8DexClassSt4hashIS1_ESt8equal_toIS1_ELm83EE", !72, i64 0}
!72 = !{!"_ZTS19ConcurrentContainerISt13unordered_setIP8DexClassSt4hashIS2_ESt8equal_toIS2_ESaIS2_EELm83EE", !7, i64 8}
!73 = !{!"_ZTSSt6vectorIP8DexClassSaIS1_EE", !74, i64 0}
!74 = !{!"_ZTSSt12_Vector_baseIP8DexClassSaIS1_EE", !75, i64 0}
!75 = !{!"_ZTSNSt12_Vector_baseIP8DexClassSaIS1_EE12_Vector_implE", !76, i64 0}
!76 = !{!"_ZTSNSt12_Vector_baseIP8DexClassSaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!77 = !{!"_ZTSSt6vectorIPK7DexTypeSaIS2_EE", !78, i64 0}
!78 = !{!"_ZTSSt12_Vector_baseIPK7DexTypeSaIS2_EE", !79, i64 0}
!79 = !{!"_ZTSNSt12_Vector_baseIPK7DexTypeSaIS2_EE12_Vector_implE", !80, i64 0}
!80 = !{!"_ZTSNSt12_Vector_baseIPK7DexTypeSaIS2_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!81 = !{!"_ZTSSt6vectorISt8functionIFvvEESaIS2_EE", !82, i64 0}
!82 = !{!"_ZTSSt12_Vector_baseISt8functionIFvvEESaIS2_EE", !83, i64 0}
!83 = !{!"_ZTSNSt12_Vector_baseISt8functionIFvvEESaIS2_EE12_Vector_implE", !84, i64 0}
!84 = !{!"_ZTSNSt12_Vector_baseISt8functionIFvvEESaIS2_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!85 = !{!"_ZTS12UnorderedMapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEmSt4hashIS5_ESt8equal_toIS5_EE", !86, i64 0}
!86 = !{!"_ZTSSt13unordered_mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEmSt4hashIS5_ESt8equal_toIS5_ESaISt4pairIKS5_mEEE", !87, i64 0}
!87 = !{!"_ZTSSt10_HashtableINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_mESaIS8_ENSt8__detail10_Select1stESt8equal_toIS5_ESt4hashIS5_ENSA_18_Mod_range_hashingENSA_20_Default_ranged_hashENSA_20_Prime_rehash_policyENSA_17_Hashtable_traitsILb1ELb0ELb1EEEE", !6, i64 0, !11, i64 8, !30, i64 16, !11, i64 24, !31, i64 32, !6, i64 48}
!88 = !{!"_ZTS22FrequentlyUsedPointers", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !6, i64 48, !6, i64 56, !6, i64 64, !6, i64 72, !6, i64 80, !6, i64 88, !6, i64 96, !6, i64 104, !6, i64 112, !6, i64 120, !6, i64 128, !6, i64 136, !6, i64 144, !6, i64 152, !6, i64 160, !6, i64 168, !6, i64 176, !6, i64 184, !6, i64 192, !6, i64 200, !6, i64 208, !6, i64 216, !6, i64 224, !6, i64 232, !6, i64 240, !6, i64 248, !6, i64 256, !6, i64 264, !6, i64 272, !6, i64 280, !6, i64 288, !6, i64 296, !6, i64 304, !6, i64 312, !6, i64 320, !6, i64 328, !6, i64 336, !6, i64 344, !6, i64 352, !6, i64 360, !6, i64 368, !6, i64 376, !6, i64 384, !6, i64 392, !6, i64 400, !89, i64 408}
!89 = !{!"_ZTS12UnorderedSetIPK7DexTypeSt4hashIS2_ESt8equal_toIS2_EE", !90, i64 0}
!90 = !{!"_ZTSSt13unordered_setIPK7DexTypeSt4hashIS2_ESt8equal_toIS2_ESaIS2_EE", !91, i64 0}
!91 = !{!"_ZTSSt10_HashtableIPK7DexTypeS2_SaIS2_ENSt8__detail9_IdentityESt8equal_toIS2_ESt4hashIS2_ENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb0ELb1ELb1EEEE", !6, i64 0, !11, i64 8, !30, i64 16, !11, i64 24, !31, i64 32, !6, i64 48}
!92 = !{!"_ZTS13ConcurrentMapIP8DexFieldSt10unique_ptrIN10keep_rules17AssumeReturnValueESt14default_deleteIS4_EESt4hashIS1_ESt8equal_toIS1_ELm83EE", !93, i64 0, !7, i64 2664}
!93 = !{!"_ZTS19ConcurrentContainerISt13unordered_mapIP8DexFieldSt10unique_ptrIN10keep_rules17AssumeReturnValueESt14default_deleteIS5_EESt4hashIS2_ESt8equal_toIS2_ESaISt4pairIKS2_S8_EEELm83EE", !7, i64 8}
!94 = !{!"_ZTS13ConcurrentMapIP9DexMethodSt10unique_ptrIN10keep_rules17AssumeReturnValueESt14default_deleteIS4_EESt4hashIS1_ESt8equal_toIS1_ELm83EE", !95, i64 0, !7, i64 2664}
!95 = !{!"_ZTS19ConcurrentContainerISt13unordered_mapIP9DexMethodSt10unique_ptrIN10keep_rules17AssumeReturnValueESt14default_deleteIS5_EESt4hashIS2_ESt8equal_toIS2_ESaISt4pairIKS2_S8_EEELm83EE", !7, i64 8}
!96 = !{!"_ZTSSt5queueIP12DexMethodRefSt5dequeIS1_SaIS1_EEE", !97, i64 0}
!97 = !{!"_ZTSSt5dequeIP12DexMethodRefSaIS1_EE", !98, i64 0}
!98 = !{!"_ZTSSt11_Deque_baseIP12DexMethodRefSaIS1_EE", !99, i64 0}
!99 = !{!"_ZTSNSt11_Deque_baseIP12DexMethodRefSaIS1_EE11_Deque_implE", !100, i64 0}
!100 = !{!"_ZTSNSt11_Deque_baseIP12DexMethodRefSaIS1_EE16_Deque_impl_dataE", !6, i64 0, !11, i64 8, !101, i64 16, !101, i64 48}
!101 = !{!"_ZTSSt15_Deque_iteratorIP12DexMethodRefRS1_PS1_E", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!102 = !{i8 0, i8 2}
!103 = !{}
!104 = !{!7, !7, i64 0}
!105 = !{!106, !110, i64 16}
!106 = !{!"_ZTS15MethodItemEntry", !107, i64 0, !110, i64 16, !7, i64 24}
!107 = !{!"_ZTSN5boost9intrusive16list_member_hookIJEEE", !108, i64 0}
!108 = !{!"_ZTSN5boost9intrusive12generic_hookILNS0_10algo_typesE0ENS0_16list_node_traitsIPvEENS0_10member_tagELNS0_14link_mode_typeE1ELNS0_14base_hook_typeE0EEE", !109, i64 0}
!109 = !{!"_ZTSN5boost9intrusive9list_nodeIPvEE", !6, i64 0, !6, i64 8}
!110 = !{!"_ZTS14MethodItemType", !7, i64 0}
!111 = !{i64 0, i64 8, !5}


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

%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"class.boost::intrusive::list_iterator" = type { %"struct.boost::intrusive::iiterator_members" }
%"struct.boost::intrusive::iiterator_members" = type { ptr }
%"class.std::vector.193" = type { %"struct.std::_Vector_base.194" }
%"struct.std::_Vector_base.194" = type { %"struct.std::_Vector_base<std::unique_ptr<DexPosition>, std::allocator<std::unique_ptr<DexPosition>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::unique_ptr<DexPosition>, std::allocator<std::unique_ptr<DexPosition>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::unique_ptr<DexPosition>, std::allocator<std::unique_ptr<DexPosition>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::unique_ptr<DexPosition>, std::allocator<std::unique_ptr<DexPosition>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.std::_Rb_tree_iterator" = type { ptr }
%"class.std::vector.11" = type { %"struct.std::_Vector_base.12" }
%"struct.std::_Vector_base.12" = type { %"struct.std::_Vector_base<cfg::Edge *, std::allocator<cfg::Edge *>>::_Vector_impl" }
%"struct.std::_Vector_base<cfg::Edge *, std::allocator<cfg::Edge *>>::_Vector_impl" = type { %"struct.std::_Vector_base<cfg::Edge *, std::allocator<cfg::Edge *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<cfg::Edge *, std::allocator<cfg::Edge *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::allocator.13" = type { i8 }
%"class.__gnu_cxx::__normal_iterator.113" = type { ptr }

@.str.8 = external hidden unnamed_addr constant [73 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.46 = external hidden unnamed_addr constant [11 x i8], align 1
@__PRETTY_FUNCTION__._ZN3cfg16ControlFlowGraph19remove_empty_blocksEv = external hidden unnamed_addr constant [50 x i8], align 1
@.str.47 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.48 = external hidden unnamed_addr constant [44 x i8], align 1
@g_redex = external local_unnamed_addr global ptr, align 8
@.str.49 = external hidden unnamed_addr constant [59 x i8], align 1

declare i32 @__gxx_personality_v0(...)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef ptr @_ZNK3cfg16ControlFlowGraph21get_succ_edge_of_typeEPKNS_5BlockENS_8EdgeTypeE(ptr noundef nonnull align 8 dereferenceable(160), ptr noundef, i8 noundef zeroext) local_unnamed_addr #3 align 2

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN3cfg16ControlFlowGraph19remove_empty_blocksEv(ptr noundef nonnull align 8 dereferenceable(160) %0) local_unnamed_addr #3 align 2 personality ptr @__gxx_personality_v0 {
  %2 = alloca %"class.std::vector.193", align 8
  %3 = alloca %"struct.std::_Rb_tree_iterator", align 8
  %4 = alloca %"struct.std::_Rb_tree_iterator", align 8
  %5 = alloca %"class.boost::intrusive::list_iterator", align 8
  %6 = alloca %"class.boost::intrusive::list_iterator", align 8
  %7 = alloca %"class.std::vector.11", align 8
  %8 = alloca %"class.std::__cxx11::basic_string", align 8
  %9 = alloca %"class.std::vector.11", align 8
  %10 = alloca %"class.std::allocator.13", align 1
  %11 = alloca %"class.__gnu_cxx::__normal_iterator.113", align 8
  %12 = alloca %"class.__gnu_cxx::__normal_iterator.113", align 8
  %13 = alloca %"class.boost::intrusive::list_iterator", align 8
  %14 = alloca %"class.boost::intrusive::list_iterator", align 8
  %15 = alloca %"class.boost::intrusive::list_iterator", align 8
  %16 = alloca %"class.boost::intrusive::list_iterator", align 8
  %17 = alloca %"class.boost::intrusive::list_iterator", align 8
  %18 = alloca %"class.boost::intrusive::list_iterator", align 8
  %19 = alloca %"class.boost::intrusive::list_iterator", align 8
  %20 = alloca %"class.boost::intrusive::list_iterator", align 8
  %21 = alloca %"class.boost::intrusive::list_iterator", align 8
  %22 = alloca %"class.boost::intrusive::list_iterator", align 8
  %23 = alloca %"class.boost::intrusive::list_iterator", align 8
  %24 = alloca %"class.boost::intrusive::list_iterator", align 8
  %25 = alloca %"class.boost::intrusive::list_iterator", align 8
  %26 = alloca %"class.std::vector.193", align 8
  %27 = tail call noundef zeroext i1 @_ZNK3cfg16ControlFlowGraph8editableEv(ptr noundef nonnull align 8 dereferenceable(160) %0)
  br i1 %27, label %29, label %28

28:                                               ; preds = %1
  tail call void (ptr, ptr, i32, ptr, i32, ptr, ...) @_Z11assert_failPKcS0_jS0_10RedexErrorS0_z(ptr noundef nonnull @.str.46, ptr noundef nonnull @.str.8, i32 noundef 1190, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN3cfg16ControlFlowGraph19remove_empty_blocksEv, i32 noundef 2, ptr noundef nonnull @.str.9) #8
  unreachable

29:                                               ; preds = %1
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %2) #9
  call void @_ZNSt6vectorISt10unique_ptrI11DexPositionSt14default_deleteIS1_EESaIS4_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %2) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %3) #9
  %30 = call ptr @_ZNSt3mapImPN3cfg5BlockESt4lessImESaISt4pairIKmS2_EEE5beginEv(ptr noundef nonnull align 8 dereferenceable(48) %0) #9
  store ptr %30, ptr %3, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %4) #9
  %31 = call ptr @_ZNSt3mapImPN3cfg5BlockESt4lessImESaISt4pairIKmS2_EEE3endEv(ptr noundef nonnull align 8 dereferenceable(48) %0) #9
  store ptr %31, ptr %4, align 8
  %32 = call noundef zeroext i1 @_ZStneRKSt17_Rb_tree_iteratorISt4pairIKmPN3cfg5BlockEEES8_(ptr noundef nonnull align 8 dereferenceable(8) %3, ptr noundef nonnull align 8 dereferenceable(8) %4) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) #9
  br i1 %32, label %.lr.ph144, label %._crit_edge145

.lr.ph144:                                        ; preds = %29
  %33 = getelementptr inbounds i8, ptr %0, i64 112
  br label %34

._crit_edge145:                                   ; preds = %237, %29
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %3) #9
  call void @_ZNSt6vectorISt10unique_ptrI11DexPositionSt14default_deleteIS1_EESaIS4_EEC2EOS6_(ptr noundef nonnull align 8 dereferenceable(24) %26, ptr noundef nonnull align 8 dereferenceable(24) %2) #9
  invoke void @_ZN3cfg16ControlFlowGraph20fix_dangling_parentsESt6vectorISt10unique_ptrI11DexPositionSt14default_deleteIS3_EESaIS6_EE(ptr noundef nonnull align 8 dereferenceable(160) %0, ptr noundef nonnull %26)
          to label %246 unwind label %247

34:                                               ; preds = %.lr.ph144, %237
  %35 = call noundef ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIKmPN3cfg5BlockEEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %3) #9
  %36 = getelementptr inbounds i8, ptr %35, i64 8
  %37 = load ptr, ptr %36, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %5) #9
  invoke void @_ZN3cfg5Block14get_first_insnEv(ptr dead_on_unwind nonnull writable sret(%"class.boost::intrusive::list_iterator") align 8 %5, ptr noundef nonnull align 8 dereferenceable(104) %37)
          to label %38 unwind label %47

38:                                               ; preds = %34
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %6) #9
  invoke void @_ZN3cfg5Block3endEv(ptr dead_on_unwind nonnull writable sret(%"class.boost::intrusive::list_iterator") align 8 %6, ptr noundef nonnull align 8 dereferenceable(104) %37)
          to label %39 unwind label %49

39:                                               ; preds = %38
  %40 = invoke noundef zeroext i1 @_ZN5boost9intrusiveneERKNS0_13list_iteratorINS0_8mhtraitsI15MethodItemEntryNS0_16list_member_hookIJEEEXadL_ZNS3_10list_hook_EEEEELb0EEES9_(ptr noundef nonnull align 8 dereferenceable(8) %5, ptr noundef nonnull align 8 dereferenceable(8) %6)
          to label %41 unwind label %49

41:                                               ; preds = %39
  br i1 %40, label %.critedge, label %42

42:                                               ; preds = %41
  %43 = call noundef ptr @_ZNK3cfg16ControlFlowGraph10exit_blockEv(ptr noundef nonnull align 8 dereferenceable(160) %0)
  %44 = icmp eq ptr %37, %43
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #9
  br i1 %44, label %45, label %52

.critedge:                                        ; preds = %41
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #9
  br label %45

45:                                               ; preds = %.critedge, %42
  %46 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt17_Rb_tree_iteratorISt4pairIKmPN3cfg5BlockEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %3) #9
  br label %237, !llvm.loop !11

47:                                               ; preds = %34
  %48 = landingpad { ptr, i32 }
          cleanup
  br label %51

49:                                               ; preds = %39, %38
  %50 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #9
  br label %51

51:                                               ; preds = %49, %47
  %.pn = phi { ptr, i32 } [ %50, %49 ], [ %48, %47 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #9
  br label %245

52:                                               ; preds = %42
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %7) #9
  invoke void @"_ZNK3cfg16ControlFlowGraph17get_succ_edges_ifIZNS0_19remove_empty_blocksEvE3$_0EESt6vectorIPNS_4EdgeESaIS5_EEPKNS_5BlockET_"(ptr dead_on_unwind nonnull writable sret(%"class.std::vector.11") align 8 %7, ptr noundef nonnull align 8 dereferenceable(160) %0, ptr noundef nonnull %37)
          to label %53 unwind label %64

53:                                               ; preds = %52
  %54 = call noundef zeroext i1 @_ZNKSt6vectorIPN3cfg4EdgeESaIS2_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %7) #9
  br i1 %54, label %208, label %55

55:                                               ; preds = %53
  %56 = call noundef i64 @_ZNKSt6vectorIPN3cfg4EdgeESaIS2_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %7) #9
  %57 = icmp eq i64 %56, 1
  br i1 %57, label %70, label %58

58:                                               ; preds = %55
  %59 = call noundef ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIKmPN3cfg5BlockEEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %3) #9
  %60 = load i64, ptr %59, align 8, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %8) #9
  invoke void @_Z4showB5cxx11RKN3cfg16ControlFlowGraphEb(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %8, ptr noundef nonnull align 8 dereferenceable(160) %0, i1 noundef zeroext false)
          to label %61 unwind label %66

61:                                               ; preds = %58
  %62 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %8) #9
  invoke void (ptr, ptr, i32, ptr, i32, ptr, ...) @_Z11assert_failPKcS0_jS0_10RedexErrorS0_z(ptr noundef nonnull @.str.47, ptr noundef nonnull @.str.8, i32 noundef 1204, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN3cfg16ControlFlowGraph19remove_empty_blocksEv, i32 noundef 2, ptr noundef nonnull @.str.48, i64 noundef %60, ptr noundef %62) #8
          to label %63 unwind label %68

63:                                               ; preds = %61
  unreachable

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

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

68:                                               ; preds = %61
  %69 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %8) #9
  br label %77

70:                                               ; preds = %55
  %71 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIPN3cfg4EdgeESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %7, i64 noundef 0) #9
  %72 = load ptr, ptr %71, align 8, !tbaa !14
  %73 = call noundef ptr @_ZNK3cfg4Edge6targetEv(ptr noundef nonnull align 8 dereferenceable(32) %72)
  %74 = icmp eq ptr %37, %73
  br i1 %74, label %75, label %78

75:                                               ; preds = %70
  %76 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt17_Rb_tree_iteratorISt4pairIKmPN3cfg5BlockEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %3) #9
  br label %.thread, !llvm.loop !11

77:                                               ; preds = %66, %68
  %.pn95 = phi { ptr, i32 } [ %69, %68 ], [ %67, %66 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %8) #9
  br label %244

78:                                               ; preds = %70
  %79 = invoke noundef zeroext i1 @_ZN13source_blocks17has_source_blocksEPKN3cfg5BlockE(ptr noundef nonnull %37)
          to label %80 unwind label %86

80:                                               ; preds = %78
  br i1 %79, label %81, label %94

81:                                               ; preds = %80
  %82 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3cfg5Block5predsEv(ptr noundef nonnull align 8 dereferenceable(104) %73)
  %83 = call noundef i64 @_ZNKSt6vectorIPN3cfg4EdgeESaIS2_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %82) #9
  %84 = icmp ne i64 %83, 1
  %85 = load ptr, ptr %33, align 8
  %.not = icmp eq ptr %73, %85
  %or.cond = select i1 %84, i1 true, i1 %.not
  br i1 %or.cond, label %88, label %94

86:                                               ; preds = %94, %78
  %87 = landingpad { ptr, i32 }
          cleanup
  br label %244

88:                                               ; preds = %81
  %89 = load ptr, ptr @g_redex, align 8, !tbaa !14
  %90 = load i8, ptr %89, align 8, !tbaa !15, !range !83, !noundef !84
  %91 = trunc nuw i8 %90 to i1
  br i1 %91, label %92, label %94

92:                                               ; preds = %88
  %93 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt17_Rb_tree_iteratorISt4pairIKmPN3cfg5BlockEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %3) #9
  br label %.thread, !llvm.loop !11

94:                                               ; preds = %81, %88, %80
  %.088 = phi i1 [ false, %88 ], [ false, %80 ], [ true, %81 ]
  invoke void @_ZN3cfg16ControlFlowGraph20delete_edges_betweenEPNS_5BlockES2_(ptr noundef nonnull align 8 dereferenceable(160) %0, ptr noundef nonnull %37, ptr noundef %73)
          to label %95 unwind label %86

95:                                               ; preds = %94
  %96 = invoke noundef ptr @_ZNK3cfg16ControlFlowGraph21get_succ_edge_of_typeEPKNS_5BlockENS_8EdgeTypeE(ptr noundef nonnull align 8 dereferenceable(160) %0, ptr noundef nonnull %37, i8 noundef zeroext 3)
          to label %97 unwind label %99

97:                                               ; preds = %95
  %.not97 = icmp eq ptr %96, null
  br i1 %.not97, label %101, label %98

98:                                               ; preds = %97
  invoke void @_ZN3cfg16ControlFlowGraph15set_edge_sourceEPNS_4EdgeEPNS_5BlockE(ptr noundef nonnull align 8 dereferenceable(160) %0, ptr noundef nonnull %96, ptr noundef %73)
          to label %101 unwind label %99

99:                                               ; preds = %98, %95
  %100 = landingpad { ptr, i32 }
          cleanup
  br label %244

101:                                              ; preds = %98, %97
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %9) #9
  %102 = getelementptr inbounds i8, ptr %37, i64 48
  %103 = call ptr @_ZNSt6vectorIPN3cfg4EdgeESaIS2_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %102) #9
  %104 = call ptr @_ZNSt6vectorIPN3cfg4EdgeESaIS2_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %102) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %10) #9
  call void @_ZNSaIPN3cfg4EdgeEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %10) #9
  invoke void @_ZNSt6vectorIPN3cfg4EdgeESaIS2_EEC2IN9__gnu_cxx17__normal_iteratorIPS2_S4_EEvEET_SA_RKS3_(ptr noundef nonnull align 8 dereferenceable(24) %9, ptr %103, ptr %104, ptr noundef nonnull align 1 dereferenceable(1) %10)
          to label %105 unwind label %111

105:                                              ; preds = %101
  call void @_ZNSt15__new_allocatorIPN3cfg4EdgeEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %10) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %10) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %11) #9
  %106 = call ptr @_ZNSt6vectorIPN3cfg4EdgeESaIS2_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %9) #9
  store ptr %106, ptr %11, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %12) #9
  %107 = call ptr @_ZNSt6vectorIPN3cfg4EdgeESaIS2_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %9) #9
  store ptr %107, ptr %12, align 8
  %108 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPPN3cfg4EdgeESt6vectorIS3_SaIS3_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %11, ptr noundef nonnull align 8 dereferenceable(8) %12) #9
  br i1 %108, label %.lr.ph, label %._crit_edge

._crit_edge:                                      ; preds = %115, %105
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #9
  %109 = call noundef ptr @_ZNK3cfg16ControlFlowGraph11entry_blockEv(ptr noundef nonnull align 8 dereferenceable(160) %0)
  %110 = icmp eq ptr %37, %109
  br i1 %110, label %120, label %121

111:                                              ; preds = %101
  %112 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIPN3cfg4EdgeEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %10) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %10) #9
  br label %207

.lr.ph:                                           ; preds = %105, %115
  %113 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPPN3cfg4EdgeESt6vectorIS3_SaIS3_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %11) #9
  %114 = load ptr, ptr %113, align 8, !tbaa !14
  invoke void @_ZN3cfg16ControlFlowGraph15set_edge_targetEPNS_4EdgeEPNS_5BlockE(ptr noundef nonnull align 8 dereferenceable(160) %0, ptr noundef %114, ptr noundef %73)
          to label %115 unwind label %118

115:                                              ; preds = %.lr.ph
  %116 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPPN3cfg4EdgeESt6vectorIS3_SaIS3_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %11) #9
  %117 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPPN3cfg4EdgeESt6vectorIS3_SaIS3_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %11, ptr noundef nonnull align 8 dereferenceable(8) %12) #9
  br i1 %117, label %.lr.ph, label %._crit_edge

118:                                              ; preds = %.lr.ph
  %119 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #9
  br label %206

120:                                              ; preds = %._crit_edge
  store ptr %73, ptr %33, align 8, !tbaa !85
  br label %121

121:                                              ; preds = %120, %._crit_edge
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %13) #9
  invoke void @_ZN3cfg5Block30get_first_insn_before_positionEv(ptr dead_on_unwind nonnull writable sret(%"class.boost::intrusive::list_iterator") align 8 %13, ptr noundef nonnull align 8 dereferenceable(104) %73)
          to label %122 unwind label %.loopexit138

122:                                              ; preds = %121
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %14) #9
  invoke void @_ZN3cfg5Block3endEv(ptr dead_on_unwind nonnull writable sret(%"class.boost::intrusive::list_iterator") align 8 %14, ptr noundef nonnull align 8 dereferenceable(104) %73)
          to label %123 unwind label %135

123:                                              ; preds = %122
  %124 = invoke noundef zeroext i1 @_ZN5boost9intrusiveneERKNS0_13list_iteratorINS0_8mhtraitsI15MethodItemEntryNS0_16list_member_hookIJEEEXadL_ZNS3_10list_hook_EEEEELb0EEES9_(ptr noundef nonnull align 8 dereferenceable(8) %13, ptr noundef nonnull align 8 dereferenceable(8) %14)
          to label %125 unwind label %135

125:                                              ; preds = %123
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #9
  br i1 %124, label %126, label %163

126:                                              ; preds = %125
  %127 = invoke noundef ptr @_ZNK5boost9intrusive13list_iteratorINS0_8mhtraitsI15MethodItemEntryNS0_16list_member_hookIJEEEXadL_ZNS3_10list_hook_EEEEELb0EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %13)
          to label %128 unwind label %.loopexit138

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

133:                                              ; preds = %128
  invoke void (ptr, ptr, i32, ptr, i32, ptr, ...) @_Z11assert_failPKcS0_jS0_10RedexErrorS0_z(ptr noundef nonnull @.str.49, ptr noundef nonnull @.str.8, i32 noundef 1259, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN3cfg16ControlFlowGraph19remove_empty_blocksEv, i32 noundef 2, ptr noundef nonnull @.str.9) #8
          to label %134 unwind label %.loopexit.split-lp139

134:                                              ; preds = %133
  unreachable

.loopexit138:                                     ; preds = %121, %126
  %lpad.loopexit140 = landingpad { ptr, i32 }
          cleanup
  br label %205

.loopexit.split-lp139:                            ; preds = %133
  %lpad.loopexit.split-lp141 = landingpad { ptr, i32 }
          cleanup
  br label %205

135:                                              ; preds = %123, %122
  %136 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #9
  br label %205

137:                                              ; preds = %128
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %15) #9
  invoke void @_ZN3cfg5Block5beginEv(ptr dead_on_unwind nonnull writable sret(%"class.boost::intrusive::list_iterator") align 8 %15, ptr noundef nonnull align 8 dereferenceable(104) %37)
          to label %138 unwind label %144

138:                                              ; preds = %137
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %16) #9
  invoke void @_ZN3cfg5Block3endEv(ptr dead_on_unwind nonnull writable sret(%"class.boost::intrusive::list_iterator") align 8 %16, ptr noundef nonnull align 8 dereferenceable(104) %37)
          to label %.preheader132 unwind label %.loopexit.split-lp134

.preheader132:                                    ; preds = %138
  %139 = getelementptr inbounds i8, ptr %73, i64 8
  br label %140

140:                                              ; preds = %.preheader132, %159
  %141 = invoke noundef zeroext i1 @_ZN5boost9intrusiveneERKNS0_13list_iteratorINS0_8mhtraitsI15MethodItemEntryNS0_16list_member_hookIJEEEXadL_ZNS3_10list_hook_EEEEELb0EEES9_(ptr noundef nonnull align 8 dereferenceable(8) %15, ptr noundef nonnull align 8 dereferenceable(8) %16)
          to label %142 unwind label %.loopexit133

142:                                              ; preds = %140
  br i1 %141, label %146, label %143

143:                                              ; preds = %142
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #9
  br label %163

144:                                              ; preds = %137
  %145 = landingpad { ptr, i32 }
          cleanup
  br label %162

.loopexit133:                                     ; preds = %140
  %lpad.loopexit135 = landingpad { ptr, i32 }
          cleanup
  br label %161

.loopexit.split-lp134:                            ; preds = %138
  %lpad.loopexit.split-lp136 = landingpad { ptr, i32 }
          cleanup
  br label %161

146:                                              ; preds = %142
  %147 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK5boost9intrusive13list_iteratorINS0_8mhtraitsI15MethodItemEntryNS0_16list_member_hookIJEEEXadL_ZNS3_10list_hook_EEEEELb0EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %15)
          to label %148 unwind label %155

148:                                              ; preds = %146
  %149 = getelementptr inbounds i8, ptr %147, i64 16
  %150 = load i32, ptr %149, align 8, !tbaa !104
  %151 = icmp eq i32 %150, 6
  br i1 %151, label %152, label %159

152:                                              ; preds = %148
  %153 = getelementptr inbounds i8, ptr %147, i64 24
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %17) #9
  invoke void @_ZN6IRList13insert_beforeIJSt10unique_ptrI11DexPositionSt14default_deleteIS2_EEEEEN5boost9intrusive13list_iteratorINS7_8mhtraitsI15MethodItemEntryNS7_16list_member_hookIJEEEXadL_ZNSA_10list_hook_EEEEELb0EEERKSE_DpOT_(ptr dead_on_unwind nonnull writable sret(%"class.boost::intrusive::list_iterator") align 8 %17, ptr noundef nonnull align 8 dereferenceable(24) %139, ptr noundef nonnull align 8 dereferenceable(8) %13, ptr noundef nonnull align 8 dereferenceable(8) %153)
          to label %154 unwind label %157

154:                                              ; preds = %152
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #9
  br label %159

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

157:                                              ; preds = %152
  %158 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #9
  br label %161

159:                                              ; preds = %154, %148
  %160 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5boost9intrusive13list_iteratorINS0_8mhtraitsI15MethodItemEntryNS0_16list_member_hookIJEEEXadL_ZNS3_10list_hook_EEEEELb0EEppEv(ptr noundef nonnull align 8 dereferenceable(8) %15)
  br label %140

161:                                              ; preds = %.loopexit133, %.loopexit.split-lp134, %155, %157
  %.pn105.pn = phi { ptr, i32 } [ %158, %157 ], [ %156, %155 ], [ %lpad.loopexit135, %.loopexit133 ], [ %lpad.loopexit.split-lp136, %.loopexit.split-lp134 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #9
  br label %162

162:                                              ; preds = %161, %144
  %.pn105.pn.pn = phi { ptr, i32 } [ %.pn105.pn, %161 ], [ %145, %144 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #9
  br label %205

163:                                              ; preds = %143, %125
  br i1 %.088, label %164, label %204

164:                                              ; preds = %163
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %18) #9
  invoke void @_ZN3cfg5Block5beginEv(ptr dead_on_unwind nonnull writable sret(%"class.boost::intrusive::list_iterator") align 8 %18, ptr noundef nonnull align 8 dereferenceable(104) %37)
          to label %165 unwind label %171

165:                                              ; preds = %164
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %19) #9
  invoke void @_ZN3cfg5Block3endEv(ptr dead_on_unwind nonnull writable sret(%"class.boost::intrusive::list_iterator") align 8 %19, ptr noundef nonnull align 8 dereferenceable(104) %37)
          to label %.preheader126 unwind label %.loopexit.split-lp128

.preheader126:                                    ; preds = %165
  %166 = getelementptr inbounds i8, ptr %73, i64 8
  br label %167

167:                                              ; preds = %.preheader126, %200
  %.089 = phi i1 [ %.190, %200 ], [ true, %.preheader126 ]
  %168 = invoke noundef zeroext i1 @_ZN5boost9intrusiveneERKNS0_13list_iteratorINS0_8mhtraitsI15MethodItemEntryNS0_16list_member_hookIJEEEXadL_ZNS3_10list_hook_EEEEELb0EEES9_(ptr noundef nonnull align 8 dereferenceable(8) %18, ptr noundef nonnull align 8 dereferenceable(8) %19)
          to label %169 unwind label %.loopexit127

169:                                              ; preds = %167
  br i1 %168, label %173, label %170

170:                                              ; preds = %169
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #9
  br label %204

171:                                              ; preds = %164
  %172 = landingpad { ptr, i32 }
          cleanup
  br label %203

.loopexit127:                                     ; preds = %167
  %lpad.loopexit129 = landingpad { ptr, i32 }
          cleanup
  br label %202

.loopexit.split-lp128:                            ; preds = %165
  %lpad.loopexit.split-lp130 = landingpad { ptr, i32 }
          cleanup
  br label %202

173:                                              ; preds = %169
  %174 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK5boost9intrusive13list_iteratorINS0_8mhtraitsI15MethodItemEntryNS0_16list_member_hookIJEEEXadL_ZNS3_10list_hook_EEEEELb0EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %18)
          to label %175 unwind label %184

175:                                              ; preds = %173
  %176 = getelementptr inbounds i8, ptr %174, i64 16
  %177 = load i32, ptr %176, align 8, !tbaa !104
  %178 = icmp eq i32 %177, 7
  br i1 %178, label %179, label %200

179:                                              ; preds = %175
  br i1 %.089, label %180, label %191

180:                                              ; preds = %179
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %20) #9
  invoke void @_ZN3cfg5Block5beginEv(ptr dead_on_unwind nonnull writable sret(%"class.boost::intrusive::list_iterator") align 8 %20, ptr noundef nonnull align 8 dereferenceable(104) %73)
          to label %181 unwind label %186

181:                                              ; preds = %180
  %182 = getelementptr inbounds i8, ptr %174, i64 24
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %21) #9
  invoke void @_ZN6IRList13insert_beforeIJSt10unique_ptrI11SourceBlockSt14default_deleteIS2_EEEEEN5boost9intrusive13list_iteratorINS7_8mhtraitsI15MethodItemEntryNS7_16list_member_hookIJEEEXadL_ZNSA_10list_hook_EEEEELb0EEERKSE_DpOT_(ptr dead_on_unwind nonnull writable sret(%"class.boost::intrusive::list_iterator") align 8 %21, ptr noundef nonnull align 8 dereferenceable(24) %166, ptr noundef nonnull align 8 dereferenceable(8) %20, ptr noundef nonnull align 8 dereferenceable(8) %182)
          to label %183 unwind label %188

183:                                              ; preds = %181
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #9
  br label %200

184:                                              ; preds = %173
  %185 = landingpad { ptr, i32 }
          cleanup
  br label %202

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

188:                                              ; preds = %181
  %189 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #9
  br label %190

190:                                              ; preds = %188, %186
  %.pn100 = phi { ptr, i32 } [ %189, %188 ], [ %187, %186 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #9
  br label %202

191:                                              ; preds = %179
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %22) #9
  invoke void @_ZN3cfg5Block5beginEv(ptr dead_on_unwind nonnull writable sret(%"class.boost::intrusive::list_iterator") align 8 %22, ptr noundef nonnull align 8 dereferenceable(104) %73)
          to label %192 unwind label %195

192:                                              ; preds = %191
  %193 = getelementptr inbounds i8, ptr %174, i64 24
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %23) #9
  invoke void @_ZN6IRList12insert_afterIJSt10unique_ptrI11SourceBlockSt14default_deleteIS2_EEEEEN5boost9intrusive13list_iteratorINS7_8mhtraitsI15MethodItemEntryNS7_16list_member_hookIJEEEXadL_ZNSA_10list_hook_EEEEELb0EEERKSE_DpOT_(ptr dead_on_unwind nonnull writable sret(%"class.boost::intrusive::list_iterator") align 8 %23, ptr noundef nonnull align 8 dereferenceable(24) %166, ptr noundef nonnull align 8 dereferenceable(8) %22, ptr noundef nonnull align 8 dereferenceable(8) %193)
          to label %194 unwind label %197

194:                                              ; preds = %192
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #9
  br label %200

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

197:                                              ; preds = %192
  %198 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #9
  br label %199

199:                                              ; preds = %197, %195
  %.pn98 = phi { ptr, i32 } [ %198, %197 ], [ %196, %195 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #9
  br label %202

200:                                              ; preds = %183, %194, %175
  %.190 = phi i1 [ %.089, %175 ], [ false, %194 ], [ false, %183 ]
  %201 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5boost9intrusive13list_iteratorINS0_8mhtraitsI15MethodItemEntryNS0_16list_member_hookIJEEEXadL_ZNS3_10list_hook_EEEEELb0EEppEv(ptr noundef nonnull align 8 dereferenceable(8) %18)
  br label %167

202:                                              ; preds = %.loopexit127, %.loopexit.split-lp128, %184, %190, %199
  %.pn100.pn.pn = phi { ptr, i32 } [ %.pn100, %190 ], [ %.pn98, %199 ], [ %185, %184 ], [ %lpad.loopexit129, %.loopexit127 ], [ %lpad.loopexit.split-lp130, %.loopexit.split-lp128 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #9
  br label %203

203:                                              ; preds = %202, %171
  %.pn100.pn.pn.pn = phi { ptr, i32 } [ %.pn100.pn.pn, %202 ], [ %172, %171 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #9
  br label %205

204:                                              ; preds = %163, %170
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #9
  call void @_ZNSt6vectorIPN3cfg4EdgeESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %9) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %9) #9
  br label %208

205:                                              ; preds = %.loopexit138, %.loopexit.split-lp139, %203, %162, %135
  %.pn109 = phi { ptr, i32 } [ %.pn105.pn.pn, %162 ], [ %.pn100.pn.pn.pn, %203 ], [ %136, %135 ], [ %lpad.loopexit140, %.loopexit138 ], [ %lpad.loopexit.split-lp141, %.loopexit.split-lp139 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #9
  br label %206

206:                                              ; preds = %205, %118
  %.pn111 = phi { ptr, i32 } [ %119, %118 ], [ %.pn109, %205 ]
  call void @_ZNSt6vectorIPN3cfg4EdgeESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %9) #9
  br label %207

207:                                              ; preds = %206, %111
  %.pn111.pn = phi { ptr, i32 } [ %.pn111, %206 ], [ %112, %111 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %9) #9
  br label %244

208:                                              ; preds = %204, %53
  %209 = load ptr, ptr %33, align 8, !tbaa !85
  %210 = icmp eq ptr %37, %209
  br i1 %210, label %211, label %213

211:                                              ; preds = %208
  %212 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt17_Rb_tree_iteratorISt4pairIKmPN3cfg5BlockEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %3) #9
  br label %.thread, !llvm.loop !11

213:                                              ; preds = %208
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %24) #9
  invoke void @_ZN3cfg5Block5beginEv(ptr dead_on_unwind nonnull writable sret(%"class.boost::intrusive::list_iterator") align 8 %24, ptr noundef nonnull align 8 dereferenceable(104) %37)
          to label %214 unwind label %218

214:                                              ; preds = %213
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %25) #9
  invoke void @_ZN3cfg5Block3endEv(ptr dead_on_unwind nonnull writable sret(%"class.boost::intrusive::list_iterator") align 8 %25, ptr noundef nonnull align 8 dereferenceable(104) %37)
          to label %.preheader unwind label %.loopexit.split-lp

.preheader:                                       ; preds = %214, %230
  %215 = invoke noundef zeroext i1 @_ZN5boost9intrusiveneERKNS0_13list_iteratorINS0_8mhtraitsI15MethodItemEntryNS0_16list_member_hookIJEEEXadL_ZNS3_10list_hook_EEEEELb0EEES9_(ptr noundef nonnull align 8 dereferenceable(8) %24, ptr noundef nonnull align 8 dereferenceable(8) %25)
          to label %216 unwind label %.loopexit

216:                                              ; preds = %.preheader
  br i1 %215, label %220, label %217

217:                                              ; preds = %216
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #9
  invoke void @_ZN3cfg5Block4freeEv(ptr noundef nonnull align 8 dereferenceable(104) %37)
          to label %234 unwind label %240

218:                                              ; preds = %213
  %219 = landingpad { ptr, i32 }
          cleanup
  br label %233

.loopexit:                                        ; preds = %.preheader
  %lpad.loopexit = landingpad { ptr, i32 }
          cleanup
  br label %232

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

220:                                              ; preds = %216
  %221 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK5boost9intrusive13list_iteratorINS0_8mhtraitsI15MethodItemEntryNS0_16list_member_hookIJEEEXadL_ZNS3_10list_hook_EEEEELb0EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %24)
          to label %222 unwind label %228

222:                                              ; preds = %220
  %223 = getelementptr inbounds i8, ptr %221, i64 16
  %224 = load i32, ptr %223, align 8, !tbaa !104
  %225 = icmp eq i32 %224, 6
  br i1 %225, label %226, label %230

226:                                              ; preds = %222
  %227 = getelementptr inbounds i8, ptr %221, i64 24
  invoke void @_ZNSt6vectorISt10unique_ptrI11DexPositionSt14default_deleteIS1_EESaIS4_EE9push_backEOS4_(ptr noundef nonnull align 8 dereferenceable(24) %2, ptr noundef nonnull align 8 dereferenceable(8) %227)
          to label %230 unwind label %228

228:                                              ; preds = %226, %220
  %229 = landingpad { ptr, i32 }
          cleanup
  br label %232

230:                                              ; preds = %226, %222
  %231 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5boost9intrusive13list_iteratorINS0_8mhtraitsI15MethodItemEntryNS0_16list_member_hookIJEEEXadL_ZNS3_10list_hook_EEEEELb0EEppEv(ptr noundef nonnull align 8 dereferenceable(8) %24)
  br label %.preheader

232:                                              ; preds = %.loopexit, %.loopexit.split-lp, %228
  %.pn116 = phi { ptr, i32 } [ %229, %228 ], [ %lpad.loopexit, %.loopexit ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #9
  br label %233

233:                                              ; preds = %232, %218
  %.pn116.pn = phi { ptr, i32 } [ %.pn116, %232 ], [ %219, %218 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #9
  br label %244

234:                                              ; preds = %217
  call void @_ZN3cfg5BlockD2Ev(ptr noundef nonnull align 8 dereferenceable(104) %37) #9
  call void @_ZdlPvm(ptr noundef %37, i64 noundef 104) #10
  %.sroa.0.0.copyload = load ptr, ptr %3, align 8, !tbaa !14
  %235 = invoke ptr @_ZNSt3mapImPN3cfg5BlockESt4lessImESaISt4pairIKmS2_EEE5eraseB5cxx11ESt17_Rb_tree_iteratorIS7_E(ptr noundef nonnull align 8 dereferenceable(48) %0, ptr %.sroa.0.0.copyload)
          to label %236 unwind label %242

236:                                              ; preds = %234
  store ptr %235, ptr %3, align 8, !tbaa !14
  br label %.thread

.thread:                                          ; preds = %92, %75, %236, %211
  call void @_ZNSt6vectorIPN3cfg4EdgeESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %7) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %7) #9
  br label %237

237:                                              ; preds = %.thread, %45
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %4) #9
  %238 = call ptr @_ZNSt3mapImPN3cfg5BlockESt4lessImESaISt4pairIKmS2_EEE3endEv(ptr noundef nonnull align 8 dereferenceable(48) %0) #9
  store ptr %238, ptr %4, align 8
  %239 = call noundef zeroext i1 @_ZStneRKSt17_Rb_tree_iteratorISt4pairIKmPN3cfg5BlockEEES8_(ptr noundef nonnull align 8 dereferenceable(8) %3, ptr noundef nonnull align 8 dereferenceable(8) %4) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) #9
  br i1 %239, label %34, label %._crit_edge145

240:                                              ; preds = %217
  %241 = landingpad { ptr, i32 }
          cleanup
  br label %244

242:                                              ; preds = %234
  %243 = landingpad { ptr, i32 }
          cleanup
  br label %244

244:                                              ; preds = %86, %207, %99, %77, %242, %240, %233
  %.pn116.pn.pn = phi { ptr, i32 } [ %.pn116.pn, %233 ], [ %243, %242 ], [ %241, %240 ], [ %.pn95, %77 ], [ %87, %86 ], [ %.pn111.pn, %207 ], [ %100, %99 ]
  call void @_ZNSt6vectorIPN3cfg4EdgeESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %7) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %7) #9
  br label %245

245:                                              ; preds = %64, %244, %51
  %.pn116.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn, %51 ], [ %.pn116.pn.pn, %244 ], [ %65, %64 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %3) #9
  br label %249

246:                                              ; preds = %._crit_edge145
  call void @_ZNSt6vectorISt10unique_ptrI11DexPositionSt14default_deleteIS1_EESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %26) #9
  call void @_ZNSt6vectorISt10unique_ptrI11DexPositionSt14default_deleteIS1_EESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %2) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %2) #9
  ret void

247:                                              ; preds = %._crit_edge145
  %248 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorISt10unique_ptrI11DexPositionSt14default_deleteIS1_EESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %26) #9
  br label %249

249:                                              ; preds = %247, %245
  %.pn116.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn116.pn.pn.pn.pn, %245 ], [ %248, %247 ]
  call void @_ZNSt6vectorISt10unique_ptrI11DexPositionSt14default_deleteIS1_EESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %2) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %2) #9
  resume { ptr, i32 } %.pn116.pn.pn.pn.pn.pn
}

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare hidden void @"_ZNK3cfg16ControlFlowGraph17get_succ_edges_ifIZNS0_19remove_empty_blocksEvE3$_0EESt6vectorIPNS_4EdgeESaIS5_EEPKNS_5BlockET_"(ptr dead_on_unwind noalias writable sret(%"class.std::vector.11") align 8, ptr noundef nonnull align 8 dereferenceable(160), ptr noundef) local_unnamed_addr #3 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN13source_blocks17has_source_blocksEPKN3cfg5BlockE(ptr noundef) local_unnamed_addr #4

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

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

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

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

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

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

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

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

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

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !10, i64 8}
!6 = !{!"_ZTSSt4pairIKmPN3cfg5BlockEE", !7, i64 0, !10, i64 8}
!7 = !{!"long", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C++ TBAA"}
!10 = !{!"any pointer", !8, i64 0}
!11 = distinct !{!11, !12}
!12 = !{!"llvm.loop.mustprogress"}
!13 = !{!6, !7, i64 0}
!14 = !{!10, !10, i64 0}
!15 = !{!16, !17, i64 0}
!16 = !{!"_ZTS12RedexContext", !17, i64 0, !17, i64 1, !18, i64 8, !20, i64 2672, !22, i64 5336, !24, i64 8000, !26, i64 354456, !27, i64 355480, !27, i64 356304, !27, i64 357128, !37, i64 357952, !39, i64 360616, !31, i64 363280, !41, i64 363320, !43, i64 365984, !45, i64 368648, !31, i64 371312, !47, i64 371352, !10, i64 374016, !49, i64 374024, !31, i64 376688, !51, i64 376728, !55, i64 376752, !31, i64 376776, !59, i64 376816, !63, i64 376840, !17, i64 376896, !17, i64 376897, !31, i64 376904, !69, i64 376944, !73, i64 377408, !75, i64 383392, !17, i64 389376, !77, i64 389384, !31, i64 389464}
!17 = !{!"bool", !8, i64 0}
!18 = !{!"_ZTS13ConcurrentSetIPK8DexClassSt4hashIS2_ESt8equal_toIS2_ELm83EE", !19, i64 0}
!19 = !{!"_ZTS19ConcurrentContainerISt13unordered_setIPK8DexClassSt4hashIS3_ESt8equal_toIS3_ESaIS3_EELm83EE", !8, i64 8}
!20 = !{!"_ZTS13ConcurrentSetIPK9DexMethodSt4hashIS2_ESt8equal_toIS2_ELm83EE", !21, i64 0}
!21 = !{!"_ZTS19ConcurrentContainerISt13unordered_setIPK9DexMethodSt4hashIS3_ESt8equal_toIS3_ESaIS3_EELm83EE", !8, i64 8}
!22 = !{!"_ZTS23InsertOnlyConcurrentSetIPK9DexStringSt4hashIS2_ESt8equal_toIS2_ELm83EE", !23, i64 0}
!23 = !{!"_ZTS19ConcurrentContainerISt13unordered_setIPK9DexStringSt4hashIS3_ESt8equal_toIS3_ESaIS3_EELm83EE", !8, i64 8}
!24 = !{!"_ZTSN12RedexContext14LargeStringSetILm31ELm127EEE", !25, i64 0}
!25 = !{!"_ZTSSt5arrayIN12RedexContext28ConcurrentProjectedStringSetILm31EEELm127EE", !8, i64 0}
!26 = !{!"_ZTSSt5arrayIP23InsertOnlyConcurrentSetI13DexStringReprN12RedexContext17DexStringReprHashENS2_18DexStringReprEqualELm83EELm128EE", !8, i64 0}
!27 = !{!"_ZTSN12RedexContext23ConcurrentStringStorageE", !7, i64 0, !7, i64 8, !7, i64 16, !28, i64 24, !28, i64 32, !28, i64 40, !28, i64 48, !30, i64 56, !31, i64 760, !33, i64 800}
!28 = !{!"_ZTSSt6atomicImE", !29, i64 0}
!29 = !{!"_ZTSSt13__atomic_baseImE", !7, i64 0}
!30 = !{!"_ZTSSt5arrayIN12RedexContext23ConcurrentStringStorage4SlotELm11EE", !8, i64 0}
!31 = !{!"_ZTSSt5mutex", !32, i64 0}
!32 = !{!"_ZTSSt12__mutex_base", !8, i64 0}
!33 = !{!"_ZTSSt6vectorISt10unique_ptrIN12RedexContext23ConcurrentStringStorage9ContainerESt14default_deleteIS3_EESaIS6_EE", !34, i64 0}
!34 = !{!"_ZTSSt12_Vector_baseISt10unique_ptrIN12RedexContext23ConcurrentStringStorage9ContainerESt14default_deleteIS3_EESaIS6_EE", !35, i64 0}
!35 = !{!"_ZTSNSt12_Vector_baseISt10unique_ptrIN12RedexContext23ConcurrentStringStorage9ContainerESt14default_deleteIS3_EESaIS6_EE12_Vector_implE", !36, i64 0}
!36 = !{!"_ZTSNSt12_Vector_baseISt10unique_ptrIN12RedexContext23ConcurrentStringStorage9ContainerESt14default_deleteIS3_EESaIS6_EE17_Vector_impl_dataE", !10, i64 0, !10, i64 8, !10, i64 16}
!37 = !{!"_ZTS9AtomicMapIPK9DexStringP7DexTypeSt4hashIS2_ESt8equal_toIS2_ELm83EE", !38, i64 0}
!38 = !{!"_ZTS19ConcurrentContainerISt13unordered_mapIPK9DexStringSt6atomicIP7DexTypeESt4hashIS3_ESt8equal_toIS3_ESaISt4pairIKS3_S7_EEELm83EE", !8, i64 8}
!39 = !{!"_ZTS9AtomicMapI12DexFieldSpecP11DexFieldRefSt4hashIS0_ESt8equal_toIS0_ELm83EE", !40, i64 0}
!40 = !{!"_ZTS19ConcurrentContainerISt13unordered_mapI12DexFieldSpecSt6atomicIP11DexFieldRefESt4hashIS1_ESt8equal_toIS1_ESaISt4pairIKS1_S5_EEELm83EE", !8, i64 8}
!41 = !{!"_ZTS9AtomicMapIPKSt6vectorIP7DexTypeSaIS2_EEP11DexTypeListN12RedexContext31DexTypeListContainerTypePtrHashENS9_33DexTypeListContainerTypePtrEqualsELm83EE", !42, i64 0}
!42 = !{!"_ZTS19ConcurrentContainerISt13unordered_mapIPKSt6vectorIP7DexTypeSaIS3_EESt6atomicIP11DexTypeListEN12RedexContext31DexTypeListContainerTypePtrHashENSC_33DexTypeListContainerTypePtrEqualsESaISt4pairIKS7_SB_EEELm83EE", !8, i64 8}
!43 = !{!"_ZTS23InsertOnlyConcurrentSetIP8DexProtoN12RedexContext15DexProtoKeyHashENS2_16DexProtoKeyEqualELm83EE", !44, i64 0}
!44 = !{!"_ZTS19ConcurrentContainerISt13unordered_setIP8DexProtoN12RedexContext15DexProtoKeyHashENS3_16DexProtoKeyEqualESaIS2_EELm83EE", !8, i64 8}
!45 = !{!"_ZTS9AtomicMapI13DexMethodSpecP12DexMethodRefSt4hashIS0_ESt8equal_toIS0_ELm83EE", !46, i64 0}
!46 = !{!"_ZTS19ConcurrentContainerISt13unordered_mapI13DexMethodSpecSt6atomicIP12DexMethodRefESt4hashIS1_ESt8equal_toIS1_ESaISt4pairIKS1_S5_EEELm83EE", !8, i64 8}
!47 = !{!"_ZTS9AtomicMapISt4pairISt17basic_string_viewIcSt11char_traitsIcEES4_EP11DexLocationN12RedexContext20ClassLocationKeyHashESt8equal_toIS5_ELm83EE", !48, i64 0}
!48 = !{!"_ZTS19ConcurrentContainerISt13unordered_mapISt4pairISt17basic_string_viewIcSt11char_traitsIcEES5_ESt6atomicIP11DexLocationEN12RedexContext20ClassLocationKeyHashESt8equal_toIS6_ESaIS1_IKS6_SA_EEELm83EE", !8, i64 8}
!49 = !{!"_ZTS23InsertOnlyConcurrentSetIP8DexClassSt4hashIS1_ESt8equal_toIS1_ELm83EE", !50, i64 0}
!50 = !{!"_ZTS19ConcurrentContainerISt13unordered_setIP8DexClassSt4hashIS2_ESt8equal_toIS2_ESaIS2_EELm83EE", !8, i64 8}
!51 = !{!"_ZTSSt6vectorIP8DexClassSaIS1_EE", !52, i64 0}
!52 = !{!"_ZTSSt12_Vector_baseIP8DexClassSaIS1_EE", !53, i64 0}
!53 = !{!"_ZTSNSt12_Vector_baseIP8DexClassSaIS1_EE12_Vector_implE", !54, i64 0}
!54 = !{!"_ZTSNSt12_Vector_baseIP8DexClassSaIS1_EE17_Vector_impl_dataE", !10, i64 0, !10, i64 8, !10, i64 16}
!55 = !{!"_ZTSSt6vectorIPK7DexTypeSaIS2_EE", !56, i64 0}
!56 = !{!"_ZTSSt12_Vector_baseIPK7DexTypeSaIS2_EE", !57, i64 0}
!57 = !{!"_ZTSNSt12_Vector_baseIPK7DexTypeSaIS2_EE12_Vector_implE", !58, i64 0}
!58 = !{!"_ZTSNSt12_Vector_baseIPK7DexTypeSaIS2_EE17_Vector_impl_dataE", !10, i64 0, !10, i64 8, !10, i64 16}
!59 = !{!"_ZTSSt6vectorISt8functionIFvvEESaIS2_EE", !60, i64 0}
!60 = !{!"_ZTSSt12_Vector_baseISt8functionIFvvEESaIS2_EE", !61, i64 0}
!61 = !{!"_ZTSNSt12_Vector_baseISt8functionIFvvEESaIS2_EE12_Vector_implE", !62, i64 0}
!62 = !{!"_ZTSNSt12_Vector_baseISt8functionIFvvEESaIS2_EE17_Vector_impl_dataE", !10, i64 0, !10, i64 8, !10, i64 16}
!63 = !{!"_ZTS12UnorderedMapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEmSt4hashIS5_ESt8equal_toIS5_EE", !64, i64 0}
!64 = !{!"_ZTSSt13unordered_mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEmSt4hashIS5_ESt8equal_toIS5_ESaISt4pairIKS5_mEEE", !65, i64 0}
!65 = !{!"_ZTSSt10_HashtableINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_mESaIS8_ENSt8__detail10_Select1stESt8equal_toIS5_ESt4hashIS5_ENSA_18_Mod_range_hashingENSA_20_Default_ranged_hashENSA_20_Prime_rehash_policyENSA_17_Hashtable_traitsILb1ELb0ELb1EEEE", !10, i64 0, !7, i64 8, !66, i64 16, !7, i64 24, !67, i64 32, !10, i64 48}
!66 = !{!"_ZTSNSt8__detail15_Hash_node_baseE", !10, i64 0}
!67 = !{!"_ZTSNSt8__detail20_Prime_rehash_policyE", !68, i64 0, !7, i64 8}
!68 = !{!"float", !8, i64 0}
!69 = !{!"_ZTS22FrequentlyUsedPointers", !10, i64 0, !10, i64 8, !10, i64 16, !10, i64 24, !10, i64 32, !10, i64 40, !10, i64 48, !10, i64 56, !10, i64 64, !10, i64 72, !10, i64 80, !10, i64 88, !10, i64 96, !10, i64 104, !10, i64 112, !10, i64 120, !10, i64 128, !10, i64 136, !10, i64 144, !10, i64 152, !10, i64 160, !10, i64 168, !10, i64 176, !10, i64 184, !10, i64 192, !10, i64 200, !10, i64 208, !10, i64 216, !10, i64 224, !10, i64 232, !10, i64 240, !10, i64 248, !10, i64 256, !10, i64 264, !10, i64 272, !10, i64 280, !10, i64 288, !10, i64 296, !10, i64 304, !10, i64 312, !10, i64 320, !10, i64 328, !10, i64 336, !10, i64 344, !10, i64 352, !10, i64 360, !10, i64 368, !10, i64 376, !10, i64 384, !10, i64 392, !10, i64 400, !70, i64 408}
!70 = !{!"_ZTS12UnorderedSetIPK7DexTypeSt4hashIS2_ESt8equal_toIS2_EE", !71, i64 0}
!71 = !{!"_ZTSSt13unordered_setIPK7DexTypeSt4hashIS2_ESt8equal_toIS2_ESaIS2_EE", !72, i64 0}
!72 = !{!"_ZTSSt10_HashtableIPK7DexTypeS2_SaIS2_ENSt8__detail9_IdentityESt8equal_toIS2_ESt4hashIS2_ENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb0ELb1ELb1EEEE", !10, i64 0, !7, i64 8, !66, i64 16, !7, i64 24, !67, i64 32, !10, i64 48}
!73 = !{!"_ZTS13ConcurrentMapIP8DexFieldSt10unique_ptrIN10keep_rules17AssumeReturnValueESt14default_deleteIS4_EESt4hashIS1_ESt8equal_toIS1_ELm83EE", !74, i64 0, !8, i64 2664}
!74 = !{!"_ZTS19ConcurrentContainerISt13unordered_mapIP8DexFieldSt10unique_ptrIN10keep_rules17AssumeReturnValueESt14default_deleteIS5_EESt4hashIS2_ESt8equal_toIS2_ESaISt4pairIKS2_S8_EEELm83EE", !8, i64 8}
!75 = !{!"_ZTS13ConcurrentMapIP9DexMethodSt10unique_ptrIN10keep_rules17AssumeReturnValueESt14default_deleteIS4_EESt4hashIS1_ESt8equal_toIS1_ELm83EE", !76, i64 0, !8, i64 2664}
!76 = !{!"_ZTS19ConcurrentContainerISt13unordered_mapIP9DexMethodSt10unique_ptrIN10keep_rules17AssumeReturnValueESt14default_deleteIS5_EESt4hashIS2_ESt8equal_toIS2_ESaISt4pairIKS2_S8_EEELm83EE", !8, i64 8}
!77 = !{!"_ZTSSt5queueIP12DexMethodRefSt5dequeIS1_SaIS1_EEE", !78, i64 0}
!78 = !{!"_ZTSSt5dequeIP12DexMethodRefSaIS1_EE", !79, i64 0}
!79 = !{!"_ZTSSt11_Deque_baseIP12DexMethodRefSaIS1_EE", !80, i64 0}
!80 = !{!"_ZTSNSt11_Deque_baseIP12DexMethodRefSaIS1_EE11_Deque_implE", !81, i64 0}
!81 = !{!"_ZTSNSt11_Deque_baseIP12DexMethodRefSaIS1_EE16_Deque_impl_dataE", !10, i64 0, !7, i64 8, !82, i64 16, !82, i64 48}
!82 = !{!"_ZTSSt15_Deque_iteratorIP12DexMethodRefRS1_PS1_E", !10, i64 0, !10, i64 8, !10, i64 16, !10, i64 24}
!83 = !{i8 0, i8 2}
!84 = !{}
!85 = !{!86, !10, i64 112}
!86 = !{!"_ZTSN3cfg16ControlFlowGraphE", !87, i64 0, !95, i64 48, !10, i64 104, !10, i64 112, !10, i64 120, !98, i64 128, !17, i64 132, !17, i64 133, !17, i64 134, !99, i64 136}
!87 = !{!"_ZTSSt3mapImPN3cfg5BlockESt4lessImESaISt4pairIKmS2_EEE", !88, i64 0}
!88 = !{!"_ZTSSt8_Rb_treeImSt4pairIKmPN3cfg5BlockEESt10_Select1stIS5_ESt4lessImESaIS5_EE", !89, i64 0}
!89 = !{!"_ZTSNSt8_Rb_treeImSt4pairIKmPN3cfg5BlockEESt10_Select1stIS5_ESt4lessImESaIS5_EE13_Rb_tree_implIS9_Lb1EEE", !90, i64 0, !92, i64 8}
!90 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessImEE", !91, i64 0}
!91 = !{!"_ZTSSt4lessImE"}
!92 = !{!"_ZTSSt15_Rb_tree_header", !93, i64 0, !7, i64 32}
!93 = !{!"_ZTSSt18_Rb_tree_node_base", !94, i64 0, !10, i64 8, !10, i64 16, !10, i64 24}
!94 = !{!"_ZTSSt14_Rb_tree_color", !8, i64 0}
!95 = !{!"_ZTS12UnorderedSetIPN3cfg4EdgeESt4hashIS2_ESt8equal_toIS2_EE", !96, i64 0}
!96 = !{!"_ZTSSt13unordered_setIPN3cfg4EdgeESt4hashIS2_ESt8equal_toIS2_ESaIS2_EE", !97, i64 0}
!97 = !{!"_ZTSSt10_HashtableIPN3cfg4EdgeES2_SaIS2_ENSt8__detail9_IdentityESt8equal_toIS2_ESt4hashIS2_ENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb0ELb1ELb1EEEE", !10, i64 0, !7, i64 8, !66, i64 16, !7, i64 24, !67, i64 32, !10, i64 48}
!98 = !{!"int", !8, i64 0}
!99 = !{!"_ZTSSt6vectorIP13IRInstructionSaIS1_EE", !100, i64 0}
!100 = !{!"_ZTSSt12_Vector_baseIP13IRInstructionSaIS1_EE", !101, i64 0}
!101 = !{!"_ZTSNSt12_Vector_baseIP13IRInstructionSaIS1_EE12_Vector_implE", !102, i64 0}
!102 = !{!"_ZTSNSt12_Vector_baseIP13IRInstructionSaIS1_EE17_Vector_impl_dataE", !10, i64 0, !10, i64 8, !10, i64 16}
!103 = !{!8, !8, i64 0}
!104 = !{!105, !109, i64 16}
!105 = !{!"_ZTS15MethodItemEntry", !106, i64 0, !109, i64 16, !8, i64 24}
!106 = !{!"_ZTSN5boost9intrusive16list_member_hookIJEEE", !107, i64 0}
!107 = !{!"_ZTSN5boost9intrusive12generic_hookILNS0_10algo_typesE0ENS0_16list_node_traitsIPvEENS0_10member_tagELNS0_14link_mode_typeE1ELNS0_14base_hook_typeE0EEE", !108, i64 0}
!108 = !{!"_ZTSN5boost9intrusive9list_nodeIPvEE", !10, i64 0, !10, i64 8}
!109 = !{!"_ZTS14MethodItemType", !8, i64 0}


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