; LLVM IR from dynexcoin/Dynex :: src/DynexCNCore (Blockchain)

; 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"

%"struct.Crypto::Hash" = type { [32 x i8] }
%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon.38 }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon.38 = type { i64, [8 x i8] }
%"class.Logging::LoggerMessage" = type <{ %"class.std::basic_ostream.base", %"class.std::basic_streambuf", ptr, %"class.std::__cxx11::basic_string", i32, [4 x i8], %"class.std::__cxx11::basic_string", %"class.boost::posix_time::ptime", i8, [7 x i8], %"class.std::basic_ios" }>
%"class.std::basic_ostream.base" = type { ptr }
%"class.std::basic_streambuf" = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, %"class.std::locale" }
%"class.std::locale" = type { ptr }
%"class.boost::posix_time::ptime" = type { %"class.boost::date_time::base_time" }
%"class.boost::date_time::base_time" = type { %"struct.boost::date_time::counted_time_rep" }
%"struct.boost::date_time::counted_time_rep" = type { %"class.boost::date_time::int_adapter" }
%"class.boost::date_time::int_adapter" = type { i64 }
%"class.std::basic_ios" = type { %"class.std::ios_base", ptr, i8, i8, ptr, ptr, ptr, ptr }
%"class.std::ios_base" = type { ptr, i64, i64, i32, i32, i32, ptr, %"struct.std::ios_base::_Words", [8 x %"struct.std::ios_base::_Words"], i32, ptr, %"class.std::locale" }
%"struct.std::ios_base::_Words" = type { ptr, i64 }
%"class.std::lock_guard" = type { ptr }
%"struct.std::_List_iterator.277" = type { ptr }
%"struct.DynexCN::Block" = type { %"struct.DynexCN::BlockHeader", %"struct.DynexCN::ParentBlock", %"struct.DynexCN::Transaction", %"class.std::vector.147" }
%"struct.DynexCN::BlockHeader" = type { i8, i8, i32, i64, %"struct.Crypto::Hash" }
%"struct.DynexCN::ParentBlock" = type { i8, i8, %"struct.Crypto::Hash", i16, %"class.std::vector.147", %"struct.DynexCN::Transaction", %"class.std::vector.147" }
%"struct.DynexCN::Transaction" = type { %"struct.DynexCN::TransactionPrefix", %"class.std::vector.167" }
%"struct.DynexCN::TransactionPrefix" = type { i8, i64, %"class.std::vector.152", %"class.std::vector.157", %"class.std::vector.162" }
%"class.std::vector.152" = type { %"struct.std::_Vector_base.153" }
%"struct.std::_Vector_base.153" = type { %"struct.std::_Vector_base<boost::variant<DynexCN::BaseInput, DynexCN::KeyInput, DynexCN::MultisignatureInput>, std::allocator<boost::variant<DynexCN::BaseInput, DynexCN::KeyInput, DynexCN::MultisignatureInput>>>::_Vector_impl" }
%"struct.std::_Vector_base<boost::variant<DynexCN::BaseInput, DynexCN::KeyInput, DynexCN::MultisignatureInput>, std::allocator<boost::variant<DynexCN::BaseInput, DynexCN::KeyInput, DynexCN::MultisignatureInput>>>::_Vector_impl" = type { %"struct.std::_Vector_base<boost::variant<DynexCN::BaseInput, DynexCN::KeyInput, DynexCN::MultisignatureInput>, std::allocator<boost::variant<DynexCN::BaseInput, DynexCN::KeyInput, DynexCN::MultisignatureInput>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<boost::variant<DynexCN::BaseInput, DynexCN::KeyInput, DynexCN::MultisignatureInput>, std::allocator<boost::variant<DynexCN::BaseInput, DynexCN::KeyInput, DynexCN::MultisignatureInput>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.157" = type { %"struct.std::_Vector_base.158" }
%"struct.std::_Vector_base.158" = type { %"struct.std::_Vector_base<DynexCN::TransactionOutput, std::allocator<DynexCN::TransactionOutput>>::_Vector_impl" }
%"struct.std::_Vector_base<DynexCN::TransactionOutput, std::allocator<DynexCN::TransactionOutput>>::_Vector_impl" = type { %"struct.std::_Vector_base<DynexCN::TransactionOutput, std::allocator<DynexCN::TransactionOutput>>::_Vector_impl_data" }
%"struct.std::_Vector_base<DynexCN::TransactionOutput, std::allocator<DynexCN::TransactionOutput>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.162" = type { %"struct.std::_Vector_base.163" }
%"struct.std::_Vector_base.163" = type { %"struct.std::_Vector_base<unsigned char, std::allocator<unsigned char>>::_Vector_impl" }
%"struct.std::_Vector_base<unsigned char, std::allocator<unsigned char>>::_Vector_impl" = type { %"struct.std::_Vector_base<unsigned char, std::allocator<unsigned char>>::_Vector_impl_data" }
%"struct.std::_Vector_base<unsigned char, std::allocator<unsigned char>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.167" = type { %"struct.std::_Vector_base.168" }
%"struct.std::_Vector_base.168" = type { %"struct.std::_Vector_base<std::vector<Crypto::Signature>, std::allocator<std::vector<Crypto::Signature>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::vector<Crypto::Signature>, std::allocator<std::vector<Crypto::Signature>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::vector<Crypto::Signature>, std::allocator<std::vector<Crypto::Signature>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::vector<Crypto::Signature>, std::allocator<std::vector<Crypto::Signature>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.147" = type { %"struct.std::_Vector_base.148" }
%"struct.std::_Vector_base.148" = type { %"struct.std::_Vector_base<Crypto::Hash, std::allocator<Crypto::Hash>>::_Vector_impl" }
%"struct.std::_Vector_base<Crypto::Hash, std::allocator<Crypto::Hash>>::_Vector_impl" = type { %"struct.std::_Vector_base<Crypto::Hash, std::allocator<Crypto::Hash>>::_Vector_impl_data" }
%"struct.std::_Vector_base<Crypto::Hash, std::allocator<Crypto::Hash>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.__gnu_cxx::__normal_iterator.265" = type { ptr }
%"class.std::insert_iterator" = type { ptr, %"class.__gnu_cxx::__normal_iterator.265" }
%"struct.std::__detail::_Node_iterator.266" = type { %"struct.std::__detail::_Node_iterator_base.262" }
%"struct.std::__detail::_Node_iterator_base.262" = type { ptr }
%"class.std::__cxx11::list.267" = type { %"class.std::__cxx11::_List_base.268" }
%"class.std::__cxx11::_List_base.268" = type { %"struct.std::__cxx11::_List_base<DynexCN::Block, std::allocator<DynexCN::Block>>::_List_impl" }
%"struct.std::__cxx11::_List_base<DynexCN::Block, std::allocator<DynexCN::Block>>::_List_impl" = type { %"struct.std::__detail::_List_node_header" }
%"struct.std::__detail::_List_node_header" = type { %"struct.std::__detail::_List_node_base", i64 }
%"struct.std::__detail::_List_node_base" = type { ptr, ptr }
%"struct.DynexCN::block_verification_context" = type { i8, i8, i8, i8, i8 }
%"class.boost::value_initialized.232" = type { %"class.boost::initialized.233" }
%"class.boost::initialized.233" = type { %"struct.DynexCN::block_verification_context" }
%"struct.std::_List_iterator" = type { ptr }
%"class.DynexCN::BlockchainMessage" = type { i32, %union.anon.278 }
%union.anon.278 = type { ptr, [24 x i8] }
%"class.DynexCN::ChainSwitchMessage" = type { %"class.std::vector.147" }
%"class.DynexCN::Blockchain" = type <{ %"class.DynexCN::ITransactionValidator", %"class.DynexCN::IDynexCNProtocolObserver", i8, [7 x i8], %"class.std::unordered_map", ptr, ptr, %"class.std::recursive_mutex", %"class.Crypto::cn_context", %"class.Tools::ObserverManager", %"class.boost::multi_index::multi_index_container", i64, %"class.std::unordered_map.14", %"class.google::sparse_hash_map", %"class.std::__cxx11::basic_string", %"class.DynexCN::Checkpoints", %"struct.std::atomic", [7 x i8], %class.SwappedVector, %"class.DynexCN::BlockIndex", %"class.std::unordered_map.66", %"class.google::sparse_hash_map.80", %"class.DynexCN::BasicUpgradeDetector", %"class.DynexCN::BasicUpgradeDetector", %"class.DynexCN::BasicUpgradeDetector", %"class.DynexCN::PaymentIdIndex", %"class.DynexCN::AddressIndex", %"class.DynexCN::TimestampBlocksIndex", %"class.DynexCN::GeneratedTransactionsIndex", %"class.DynexCN::OrphanBlocksIndex", i8, [7 x i8], %"class.DynexCN::IntrusiveLinkedList", %"class.Logging::LoggerRef", i32, [4 x i8] }>
%"class.DynexCN::ITransactionValidator" = type { ptr }
%"class.DynexCN::IDynexCNProtocolObserver" = type { ptr }
%"class.std::unordered_map" = 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::recursive_mutex" = type { %"class.std::__recursive_mutex_base" }
%"class.std::__recursive_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.Crypto::cn_context" = type { ptr }
%"class.Tools::ObserverManager" = type { %"class.std::vector.9", %"class.std::mutex" }
%"class.std::vector.9" = type { %"struct.std::_Vector_base.10" }
%"struct.std::_Vector_base.10" = type { %"struct.std::_Vector_base<DynexCN::IBlockchainStorageObserver *, std::allocator<DynexCN::IBlockchainStorageObserver *>>::_Vector_impl" }
%"struct.std::_Vector_base<DynexCN::IBlockchainStorageObserver *, std::allocator<DynexCN::IBlockchainStorageObserver *>>::_Vector_impl" = type { %"struct.std::_Vector_base<DynexCN::IBlockchainStorageObserver *, std::allocator<DynexCN::IBlockchainStorageObserver *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<DynexCN::IBlockchainStorageObserver *, std::allocator<DynexCN::IBlockchainStorageObserver *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::mutex" = type { %"class.std::__mutex_base" }
%"class.std::__mutex_base" = type { %union.pthread_mutex_t }
%"class.boost::multi_index::multi_index_container" = type { [8 x i8], %"struct.boost::multi_index::detail::header_holder", %"class.boost::multi_index::detail::ordered_index.base", i64 }
%"struct.boost::multi_index::detail::header_holder" = type { ptr }
%"class.boost::multi_index::detail::ordered_index.base" = type { %"class.boost::multi_index::detail::ordered_index_impl.base" }
%"class.boost::multi_index::detail::ordered_index_impl.base" = type <{ %"class.boost::multi_index::detail::hashed_index", [2 x i8] }>
%"class.boost::multi_index::detail::hashed_index" = type { [8 x i8], %"class.boost::multi_index::detail::bucket_array", float, i64 }
%"class.boost::multi_index::detail::bucket_array" = type { i64, %"struct.boost::multi_index::detail::auto_space" }
%"struct.boost::multi_index::detail::auto_space" = type { [8 x i8], i64, ptr }
%"class.std::unordered_map.14" = type { %"class.std::_Hashtable.15" }
%"class.std::_Hashtable.15" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"class.google::sparse_hash_map" = type { %"class.google::sparse_hashtable" }
%"class.google::sparse_hashtable" = type { %"struct.google::sparse_hashtable<std::pair<const unsigned long, std::vector<std::pair<DynexCN::Blockchain::TransactionIndex, unsigned short>>>, unsigned long, std::hash<unsigned long>, google::sparse_hash_map<unsigned long, std::vector<std::pair<DynexCN::Blockchain::TransactionIndex, unsigned short>>>::SelectKey, google::sparse_hash_map<unsigned long, std::vector<std::pair<DynexCN::Blockchain::TransactionIndex, unsigned short>>>::SetKey, std::equal_to<unsigned long>, google::libc_allocator_with_realloc<std::pair<const unsigned long, std::vector<std::pair<DynexCN::Blockchain::TransactionIndex, unsigned short>>>>>::Settings", %"class.google::sparse_hashtable<std::pair<const unsigned long, std::vector<std::pair<DynexCN::Blockchain::TransactionIndex, unsigned short>>>, unsigned long, std::hash<unsigned long>, google::sparse_hash_map<unsigned long, std::vector<std::pair<DynexCN::Blockchain::TransactionIndex, unsigned short>>>::SelectKey, google::sparse_hash_map<unsigned long, std::vector<std::pair<DynexCN::Blockchain::TransactionIndex, unsigned short>>>::SetKey, std::equal_to<unsigned long>, google::libc_allocator_with_realloc<std::pair<const unsigned long, std::vector<std::pair<DynexCN::Blockchain::TransactionIndex, unsigned short>>>>>::KeyInfo", i64, %"class.google::sparsetable" }
%"struct.google::sparse_hashtable<std::pair<const unsigned long, std::vector<std::pair<DynexCN::Blockchain::TransactionIndex, unsigned short>>>, unsigned long, std::hash<unsigned long>, google::sparse_hash_map<unsigned long, std::vector<std::pair<DynexCN::Blockchain::TransactionIndex, unsigned short>>>::SelectKey, google::sparse_hash_map<unsigned long, std::vector<std::pair<DynexCN::Blockchain::TransactionIndex, unsigned short>>>::SetKey, std::equal_to<unsigned long>, google::libc_allocator_with_realloc<std::pair<const unsigned long, std::vector<std::pair<DynexCN::Blockchain::TransactionIndex, unsigned short>>>>>::Settings" = type { %class.sh_hashtable_settings }
%class.sh_hashtable_settings = type { i64, i64, float, float, i8, i8, i8, i32 }
%"class.google::sparse_hashtable<std::pair<const unsigned long, std::vector<std::pair<DynexCN::Blockchain::TransactionIndex, unsigned short>>>, unsigned long, std::hash<unsigned long>, google::sparse_hash_map<unsigned long, std::vector<std::pair<DynexCN::Blockchain::TransactionIndex, unsigned short>>>::SelectKey, google::sparse_hash_map<unsigned long, std::vector<std::pair<DynexCN::Blockchain::TransactionIndex, unsigned short>>>::SetKey, std::equal_to<unsigned long>, google::libc_allocator_with_realloc<std::pair<const unsigned long, std::vector<std::pair<DynexCN::Blockchain::TransactionIndex, unsigned short>>>>>::KeyInfo" = type { i64 }
%"class.google::sparsetable" = type { %"class.std::vector.31", %"class.google::sparsetable<std::pair<const unsigned long, std::vector<std::pair<DynexCN::Blockchain::TransactionIndex, unsigned short>>>>::Settings" }
%"class.std::vector.31" = type { %"struct.std::_Vector_base.32" }
%"struct.std::_Vector_base.32" = type { %"struct.std::_Vector_base<google::sparsegroup<std::pair<const unsigned long, std::vector<std::pair<DynexCN::Blockchain::TransactionIndex, unsigned short>>>, 48, google::libc_allocator_with_realloc<std::pair<const unsigned long, std::vector<std::pair<DynexCN::Blockchain::TransactionIndex, unsigned short>>>>>, google::libc_allocator_with_realloc<google::sparsegroup<std::pair<const unsigned long, std::vector<std::pair<DynexCN::Blockchain::TransactionIndex, unsigned short>>>, 48, google::libc_allocator_with_realloc<std::pair<const unsigned long, std::vector<std::pair<DynexCN::Blockchain::TransactionIndex, unsigned short>>>>>>>::_Vector_impl" }
%"struct.std::_Vector_base<google::sparsegroup<std::pair<const unsigned long, std::vector<std::pair<DynexCN::Blockchain::TransactionIndex, unsigned short>>>, 48, google::libc_allocator_with_realloc<std::pair<const unsigned long, std::vector<std::pair<DynexCN::Blockchain::TransactionIndex, unsigned short>>>>>, google::libc_allocator_with_realloc<google::sparsegroup<std::pair<const unsigned long, std::vector<std::pair<DynexCN::Blockchain::TransactionIndex, unsigned short>>>, 48, google::libc_allocator_with_realloc<std::pair<const unsigned long, std::vector<std::pair<DynexCN::Blockchain::TransactionIndex, unsigned short>>>>>>>::_Vector_impl" = type { %"struct.std::_Vector_base<google::sparsegroup<std::pair<const unsigned long, std::vector<std::pair<DynexCN::Blockchain::TransactionIndex, unsigned short>>>, 48, google::libc_allocator_with_realloc<std::pair<const unsigned long, std::vector<std::pair<DynexCN::Blockchain::TransactionIndex, unsigned short>>>>>, google::libc_allocator_with_realloc<google::sparsegroup<std::pair<const unsigned long, std::vector<std::pair<DynexCN::Blockchain::TransactionIndex, unsigned short>>>, 48, google::libc_allocator_with_realloc<std::pair<const unsigned long, std::vector<std::pair<DynexCN::Blockchain::TransactionIndex, unsigned short>>>>>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<google::sparsegroup<std::pair<const unsigned long, std::vector<std::pair<DynexCN::Blockchain::TransactionIndex, unsigned short>>>, 48, google::libc_allocator_with_realloc<std::pair<const unsigned long, std::vector<std::pair<DynexCN::Blockchain::TransactionIndex, unsigned short>>>>>, google::libc_allocator_with_realloc<google::sparsegroup<std::pair<const unsigned long, std::vector<std::pair<DynexCN::Blockchain::TransactionIndex, unsigned short>>>, 48, google::libc_allocator_with_realloc<std::pair<const unsigned long, std::vector<std::pair<DynexCN::Blockchain::TransactionIndex, unsigned short>>>>>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.google::sparsetable<std::pair<const unsigned long, std::vector<std::pair<DynexCN::Blockchain::TransactionIndex, unsigned short>>>>::Settings" = type { i64, i64 }
%"class.DynexCN::Checkpoints" = type { %"class.std::map", %"class.Logging::LoggerRef" }
%"class.std::map" = type { %"class.std::_Rb_tree" }
%"class.std::_Rb_tree" = type { %"struct.std::_Rb_tree<unsigned int, std::pair<const unsigned int, Crypto::Hash>, std::_Select1st<std::pair<const unsigned int, Crypto::Hash>>, std::less<unsigned int>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<unsigned int, std::pair<const unsigned int, Crypto::Hash>, std::_Select1st<std::pair<const unsigned int, Crypto::Hash>>, std::less<unsigned int>>::_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 }
%"struct.std::atomic" = type { %"struct.std::__atomic_base" }
%"struct.std::__atomic_base" = type { i8 }
%class.SwappedVector = type { %"class.std::basic_fstream", %"class.std::basic_fstream", i64, %"class.std::vector.43", i64, %"class.std::map.48", %"class.std::__cxx11::list", i64, i64 }
%"class.std::basic_fstream" = type { %"class.std::basic_iostream.base", %"class.std::basic_filebuf", %"class.std::basic_ios" }
%"class.std::basic_iostream.base" = type { %"class.std::basic_istream.base", %"class.std::basic_ostream.base" }
%"class.std::basic_istream.base" = type { ptr, i64 }
%"class.std::basic_filebuf" = type { %"class.std::basic_streambuf", %union.pthread_mutex_t, %"class.std::__basic_file", i32, %struct.__mbstate_t, %struct.__mbstate_t, %struct.__mbstate_t, ptr, i64, i8, i8, i8, i8, ptr, ptr, i8, ptr, ptr, i64, ptr, ptr }
%"class.std::__basic_file" = type <{ ptr, i8, [7 x i8] }>
%struct.__mbstate_t = type { i32, %union.anon.42 }
%union.anon.42 = type { i32 }
%"class.std::vector.43" = type { %"struct.std::_Vector_base.44" }
%"struct.std::_Vector_base.44" = type { %"struct.std::_Vector_base<unsigned long, std::allocator<unsigned long>>::_Vector_impl" }
%"struct.std::_Vector_base<unsigned long, std::allocator<unsigned long>>::_Vector_impl" = type { %"struct.std::_Vector_base<unsigned long, std::allocator<unsigned long>>::_Vector_impl_data" }
%"struct.std::_Vector_base<unsigned long, std::allocator<unsigned long>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::map.48" = type { %"class.std::_Rb_tree.49" }
%"class.std::_Rb_tree.49" = type { %"struct.std::_Rb_tree<unsigned long, std::pair<const unsigned long, SwappedVector<DynexCN::Blockchain::BlockEntry>::ItemEntry>, std::_Select1st<std::pair<const unsigned long, SwappedVector<DynexCN::Blockchain::BlockEntry>::ItemEntry>>, std::less<unsigned long>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<unsigned long, std::pair<const unsigned long, SwappedVector<DynexCN::Blockchain::BlockEntry>::ItemEntry>, std::_Select1st<std::pair<const unsigned long, SwappedVector<DynexCN::Blockchain::BlockEntry>::ItemEntry>>, std::less<unsigned long>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"class.std::__cxx11::list" = type { %"class.std::__cxx11::_List_base" }
%"class.std::__cxx11::_List_base" = type { %"struct.std::__cxx11::_List_base<SwappedVector<DynexCN::Blockchain::BlockEntry>::CacheEntry, std::allocator<SwappedVector<DynexCN::Blockchain::BlockEntry>::CacheEntry>>::_List_impl" }
%"struct.std::__cxx11::_List_base<SwappedVector<DynexCN::Blockchain::BlockEntry>::CacheEntry, std::allocator<SwappedVector<DynexCN::Blockchain::BlockEntry>::CacheEntry>>::_List_impl" = type { %"struct.std::__detail::_List_node_header" }
%"class.DynexCN::BlockIndex" = type { %"class.boost::multi_index::multi_index_container.57", ptr }
%"class.boost::multi_index::multi_index_container.57" = type { [8 x i8], %"struct.boost::multi_index::detail::header_holder.59", %"class.boost::multi_index::detail::random_access_index", i64 }
%"struct.boost::multi_index::detail::header_holder.59" = type { ptr }
%"class.boost::multi_index::detail::random_access_index" = type { %"class.boost::multi_index::detail::hashed_index.60", %"class.boost::multi_index::detail::random_access_index_ptr_array" }
%"class.boost::multi_index::detail::hashed_index.60" = type { [8 x i8], %"class.boost::multi_index::detail::bucket_array.63", float, i64 }
%"class.boost::multi_index::detail::bucket_array.63" = type { i64, %"struct.boost::multi_index::detail::auto_space.64" }
%"struct.boost::multi_index::detail::auto_space.64" = type { [8 x i8], i64, ptr }
%"class.boost::multi_index::detail::random_access_index_ptr_array" = type { i64, i64, %"struct.boost::multi_index::detail::auto_space.65" }
%"struct.boost::multi_index::detail::auto_space.65" = type { [8 x i8], i64, ptr }
%"class.std::unordered_map.66" = type { %"class.std::_Hashtable.67" }
%"class.std::_Hashtable.67" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"class.google::sparse_hash_map.80" = type { %"class.google::sparse_hashtable.81" }
%"class.google::sparse_hashtable.81" = type { %"struct.google::sparse_hashtable<std::pair<const unsigned long, std::vector<DynexCN::Blockchain::MultisignatureOutputUsage>>, unsigned long, std::hash<unsigned long>, google::sparse_hash_map<unsigned long, std::vector<DynexCN::Blockchain::MultisignatureOutputUsage>>::SelectKey, google::sparse_hash_map<unsigned long, std::vector<DynexCN::Blockchain::MultisignatureOutputUsage>>::SetKey, std::equal_to<unsigned long>, google::libc_allocator_with_realloc<std::pair<const unsigned long, std::vector<DynexCN::Blockchain::MultisignatureOutputUsage>>>>::Settings", %"class.google::sparse_hashtable<std::pair<const unsigned long, std::vector<DynexCN::Blockchain::MultisignatureOutputUsage>>, unsigned long, std::hash<unsigned long>, google::sparse_hash_map<unsigned long, std::vector<DynexCN::Blockchain::MultisignatureOutputUsage>>::SelectKey, google::sparse_hash_map<unsigned long, std::vector<DynexCN::Blockchain::MultisignatureOutputUsage>>::SetKey, std::equal_to<unsigned long>, google::libc_allocator_with_realloc<std::pair<const unsigned long, std::vector<DynexCN::Blockchain::MultisignatureOutputUsage>>>>::KeyInfo", i64, %"class.google::sparsetable.82" }
%"struct.google::sparse_hashtable<std::pair<const unsigned long, std::vector<DynexCN::Blockchain::MultisignatureOutputUsage>>, unsigned long, std::hash<unsigned long>, google::sparse_hash_map<unsigned long, std::vector<DynexCN::Blockchain::MultisignatureOutputUsage>>::SelectKey, google::sparse_hash_map<unsigned long, std::vector<DynexCN::Blockchain::MultisignatureOutputUsage>>::SetKey, std::equal_to<unsigned long>, google::libc_allocator_with_realloc<std::pair<const unsigned long, std::vector<DynexCN::Blockchain::MultisignatureOutputUsage>>>>::Settings" = type { %class.sh_hashtable_settings }
%"class.google::sparse_hashtable<std::pair<const unsigned long, std::vector<DynexCN::Blockchain::MultisignatureOutputUsage>>, unsigned long, std::hash<unsigned long>, google::sparse_hash_map<unsigned long, std::vector<DynexCN::Blockchain::MultisignatureOutputUsage>>::SelectKey, google::sparse_hash_map<unsigned long, std::vector<DynexCN::Blockchain::MultisignatureOutputUsage>>::SetKey, std::equal_to<unsigned long>, google::libc_allocator_with_realloc<std::pair<const unsigned long, std::vector<DynexCN::Blockchain::MultisignatureOutputUsage>>>>::KeyInfo" = type { i64 }
%"class.google::sparsetable.82" = type { %"class.std::vector.83", %"class.google::sparsetable<std::pair<const unsigned long, std::vector<DynexCN::Blockchain::MultisignatureOutputUsage>>>::Settings" }
%"class.std::vector.83" = type { %"struct.std::_Vector_base.84" }
%"struct.std::_Vector_base.84" = type { %"struct.std::_Vector_base<google::sparsegroup<std::pair<const unsigned long, std::vector<DynexCN::Blockchain::MultisignatureOutputUsage>>, 48, google::libc_allocator_with_realloc<std::pair<const unsigned long, std::vector<DynexCN::Blockchain::MultisignatureOutputUsage>>>>, google::libc_allocator_with_realloc<google::sparsegroup<std::pair<const unsigned long, std::vector<DynexCN::Blockchain::MultisignatureOutputUsage>>, 48, google::libc_allocator_with_realloc<std::pair<const unsigned long, std::vector<DynexCN::Blockchain::MultisignatureOutputUsage>>>>>>::_Vector_impl" }
%"struct.std::_Vector_base<google::sparsegroup<std::pair<const unsigned long, std::vector<DynexCN::Blockchain::MultisignatureOutputUsage>>, 48, google::libc_allocator_with_realloc<std::pair<const unsigned long, std::vector<DynexCN::Blockchain::MultisignatureOutputUsage>>>>, google::libc_allocator_with_realloc<google::sparsegroup<std::pair<const unsigned long, std::vector<DynexCN::Blockchain::MultisignatureOutputUsage>>, 48, google::libc_allocator_with_realloc<std::pair<const unsigned long, std::vector<DynexCN::Blockchain::MultisignatureOutputUsage>>>>>>::_Vector_impl" = type { %"struct.std::_Vector_base<google::sparsegroup<std::pair<const unsigned long, std::vector<DynexCN::Blockchain::MultisignatureOutputUsage>>, 48, google::libc_allocator_with_realloc<std::pair<const unsigned long, std::vector<DynexCN::Blockchain::MultisignatureOutputUsage>>>>, google::libc_allocator_with_realloc<google::sparsegroup<std::pair<const unsigned long, std::vector<DynexCN::Blockchain::MultisignatureOutputUsage>>, 48, google::libc_allocator_with_realloc<std::pair<const unsigned long, std::vector<DynexCN::Blockchain::MultisignatureOutputUsage>>>>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<google::sparsegroup<std::pair<const unsigned long, std::vector<DynexCN::Blockchain::MultisignatureOutputUsage>>, 48, google::libc_allocator_with_realloc<std::pair<const unsigned long, std::vector<DynexCN::Blockchain::MultisignatureOutputUsage>>>>, google::libc_allocator_with_realloc<google::sparsegroup<std::pair<const unsigned long, std::vector<DynexCN::Blockchain::MultisignatureOutputUsage>>, 48, google::libc_allocator_with_realloc<std::pair<const unsigned long, std::vector<DynexCN::Blockchain::MultisignatureOutputUsage>>>>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.google::sparsetable<std::pair<const unsigned long, std::vector<DynexCN::Blockchain::MultisignatureOutputUsage>>>::Settings" = type { i64, i64 }
%"class.DynexCN::BasicUpgradeDetector" = type { %"class.Logging::LoggerRef", ptr, ptr, i8, i32 }
%"class.DynexCN::PaymentIdIndex" = type <{ %"class.std::unordered_multimap", i8, [7 x i8] }>
%"class.std::unordered_multimap" = type { %"class.std::_Hashtable.89" }
%"class.std::_Hashtable.89" = type { %"struct.std::__detail::_Hashtable_base.90", ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"struct.std::__detail::_Hashtable_base.90" = type { %"struct.std::__detail::_Hash_code_base.91" }
%"struct.std::__detail::_Hash_code_base.91" = type { %"struct.std::__detail::_Hashtable_ebo_helper.92" }
%"struct.std::__detail::_Hashtable_ebo_helper.92" = type { %"class.std::function" }
%"class.std::function" = type { %"class.std::_Function_base", ptr }
%"class.std::_Function_base" = type { %"union.std::_Any_data", ptr }
%"union.std::_Any_data" = type { %"union.std::_Nocopy_types" }
%"union.std::_Nocopy_types" = type { { i64, i64 } }
%"class.DynexCN::AddressIndex" = type <{ %"class.std::multimap", i8, [7 x i8] }>
%"class.std::multimap" = type { %"class.std::_Rb_tree.103" }
%"class.std::_Rb_tree.103" = type { %"struct.std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, Crypto::Hash>, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, Crypto::Hash>>, std::less<std::__cxx11::basic_string<char>>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, Crypto::Hash>, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, Crypto::Hash>>, std::less<std::__cxx11::basic_string<char>>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"class.DynexCN::TimestampBlocksIndex" = type <{ %"class.std::multimap.108", i8, [7 x i8] }>
%"class.std::multimap.108" = type { %"class.std::_Rb_tree.109" }
%"class.std::_Rb_tree.109" = type { %"struct.std::_Rb_tree<unsigned long, std::pair<const unsigned long, Crypto::Hash>, std::_Select1st<std::pair<const unsigned long, Crypto::Hash>>, std::less<unsigned long>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<unsigned long, std::pair<const unsigned long, Crypto::Hash>, std::_Select1st<std::pair<const unsigned long, Crypto::Hash>>, std::less<unsigned long>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"class.DynexCN::GeneratedTransactionsIndex" = type <{ %"class.std::unordered_map.113", i64, i8, [7 x i8] }>
%"class.std::unordered_map.113" = type { %"class.std::_Hashtable.114" }
%"class.std::_Hashtable.114" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"class.DynexCN::OrphanBlocksIndex" = type <{ %"class.std::unordered_multimap.133", i8, [7 x i8] }>
%"class.std::unordered_multimap.133" = type { %"class.std::_Hashtable.134" }
%"class.std::_Hashtable.134" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"class.DynexCN::IntrusiveLinkedList" = type { ptr, ptr }
%"class.Logging::LoggerRef" = type { ptr, %"class.std::__cxx11::basic_string" }
%"struct.std::pair.263" = type { %"struct.Crypto::Hash", %"struct.DynexCN::Blockchain::BlockEntry" }
%"struct.DynexCN::Blockchain::BlockEntry" = type { %"struct.DynexCN::Block", i32, i64, i64, i64, %"class.std::vector.227" }
%"class.std::vector.227" = type { %"struct.std::_Vector_base.228" }
%"struct.std::_Vector_base.228" = type { %"struct.std::_Vector_base<DynexCN::Blockchain::TransactionEntry, std::allocator<DynexCN::Blockchain::TransactionEntry>>::_Vector_impl" }
%"struct.std::_Vector_base<DynexCN::Blockchain::TransactionEntry, std::allocator<DynexCN::Blockchain::TransactionEntry>>::_Vector_impl" = type { %"struct.std::_Vector_base<DynexCN::Blockchain::TransactionEntry, std::allocator<DynexCN::Blockchain::TransactionEntry>>::_Vector_impl_data" }
%"struct.std::_Vector_base<DynexCN::Blockchain::TransactionEntry, std::allocator<DynexCN::Blockchain::TransactionEntry>>::_Vector_impl_data" = type { ptr, ptr, ptr }

@_ZN7DynexCNL9NULL_HASHE = external hidden global %"struct.Crypto::Hash", align 1
@_ZN7Logging7DEFAULTB5cxx11E = external global %"class.std::__cxx11::basic_string", align 8
@_ZN7Logging10BRIGHT_REDB5cxx11E = external global %"class.std::__cxx11::basic_string", align 8
@_ZN7Logging12BRIGHT_WHITEB5cxx11E = external global %"class.std::__cxx11::basic_string", align 8
@_ZN7Logging13BRIGHT_YELLOWB5cxx11E = external global %"class.std::__cxx11::basic_string", align 8
@_ZN7Logging12BRIGHT_GREENB5cxx11E = external global %"class.std::__cxx11::basic_string", align 8
@.str.54 = external hidden unnamed_addr constant [53 x i8], align 1
@.str.55 = external hidden unnamed_addr constant [77 x i8], align 1
@.str.56 = external hidden unnamed_addr constant [79 x i8], align 1
@.str.57 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.58 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.59 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.60 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.61 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.62 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.63 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.64 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.65 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.66 = external hidden unnamed_addr constant [72 x i8], align 1
@.str.67 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.68 = external hidden unnamed_addr constant [70 x i8], align 1
@.str.69 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.70 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.71 = external hidden unnamed_addr constant [86 x i8], align 1
@.str.72 = external hidden unnamed_addr constant [58 x i8], align 1
@.str.73 = external hidden unnamed_addr constant [32 x i8], align 1
@.str.74 = external hidden unnamed_addr constant [24 x i8], align 1

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

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

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

declare i32 @__gxx_personality_v0(...)

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN6CryptoeqERKNS_4HashES2_(ptr noundef nonnull align 1 dereferenceable(32), ptr noundef nonnull align 1 dereferenceable(32)) #3

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(161) ptr @_ZStlsIN7Logging13LoggerMessageEA27_cEOT_S4_RKT0_(ptr noundef nonnull align 8 dereferenceable(161), ptr noundef nonnull align 1 dereferenceable(27)) #4

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(161) ptr @_ZStlsIN7Logging13LoggerMessageEA24_cEOT_S4_RKT0_(ptr noundef nonnull align 8 dereferenceable(161), ptr noundef nonnull align 1 dereferenceable(24)) #4

declare void @_ZNK7Logging9LoggerRefclENS_5LevelERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.Logging::LoggerMessage") align 8, ptr noundef nonnull align 8 dereferenceable(40), i32 noundef, ptr noundef nonnull align 8 dereferenceable(32)) #5

; Function Attrs: nounwind
declare void @_ZN7Logging13LoggerMessageD1Ev(ptr noundef nonnull align 8 dereferenceable(161)) unnamed_addr #6

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(161) ptr @_ZStlsIN7Logging13LoggerMessageEA22_cEOT_S4_RKT0_(ptr noundef nonnull align 8 dereferenceable(161), ptr noundef nonnull align 1 dereferenceable(22)) #4

declare void @_ZN7DynexCN14get_block_hashERKNS_5BlockE(ptr dead_on_unwind writable sret(%"struct.Crypto::Hash") align 1, ptr noundef nonnull align 8 dereferenceable(384)) #5

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(161) ptr @_ZStlsIN7Logging13LoggerMessageEA53_cEOT_S4_RKT0_(ptr noundef nonnull align 8 dereferenceable(161), ptr noundef nonnull align 1 dereferenceable(53)) #4

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 1 dereferenceable(5) ptr @_ZN5boost17value_initializedIN7DynexCN26block_verification_contextEEcvRS2_Ev(ptr noundef nonnull align 1 dereferenceable(5)) #7 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN7DynexCN10Blockchain9pushBlockERKNS_5BlockERNS_26block_verification_contextE(ptr noundef nonnull align 8 dereferenceable(2636), ptr noundef nonnull align 8 dereferenceable(384), ptr noundef nonnull align 1 dereferenceable(5)) #7 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(161) ptr @_ZStlsIN7Logging13LoggerMessageEA42_cEOT_S4_RKT0_(ptr noundef nonnull align 8 dereferenceable(161), ptr noundef nonnull align 1 dereferenceable(42)) #4

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(161) ptr @_ZStlsIN7Logging13LoggerMessageEA70_cEOT_S4_RKT0_(ptr noundef nonnull align 8 dereferenceable(161), ptr noundef nonnull align 1 dereferenceable(70)) #4

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(161) ptr @_ZStlsIN7Logging13LoggerMessageEA8_cEOT_S4_RKT0_(ptr noundef nonnull align 8 dereferenceable(161), ptr noundef nonnull align 1 dereferenceable(8)) #4

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(161) ptr @_ZStlsIN7Logging13LoggerMessageEA32_cEOT_S4_RKT0_(ptr noundef nonnull align 8 dereferenceable(161), ptr noundef nonnull align 1 dereferenceable(32)) #4

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(161) ptr @_ZStlsIN7Logging13LoggerMessageEN6Crypto4HashEEOT_S5_RKT0_(ptr noundef nonnull align 8 dereferenceable(161), ptr noundef nonnull align 1 dereferenceable(32)) #4

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN7DynexCN10Blockchain29rollback_blockchain_switchingERNSt7__cxx114listINS_5BlockESaIS3_EEEm(ptr noundef nonnull align 8 dereferenceable(2636), ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) #7 align 2

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(161) ptr @_ZStlsIN7Logging13LoggerMessageEA18_cEOT_S4_RKT0_(ptr noundef nonnull align 8 dereferenceable(161), ptr noundef nonnull align 1 dereferenceable(18)) #4

; Function Attrs: mustprogress uwtable
define dso_local noundef zeroext i1 @_ZN7DynexCN10Blockchain32switch_to_alternative_blockchainERNSt7__cxx114listINSt8__detail14_Node_iteratorISt4pairIKN6Crypto4HashENS0_10BlockEntryEELb0ELb1EEESaISB_EEEb(ptr noundef nonnull align 8 dereferenceable(2636) %0, ptr noundef nonnull align 8 dereferenceable(24) %1, i1 noundef zeroext %2) #7 align 2 personality ptr @__gxx_personality_v0 {
  %4 = alloca i1, align 1
  %5 = alloca ptr, align 8
  %6 = alloca ptr, align 8
  %7 = alloca i8, align 1
  %8 = alloca %"class.std::lock_guard", align 8
  %9 = alloca %"class.Logging::LoggerMessage", align 8
  %10 = alloca ptr, align 8
  %11 = alloca i32, align 4
  %12 = alloca i32, align 4
  %13 = alloca i64, align 8
  %14 = alloca %"class.Logging::LoggerMessage", align 8
  %15 = alloca i64, align 8
  %16 = alloca i64, align 8
  %17 = alloca %"struct.Crypto::Hash", align 1
  %18 = alloca ptr, align 8
  %19 = alloca %"struct.std::_List_iterator.277", align 8
  %20 = alloca %"struct.std::_List_iterator.277", align 8
  %21 = alloca ptr, align 8
  %22 = alloca i64, align 8
  %23 = alloca %"class.Logging::LoggerMessage", align 8
  %24 = alloca i64, align 8
  %25 = alloca %"class.Logging::LoggerMessage", align 8
  %26 = alloca i64, align 8
  %27 = alloca i64, align 8
  %28 = alloca %"struct.DynexCN::Block", align 8
  %29 = alloca i64, align 8
  %30 = alloca %"class.Logging::LoggerMessage", align 8
  %31 = alloca double, align 8
  %32 = alloca %"class.Logging::LoggerMessage", align 8
  %33 = alloca i64, align 8
  %34 = alloca i64, align 8
  %35 = alloca %"class.Logging::LoggerMessage", align 8
  %36 = alloca %"class.Logging::LoggerMessage", align 8
  %37 = alloca %"class.std::vector.147", align 8
  %38 = alloca %"class.std::vector.147", align 8
  %39 = alloca i64, align 8
  %40 = alloca %"struct.DynexCN::Block", align 8
  %41 = alloca %"class.__gnu_cxx::__normal_iterator.265", align 8
  %42 = alloca %"class.__gnu_cxx::__normal_iterator.265", align 8
  %43 = alloca %"class.std::insert_iterator", align 8
  %44 = alloca %"class.__gnu_cxx::__normal_iterator.265", align 8
  %45 = alloca %"class.std::insert_iterator", align 8
  %46 = alloca %"struct.std::_List_iterator.277", align 8
  %47 = alloca %"struct.std::_List_iterator.277", align 8
  %48 = alloca %"struct.std::__detail::_Node_iterator.266", align 8
  %49 = alloca %"struct.DynexCN::Block", align 8
  %50 = alloca %"class.__gnu_cxx::__normal_iterator.265", align 8
  %51 = alloca %"class.__gnu_cxx::__normal_iterator.265", align 8
  %52 = alloca %"class.std::insert_iterator", align 8
  %53 = alloca %"class.__gnu_cxx::__normal_iterator.265", align 8
  %54 = alloca %"class.std::insert_iterator", align 8
  %55 = alloca %"struct.std::_List_iterator.277", align 8
  %56 = alloca %"class.__gnu_cxx::__normal_iterator.265", align 8
  %57 = alloca %"class.__gnu_cxx::__normal_iterator.265", align 8
  %58 = alloca %"struct.Crypto::Hash", align 1
  %59 = alloca %"class.__gnu_cxx::__normal_iterator.265", align 8
  %60 = alloca %"class.__gnu_cxx::__normal_iterator.265", align 8
  %61 = alloca %"class.__gnu_cxx::__normal_iterator.265", align 8
  %62 = alloca %"class.__gnu_cxx::__normal_iterator.265", align 8
  %63 = alloca %"class.Logging::LoggerMessage", align 8
  %64 = alloca %"class.std::__cxx11::basic_string", align 8
  %65 = alloca %"class.__gnu_cxx::__normal_iterator.265", align 8
  %66 = alloca %"class.std::__cxx11::list.267", align 8
  %67 = alloca i64, align 8
  %68 = alloca %"struct.DynexCN::Block", align 8
  %69 = alloca %"struct.std::_List_iterator.277", align 8
  %70 = alloca %"struct.std::_List_iterator.277", align 8
  %71 = alloca %"struct.std::__detail::_Node_iterator.266", align 8
  %72 = alloca %"struct.DynexCN::block_verification_context", align 1
  %73 = alloca %"class.boost::value_initialized.232", align 1
  %74 = alloca i8, align 1
  %75 = alloca %"class.Logging::LoggerMessage", align 8
  %76 = alloca %"class.Logging::LoggerMessage", align 8
  %77 = alloca %"struct.Crypto::Hash", align 1
  %78 = alloca %"struct.std::__detail::_Node_iterator.266", align 8
  %79 = alloca %"struct.std::__detail::_Node_iterator.266", align 8
  %80 = alloca %"struct.std::_List_iterator.277", align 8
  %81 = alloca %"struct.std::_List_iterator.277", align 8
  %82 = alloca %"struct.std::__detail::_Node_iterator.266", align 8
  %83 = alloca %"struct.std::__detail::_Node_iterator.266", align 8
  %84 = alloca %"struct.std::_List_iterator.277", align 8
  %85 = alloca %"struct.std::_List_iterator.277", align 8
  %86 = alloca ptr, align 8
  %87 = alloca %"struct.std::_List_iterator", align 8
  %88 = alloca %"struct.std::_List_iterator", align 8
  %89 = alloca ptr, align 8
  %90 = alloca %"struct.DynexCN::block_verification_context", align 1
  %91 = alloca %"class.boost::value_initialized.232", align 1
  %92 = alloca i8, align 1
  %93 = alloca %"struct.Crypto::Hash", align 1
  %94 = alloca %"class.Logging::LoggerMessage", align 8
  %95 = alloca %"class.std::vector.147", align 8
  %96 = alloca ptr, align 8
  %97 = alloca %"struct.std::_List_iterator.277", align 8
  %98 = alloca %"struct.std::_List_iterator.277", align 8
  %99 = alloca %"struct.std::__detail::_Node_iterator.266", align 8
  %100 = alloca %"struct.Crypto::Hash", align 1
  %101 = alloca %"struct.std::__detail::_Node_iterator.266", align 8
  %102 = alloca %"struct.std::__detail::_Node_iterator.266", align 8
  %103 = alloca %"class.DynexCN::BlockchainMessage", align 8
  %104 = alloca %"class.DynexCN::ChainSwitchMessage", align 8
  %105 = alloca %"class.Logging::LoggerMessage", align 8
  %106 = alloca i64, align 8
  store ptr %0, ptr %5, align 8, !tbaa !5
  store ptr %1, ptr %6, align 8, !tbaa !5
  %107 = zext i1 %2 to i8
  store i8 %107, ptr %7, align 1, !tbaa !9
  %108 = load ptr, ptr %5, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %8) #8
  %109 = getelementptr inbounds %"class.DynexCN::Blockchain", ptr %108, i32 0, i32 7
  call void @_ZNSt10lock_guardISt15recursive_mutexEC2ERS0_(ptr noundef nonnull align 8 dereferenceable(8) %8, ptr noundef nonnull align 8 dereferenceable(40) %109)
  %110 = load ptr, ptr %6, align 8, !tbaa !5
  %111 = call noundef i64 @_ZNKSt7__cxx114listINSt8__detail14_Node_iteratorISt4pairIKN6Crypto4HashEN7DynexCN10Blockchain10BlockEntryEELb0ELb1EEESaISB_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %110) #8
  %112 = icmp ne i64 %111, 0
  br i1 %112, label %127, label %113

113:                                              ; preds = %3
  call void @llvm.lifetime.start.p0(i64 432, ptr %9) #8
  %114 = getelementptr inbounds %"class.DynexCN::Blockchain", ptr %108, i32 0, i32 33
  invoke void @_ZNK7Logging9LoggerRefclENS_5LevelERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.Logging::LoggerMessage") align 8 %9, ptr noundef nonnull align 8 dereferenceable(40) %114, i32 noundef 1, ptr noundef nonnull align 8 dereferenceable(32) @_ZN7Logging10BRIGHT_REDB5cxx11E)
          to label %115 unwind label %118

115:                                              ; preds = %113
  %116 = invoke noundef nonnull align 8 dereferenceable(161) ptr @_ZStlsIN7Logging13LoggerMessageEA53_cEOT_S4_RKT0_(ptr noundef nonnull align 8 dereferenceable(161) %9, ptr noundef nonnull align 1 dereferenceable(53) @.str.54)
          to label %117 unwind label %122

117:                                              ; preds = %115
  call void @_ZN7Logging13LoggerMessageD1Ev(ptr noundef nonnull align 8 dereferenceable(161) %9) #8
  call void @llvm.lifetime.end.p0(i64 432, ptr %9) #8
  store i1 false, ptr %4, align 1
  store i32 1, ptr %12, align 4
  br label %969

118:                                              ; preds = %113
  %119 = landingpad { ptr, i32 }
          cleanup
  %120 = extractvalue { ptr, i32 } %119, 0
  store ptr %120, ptr %10, align 8
  %121 = extractvalue { ptr, i32 } %119, 1
  store i32 %121, ptr %11, align 4
  br label %126

122:                                              ; preds = %115
  %123 = landingpad { ptr, i32 }
          cleanup
  %124 = extractvalue { ptr, i32 } %123, 0
  store ptr %124, ptr %10, align 8
  %125 = extractvalue { ptr, i32 } %123, 1
  store i32 %125, ptr %11, align 4
  call void @_ZN7Logging13LoggerMessageD1Ev(ptr noundef nonnull align 8 dereferenceable(161) %9) #8
  br label %126

126:                                              ; preds = %122, %118
  call void @llvm.lifetime.end.p0(i64 432, ptr %9) #8
  br label %971

127:                                              ; preds = %3
  call void @llvm.lifetime.start.p0(i64 8, ptr %13) #8
  %128 = load ptr, ptr %6, align 8, !tbaa !5
  %129 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt7__cxx114listINSt8__detail14_Node_iteratorISt4pairIKN6Crypto4HashEN7DynexCN10Blockchain10BlockEntryEELb0ELb1EEESaISB_EE5frontEv(ptr noundef nonnull align 8 dereferenceable(24) %128) #8
  %130 = call noundef ptr @_ZNKSt8__detail14_Node_iteratorISt4pairIKN6Crypto4HashEN7DynexCN10Blockchain10BlockEntryEELb0ELb1EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %129) #8
  %131 = getelementptr inbounds %"struct.std::pair.263", ptr %130, i32 0, i32 1
  %132 = getelementptr inbounds %"struct.DynexCN::Blockchain::BlockEntry", ptr %131, i32 0, i32 1
  %133 = load i32, ptr %132, align 8, !tbaa !11
  %134 = zext i32 %133 to i64
  store i64 %134, ptr %13, align 8, !tbaa !47
  %135 = getelementptr inbounds %"class.DynexCN::Blockchain", ptr %108, i32 0, i32 18
  %136 = invoke noundef i64 @_ZNK13SwappedVectorIN7DynexCN10Blockchain10BlockEntryEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(1184) %135)
          to label %137 unwind label %145

137:                                              ; preds = %127
  %138 = load i64, ptr %13, align 8, !tbaa !47
  %139 = icmp ugt i64 %136, %138
  br i1 %139, label %158, label %140

140:                                              ; preds = %137
  call void @llvm.lifetime.start.p0(i64 432, ptr %14) #8
  %141 = getelementptr inbounds %"class.DynexCN::Blockchain", ptr %108, i32 0, i32 33
  invoke void @_ZNK7Logging9LoggerRefclENS_5LevelERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.Logging::LoggerMessage") align 8 %14, ptr noundef nonnull align 8 dereferenceable(40) %141, i32 noundef 1, ptr noundef nonnull align 8 dereferenceable(32) @_ZN7Logging10BRIGHT_REDB5cxx11E)
          to label %142 unwind label %149

142:                                              ; preds = %140
  %143 = invoke noundef nonnull align 8 dereferenceable(161) ptr @_ZStlsIN7Logging13LoggerMessageEA77_cEOT_S4_RKT0_(ptr noundef nonnull align 8 dereferenceable(161) %14, ptr noundef nonnull align 1 dereferenceable(77) @.str.55)
          to label %144 unwind label %153

144:                                              ; preds = %142
  call void @_ZN7Logging13LoggerMessageD1Ev(ptr noundef nonnull align 8 dereferenceable(161) %14) #8
  call void @llvm.lifetime.end.p0(i64 432, ptr %14) #8
  store i1 false, ptr %4, align 1
  store i32 1, ptr %12, align 4
  br label %967

145:                                              ; preds = %127
  %146 = landingpad { ptr, i32 }
          cleanup
  %147 = extractvalue { ptr, i32 } %146, 0
  store ptr %147, ptr %10, align 8
  %148 = extractvalue { ptr, i32 } %146, 1
  store i32 %148, ptr %11, align 4
  br label %968

149:                                              ; preds = %140
  %150 = landingpad { ptr, i32 }
          cleanup
  %151 = extractvalue { ptr, i32 } %150, 0
  store ptr %151, ptr %10, align 8
  %152 = extractvalue { ptr, i32 } %150, 1
  store i32 %152, ptr %11, align 4
  br label %157

153:                                              ; preds = %142
  %154 = landingpad { ptr, i32 }
          cleanup
  %155 = extractvalue { ptr, i32 } %154, 0
  store ptr %155, ptr %10, align 8
  %156 = extractvalue { ptr, i32 } %154, 1
  store i32 %156, ptr %11, align 4
  call void @_ZN7Logging13LoggerMessageD1Ev(ptr noundef nonnull align 8 dereferenceable(161) %14) #8
  br label %157

157:                                              ; preds = %153, %149
  call void @llvm.lifetime.end.p0(i64 432, ptr %14) #8
  br label %968

158:                                              ; preds = %137
  %159 = load ptr, ptr %6, align 8, !tbaa !5
  %160 = call noundef i64 @_ZNKSt7__cxx114listINSt8__detail14_Node_iteratorISt4pairIKN6Crypto4HashEN7DynexCN10Blockchain10BlockEntryEELb0ELb1EEESaISB_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %159) #8
  %161 = icmp uge i64 %160, 10
  br i1 %161, label %162, label %434

162:                                              ; preds = %158
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #8
  %163 = load ptr, ptr %6, align 8, !tbaa !5
  %164 = call noundef i64 @_ZNKSt7__cxx114listINSt8__detail14_Node_iteratorISt4pairIKN6Crypto4HashEN7DynexCN10Blockchain10BlockEntryEELb0ELb1EEESaISB_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %163) #8
  store i64 %164, ptr %15, align 8, !tbaa !47
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #8
  %165 = load ptr, ptr %6, align 8, !tbaa !5
  %166 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt7__cxx114listINSt8__detail14_Node_iteratorISt4pairIKN6Crypto4HashEN7DynexCN10Blockchain10BlockEntryEELb0ELb1EEESaISB_EE4backEv(ptr noundef nonnull align 8 dereferenceable(24) %165) #8
  %167 = call noundef ptr @_ZNKSt8__detail14_Node_iteratorISt4pairIKN6Crypto4HashEN7DynexCN10Blockchain10BlockEntryEELb0ELb1EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %166) #8
  %168 = getelementptr inbounds %"struct.std::pair.263", ptr %167, i32 0, i32 1
  %169 = getelementptr inbounds %"struct.DynexCN::Blockchain::BlockEntry", ptr %168, i32 0, i32 0
  %170 = getelementptr inbounds %"struct.DynexCN::BlockHeader", ptr %169, i32 0, i32 3
  %171 = load i64, ptr %170, align 8, !tbaa !48
  store i64 %171, ptr %16, align 8, !tbaa !47
  call void @llvm.lifetime.start.p0(i64 32, ptr %17) #8
  %172 = load ptr, ptr %6, align 8, !tbaa !5
  %173 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt7__cxx114listINSt8__detail14_Node_iteratorISt4pairIKN6Crypto4HashEN7DynexCN10Blockchain10BlockEntryEELb0ELb1EEESaISB_EE5frontEv(ptr noundef nonnull align 8 dereferenceable(24) %172) #8
  %174 = call noundef ptr @_ZNKSt8__detail14_Node_iteratorISt4pairIKN6Crypto4HashEN7DynexCN10Blockchain10BlockEntryEELb0ELb1EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %173) #8
  %175 = getelementptr inbounds %"struct.std::pair.263", ptr %174, i32 0, i32 1
  %176 = getelementptr inbounds %"struct.DynexCN::Blockchain::BlockEntry", ptr %175, i32 0, i32 0
  %177 = getelementptr inbounds %"struct.DynexCN::BlockHeader", ptr %176, i32 0, i32 4
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %17, ptr align 8 %177, i64 32, i1 false), !tbaa.struct !49
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #8
  %178 = load ptr, ptr %6, align 8, !tbaa !5
  store ptr %178, ptr %18, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #8
  %179 = load ptr, ptr %18, align 8, !tbaa !5
  %180 = call ptr @_ZNSt7__cxx114listINSt8__detail14_Node_iteratorISt4pairIKN6Crypto4HashEN7DynexCN10Blockchain10BlockEntryEELb0ELb1EEESaISB_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %179) #8
  %181 = getelementptr inbounds %"struct.std::_List_iterator.277", ptr %19, i32 0, i32 0
  store ptr %180, ptr %181, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #8
  %182 = load ptr, ptr %18, align 8, !tbaa !5
  %183 = call ptr @_ZNSt7__cxx114listINSt8__detail14_Node_iteratorISt4pairIKN6Crypto4HashEN7DynexCN10Blockchain10BlockEntryEELb0ELb1EEESaISB_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %182) #8
  %184 = getelementptr inbounds %"struct.std::_List_iterator.277", ptr %20, i32 0, i32 0
  store ptr %183, ptr %184, align 8
  br label %185

185:                                              ; preds = %206, %162
  %186 = call noundef zeroext i1 @_ZStneRKSt14_List_iteratorINSt8__detail14_Node_iteratorISt4pairIKN6Crypto4HashEN7DynexCN10Blockchain10BlockEntryEELb0ELb1EEEESD_(ptr noundef nonnull align 8 dereferenceable(8) %19, ptr noundef nonnull align 8 dereferenceable(8) %20) #8
  br i1 %186, label %188, label %187

187:                                              ; preds = %185
  store i32 2, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #8
  br label %208

188:                                              ; preds = %185
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #8
  %189 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt14_List_iteratorINSt8__detail14_Node_iteratorISt4pairIKN6Crypto4HashEN7DynexCN10Blockchain10BlockEntryEELb0ELb1EEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %19) #8
  store ptr %189, ptr %21, align 8, !tbaa !5
  %190 = load i64, ptr %16, align 8, !tbaa !47
  %191 = load ptr, ptr %21, align 8, !tbaa !5
  %192 = call noundef ptr @_ZNKSt8__detail14_Node_iteratorISt4pairIKN6Crypto4HashEN7DynexCN10Blockchain10BlockEntryEELb0ELb1EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %191) #8
  %193 = getelementptr inbounds %"struct.std::pair.263", ptr %192, i32 0, i32 1
  %194 = getelementptr inbounds %"struct.DynexCN::Blockchain::BlockEntry", ptr %193, i32 0, i32 0
  %195 = getelementptr inbounds %"struct.DynexCN::BlockHeader", ptr %194, i32 0, i32 3
  %196 = load i64, ptr %195, align 8, !tbaa !48
  %197 = icmp ult i64 %190, %196
  br i1 %197, label %198, label %205

198:                                              ; preds = %188
  %199 = load ptr, ptr %21, align 8, !tbaa !5
  %200 = call noundef ptr @_ZNKSt8__detail14_Node_iteratorISt4pairIKN6Crypto4HashEN7DynexCN10Blockchain10BlockEntryEELb0ELb1EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %199) #8
  %201 = getelementptr inbounds %"struct.std::pair.263", ptr %200, i32 0, i32 1
  %202 = getelementptr inbounds %"struct.DynexCN::Blockchain::BlockEntry", ptr %201, i32 0, i32 0
  %203 = getelementptr inbounds %"struct.DynexCN::BlockHeader", ptr %202, i32 0, i32 3
  %204 = load i64, ptr %203, align 8, !tbaa !48
  store i64 %204, ptr %16, align 8, !tbaa !47
  br label %205

205:                                              ; preds = %198, %188
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #8
  br label %206

206:                                              ; preds = %205
  %207 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt14_List_iteratorINSt8__detail14_Node_iteratorISt4pairIKN6Crypto4HashEN7DynexCN10Blockchain10BlockEntryEELb0ELb1EEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %19) #8
  br label %185

208:                                              ; preds = %187
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #8
  store i64 360, ptr %22, align 8, !tbaa !47
  %209 = load i64, ptr %16, align 8, !tbaa !47
  %210 = invoke noundef i64 @_ZN7DynexCN10Blockchain17get_adjusted_timeEv(ptr noundef nonnull align 8 dereferenceable(2636) %108)
          to label %211 unwind label %230

211:                                              ; preds = %208
  %212 = load i64, ptr %22, align 8, !tbaa !47
  %213 = add i64 %210, %212
  %214 = icmp ugt i64 %209, %213
  br i1 %214, label %215, label %248

215:                                              ; preds = %211
  call void @llvm.lifetime.start.p0(i64 432, ptr %23) #8
  %216 = getelementptr inbounds %"class.DynexCN::Blockchain", ptr %108, i32 0, i32 33
  invoke void @_ZNK7Logging9LoggerRefclENS_5LevelERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.Logging::LoggerMessage") align 8 %23, ptr noundef nonnull align 8 dereferenceable(40) %216, i32 noundef 1, ptr noundef nonnull align 8 dereferenceable(32) @_ZN7Logging10BRIGHT_REDB5cxx11E)
          to label %217 unwind label %234

217:                                              ; preds = %215
  %218 = invoke noundef nonnull align 8 dereferenceable(161) ptr @_ZStlsIN7Logging13LoggerMessageEA79_cEOT_S4_RKT0_(ptr noundef nonnull align 8 dereferenceable(161) %23, ptr noundef nonnull align 1 dereferenceable(79) @.str.56)
          to label %219 unwind label %238

219:                                              ; preds = %217
  %220 = invoke noundef nonnull align 8 dereferenceable(161) ptr @_ZStlsIN7Logging13LoggerMessageEmEOT_S3_RKT0_(ptr noundef nonnull align 8 dereferenceable(161) %218, ptr noundef nonnull align 8 dereferenceable(8) %16)
          to label %221 unwind label %238

221:                                              ; preds = %219
  %222 = invoke noundef nonnull align 8 dereferenceable(161) ptr @_ZStlsIN7Logging13LoggerMessageEA10_cEOT_S4_RKT0_(ptr noundef nonnull align 8 dereferenceable(161) %220, ptr noundef nonnull align 1 dereferenceable(10) @.str.57)
          to label %223 unwind label %238

223:                                              ; preds = %221
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #8
  %224 = invoke noundef i64 @_ZN7DynexCN10Blockchain17get_adjusted_timeEv(ptr noundef nonnull align 8 dereferenceable(2636) %108)
          to label %225 unwind label %242

225:                                              ; preds = %223
  %226 = load i64, ptr %22, align 8, !tbaa !47
  %227 = add i64 %224, %226
  store i64 %227, ptr %24, align 8, !tbaa !47
  %228 = invoke noundef nonnull align 8 dereferenceable(161) ptr @_ZStlsIN7Logging13LoggerMessageEmEOT_S3_RKT0_(ptr noundef nonnull align 8 dereferenceable(161) %222, ptr noundef nonnull align 8 dereferenceable(8) %24)
          to label %229 unwind label %242

229:                                              ; preds = %225
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #8
  call void @_ZN7Logging13LoggerMessageD1Ev(ptr noundef nonnull align 8 dereferenceable(161) %23) #8
  call void @llvm.lifetime.end.p0(i64 432, ptr %23) #8
  store i1 false, ptr %4, align 1
  store i32 1, ptr %12, align 4
  br label %429

230:                                              ; preds = %208
  %231 = landingpad { ptr, i32 }
          cleanup
  %232 = extractvalue { ptr, i32 } %231, 0
  store ptr %232, ptr %10, align 8
  %233 = extractvalue { ptr, i32 } %231, 1
  store i32 %233, ptr %11, align 4
  br label %433

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

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

242:                                              ; preds = %225, %223
  %243 = landingpad { ptr, i32 }
          cleanup
  %244 = extractvalue { ptr, i32 } %243, 0
  store ptr %244, ptr %10, align 8
  %245 = extractvalue { ptr, i32 } %243, 1
  store i32 %245, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #8
  br label %246

246:                                              ; preds = %242, %238
  call void @_ZN7Logging13LoggerMessageD1Ev(ptr noundef nonnull align 8 dereferenceable(161) %23) #8
  br label %247

247:                                              ; preds = %246, %234
  call void @llvm.lifetime.end.p0(i64 432, ptr %23) #8
  br label %433

248:                                              ; preds = %211
  call void @llvm.lifetime.start.p0(i64 432, ptr %25) #8
  %249 = getelementptr inbounds %"class.DynexCN::Blockchain", ptr %108, i32 0, i32 33
  invoke void @_ZNK7Logging9LoggerRefclENS_5LevelERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.Logging::LoggerMessage") align 8 %25, ptr noundef nonnull align 8 dereferenceable(40) %249, i32 noundef 2, ptr noundef nonnull align 8 dereferenceable(32) @_ZN7Logging7DEFAULTB5cxx11E)
          to label %250 unwind label %262

250:                                              ; preds = %248
  %251 = invoke noundef nonnull align 8 dereferenceable(161) ptr @_ZStlsIN7Logging13LoggerMessageEA42_cEOT_S4_RKT0_(ptr noundef nonnull align 8 dereferenceable(161) %25, ptr noundef nonnull align 1 dereferenceable(42) @.str.58)
          to label %252 unwind label %266

252:                                              ; preds = %250
  %253 = invoke noundef nonnull align 8 dereferenceable(161) ptr @_ZStlsIN7Logging13LoggerMessageEmEOT_S3_RKT0_(ptr noundef nonnull align 8 dereferenceable(161) %251, ptr noundef nonnull align 8 dereferenceable(8) %15)
          to label %254 unwind label %266

254:                                              ; preds = %252
  call void @_ZN7Logging13LoggerMessageD1Ev(ptr noundef nonnull align 8 dereferenceable(161) %25) #8
  call void @llvm.lifetime.end.p0(i64 432, ptr %25) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #8
  store i64 0, ptr %26, align 8, !tbaa !47
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #8
  store i64 1, ptr %27, align 8, !tbaa !47
  br label %255

255:                                              ; preds = %371, %254
  %256 = load i64, ptr %27, align 8, !tbaa !47
  %257 = icmp ule i64 %256, 60
  br i1 %257, label %258, label %377

258:                                              ; preds = %255
  %259 = invoke noundef zeroext i1 @_ZN6CryptoeqERKNS_4HashES2_(ptr noundef nonnull align 1 dereferenceable(32) %17, ptr noundef nonnull align 1 dereferenceable(32) @_ZN7DynexCNL9NULL_HASHE)
          to label %260 unwind label %271

260:                                              ; preds = %258
  br i1 %259, label %261, label %275

261:                                              ; preds = %260
  br label %377

262:                                              ; preds = %248
  %263 = landingpad { ptr, i32 }
          cleanup
  %264 = extractvalue { ptr, i32 } %263, 0
  store ptr %264, ptr %10, align 8
  %265 = extractvalue { ptr, i32 } %263, 1
  store i32 %265, ptr %11, align 4
  br label %270

266:                                              ; preds = %252, %250
  %267 = landingpad { ptr, i32 }
          cleanup
  %268 = extractvalue { ptr, i32 } %267, 0
  store ptr %268, ptr %10, align 8
  %269 = extractvalue { ptr, i32 } %267, 1
  store i32 %269, ptr %11, align 4
  call void @_ZN7Logging13LoggerMessageD1Ev(ptr noundef nonnull align 8 dereferenceable(161) %25) #8
  br label %270

270:                                              ; preds = %266, %262
  call void @llvm.lifetime.end.p0(i64 432, ptr %25) #8
  br label %433

271:                                              ; preds = %258
  %272 = landingpad { ptr, i32 }
          cleanup
  %273 = extractvalue { ptr, i32 } %272, 0
  store ptr %273, ptr %10, align 8
  %274 = extractvalue { ptr, i32 } %272, 1
  store i32 %274, ptr %11, align 4
  br label %432

275:                                              ; preds = %260
  call void @llvm.lifetime.start.p0(i64 384, ptr %28) #8
  call void @_ZN7DynexCN5BlockC2Ev(ptr noundef nonnull align 8 dereferenceable(384) %28) #8
  %276 = invoke noundef zeroext i1 @_ZN7DynexCN10Blockchain14getBlockByHashERKN6Crypto4HashERNS_5BlockE(ptr noundef nonnull align 8 dereferenceable(2636) %108, ptr noundef nonnull align 1 dereferenceable(32) %17, ptr noundef nonnull align 8 dereferenceable(384) %28)
          to label %277 unwind label %295

277:                                              ; preds = %275
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #8
  %278 = getelementptr inbounds %"struct.DynexCN::BlockHeader", ptr %28, i32 0, i32 3
  %279 = load i64, ptr %278, align 8, !tbaa !48
  store i64 %279, ptr %29, align 8, !tbaa !47
  %280 = getelementptr inbounds %"struct.DynexCN::BlockHeader", ptr %28, i32 0, i32 4
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %17, ptr align 8 %280, i64 32, i1 false), !tbaa.struct !49
  %281 = load i64, ptr %29, align 8, !tbaa !47
  %282 = load i64, ptr %16, align 8, !tbaa !47
  %283 = icmp uge i64 %281, %282
  br i1 %283, label %284, label %308

284:                                              ; preds = %277
  call void @llvm.lifetime.start.p0(i64 432, ptr %30) #8
  %285 = getelementptr inbounds %"class.DynexCN::Blockchain", ptr %108, i32 0, i32 33
  invoke void @_ZNK7Logging9LoggerRefclENS_5LevelERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.Logging::LoggerMessage") align 8 %30, ptr noundef nonnull align 8 dereferenceable(40) %285, i32 noundef 3, ptr noundef nonnull align 8 dereferenceable(32) @_ZN7Logging7DEFAULTB5cxx11E)
          to label %286 unwind label %299

286:                                              ; preds = %284
  %287 = invoke noundef nonnull align 8 dereferenceable(161) ptr @_ZStlsIN7Logging13LoggerMessageEA25_cEOT_S4_RKT0_(ptr noundef nonnull align 8 dereferenceable(161) %30, ptr noundef nonnull align 1 dereferenceable(25) @.str.59)
          to label %288 unwind label %303

288:                                              ; preds = %286
  %289 = invoke noundef nonnull align 8 dereferenceable(161) ptr @_ZStlsIN7Logging13LoggerMessageEmEOT_S3_RKT0_(ptr noundef nonnull align 8 dereferenceable(161) %287, ptr noundef nonnull align 8 dereferenceable(8) %27)
          to label %290 unwind label %303

290:                                              ; preds = %288
  %291 = invoke noundef nonnull align 8 dereferenceable(161) ptr @_ZStlsIN7Logging13LoggerMessageEA42_cEOT_S4_RKT0_(ptr noundef nonnull align 8 dereferenceable(161) %289, ptr noundef nonnull align 1 dereferenceable(42) @.str.60)
          to label %292 unwind label %303

292:                                              ; preds = %290
  call void @_ZN7Logging13LoggerMessageD1Ev(ptr noundef nonnull align 8 dereferenceable(161) %30) #8
  call void @llvm.lifetime.end.p0(i64 432, ptr %30) #8
  %293 = load i64, ptr %26, align 8, !tbaa !47
  %294 = add i64 %293, 1
  store i64 %294, ptr %26, align 8, !tbaa !47
  store i32 6, ptr %12, align 4
  br label %368

295:                                              ; preds = %275
  %296 = landingpad { ptr, i32 }
          cleanup
  %297 = extractvalue { ptr, i32 } %296, 0
  store ptr %297, ptr %10, align 8
  %298 = extractvalue { ptr, i32 } %296, 1
  store i32 %298, ptr %11, align 4
  br label %376

299:                                              ; preds = %284
  %300 = landingpad { ptr, i32 }
          cleanup
  %301 = extractvalue { ptr, i32 } %300, 0
  store ptr %301, ptr %10, align 8
  %302 = extractvalue { ptr, i32 } %300, 1
  store i32 %302, ptr %11, align 4
  br label %307

303:                                              ; preds = %290, %288, %286
  %304 = landingpad { ptr, i32 }
          cleanup
  %305 = extractvalue { ptr, i32 } %304, 0
  store ptr %305, ptr %10, align 8
  %306 = extractvalue { ptr, i32 } %304, 1
  store i32 %306, ptr %11, align 4
  call void @_ZN7Logging13LoggerMessageD1Ev(ptr noundef nonnull align 8 dereferenceable(161) %30) #8
  br label %307

307:                                              ; preds = %303, %299
  call void @llvm.lifetime.end.p0(i64 432, ptr %30) #8
  br label %375

308:                                              ; preds = %277
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #8
  %309 = load i64, ptr %16, align 8, !tbaa !47
  %310 = load i64, ptr %29, align 8, !tbaa !47
  %311 = sub i64 %309, %310
  %312 = uitofp i64 %311 to double
  %313 = fdiv double %312, 1.200000e+02
  store double %313, ptr %31, align 8, !tbaa !51
  %314 = load double, ptr %31, align 8, !tbaa !51
  %315 = load i64, ptr %15, align 8, !tbaa !47
  %316 = load i64, ptr %27, align 8, !tbaa !47
  %317 = add i64 %315, %316
  %318 = invoke noundef double @_ZL15calc_poisson_lndm(double noundef %314, i64 noundef %317)
          to label %319 unwind label %344

319:                                              ; preds = %308
  %320 = fcmp olt double %318, -7.500000e+01
  br i1 %320, label %321, label %367

321:                                              ; preds = %319
  call void @llvm.lifetime.start.p0(i64 432, ptr %32) #8
  %322 = getelementptr inbounds %"class.DynexCN::Blockchain", ptr %108, i32 0, i32 33
  invoke void @_ZNK7Logging9LoggerRefclENS_5LevelERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.Logging::LoggerMessage") align 8 %32, ptr noundef nonnull align 8 dereferenceable(40) %322, i32 noundef 3, ptr noundef nonnull align 8 dereferenceable(32) @_ZN7Logging7DEFAULTB5cxx11E)
          to label %323 unwind label %348

323:                                              ; preds = %321
  %324 = invoke noundef nonnull align 8 dereferenceable(161) ptr @_ZStlsIN7Logging13LoggerMessageEA24_cEOT_S4_RKT0_(ptr noundef nonnull align 8 dereferenceable(161) %32, ptr noundef nonnull align 1 dereferenceable(24) @.str.61)
          to label %325 unwind label %352

325:                                              ; preds = %323
  %326 = invoke noundef nonnull align 8 dereferenceable(161) ptr @_ZStlsIN7Logging13LoggerMessageEmEOT_S3_RKT0_(ptr noundef nonnull align 8 dereferenceable(161) %324, ptr noundef nonnull align 8 dereferenceable(8) %27)
          to label %327 unwind label %352

327:                                              ; preds = %325
  %328 = invoke noundef nonnull align 8 dereferenceable(161) ptr @_ZStlsIN7Logging13LoggerMessageEA19_cEOT_S4_RKT0_(ptr noundef nonnull align 8 dereferenceable(161) %326, ptr noundef nonnull align 1 dereferenceable(19) @.str.62)
          to label %329 unwind label %352

329:                                              ; preds = %327
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #8
  %330 = load i64, ptr %16, align 8, !tbaa !47
  %331 = load i64, ptr %29, align 8, !tbaa !47
  %332 = sub i64 %330, %331
  store i64 %332, ptr %33, align 8, !tbaa !47
  %333 = invoke noundef nonnull align 8 dereferenceable(161) ptr @_ZStlsIN7Logging13LoggerMessageEmEOT_S3_RKT0_(ptr noundef nonnull align 8 dereferenceable(161) %328, ptr noundef nonnull align 8 dereferenceable(8) %33)
          to label %334 unwind label %356

334:                                              ; preds = %329
  %335 = invoke noundef nonnull align 8 dereferenceable(161) ptr @_ZStlsIN7Logging13LoggerMessageEA8_cEOT_S4_RKT0_(ptr noundef nonnull align 8 dereferenceable(161) %333, ptr noundef nonnull align 1 dereferenceable(8) @.str.63)
          to label %336 unwind label %356

336:                                              ; preds = %334
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #8
  %337 = load i64, ptr %15, align 8, !tbaa !47
  %338 = load i64, ptr %27, align 8, !tbaa !47
  %339 = add i64 %337, %338
  store i64 %339, ptr %34, align 8, !tbaa !47
  %340 = invoke noundef nonnull align 8 dereferenceable(161) ptr @_ZStlsIN7Logging13LoggerMessageEmEOT_S3_RKT0_(ptr noundef nonnull align 8 dereferenceable(161) %335, ptr noundef nonnull align 8 dereferenceable(8) %34)
          to label %341 unwind label %360

341:                                              ; preds = %336
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #8
  call void @_ZN7Logging13LoggerMessageD1Ev(ptr noundef nonnull align 8 dereferenceable(161) %32) #8
  call void @llvm.lifetime.end.p0(i64 432, ptr %32) #8
  %342 = load i64, ptr %26, align 8, !tbaa !47
  %343 = add i64 %342, 1
  store i64 %343, ptr %26, align 8, !tbaa !47
  br label %367

344:                                              ; preds = %308
  %345 = landingpad { ptr, i32 }
          cleanup
  %346 = extractvalue { ptr, i32 } %345, 0
  store ptr %346, ptr %10, align 8
  %347 = extractvalue { ptr, i32 } %345, 1
  store i32 %347, ptr %11, align 4
  br label %374

348:                                              ; preds = %321
  %349 = landingpad { ptr, i32 }
          cleanup
  %350 = extractvalue { ptr, i32 } %349, 0
  store ptr %350, ptr %10, align 8
  %351 = extractvalue { ptr, i32 } %349, 1
  store i32 %351, ptr %11, align 4
  br label %366

352:                                              ; preds = %327, %325, %323
  %353 = landingpad { ptr, i32 }
          cleanup
  %354 = extractvalue { ptr, i32 } %353, 0
  store ptr %354, ptr %10, align 8
  %355 = extractvalue { ptr, i32 } %353, 1
  store i32 %355, ptr %11, align 4
  br label %365

356:                                              ; preds = %334, %329
  %357 = landingpad { ptr, i32 }
          cleanup
  %358 = extractvalue { ptr, i32 } %357, 0
  store ptr %358, ptr %10, align 8
  %359 = extractvalue { ptr, i32 } %357, 1
  store i32 %359, ptr %11, align 4
  br label %364

360:                                              ; preds = %336
  %361 = landingpad { ptr, i32 }
          cleanup
  %362 = extractvalue { ptr, i32 } %361, 0
  store ptr %362, ptr %10, align 8
  %363 = extractvalue { ptr, i32 } %361, 1
  store i32 %363, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #8
  br label %364

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

365:                                              ; preds = %364, %352
  call void @_ZN7Logging13LoggerMessageD1Ev(ptr noundef nonnull align 8 dereferenceable(161) %32) #8
  br label %366

366:                                              ; preds = %365, %348
  call void @llvm.lifetime.end.p0(i64 432, ptr %32) #8
  br label %374

367:                                              ; preds = %341, %319
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #8
  store i32 0, ptr %12, align 4
  br label %368

368:                                              ; preds = %367, %292
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #8
  call void @_ZN7DynexCN5BlockD2Ev(ptr noundef nonnull align 8 dereferenceable(384) %28) #8
  call void @llvm.lifetime.end.p0(i64 384, ptr %28) #8
  %369 = load i32, ptr %12, align 4
  switch i32 %369, label %977 [
    i32 0, label %370
    i32 6, label %371
  ]

370:                                              ; preds = %368
  br label %371

371:                                              ; preds = %370, %368
  %372 = load i64, ptr %27, align 8, !tbaa !47
  %373 = add i64 %372, 1
  store i64 %373, ptr %27, align 8, !tbaa !47
  br label %255, !llvm.loop !53

374:                                              ; preds = %366, %344
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #8
  br label %375

375:                                              ; preds = %374, %307
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #8
  br label %376

376:                                              ; preds = %375, %295
  call void @_ZN7DynexCN5BlockD2Ev(ptr noundef nonnull align 8 dereferenceable(384) %28) #8
  call void @llvm.lifetime.end.p0(i64 384, ptr %28) #8
  br label %432

377:                                              ; preds = %261, %255
  %378 = load i64, ptr %27, align 8, !tbaa !47
  %379 = add i64 %378, -1
  store i64 %379, ptr %27, align 8, !tbaa !47
  call void @llvm.lifetime.start.p0(i64 432, ptr %35) #8
  %380 = getelementptr inbounds %"class.DynexCN::Blockchain", ptr %108, i32 0, i32 33
  invoke void @_ZNK7Logging9LoggerRefclENS_5LevelERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.Logging::LoggerMessage") align 8 %35, ptr noundef nonnull align 8 dereferenceable(40) %380, i32 noundef 3, ptr noundef nonnull align 8 dereferenceable(32) @_ZN7Logging7DEFAULTB5cxx11E)
          to label %381 unwind label %409

381:                                              ; preds = %377
  %382 = invoke noundef nonnull align 8 dereferenceable(161) ptr @_ZStlsIN7Logging13LoggerMessageEA22_cEOT_S4_RKT0_(ptr noundef nonnull align 8 dereferenceable(161) %35, ptr noundef nonnull align 1 dereferenceable(22) @.str.64)
          to label %383 unwind label %413

383:                                              ; preds = %381
  %384 = invoke noundef nonnull align 8 dereferenceable(161) ptr @_ZStlsIN7Logging13LoggerMessageEmEOT_S3_RKT0_(ptr noundef nonnull align 8 dereferenceable(161) %382, ptr noundef nonnull align 8 dereferenceable(8) %26)
          to label %385 unwind label %413

385:                                              ; preds = %383
  %386 = invoke noundef nonnull align 8 dereferenceable(161) ptr @_ZStlsIN7Logging13LoggerMessageEA15_cEOT_S4_RKT0_(ptr noundef nonnull align 8 dereferenceable(161) %384, ptr noundef nonnull align 1 dereferenceable(15) @.str.65)
          to label %387 unwind label %413

387:                                              ; preds = %385
  %388 = invoke noundef nonnull align 8 dereferenceable(161) ptr @_ZStlsIN7Logging13LoggerMessageEmEOT_S3_RKT0_(ptr noundef nonnull align 8 dereferenceable(161) %386, ptr noundef nonnull align 8 dereferenceable(8) %27)
          to label %389 unwind label %413

389:                                              ; preds = %387
  call void @_ZN7Logging13LoggerMessageD1Ev(ptr noundef nonnull align 8 dereferenceable(161) %35) #8
  call void @llvm.lifetime.end.p0(i64 432, ptr %35) #8
  %390 = load i64, ptr %26, align 8, !tbaa !47
  %391 = load i64, ptr %27, align 8, !tbaa !47
  %392 = udiv i64 %391, 2
  %393 = icmp ugt i64 %390, %392
  br i1 %393, label %394, label %427

394:                                              ; preds = %389
  call void @llvm.lifetime.start.p0(i64 432, ptr %36) #8
  %395 = getelementptr inbounds %"class.DynexCN::Blockchain", ptr %108, i32 0, i32 33
  invoke void @_ZNK7Logging9LoggerRefclENS_5LevelERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.Logging::LoggerMessage") align 8 %36, ptr noundef nonnull align 8 dereferenceable(40) %395, i32 noundef 1, ptr noundef nonnull align 8 dereferenceable(32) @_ZN7Logging10BRIGHT_REDB5cxx11E)
          to label %396 unwind label %418

396:                                              ; preds = %394
  %397 = invoke noundef nonnull align 8 dereferenceable(161) ptr @_ZStlsIN7Logging13LoggerMessageEA72_cEOT_S4_RKT0_(ptr noundef nonnull align 8 dereferenceable(161) %36, ptr noundef nonnull align 1 dereferenceable(72) @.str.66)
          to label %398 unwind label %422

398:                                              ; preds = %396
  %399 = invoke noundef nonnull align 8 dereferenceable(161) ptr @_ZStlsIN7Logging13LoggerMessageEmEOT_S3_RKT0_(ptr noundef nonnull align 8 dereferenceable(161) %397, ptr noundef nonnull align 8 dereferenceable(8) %26)
          to label %400 unwind label %422

400:                                              ; preds = %398
  %401 = invoke noundef nonnull align 8 dereferenceable(161) ptr @_ZStlsIN7Logging13LoggerMessageEA15_cEOT_S4_RKT0_(ptr noundef nonnull align 8 dereferenceable(161) %399, ptr noundef nonnull align 1 dereferenceable(15) @.str.65)
          to label %402 unwind label %422

402:                                              ; preds = %400
  %403 = invoke noundef nonnull align 8 dereferenceable(161) ptr @_ZStlsIN7Logging13LoggerMessageEmEOT_S3_RKT0_(ptr noundef nonnull align 8 dereferenceable(161) %401, ptr noundef nonnull align 8 dereferenceable(8) %27)
          to label %404 unwind label %422

404:                                              ; preds = %402
  %405 = invoke noundef nonnull align 8 dereferenceable(161) ptr @_ZStlsIN7Logging13LoggerMessageEA18_cEOT_S4_RKT0_(ptr noundef nonnull align 8 dereferenceable(161) %403, ptr noundef nonnull align 1 dereferenceable(18) @.str.67)
          to label %406 unwind label %422

406:                                              ; preds = %404
  %407 = invoke noundef nonnull align 8 dereferenceable(161) ptr @_ZStlsIN7Logging13LoggerMessageEmEOT_S3_RKT0_(ptr noundef nonnull align 8 dereferenceable(161) %405, ptr noundef nonnull align 8 dereferenceable(8) %15)
          to label %408 unwind label %422

408:                                              ; preds = %406
  call void @_ZN7Logging13LoggerMessageD1Ev(ptr noundef nonnull align 8 dereferenceable(161) %36) #8
  call void @llvm.lifetime.end.p0(i64 432, ptr %36) #8
  store i1 false, ptr %4, align 1
  store i32 1, ptr %12, align 4
  br label %428

409:                                              ; preds = %377
  %410 = landingpad { ptr, i32 }
          cleanup
  %411 = extractvalue { ptr, i32 } %410, 0
  store ptr %411, ptr %10, align 8
  %412 = extractvalue { ptr, i32 } %410, 1
  store i32 %412, ptr %11, align 4
  br label %417

413:                                              ; preds = %387, %385, %383, %381
  %414 = landingpad { ptr, i32 }
          cleanup
  %415 = extractvalue { ptr, i32 } %414, 0
  store ptr %415, ptr %10, align 8
  %416 = extractvalue { ptr, i32 } %414, 1
  store i32 %416, ptr %11, align 4
  call void @_ZN7Logging13LoggerMessageD1Ev(ptr noundef nonnull align 8 dereferenceable(161) %35) #8
  br label %417

417:                                              ; preds = %413, %409
  call void @llvm.lifetime.end.p0(i64 432, ptr %35) #8
  br label %432

418:                                              ; preds = %394
  %419 = landingpad { ptr, i32 }
          cleanup
  %420 = extractvalue { ptr, i32 } %419, 0
  store ptr %420, ptr %10, align 8
  %421 = extractvalue { ptr, i32 } %419, 1
  store i32 %421, ptr %11, align 4
  br label %426

422:                                              ; preds = %406, %404, %402, %400, %398, %396
  %423 = landingpad { ptr, i32 }
          cleanup
  %424 = extractvalue { ptr, i32 } %423, 0
  store ptr %424, ptr %10, align 8
  %425 = extractvalue { ptr, i32 } %423, 1
  store i32 %425, ptr %11, align 4
  call void @_ZN7Logging13LoggerMessageD1Ev(ptr noundef nonnull align 8 dereferenceable(161) %36) #8
  br label %426

426:                                              ; preds = %422, %418
  call void @llvm.lifetime.end.p0(i64 432, ptr %36) #8
  br label %432

427:                                              ; preds = %389
  store i32 0, ptr %12, align 4
  br label %428

428:                                              ; preds = %427, %408
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #8
  br label %429

429:                                              ; preds = %428, %229
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %17) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #8
  %430 = load i32, ptr %12, align 4
  switch i32 %430, label %967 [
    i32 0, label %431
  ]

431:                                              ; preds = %429
  br label %434

432:                                              ; preds = %426, %417, %376, %271
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #8
  br label %433

433:                                              ; preds = %432, %270, %247, %230
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %17) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #8
  br label %968

434:                                              ; preds = %431, %158
  call void @llvm.lifetime.start.p0(i64 24, ptr %37) #8
  call void @_ZNSt6vectorIN6Crypto4HashESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %37) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr %38) #8
  call void @_ZNSt6vectorIN6Crypto4HashESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %38) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #8
  %435 = getelementptr inbounds %"class.DynexCN::Blockchain", ptr %108, i32 0, i32 18
  %436 = invoke noundef i64 @_ZNK13SwappedVectorIN7DynexCN10Blockchain10BlockEntryEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(1184) %435)
          to label %437 unwind label %444

437:                                              ; preds = %434
  %438 = sub i64 %436, 1
  store i64 %438, ptr %39, align 8, !tbaa !47
  br label %439

439:                                              ; preds = %485, %437
  %440 = load i64, ptr %39, align 8, !tbaa !47
  %441 = load i64, ptr %13, align 8, !tbaa !47
  %442 = icmp uge i64 %440, %441
  br i1 %442, label %448, label %443

443:                                              ; preds = %439
  store i32 7, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #8
  br label %498

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

448:                                              ; preds = %439
  call void @llvm.lifetime.start.p0(i64 384, ptr %40) #8
  %449 = getelementptr inbounds %"class.DynexCN::Blockchain", ptr %108, i32 0, i32 18
  %450 = load i64, ptr %39, align 8, !tbaa !47
  %451 = invoke noundef nonnull align 8 dereferenceable(440) ptr @_ZN13SwappedVectorIN7DynexCN10Blockchain10BlockEntryEEixEm(ptr noundef nonnull align 8 dereferenceable(1184) %449, i64 noundef %450)
          to label %452 unwind label %488

452:                                              ; preds = %448
  %453 = getelementptr inbounds %"struct.DynexCN::Blockchain::BlockEntry", ptr %451, i32 0, i32 0
  invoke void @_ZN7DynexCN5BlockC2ERKS0_(ptr noundef nonnull align 8 dereferenceable(384) %40, ptr noundef nonnull align 8 dereferenceable(384) %453)
          to label %454 unwind label %488

454:                                              ; preds = %452
  %455 = getelementptr inbounds %"struct.DynexCN::Block", ptr %40, i32 0, i32 3
  %456 = call ptr @_ZNSt6vectorIN6Crypto4HashESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %455) #8
  %457 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.265", ptr %41, i32 0, i32 0
  store ptr %456, ptr %457, align 8
  %458 = getelementptr inbounds %"struct.DynexCN::Block", ptr %40, i32 0, i32 3
  %459 = call ptr @_ZNSt6vectorIN6Crypto4HashESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %458) #8
  %460 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.265", ptr %42, i32 0, i32 0
  store ptr %459, ptr %460, align 8
  %461 = call ptr @_ZNSt6vectorIN6Crypto4HashESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %37) #8
  %462 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.265", ptr %44, i32 0, i32 0
  store ptr %461, ptr %462, align 8
  %463 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.265", ptr %44, i32 0, i32 0
  %464 = load ptr, ptr %463, align 8
  %465 = invoke { ptr, ptr } @_ZSt8inserterISt6vectorIN6Crypto4HashESaIS2_EEESt15insert_iteratorIT_ERS6_NS6_8iteratorE(ptr noundef nonnull align 8 dereferenceable(24) %37, ptr %464)
          to label %466 unwind label %492

466:                                              ; preds = %454
  %467 = getelementptr inbounds { ptr, ptr }, ptr %43, i32 0, i32 0
  %468 = extractvalue { ptr, ptr } %465, 0
  store ptr %468, ptr %467, align 8
  %469 = getelementptr inbounds { ptr, ptr }, ptr %43, i32 0, i32 1
  %470 = extractvalue { ptr, ptr } %465, 1
  store ptr %470, ptr %469, align 8
  %471 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.265", ptr %41, i32 0, i32 0
  %472 = load ptr, ptr %471, align 8
  %473 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.265", ptr %42, i32 0, i32 0
  %474 = load ptr, ptr %473, align 8
  %475 = getelementptr inbounds { ptr, ptr }, ptr %43, i32 0, i32 0
  %476 = load ptr, ptr %475, align 8
  %477 = getelementptr inbounds { ptr, ptr }, ptr %43, i32 0, i32 1
  %478 = load ptr, ptr %477, align 8
  %479 = invoke { ptr, ptr } @_ZSt4copyIN9__gnu_cxx17__normal_iteratorIPN6Crypto4HashESt6vectorIS3_SaIS3_EEEESt15insert_iteratorIS7_EET0_T_SC_SB_(ptr %472, ptr %474, ptr %476, ptr %478)
          to label %480 unwind label %492

480:                                              ; preds = %466
  %481 = getelementptr inbounds { ptr, ptr }, ptr %45, i32 0, i32 0
  %482 = extractvalue { ptr, ptr } %479, 0
  store ptr %482, ptr %481, align 8
  %483 = getelementptr inbounds { ptr, ptr }, ptr %45, i32 0, i32 1
  %484 = extractvalue { ptr, ptr } %479, 1
  store ptr %484, ptr %483, align 8
  call void @_ZN7DynexCN5BlockD2Ev(ptr noundef nonnull align 8 dereferenceable(384) %40) #8
  call void @llvm.lifetime.end.p0(i64 384, ptr %40) #8
  br label %485

485:                                              ; preds = %480
  %486 = load i64, ptr %39, align 8, !tbaa !47
  %487 = add i64 %486, -1
  store i64 %487, ptr %39, align 8, !tbaa !47
  br label %439, !llvm.loop !55

488:                                              ; preds = %452, %448
  %489 = landingpad { ptr, i32 }
          cleanup
  %490 = extractvalue { ptr, i32 } %489, 0
  store ptr %490, ptr %10, align 8
  %491 = extractvalue { ptr, i32 } %489, 1
  store i32 %491, ptr %11, align 4
  br label %496

492:                                              ; preds = %466, %454
  %493 = landingpad { ptr, i32 }
          cleanup
  %494 = extractvalue { ptr, i32 } %493, 0
  store ptr %494, ptr %10, align 8
  %495 = extractvalue { ptr, i32 } %493, 1
  store i32 %495, ptr %11, align 4
  call void @_ZN7DynexCN5BlockD2Ev(ptr noundef nonnull align 8 dereferenceable(384) %40) #8
  br label %496

496:                                              ; preds = %492, %488
  call void @llvm.lifetime.end.p0(i64 384, ptr %40) #8
  br label %497

497:                                              ; preds = %496, %444
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #8
  br label %966

498:                                              ; preds = %443
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #8
  %499 = load ptr, ptr %6, align 8, !tbaa !5
  %500 = call ptr @_ZNSt7__cxx114listINSt8__detail14_Node_iteratorISt4pairIKN6Crypto4HashEN7DynexCN10Blockchain10BlockEntryEELb0ELb1EEESaISB_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %499) #8
  %501 = getelementptr inbounds %"struct.std::_List_iterator.277", ptr %46, i32 0, i32 0
  store ptr %500, ptr %501, align 8
  br label %502

502:                                              ; preds = %544, %498
  call void @llvm.lifetime.start.p0(i64 8, ptr %47) #8
  %503 = load ptr, ptr %6, align 8, !tbaa !5
  %504 = call ptr @_ZNSt7__cxx114listINSt8__detail14_Node_iteratorISt4pairIKN6Crypto4HashEN7DynexCN10Blockchain10BlockEntryEELb0ELb1EEESaISB_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %503) #8
  %505 = getelementptr inbounds %"struct.std::_List_iterator.277", ptr %47, i32 0, i32 0
  store ptr %504, ptr %505, align 8
  %506 = call noundef zeroext i1 @_ZStneRKSt14_List_iteratorINSt8__detail14_Node_iteratorISt4pairIKN6Crypto4HashEN7DynexCN10Blockchain10BlockEntryEELb0ELb1EEEESD_(ptr noundef nonnull align 8 dereferenceable(8) %46, ptr noundef nonnull align 8 dereferenceable(8) %47) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #8
  br i1 %506, label %508, label %507

507:                                              ; preds = %502
  store i32 10, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #8
  br label %556

508:                                              ; preds = %502
  call void @llvm.lifetime.start.p0(i64 8, ptr %48) #8
  %509 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt14_List_iteratorINSt8__detail14_Node_iteratorISt4pairIKN6Crypto4HashEN7DynexCN10Blockchain10BlockEntryEELb0ELb1EEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %46) #8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %48, ptr align 8 %509, i64 8, i1 false)
  call void @llvm.lifetime.start.p0(i64 384, ptr %49) #8
  %510 = call noundef ptr @_ZNKSt8__detail14_Node_iteratorISt4pairIKN6Crypto4HashEN7DynexCN10Blockchain10BlockEntryEELb0ELb1EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %48) #8
  %511 = getelementptr inbounds %"struct.std::pair.263", ptr %510, i32 0, i32 1
  %512 = getelementptr inbounds %"struct.DynexCN::Blockchain::BlockEntry", ptr %511, i32 0, i32 0
  invoke void @_ZN7DynexCN5BlockC2ERKS0_(ptr noundef nonnull align 8 dereferenceable(384) %49, ptr noundef nonnull align 8 dereferenceable(384) %512)
          to label %513 unwind label %547

513:                                              ; preds = %508
  %514 = getelementptr inbounds %"struct.DynexCN::Block", ptr %49, i32 0, i32 3
  %515 = call ptr @_ZNSt6vectorIN6Crypto4HashESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %514) #8
  %516 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.265", ptr %50, i32 0, i32 0
  store ptr %515, ptr %516, align 8
  %517 = getelementptr inbounds %"struct.DynexCN::Block", ptr %49, i32 0, i32 3
  %518 = call ptr @_ZNSt6vectorIN6Crypto4HashESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %517) #8
  %519 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.265", ptr %51, i32 0, i32 0
  store ptr %518, ptr %519, align 8
  %520 = call ptr @_ZNSt6vectorIN6Crypto4HashESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %38) #8
  %521 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.265", ptr %53, i32 0, i32 0
  store ptr %520, ptr %521, align 8
  %522 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.265", ptr %53, i32 0, i32 0
  %523 = load ptr, ptr %522, align 8
  %524 = invoke { ptr, ptr } @_ZSt8inserterISt6vectorIN6Crypto4HashESaIS2_EEESt15insert_iteratorIT_ERS6_NS6_8iteratorE(ptr noundef nonnull align 8 dereferenceable(24) %38, ptr %523)
          to label %525 unwind label %551

525:                                              ; preds = %513
  %526 = getelementptr inbounds { ptr, ptr }, ptr %52, i32 0, i32 0
  %527 = extractvalue { ptr, ptr } %524, 0
  store ptr %527, ptr %526, align 8
  %528 = getelementptr inbounds { ptr, ptr }, ptr %52, i32 0, i32 1
  %529 = extractvalue { ptr, ptr } %524, 1
  store ptr %529, ptr %528, align 8
  %530 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.265", ptr %50, i32 0, i32 0
  %531 = load ptr, ptr %530, align 8
  %532 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.265", ptr %51, i32 0, i32 0
  %533 = load ptr, ptr %532, align 8
  %534 = getelementptr inbounds { ptr, ptr }, ptr %52, i32 0, i32 0
  %535 = load ptr, ptr %534, align 8
  %536 = getelementptr inbounds { ptr, ptr }, ptr %52, i32 0, i32 1
  %537 = load ptr, ptr %536, align 8
  %538 = invoke { ptr, ptr } @_ZSt4copyIN9__gnu_cxx17__normal_iteratorIPN6Crypto4HashESt6vectorIS3_SaIS3_EEEESt15insert_iteratorIS7_EET0_T_SC_SB_(ptr %531, ptr %533, ptr %535, ptr %537)
          to label %539 unwind label %551

539:                                              ; preds = %525
  %540 = getelementptr inbounds { ptr, ptr }, ptr %54, i32 0, i32 0
  %541 = extractvalue { ptr, ptr } %538, 0
  store ptr %541, ptr %540, align 8
  %542 = getelementptr inbounds { ptr, ptr }, ptr %54, i32 0, i32 1
  %543 = extractvalue { ptr, ptr } %538, 1
  store ptr %543, ptr %542, align 8
  call void @_ZN7DynexCN5BlockD2Ev(ptr noundef nonnull align 8 dereferenceable(384) %49) #8
  call void @llvm.lifetime.end.p0(i64 384, ptr %49) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #8
  br label %544

544:                                              ; preds = %539
  %545 = call ptr @_ZNSt14_List_iteratorINSt8__detail14_Node_iteratorISt4pairIKN6Crypto4HashEN7DynexCN10Blockchain10BlockEntryEELb0ELb1EEEEppEi(ptr noundef nonnull align 8 dereferenceable(8) %46, i32 noundef 0) #8
  %546 = getelementptr inbounds %"struct.std::_List_iterator.277", ptr %55, i32 0, i32 0
  store ptr %545, ptr %546, align 8
  br label %502, !llvm.loop !56

547:                                              ; preds = %508
  %548 = landingpad { ptr, i32 }
          cleanup
  %549 = extractvalue { ptr, i32 } %548, 0
  store ptr %549, ptr %10, align 8
  %550 = extractvalue { ptr, i32 } %548, 1
  store i32 %550, ptr %11, align 4
  br label %555

551:                                              ; preds = %525, %513
  %552 = landingpad { ptr, i32 }
          cleanup
  %553 = extractvalue { ptr, i32 } %552, 0
  store ptr %553, ptr %10, align 8
  %554 = extractvalue { ptr, i32 } %552, 1
  store i32 %554, ptr %11, align 4
  call void @_ZN7DynexCN5BlockD2Ev(ptr noundef nonnull align 8 dereferenceable(384) %49) #8
  br label %555

555:                                              ; preds = %551, %547
  call void @llvm.lifetime.end.p0(i64 384, ptr %49) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #8
  br label %966

556:                                              ; preds = %507
  call void @llvm.lifetime.start.p0(i64 8, ptr %56) #8
  %557 = call ptr @_ZNSt6vectorIN6Crypto4HashESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %37) #8
  %558 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.265", ptr %56, i32 0, i32 0
  store ptr %557, ptr %558, align 8
  br label %559

559:                                              ; preds = %623, %556
  call void @llvm.lifetime.start.p0(i64 8, ptr %57) #8
  %560 = call ptr @_ZNSt6vectorIN6Crypto4HashESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %37) #8
  %561 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.265", ptr %57, i32 0, i32 0
  store ptr %560, ptr %561, align 8
  %562 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN6Crypto4HashESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %56, ptr noundef nonnull align 8 dereferenceable(8) %57) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #8
  br i1 %562, label %564, label %563

563:                                              ; preds = %559
  store i32 13, ptr %12, align 4
  br label %627

564:                                              ; preds = %559
  call void @llvm.lifetime.start.p0(i64 32, ptr %58) #8
  %565 = call noundef nonnull align 1 dereferenceable(32) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN6Crypto4HashESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %56) #8
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %58, ptr align 1 %565, i64 32, i1 false), !tbaa.struct !49
  call void @llvm.lifetime.start.p0(i64 8, ptr %59) #8
  %566 = call ptr @_ZNSt6vectorIN6Crypto4HashESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %38) #8
  %567 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.265", ptr %60, i32 0, i32 0
  store ptr %566, ptr %567, align 8
  %568 = call ptr @_ZNSt6vectorIN6Crypto4HashESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %38) #8
  %569 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.265", ptr %61, i32 0, i32 0
  store ptr %568, ptr %569, align 8
  %570 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.265", ptr %60, i32 0, i32 0
  %571 = load ptr, ptr %570, align 8
  %572 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.265", ptr %61, i32 0, i32 0
  %573 = load ptr, ptr %572, align 8
  %574 = invoke ptr @_ZSt4findIN9__gnu_cxx17__normal_iteratorIPN6Crypto4HashESt6vectorIS3_SaIS3_EEEES3_ET_S9_S9_RKT0_(ptr %571, ptr %573, ptr noundef nonnull align 1 dereferenceable(32) %58)
          to label %575 unwind label %592

575:                                              ; preds = %564
  %576 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.265", ptr %59, i32 0, i32 0
  store ptr %574, ptr %576, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %62) #8
  %577 = call ptr @_ZNSt6vectorIN6Crypto4HashESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %38) #8
  %578 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.265", ptr %62, i32 0, i32 0
  store ptr %577, ptr %578, align 8
  %579 = call noundef zeroext i1 @_ZN9__gnu_cxxeqIPN6Crypto4HashESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %59, ptr noundef nonnull align 8 dereferenceable(8) %62) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #8
  br i1 %579, label %580, label %619

580:                                              ; preds = %575
  call void @llvm.lifetime.start.p0(i64 432, ptr %63) #8
  %581 = getelementptr inbounds %"class.DynexCN::Blockchain", ptr %108, i32 0, i32 33
  invoke void @_ZNK7Logging9LoggerRefclENS_5LevelERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.Logging::LoggerMessage") align 8 %63, ptr noundef nonnull align 8 dereferenceable(40) %581, i32 noundef 1, ptr noundef nonnull align 8 dereferenceable(32) @_ZN7Logging10BRIGHT_REDB5cxx11E)
          to label %582 unwind label %596

582:                                              ; preds = %580
  %583 = invoke noundef nonnull align 8 dereferenceable(161) ptr @_ZStlsIN7Logging13LoggerMessageEA70_cEOT_S4_RKT0_(ptr noundef nonnull align 8 dereferenceable(161) %63, ptr noundef nonnull align 1 dereferenceable(70) @.str.68)
          to label %584 unwind label %600

584:                                              ; preds = %582
  call void @llvm.lifetime.start.p0(i64 32, ptr %64) #8
  invoke void @_ZN6Common8podToHexIN6Crypto4HashEEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKT_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %64, ptr noundef nonnull align 1 dereferenceable(32) %58)
          to label %585 unwind label %604

585:                                              ; preds = %584
  %586 = invoke noundef nonnull align 8 dereferenceable(161) ptr @_ZStlsIN7Logging13LoggerMessageENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEOT_S9_RKT0_(ptr noundef nonnull align 8 dereferenceable(161) %583, ptr noundef nonnull align 8 dereferenceable(32) %64)
          to label %587 unwind label %608

587:                                              ; preds = %585
  %588 = invoke noundef nonnull align 8 dereferenceable(161) ptr @_ZStlsIN7Logging13LoggerMessageEA27_cEOT_S4_RKT0_(ptr noundef nonnull align 8 dereferenceable(161) %586, ptr noundef nonnull align 1 dereferenceable(27) @.str.69)
          to label %589 unwind label %608

589:                                              ; preds = %587
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %64) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %64) #8
  call void @_ZN7Logging13LoggerMessageD1Ev(ptr noundef nonnull align 8 dereferenceable(161) %63) #8
  call void @llvm.lifetime.end.p0(i64 432, ptr %63) #8
  call void @_ZNSt6vectorIN6Crypto4HashESaIS1_EE5clearEv(ptr noundef nonnull align 8 dereferenceable(24) %37) #8
  invoke void @_ZNSt6vectorIN6Crypto4HashESaIS1_EE13shrink_to_fitEv(ptr noundef nonnull align 8 dereferenceable(24) %37)
          to label %590 unwind label %615

590:                                              ; preds = %589
  call void @_ZNSt6vectorIN6Crypto4HashESaIS1_EE5clearEv(ptr noundef nonnull align 8 dereferenceable(24) %38) #8
  invoke void @_ZNSt6vectorIN6Crypto4HashESaIS1_EE13shrink_to_fitEv(ptr noundef nonnull align 8 dereferenceable(24) %38)
          to label %591 unwind label %615

591:                                              ; preds = %590
  store i1 false, ptr %4, align 1
  store i32 1, ptr %12, align 4
  br label %620

592:                                              ; preds = %564
  %593 = landingpad { ptr, i32 }
          cleanup
  %594 = extractvalue { ptr, i32 } %593, 0
  store ptr %594, ptr %10, align 8
  %595 = extractvalue { ptr, i32 } %593, 1
  store i32 %595, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #8
  br label %626

596:                                              ; preds = %580
  %597 = landingpad { ptr, i32 }
          cleanup
  %598 = extractvalue { ptr, i32 } %597, 0
  store ptr %598, ptr %10, align 8
  %599 = extractvalue { ptr, i32 } %597, 1
  store i32 %599, ptr %11, align 4
  br label %614

600:                                              ; preds = %582
  %601 = landingpad { ptr, i32 }
          cleanup
  %602 = extractvalue { ptr, i32 } %601, 0
  store ptr %602, ptr %10, align 8
  %603 = extractvalue { ptr, i32 } %601, 1
  store i32 %603, ptr %11, align 4
  br label %613

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

608:                                              ; preds = %587, %585
  %609 = landingpad { ptr, i32 }
          cleanup
  %610 = extractvalue { ptr, i32 } %609, 0
  store ptr %610, ptr %10, align 8
  %611 = extractvalue { ptr, i32 } %609, 1
  store i32 %611, ptr %11, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %64) #8
  br label %612

612:                                              ; preds = %608, %604
  call void @llvm.lifetime.end.p0(i64 32, ptr %64) #8
  br label %613

613:                                              ; preds = %612, %600
  call void @_ZN7Logging13LoggerMessageD1Ev(ptr noundef nonnull align 8 dereferenceable(161) %63) #8
  br label %614

614:                                              ; preds = %613, %596
  call void @llvm.lifetime.end.p0(i64 432, ptr %63) #8
  br label %626

615:                                              ; preds = %590, %589
  %616 = landingpad { ptr, i32 }
          cleanup
  %617 = extractvalue { ptr, i32 } %616, 0
  store ptr %617, ptr %10, align 8
  %618 = extractvalue { ptr, i32 } %616, 1
  store i32 %618, ptr %11, align 4
  br label %626

619:                                              ; preds = %575
  store i32 0, ptr %12, align 4
  br label %620

620:                                              ; preds = %619, %591
  call void @llvm.lifetime.end.p0(i64 32, ptr %58) #8
  %621 = load i32, ptr %12, align 4
  switch i32 %621, label %627 [
    i32 0, label %622
  ]

622:                                              ; preds = %620
  br label %623

623:                                              ; preds = %622
  %624 = call ptr @_ZN9__gnu_cxx17__normal_iteratorIPN6Crypto4HashESt6vectorIS2_SaIS2_EEEppEi(ptr noundef nonnull align 8 dereferenceable(8) %56, i32 noundef 0) #8
  %625 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.265", ptr %65, i32 0, i32 0
  store ptr %624, ptr %625, align 8
  br label %559, !llvm.loop !57

626:                                              ; preds = %615, %614, %592
  call void @llvm.lifetime.end.p0(i64 32, ptr %58) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #8
  br label %966

627:                                              ; preds = %620, %563
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #8
  %628 = load i32, ptr %12, align 4
  switch i32 %628, label %965 [
    i32 13, label %629
  ]

629:                                              ; preds = %627
  call void @llvm.lifetime.start.p0(i64 24, ptr %66) #8
  call void @_ZNSt7__cxx114listIN7DynexCN5BlockESaIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %66) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %67) #8
  %630 = getelementptr inbounds %"class.DynexCN::Blockchain", ptr %108, i32 0, i32 18
  %631 = invoke noundef i64 @_ZNK13SwappedVectorIN7DynexCN10Blockchain10BlockEntryEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(1184) %630)
          to label %632 unwind label %639

632:                                              ; preds = %629
  %633 = sub i64 %631, 1
  store i64 %633, ptr %67, align 8, !tbaa !47
  br label %634

634:                                              ; preds = %652, %632
  %635 = load i64, ptr %67, align 8, !tbaa !47
  %636 = load i64, ptr %13, align 8, !tbaa !47
  %637 = icmp uge i64 %635, %636
  br i1 %637, label %643, label %638

638:                                              ; preds = %634
  store i32 16, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #8
  br label %665

639:                                              ; preds = %629
  %640 = landingpad { ptr, i32 }
          cleanup
  %641 = extractvalue { ptr, i32 } %640, 0
  store ptr %641, ptr %10, align 8
  %642 = extractvalue { ptr, i32 } %640, 1
  store i32 %642, ptr %11, align 4
  br label %664

643:                                              ; preds = %634
  call void @llvm.lifetime.start.p0(i64 384, ptr %68) #8
  %644 = getelementptr inbounds %"class.DynexCN::Blockchain", ptr %108, i32 0, i32 18
  %645 = load i64, ptr %67, align 8, !tbaa !47
  %646 = invoke noundef nonnull align 8 dereferenceable(440) ptr @_ZN13SwappedVectorIN7DynexCN10Blockchain10BlockEntryEEixEm(ptr noundef nonnull align 8 dereferenceable(1184) %644, i64 noundef %645)
          to label %647 unwind label %655

647:                                              ; preds = %643
  %648 = getelementptr inbounds %"struct.DynexCN::Blockchain::BlockEntry", ptr %646, i32 0, i32 0
  invoke void @_ZN7DynexCN5BlockC2ERKS0_(ptr noundef nonnull align 8 dereferenceable(384) %68, ptr noundef nonnull align 8 dereferenceable(384) %648)
          to label %649 unwind label %655

649:                                              ; preds = %647
  invoke void @_ZN7DynexCN10Blockchain8popBlockEv(ptr noundef nonnull align 8 dereferenceable(2636) %108)
          to label %650 unwind label %659

650:                                              ; preds = %649
  invoke void @_ZNSt7__cxx114listIN7DynexCN5BlockESaIS2_EE10push_frontERKS2_(ptr noundef nonnull align 8 dereferenceable(24) %66, ptr noundef nonnull align 8 dereferenceable(384) %68)
          to label %651 unwind label %659

651:                                              ; preds = %650
  call void @_ZN7DynexCN5BlockD2Ev(ptr noundef nonnull align 8 dereferenceable(384) %68) #8
  call void @llvm.lifetime.end.p0(i64 384, ptr %68) #8
  br label %652

652:                                              ; preds = %651
  %653 = load i64, ptr %67, align 8, !tbaa !47
  %654 = add i64 %653, -1
  store i64 %654, ptr %67, align 8, !tbaa !47
  br label %634, !llvm.loop !58

655:                                              ; preds = %647, %643
  %656 = landingpad { ptr, i32 }
          cleanup
  %657 = extractvalue { ptr, i32 } %656, 0
  store ptr %657, ptr %10, align 8
  %658 = extractvalue { ptr, i32 } %656, 1
  store i32 %658, ptr %11, align 4
  br label %663

659:                                              ; preds = %650, %649
  %660 = landingpad { ptr, i32 }
          cleanup
  %661 = extractvalue { ptr, i32 } %660, 0
  store ptr %661, ptr %10, align 8
  %662 = extractvalue { ptr, i32 } %660, 1
  store i32 %662, ptr %11, align 4
  call void @_ZN7DynexCN5BlockD2Ev(ptr noundef nonnull align 8 dereferenceable(384) %68) #8
  br label %663

663:                                              ; preds = %659, %655
  call void @llvm.lifetime.end.p0(i64 384, ptr %68) #8
  br label %664

664:                                              ; preds = %663, %639
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #8
  br label %964

665:                                              ; preds = %638
  call void @llvm.lifetime.start.p0(i64 8, ptr %69) #8
  %666 = load ptr, ptr %6, align 8, !tbaa !5
  %667 = call ptr @_ZNSt7__cxx114listINSt8__detail14_Node_iteratorISt4pairIKN6Crypto4HashEN7DynexCN10Blockchain10BlockEntryEELb0ELb1EEESaISB_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %666) #8
  %668 = getelementptr inbounds %"struct.std::_List_iterator.277", ptr %69, i32 0, i32 0
  store ptr %667, ptr %668, align 8
  br label %669

669:                                              ; preds = %791, %665
  call void @llvm.lifetime.start.p0(i64 8, ptr %70) #8
  %670 = load ptr, ptr %6, align 8, !tbaa !5
  %671 = call ptr @_ZNSt7__cxx114listINSt8__detail14_Node_iteratorISt4pairIKN6Crypto4HashEN7DynexCN10Blockchain10BlockEntryEELb0ELb1EEESaISB_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %670) #8
  %672 = getelementptr inbounds %"struct.std::_List_iterator.277", ptr %70, i32 0, i32 0
  store ptr %671, ptr %672, align 8
  %673 = call noundef zeroext i1 @_ZStneRKSt14_List_iteratorINSt8__detail14_Node_iteratorISt4pairIKN6Crypto4HashEN7DynexCN10Blockchain10BlockEntryEELb0ELb1EEEESD_(ptr noundef nonnull align 8 dereferenceable(8) %69, ptr noundef nonnull align 8 dereferenceable(8) %70) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #8
  br i1 %673, label %675, label %674

674:                                              ; preds = %669
  store i32 19, ptr %12, align 4
  br label %796

675:                                              ; preds = %669
  call void @llvm.lifetime.start.p0(i64 8, ptr %71) #8
  %676 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt14_List_iteratorINSt8__detail14_Node_iteratorISt4pairIKN6Crypto4HashEN7DynexCN10Blockchain10BlockEntryEELb0ELb1EEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %69) #8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %71, ptr align 8 %676, i64 8, i1 false)
  call void @llvm.lifetime.start.p0(i64 5, ptr %72) #8
  call void @llvm.lifetime.start.p0(i64 5, ptr %73) #8
  invoke void @_ZN5boost17value_initializedIN7DynexCN26block_verification_contextEEC2Ev(ptr noundef nonnull align 1 dereferenceable(5) %73)
          to label %677 unwind label %731

677:                                              ; preds = %675
  %678 = invoke noundef nonnull align 1 dereferenceable(5) ptr @_ZN5boost17value_initializedIN7DynexCN26block_verification_contextEEcvRS2_Ev(ptr noundef nonnull align 1 dereferenceable(5) %73)
          to label %679 unwind label %731

679:                                              ; preds = %677
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %72, ptr align 1 %678, i64 5, i1 false), !tbaa.struct !59
  call void @llvm.lifetime.end.p0(i64 5, ptr %73) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %74) #8
  %680 = call noundef ptr @_ZNKSt8__detail14_Node_iteratorISt4pairIKN6Crypto4HashEN7DynexCN10Blockchain10BlockEntryEELb0ELb1EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %71) #8
  %681 = getelementptr inbounds %"struct.std::pair.263", ptr %680, i32 0, i32 1
  %682 = getelementptr inbounds %"struct.DynexCN::Blockchain::BlockEntry", ptr %681, i32 0, i32 0
  %683 = invoke noundef zeroext i1 @_ZN7DynexCN10Blockchain9pushBlockERKNS_5BlockERNS_26block_verification_contextE(ptr noundef nonnull align 8 dereferenceable(2636) %108, ptr noundef nonnull align 8 dereferenceable(384) %682, ptr noundef nonnull align 1 dereferenceable(5) %72)
          to label %684 unwind label %735

684:                                              ; preds = %679
  %685 = zext i1 %683 to i8
  store i8 %685, ptr %74, align 1, !tbaa !9
  %686 = load i8, ptr %74, align 1, !tbaa !9, !range !60, !noundef !61
  %687 = trunc i8 %686 to i1
  br i1 %687, label %688, label %692

688:                                              ; preds = %684
  %689 = getelementptr inbounds %"struct.DynexCN::block_verification_context", ptr %72, i32 0, i32 0
  %690 = load i8, ptr %689, align 1, !tbaa !62, !range !60, !noundef !61
  %691 = trunc i8 %690 to i1
  br i1 %691, label %787, label %692

692:                                              ; preds = %688, %684
  call void @llvm.lifetime.start.p0(i64 432, ptr %75) #8
  %693 = getelementptr inbounds %"class.DynexCN::Blockchain", ptr %108, i32 0, i32 33
  invoke void @_ZNK7Logging9LoggerRefclENS_5LevelERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.Logging::LoggerMessage") align 8 %75, ptr noundef nonnull align 8 dereferenceable(40) %693, i32 noundef 3, ptr noundef nonnull align 8 dereferenceable(32) @_ZN7Logging12BRIGHT_WHITEB5cxx11E)
          to label %694 unwind label %739

694:                                              ; preds = %692
  %695 = invoke noundef nonnull align 8 dereferenceable(161) ptr @_ZStlsIN7Logging13LoggerMessageEA43_cEOT_S4_RKT0_(ptr noundef nonnull align 8 dereferenceable(161) %75, ptr noundef nonnull align 1 dereferenceable(43) @.str.70)
          to label %696 unwind label %743

696:                                              ; preds = %694
  call void @_ZN7Logging13LoggerMessageD1Ev(ptr noundef nonnull align 8 dereferenceable(161) %75) #8
  call void @llvm.lifetime.end.p0(i64 432, ptr %75) #8
  %697 = load i64, ptr %13, align 8, !tbaa !47
  %698 = invoke noundef zeroext i1 @_ZN7DynexCN10Blockchain29rollback_blockchain_switchingERNSt7__cxx114listINS_5BlockESaIS3_EEEm(ptr noundef nonnull align 8 dereferenceable(2636) %108, ptr noundef nonnull align 8 dereferenceable(24) %66, i64 noundef %697)
          to label %699 unwind label %735

699:                                              ; preds = %696
  call void @llvm.lifetime.start.p0(i64 432, ptr %76) #8
  %700 = getelementptr inbounds %"class.DynexCN::Blockchain", ptr %108, i32 0, i32 33
  invoke void @_ZNK7Logging9LoggerRefclENS_5LevelERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.Logging::LoggerMessage") align 8 %76, ptr noundef nonnull align 8 dereferenceable(40) %700, i32 noundef 3, ptr noundef nonnull align 8 dereferenceable(32) @_ZN7Logging12BRIGHT_WHITEB5cxx11E)
          to label %701 unwind label %748

701:                                              ; preds = %699
  %702 = invoke noundef nonnull align 8 dereferenceable(161) ptr @_ZStlsIN7Logging13LoggerMessageEA86_cEOT_S4_RKT0_(ptr noundef nonnull align 8 dereferenceable(161) %76, ptr noundef nonnull align 1 dereferenceable(86) @.str.71)
          to label %703 unwind label %752

703:                                              ; preds = %701
  call void @llvm.lifetime.start.p0(i64 32, ptr %77) #8
  %704 = call noundef ptr @_ZNKSt8__detail14_Node_iteratorISt4pairIKN6Crypto4HashEN7DynexCN10Blockchain10BlockEntryEELb0ELb1EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %71) #8
  %705 = getelementptr inbounds %"struct.std::pair.263", ptr %704, i32 0, i32 1
  %706 = getelementptr inbounds %"struct.DynexCN::Blockchain::BlockEntry", ptr %705, i32 0, i32 0
  invoke void @_ZN7DynexCN14get_block_hashERKNS_5BlockE(ptr dead_on_unwind writable sret(%"struct.Crypto::Hash") align 1 %77, ptr noundef nonnull align 8 dereferenceable(384) %706)
          to label %707 unwind label %756

707:                                              ; preds = %703
  %708 = invoke noundef nonnull align 8 dereferenceable(161) ptr @_ZStlsIN7Logging13LoggerMessageEN6Crypto4HashEEOT_S5_RKT0_(ptr noundef nonnull align 8 dereferenceable(161) %702, ptr noundef nonnull align 1 dereferenceable(32) %77)
          to label %709 unwind label %756

709:                                              ; preds = %707
  call void @llvm.lifetime.end.p0(i64 32, ptr %77) #8
  call void @_ZN7Logging13LoggerMessageD1Ev(ptr noundef nonnull align 8 dereferenceable(161) %76) #8
  call void @llvm.lifetime.end.p0(i64 432, ptr %76) #8
  %710 = getelementptr inbounds %"class.DynexCN::Blockchain", ptr %108, i32 0, i32 29
  %711 = call noundef ptr @_ZNKSt8__detail14_Node_iteratorISt4pairIKN6Crypto4HashEN7DynexCN10Blockchain10BlockEntryEELb0ELb1EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %71) #8
  %712 = getelementptr inbounds %"struct.std::pair.263", ptr %711, i32 0, i32 1
  %713 = getelementptr inbounds %"struct.DynexCN::Blockchain::BlockEntry", ptr %712, i32 0, i32 0
  %714 = invoke noundef zeroext i1 @_ZN7DynexCN17OrphanBlocksIndex6removeERKNS_5BlockE(ptr noundef nonnull align 8 dereferenceable(57) %710, ptr noundef nonnull align 8 dereferenceable(384) %713)
          to label %715 unwind label %735

715:                                              ; preds = %709
  %716 = getelementptr inbounds %"class.DynexCN::Blockchain", ptr %108, i32 0, i32 12
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %78, ptr align 8 %71, i64 8, i1 false)
  %717 = getelementptr inbounds %"struct.std::__detail::_Node_iterator.266", ptr %78, i32 0, i32 0
  %718 = getelementptr inbounds %"struct.std::__detail::_Node_iterator_base.262", ptr %717, i32 0, i32 0
  %719 = load ptr, ptr %718, align 8
  %720 = invoke ptr @_ZNSt13unordered_mapIN6Crypto4HashEN7DynexCN10Blockchain10BlockEntryESt4hashIS1_ESt8equal_toIS1_ESaISt4pairIKS1_S4_EEE5eraseENSt8__detail14_Node_iteratorISB_Lb0ELb1EEE(ptr noundef nonnull align 8 dereferenceable(56) %716, ptr %719)
          to label %721 unwind label %735

721:                                              ; preds = %715
  %722 = getelementptr inbounds %"struct.std::__detail::_Node_iterator.266", ptr %79, i32 0, i32 0
  %723 = getelementptr inbounds %"struct.std::__detail::_Node_iterator_base.262", ptr %722, i32 0, i32 0
  store ptr %720, ptr %723, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %80) #8
  %724 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt14_List_iteratorINSt8__detail14_Node_iteratorISt4pairIKN6Crypto4HashEN7DynexCN10Blockchain10BlockEntryEELb0ELb1EEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %69) #8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %80, ptr align 8 %724, i64 8, i1 false), !tbaa.struct !64
  br label %725

725:                                              ; preds = %779, %721
  call void @llvm.lifetime.start.p0(i64 8, ptr %81) #8
  %726 = load ptr, ptr %6, align 8, !tbaa !5
  %727 = call ptr @_ZNSt7__cxx114listINSt8__detail14_Node_iteratorISt4pairIKN6Crypto4HashEN7DynexCN10Blockchain10BlockEntryEELb0ELb1EEESaISB_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %726) #8
  %728 = getelementptr inbounds %"struct.std::_List_iterator.277", ptr %81, i32 0, i32 0
  store ptr %727, ptr %728, align 8
  %729 = call noundef zeroext i1 @_ZStneRKSt14_List_iteratorINSt8__detail14_Node_iteratorISt4pairIKN6Crypto4HashEN7DynexCN10Blockchain10BlockEntryEELb0ELb1EEEESD_(ptr noundef nonnull align 8 dereferenceable(8) %80, ptr noundef nonnull align 8 dereferenceable(8) %81) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %81) #8
  br i1 %729, label %762, label %730

730:                                              ; preds = %725
  store i32 22, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %80) #8
  br label %786

731:                                              ; preds = %677, %675
  %732 = landingpad { ptr, i32 }
          cleanup
  %733 = extractvalue { ptr, i32 } %732, 0
  store ptr %733, ptr %10, align 8
  %734 = extractvalue { ptr, i32 } %732, 1
  store i32 %734, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 5, ptr %73) #8
  br label %795

735:                                              ; preds = %715, %709, %696, %679
  %736 = landingpad { ptr, i32 }
          cleanup
  %737 = extractvalue { ptr, i32 } %736, 0
  store ptr %737, ptr %10, align 8
  %738 = extractvalue { ptr, i32 } %736, 1
  store i32 %738, ptr %11, align 4
  br label %794

739:                                              ; preds = %692
  %740 = landingpad { ptr, i32 }
          cleanup
  %741 = extractvalue { ptr, i32 } %740, 0
  store ptr %741, ptr %10, align 8
  %742 = extractvalue { ptr, i32 } %740, 1
  store i32 %742, ptr %11, align 4
  br label %747

743:                                              ; preds = %694
  %744 = landingpad { ptr, i32 }
          cleanup
  %745 = extractvalue { ptr, i32 } %744, 0
  store ptr %745, ptr %10, align 8
  %746 = extractvalue { ptr, i32 } %744, 1
  store i32 %746, ptr %11, align 4
  call void @_ZN7Logging13LoggerMessageD1Ev(ptr noundef nonnull align 8 dereferenceable(161) %75) #8
  br label %747

747:                                              ; preds = %743, %739
  call void @llvm.lifetime.end.p0(i64 432, ptr %75) #8
  br label %794

748:                                              ; preds = %699
  %749 = landingpad { ptr, i32 }
          cleanup
  %750 = extractvalue { ptr, i32 } %749, 0
  store ptr %750, ptr %10, align 8
  %751 = extractvalue { ptr, i32 } %749, 1
  store i32 %751, ptr %11, align 4
  br label %761

752:                                              ; preds = %701
  %753 = landingpad { ptr, i32 }
          cleanup
  %754 = extractvalue { ptr, i32 } %753, 0
  store ptr %754, ptr %10, align 8
  %755 = extractvalue { ptr, i32 } %753, 1
  store i32 %755, ptr %11, align 4
  br label %760

756:                                              ; preds = %707, %703
  %757 = landingpad { ptr, i32 }
          cleanup
  %758 = extractvalue { ptr, i32 } %757, 0
  store ptr %758, ptr %10, align 8
  %759 = extractvalue { ptr, i32 } %757, 1
  store i32 %759, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %77) #8
  br label %760

760:                                              ; preds = %756, %752
  call void @_ZN7Logging13LoggerMessageD1Ev(ptr noundef nonnull align 8 dereferenceable(161) %76) #8
  br label %761

761:                                              ; preds = %760, %748
  call void @llvm.lifetime.end.p0(i64 432, ptr %76) #8
  br label %794

762:                                              ; preds = %725
  %763 = getelementptr inbounds %"class.DynexCN::Blockchain", ptr %108, i32 0, i32 29
  %764 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt14_List_iteratorINSt8__detail14_Node_iteratorISt4pairIKN6Crypto4HashEN7DynexCN10Blockchain10BlockEntryEELb0ELb1EEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %80) #8
  %765 = call noundef ptr @_ZNKSt8__detail14_Node_iteratorISt4pairIKN6Crypto4HashEN7DynexCN10Blockchain10BlockEntryEELb0ELb1EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %764) #8
  %766 = getelementptr inbounds %"struct.std::pair.263", ptr %765, i32 0, i32 1
  %767 = getelementptr inbounds %"struct.DynexCN::Blockchain::BlockEntry", ptr %766, i32 0, i32 0
  %768 = invoke noundef zeroext i1 @_ZN7DynexCN17OrphanBlocksIndex6removeERKNS_5BlockE(ptr noundef nonnull align 8 dereferenceable(57) %763, ptr noundef nonnull align 8 dereferenceable(384) %767)
          to label %769 unwind label %782

769:                                              ; preds = %762
  %770 = getelementptr inbounds %"class.DynexCN::Blockchain", ptr %108, i32 0, i32 12
  %771 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt14_List_iteratorINSt8__detail14_Node_iteratorISt4pairIKN6Crypto4HashEN7DynexCN10Blockchain10BlockEntryEELb0ELb1EEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %80) #8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %82, ptr align 8 %771, i64 8, i1 false)
  %772 = getelementptr inbounds %"struct.std::__detail::_Node_iterator.266", ptr %82, i32 0, i32 0
  %773 = getelementptr inbounds %"struct.std::__detail::_Node_iterator_base.262", ptr %772, i32 0, i32 0
  %774 = load ptr, ptr %773, align 8
  %775 = invoke ptr @_ZNSt13unordered_mapIN6Crypto4HashEN7DynexCN10Blockchain10BlockEntryESt4hashIS1_ESt8equal_toIS1_ESaISt4pairIKS1_S4_EEE5eraseENSt8__detail14_Node_iteratorISB_Lb0ELb1EEE(ptr noundef nonnull align 8 dereferenceable(56) %770, ptr %774)
          to label %776 unwind label %782

776:                                              ; preds = %769
  %777 = getelementptr inbounds %"struct.std::__detail::_Node_iterator.266", ptr %83, i32 0, i32 0
  %778 = getelementptr inbounds %"struct.std::__detail::_Node_iterator_base.262", ptr %777, i32 0, i32 0
  store ptr %775, ptr %778, align 8
  br label %779

779:                                              ; preds = %776
  %780 = call ptr @_ZNSt14_List_iteratorINSt8__detail14_Node_iteratorISt4pairIKN6Crypto4HashEN7DynexCN10Blockchain10BlockEntryEELb0ELb1EEEEppEi(ptr noundef nonnull align 8 dereferenceable(8) %80, i32 noundef 0) #8
  %781 = getelementptr inbounds %"struct.std::_List_iterator.277", ptr %84, i32 0, i32 0
  store ptr %780, ptr %781, align 8
  br label %725, !llvm.loop !65

782:                                              ; preds = %769, %762
  %783 = landingpad { ptr, i32 }
          cleanup
  %784 = extractvalue { ptr, i32 } %783, 0
  store ptr %784, ptr %10, align 8
  %785 = extractvalue { ptr, i32 } %783, 1
  store i32 %785, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %80) #8
  br label %794

786:                                              ; preds = %730
  store i1 false, ptr %4, align 1
  store i32 1, ptr %12, align 4
  br label %788

787:                                              ; preds = %688
  store i32 0, ptr %12, align 4
  br label %788

788:                                              ; preds = %787, %786
  call void @llvm.lifetime.end.p0(i64 1, ptr %74) #8
  call void @llvm.lifetime.end.p0(i64 5, ptr %72) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %71) #8
  %789 = load i32, ptr %12, align 4
  switch i32 %789, label %796 [
    i32 0, label %790
  ]

790:                                              ; preds = %788
  br label %791

791:                                              ; preds = %790
  %792 = call ptr @_ZNSt14_List_iteratorINSt8__detail14_Node_iteratorISt4pairIKN6Crypto4HashEN7DynexCN10Blockchain10BlockEntryEELb0ELb1EEEEppEi(ptr noundef nonnull align 8 dereferenceable(8) %69, i32 noundef 0) #8
  %793 = getelementptr inbounds %"struct.std::_List_iterator.277", ptr %85, i32 0, i32 0
  store ptr %792, ptr %793, align 8
  br label %669, !llvm.loop !66

794:                                              ; preds = %782, %761, %747, %735
  call void @llvm.lifetime.end.p0(i64 1, ptr %74) #8
  br label %795

795:                                              ; preds = %794, %731
  call void @llvm.lifetime.end.p0(i64 5, ptr %72) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %71) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #8
  br label %964

796:                                              ; preds = %788, %674
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #8
  %797 = load i32, ptr %12, align 4
  switch i32 %797, label %963 [
    i32 19, label %798
  ]

798:                                              ; preds = %796
  %799 = load i8, ptr %7, align 1, !tbaa !9, !range !60, !noundef !61
  %800 = trunc i8 %799 to i1
  br i1 %800, label %859, label %801

801:                                              ; preds = %798
  call void @llvm.lifetime.start.p0(i64 8, ptr %86) #8
  store ptr %66, ptr %86, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %87) #8
  %802 = load ptr, ptr %86, align 8, !tbaa !5
  %803 = call ptr @_ZNSt7__cxx114listIN7DynexCN5BlockESaIS2_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %802) #8
  %804 = getelementptr inbounds %"struct.std::_List_iterator", ptr %87, i32 0, i32 0
  store ptr %803, ptr %804, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %88) #8
  %805 = load ptr, ptr %86, align 8, !tbaa !5
  %806 = call ptr @_ZNSt7__cxx114listIN7DynexCN5BlockESaIS2_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %805) #8
  %807 = getelementptr inbounds %"struct.std::_List_iterator", ptr %88, i32 0, i32 0
  store ptr %806, ptr %807, align 8
  br label %808

808:                                              ; preds = %853, %801
  %809 = call noundef zeroext i1 @_ZStneRKSt14_List_iteratorIN7DynexCN5BlockEES4_(ptr noundef nonnull align 8 dereferenceable(8) %87, ptr noundef nonnull align 8 dereferenceable(8) %88) #8
  br i1 %809, label %811, label %810

810:                                              ; preds = %808
  store i32 25, ptr %12, align 4
  br label %857

811:                                              ; preds = %808
  call void @llvm.lifetime.start.p0(i64 8, ptr %89) #8
  %812 = call noundef nonnull align 8 dereferenceable(384) ptr @_ZNKSt14_List_iteratorIN7DynexCN5BlockEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %87) #8
  store ptr %812, ptr %89, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 5, ptr %90) #8
  call void @llvm.lifetime.start.p0(i64 5, ptr %91) #8
  invoke void @_ZN5boost17value_initializedIN7DynexCN26block_verification_contextEEC2Ev(ptr noundef nonnull align 1 dereferenceable(5) %91)
          to label %813 unwind label %829

813:                                              ; preds = %811
  %814 = invoke noundef nonnull align 1 dereferenceable(5) ptr @_ZN5boost17value_initializedIN7DynexCN26block_verification_contextEEcvRS2_Ev(ptr noundef nonnull align 1 dereferenceable(5) %91)
          to label %815 unwind label %829

815:                                              ; preds = %813
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %90, ptr align 1 %814, i64 5, i1 false), !tbaa.struct !59
  call void @llvm.lifetime.end.p0(i64 5, ptr %91) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %92) #8
  %816 = load ptr, ptr %89, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %93) #8
  %817 = load ptr, ptr %89, align 8, !tbaa !5
  invoke void @_ZN7DynexCN14get_block_hashERKNS_5BlockE(ptr dead_on_unwind writable sret(%"struct.Crypto::Hash") align 1 %93, ptr noundef nonnull align 8 dereferenceable(384) %817)
          to label %818 unwind label %833

818:                                              ; preds = %815
  %819 = invoke noundef zeroext i1 @_ZN7DynexCN10Blockchain24handle_alternative_blockERKNS_5BlockERKN6Crypto4HashERNS_26block_verification_contextEb(ptr noundef nonnull align 8 dereferenceable(2636) %108, ptr noundef nonnull align 8 dereferenceable(384) %816, ptr noundef nonnull align 1 dereferenceable(32) %93, ptr noundef nonnull align 1 dereferenceable(5) %90, i1 noundef zeroext false)
          to label %820 unwind label %833

820:                                              ; preds = %818
  call void @llvm.lifetime.end.p0(i64 32, ptr %93) #8
  %821 = zext i1 %819 to i8
  store i8 %821, ptr %92, align 1, !tbaa !9
  %822 = load i8, ptr %92, align 1, !tbaa !9, !range !60, !noundef !61
  %823 = trunc i8 %822 to i1
  br i1 %823, label %846, label %824

824:                                              ; preds = %820
  call void @llvm.lifetime.start.p0(i64 432, ptr %94) #8
  %825 = getelementptr inbounds %"class.DynexCN::Blockchain", ptr %108, i32 0, i32 33
  invoke void @_ZNK7Logging9LoggerRefclENS_5LevelERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.Logging::LoggerMessage") align 8 %94, ptr noundef nonnull align 8 dereferenceable(40) %825, i32 noundef 2, ptr noundef nonnull align 8 dereferenceable(32) @_ZN7Logging13BRIGHT_YELLOWB5cxx11E)
          to label %826 unwind label %837

826:                                              ; preds = %824
  %827 = invoke noundef nonnull align 8 dereferenceable(161) ptr @_ZStlsIN7Logging13LoggerMessageEA58_cEOT_S4_RKT0_(ptr noundef nonnull align 8 dereferenceable(161) %94, ptr noundef nonnull align 1 dereferenceable(58) @.str.72)
          to label %828 unwind label %841

828:                                              ; preds = %826
  call void @_ZN7Logging13LoggerMessageD1Ev(ptr noundef nonnull align 8 dereferenceable(161) %94) #8
  call void @llvm.lifetime.end.p0(i64 432, ptr %94) #8
  store i32 25, ptr %12, align 4
  br label %847

829:                                              ; preds = %813, %811
  %830 = landingpad { ptr, i32 }
          cleanup
  %831 = extractvalue { ptr, i32 } %830, 0
  store ptr %831, ptr %10, align 8
  %832 = extractvalue { ptr, i32 } %830, 1
  store i32 %832, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 5, ptr %91) #8
  br label %856

833:                                              ; preds = %818, %815
  %834 = landingpad { ptr, i32 }
          cleanup
  %835 = extractvalue { ptr, i32 } %834, 0
  store ptr %835, ptr %10, align 8
  %836 = extractvalue { ptr, i32 } %834, 1
  store i32 %836, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %93) #8
  br label %855

837:                                              ; preds = %824
  %838 = landingpad { ptr, i32 }
          cleanup
  %839 = extractvalue { ptr, i32 } %838, 0
  store ptr %839, ptr %10, align 8
  %840 = extractvalue { ptr, i32 } %838, 1
  store i32 %840, ptr %11, align 4
  br label %845

841:                                              ; preds = %826
  %842 = landingpad { ptr, i32 }
          cleanup
  %843 = extractvalue { ptr, i32 } %842, 0
  store ptr %843, ptr %10, align 8
  %844 = extractvalue { ptr, i32 } %842, 1
  store i32 %844, ptr %11, align 4
  call void @_ZN7Logging13LoggerMessageD1Ev(ptr noundef nonnull align 8 dereferenceable(161) %94) #8
  br label %845

845:                                              ; preds = %841, %837
  call void @llvm.lifetime.end.p0(i64 432, ptr %94) #8
  br label %855

846:                                              ; preds = %820
  store i32 0, ptr %12, align 4
  br label %847

847:                                              ; preds = %846, %828
  call void @llvm.lifetime.end.p0(i64 1, ptr %92) #8
  call void @llvm.lifetime.end.p0(i64 5, ptr %90) #8
  %848 = load i32, ptr %12, align 4
  switch i32 %848, label %850 [
    i32 0, label %849
  ]

849:                                              ; preds = %847
  store i32 0, ptr %12, align 4
  br label %850

850:                                              ; preds = %849, %847
  call void @llvm.lifetime.end.p0(i64 8, ptr %89) #8
  %851 = load i32, ptr %12, align 4
  switch i32 %851, label %857 [
    i32 0, label %852
  ]

852:                                              ; preds = %850
  br label %853

853:                                              ; preds = %852
  %854 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt14_List_iteratorIN7DynexCN5BlockEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %87) #8
  br label %808

855:                                              ; preds = %845, %833
  call void @llvm.lifetime.end.p0(i64 1, ptr %92) #8
  br label %856

856:                                              ; preds = %855, %829
  call void @llvm.lifetime.end.p0(i64 5, ptr %90) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %89) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %88) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %87) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %86) #8
  br label %964

857:                                              ; preds = %850, %810
  call void @llvm.lifetime.end.p0(i64 8, ptr %88) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %87) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %86) #8
  br label %858

858:                                              ; preds = %857
  br label %859

859:                                              ; preds = %858, %798
  call void @llvm.lifetime.start.p0(i64 24, ptr %95) #8
  call void @_ZNSt6vectorIN6Crypto4HashESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %95) #8
  %860 = load ptr, ptr %6, align 8, !tbaa !5
  %861 = call noundef i64 @_ZNKSt7__cxx114listINSt8__detail14_Node_iteratorISt4pairIKN6Crypto4HashEN7DynexCN10Blockchain10BlockEntryEELb0ELb1EEESaISB_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %860) #8
  %862 = add i64 %861, 1
  invoke void @_ZNSt6vectorIN6Crypto4HashESaIS1_EE7reserveEm(ptr noundef nonnull align 8 dereferenceable(24) %95, i64 noundef %862)
          to label %863 unwind label %881

863:                                              ; preds = %859
  %864 = load ptr, ptr %6, align 8, !tbaa !5
  %865 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt7__cxx114listINSt8__detail14_Node_iteratorISt4pairIKN6Crypto4HashEN7DynexCN10Blockchain10BlockEntryEELb0ELb1EEESaISB_EE5frontEv(ptr noundef nonnull align 8 dereferenceable(24) %864) #8
  %866 = call noundef ptr @_ZNKSt8__detail14_Node_iteratorISt4pairIKN6Crypto4HashEN7DynexCN10Blockchain10BlockEntryEELb0ELb1EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %865) #8
  %867 = getelementptr inbounds %"struct.std::pair.263", ptr %866, i32 0, i32 1
  %868 = getelementptr inbounds %"struct.DynexCN::Blockchain::BlockEntry", ptr %867, i32 0, i32 0
  %869 = getelementptr inbounds %"struct.DynexCN::BlockHeader", ptr %868, i32 0, i32 4
  invoke void @_ZNSt6vectorIN6Crypto4HashESaIS1_EE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %95, ptr noundef nonnull align 1 dereferenceable(32) %869)
          to label %870 unwind label %881

870:                                              ; preds = %863
  call void @llvm.lifetime.start.p0(i64 8, ptr %96) #8
  %871 = load ptr, ptr %6, align 8, !tbaa !5
  store ptr %871, ptr %96, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %97) #8
  %872 = load ptr, ptr %96, align 8, !tbaa !5
  %873 = call ptr @_ZNSt7__cxx114listINSt8__detail14_Node_iteratorISt4pairIKN6Crypto4HashEN7DynexCN10Blockchain10BlockEntryEELb0ELb1EEESaISB_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %872) #8
  %874 = getelementptr inbounds %"struct.std::_List_iterator.277", ptr %97, i32 0, i32 0
  store ptr %873, ptr %874, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %98) #8
  %875 = load ptr, ptr %96, align 8, !tbaa !5
  %876 = call ptr @_ZNSt7__cxx114listINSt8__detail14_Node_iteratorISt4pairIKN6Crypto4HashEN7DynexCN10Blockchain10BlockEntryEELb0ELb1EEESaISB_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %875) #8
  %877 = getelementptr inbounds %"struct.std::_List_iterator.277", ptr %98, i32 0, i32 0
  store ptr %876, ptr %877, align 8
  br label %878

878:                                              ; preds = %906, %870
  %879 = call noundef zeroext i1 @_ZStneRKSt14_List_iteratorINSt8__detail14_Node_iteratorISt4pairIKN6Crypto4HashEN7DynexCN10Blockchain10BlockEntryEELb0ELb1EEEESD_(ptr noundef nonnull align 8 dereferenceable(8) %97, ptr noundef nonnull align 8 dereferenceable(8) %98) #8
  br i1 %879, label %885, label %880

880:                                              ; preds = %878
  store i32 27, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %98) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %97) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %96) #8
  br label %917

881:                                              ; preds = %863, %859
  %882 = landingpad { ptr, i32 }
          cleanup
  %883 = extractvalue { ptr, i32 } %882, 0
  store ptr %883, ptr %10, align 8
  %884 = extractvalue { ptr, i32 } %882, 1
  store i32 %884, ptr %11, align 4
  br label %962

885:                                              ; preds = %878
  call void @llvm.lifetime.start.p0(i64 8, ptr %99) #8
  %886 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt14_List_iteratorINSt8__detail14_Node_iteratorISt4pairIKN6Crypto4HashEN7DynexCN10Blockchain10BlockEntryEELb0ELb1EEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %97) #8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %99, ptr align 8 %886, i64 8, i1 false)
  call void @llvm.lifetime.start.p0(i64 32, ptr %100) #8
  %887 = call noundef ptr @_ZNKSt8__detail14_Node_iteratorISt4pairIKN6Crypto4HashEN7DynexCN10Blockchain10BlockEntryEELb0ELb1EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %99) #8
  %888 = getelementptr inbounds %"struct.std::pair.263", ptr %887, i32 0, i32 1
  %889 = getelementptr inbounds %"struct.DynexCN::Blockchain::BlockEntry", ptr %888, i32 0, i32 0
  invoke void @_ZN7DynexCN14get_block_hashERKNS_5BlockE(ptr dead_on_unwind writable sret(%"struct.Crypto::Hash") align 1 %100, ptr noundef nonnull align 8 dereferenceable(384) %889)
          to label %890 unwind label %908

890:                                              ; preds = %885
  invoke void @_ZNSt6vectorIN6Crypto4HashESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %95, ptr noundef nonnull align 1 dereferenceable(32) %100)
          to label %891 unwind label %908

891:                                              ; preds = %890
  call void @llvm.lifetime.end.p0(i64 32, ptr %100) #8
  %892 = getelementptr inbounds %"class.DynexCN::Blockchain", ptr %108, i32 0, i32 29
  %893 = call noundef ptr @_ZNKSt8__detail14_Node_iteratorISt4pairIKN6Crypto4HashEN7DynexCN10Blockchain10BlockEntryEELb0ELb1EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %99) #8
  %894 = getelementptr inbounds %"struct.std::pair.263", ptr %893, i32 0, i32 1
  %895 = getelementptr inbounds %"struct.DynexCN::Blockchain::BlockEntry", ptr %894, i32 0, i32 0
  %896 = invoke noundef zeroext i1 @_ZN7DynexCN17OrphanBlocksIndex6removeERKNS_5BlockE(ptr noundef nonnull align 8 dereferenceable(57) %892, ptr noundef nonnull align 8 dereferenceable(384) %895)
          to label %897 unwind label %912

897:                                              ; preds = %891
  %898 = getelementptr inbounds %"class.DynexCN::Blockchain", ptr %108, i32 0, i32 12
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %101, ptr align 8 %99, i64 8, i1 false)
  %899 = getelementptr inbounds %"struct.std::__detail::_Node_iterator.266", ptr %101, i32 0, i32 0
  %900 = getelementptr inbounds %"struct.std::__detail::_Node_iterator_base.262", ptr %899, i32 0, i32 0
  %901 = load ptr, ptr %900, align 8
  %902 = invoke ptr @_ZNSt13unordered_mapIN6Crypto4HashEN7DynexCN10Blockchain10BlockEntryESt4hashIS1_ESt8equal_toIS1_ESaISt4pairIKS1_S4_EEE5eraseENSt8__detail14_Node_iteratorISB_Lb0ELb1EEE(ptr noundef nonnull align 8 dereferenceable(56) %898, ptr %901)
          to label %903 unwind label %912

903:                                              ; preds = %897
  %904 = getelementptr inbounds %"struct.std::__detail::_Node_iterator.266", ptr %102, i32 0, i32 0
  %905 = getelementptr inbounds %"struct.std::__detail::_Node_iterator_base.262", ptr %904, i32 0, i32 0
  store ptr %902, ptr %905, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr %99) #8
  br label %906

906:                                              ; preds = %903
  %907 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt14_List_iteratorINSt8__detail14_Node_iteratorISt4pairIKN6Crypto4HashEN7DynexCN10Blockchain10BlockEntryEELb0ELb1EEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %97) #8
  br label %878

908:                                              ; preds = %890, %885
  %909 = landingpad { ptr, i32 }
          cleanup
  %910 = extractvalue { ptr, i32 } %909, 0
  store ptr %910, ptr %10, align 8
  %911 = extractvalue { ptr, i32 } %909, 1
  store i32 %911, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %100) #8
  br label %916

912:                                              ; preds = %897, %891
  %913 = landingpad { ptr, i32 }
          cleanup
  %914 = extractvalue { ptr, i32 } %913, 0
  store ptr %914, ptr %10, align 8
  %915 = extractvalue { ptr, i32 } %913, 1
  store i32 %915, ptr %11, align 4
  br label %916

916:                                              ; preds = %912, %908
  call void @llvm.lifetime.end.p0(i64 8, ptr %99) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %98) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %97) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %96) #8
  br label %962

917:                                              ; preds = %880
  call void @llvm.lifetime.start.p0(i64 40, ptr %103) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr %104) #8
  invoke void @_ZN7DynexCN18ChainSwitchMessageC1EOSt6vectorIN6Crypto4HashESaIS3_EE(ptr noundef nonnull align 8 dereferenceable(24) %104, ptr noundef nonnull align 8 dereferenceable(24) %95)
          to label %918 unwind label %934

918:                                              ; preds = %917
  invoke void @_ZN7DynexCN17BlockchainMessageC1EONS_18ChainSwitchMessageE(ptr noundef nonnull align 8 dereferenceable(40) %103, ptr noundef nonnull align 8 dereferenceable(24) %104)
          to label %919 unwind label %938

919:                                              ; preds = %918
  invoke void @_ZN7DynexCN10Blockchain11sendMessageERKNS_17BlockchainMessageE(ptr noundef nonnull align 8 dereferenceable(2636) %108, ptr noundef nonnull align 8 dereferenceable(40) %103)
          to label %920 unwind label %942

920:                                              ; preds = %919
  call void @_ZN7DynexCN17BlockchainMessageD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %103) #8
  call void @_ZN7DynexCN18ChainSwitchMessageD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %104) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %104) #8
  call void @llvm.lifetime.end.p0(i64 40, ptr %103) #8
  call void @llvm.lifetime.start.p0(i64 432, ptr %105) #8
  %921 = getelementptr inbounds %"class.DynexCN::Blockchain", ptr %108, i32 0, i32 33
  invoke void @_ZNK7Logging9LoggerRefclENS_5LevelERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.Logging::LoggerMessage") align 8 %105, ptr noundef nonnull align 8 dereferenceable(40) %921, i32 noundef 3, ptr noundef nonnull align 8 dereferenceable(32) @_ZN7Logging12BRIGHT_GREENB5cxx11E)
          to label %922 unwind label %948

922:                                              ; preds = %920
  %923 = invoke noundef nonnull align 8 dereferenceable(161) ptr @_ZStlsIN7Logging13LoggerMessageEA32_cEOT_S4_RKT0_(ptr noundef nonnull align 8 dereferenceable(161) %105, ptr noundef nonnull align 1 dereferenceable(32) @.str.73)
          to label %924 unwind label %952

924:                                              ; preds = %922
  %925 = invoke noundef nonnull align 8 dereferenceable(161) ptr @_ZStlsIN7Logging13LoggerMessageEmEOT_S3_RKT0_(ptr noundef nonnull align 8 dereferenceable(161) %923, ptr noundef nonnull align 8 dereferenceable(8) %13)
          to label %926 unwind label %952

926:                                              ; preds = %924
  %927 = invoke noundef nonnull align 8 dereferenceable(161) ptr @_ZStlsIN7Logging13LoggerMessageEA24_cEOT_S4_RKT0_(ptr noundef nonnull align 8 dereferenceable(161) %925, ptr noundef nonnull align 1 dereferenceable(24) @.str.74)
          to label %928 unwind label %952

928:                                              ; preds = %926
  call void @llvm.lifetime.start.p0(i64 8, ptr %106) #8
  %929 = getelementptr inbounds %"class.DynexCN::Blockchain", ptr %108, i32 0, i32 18
  %930 = invoke noundef i64 @_ZNK13SwappedVectorIN7DynexCN10Blockchain10BlockEntryEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(1184) %929)
          to label %931 unwind label %956

931:                                              ; preds = %928
  store i64 %930, ptr %106, align 8, !tbaa !47
  %932 = invoke noundef nonnull align 8 dereferenceable(161) ptr @_ZStlsIN7Logging13LoggerMessageEmEOT_S3_RKT0_(ptr noundef nonnull align 8 dereferenceable(161) %927, ptr noundef nonnull align 8 dereferenceable(8) %106)
          to label %933 unwind label %956

933:                                              ; preds = %931
  call void @llvm.lifetime.end.p0(i64 8, ptr %106) #8
  call void @_ZN7Logging13LoggerMessageD1Ev(ptr noundef nonnull align 8 dereferenceable(161) %105) #8
  call void @llvm.lifetime.end.p0(i64 432, ptr %105) #8
  store i1 true, ptr %4, align 1
  store i32 1, ptr %12, align 4
  call void @_ZNSt6vectorIN6Crypto4HashESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %95) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %95) #8
  br label %963

934:                                              ; preds = %917
  %935 = landingpad { ptr, i32 }
          cleanup
  %936 = extractvalue { ptr, i32 } %935, 0
  store ptr %936, ptr %10, align 8
  %937 = extractvalue { ptr, i32 } %935, 1
  store i32 %937, ptr %11, align 4
  br label %947

938:                                              ; preds = %918
  %939 = landingpad { ptr, i32 }
          cleanup
  %940 = extractvalue { ptr, i32 } %939, 0
  store ptr %940, ptr %10, align 8
  %941 = extractvalue { ptr, i32 } %939, 1
  store i32 %941, ptr %11, align 4
  br label %946

942:                                              ; preds = %919
  %943 = landingpad { ptr, i32 }
          cleanup
  %944 = extractvalue { ptr, i32 } %943, 0
  store ptr %944, ptr %10, align 8
  %945 = extractvalue { ptr, i32 } %943, 1
  store i32 %945, ptr %11, align 4
  call void @_ZN7DynexCN17BlockchainMessageD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %103) #8
  br label %946

946:                                              ; preds = %942, %938
  call void @_ZN7DynexCN18ChainSwitchMessageD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %104) #8
  br label %947

947:                                              ; preds = %946, %934
  call void @llvm.lifetime.end.p0(i64 24, ptr %104) #8
  call void @llvm.lifetime.end.p0(i64 40, ptr %103) #8
  br label %962

948:                                              ; preds = %920
  %949 = landingpad { ptr, i32 }
          cleanup
  %950 = extractvalue { ptr, i32 } %949, 0
  store ptr %950, ptr %10, align 8
  %951 = extractvalue { ptr, i32 } %949, 1
  store i32 %951, ptr %11, align 4
  br label %961

952:                                              ; preds = %926, %924, %922
  %953 = landingpad { ptr, i32 }
          cleanup
  %954 = extractvalue { ptr, i32 } %953, 0
  store ptr %954, ptr %10, align 8
  %955 = extractvalue { ptr, i32 } %953, 1
  store i32 %955, ptr %11, align 4
  br label %960

956:                                              ; preds = %931, %928
  %957 = landingpad { ptr, i32 }
          cleanup
  %958 = extractvalue { ptr, i32 } %957, 0
  store ptr %958, ptr %10, align 8
  %959 = extractvalue { ptr, i32 } %957, 1
  store i32 %959, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %106) #8
  br label %960

960:                                              ; preds = %956, %952
  call void @_ZN7Logging13LoggerMessageD1Ev(ptr noundef nonnull align 8 dereferenceable(161) %105) #8
  br label %961

961:                                              ; preds = %960, %948
  call void @llvm.lifetime.end.p0(i64 432, ptr %105) #8
  br label %962

962:                                              ; preds = %961, %947, %916, %881
  call void @_ZNSt6vectorIN6Crypto4HashESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %95) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %95) #8
  br label %964

963:                                              ; preds = %933, %796
  call void @_ZNSt7__cxx1110_List_baseIN7DynexCN5BlockESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %66) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %66) #8
  br label %965

964:                                              ; preds = %962, %856, %795, %664
  call void @_ZNSt7__cxx1110_List_baseIN7DynexCN5BlockESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %66) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %66) #8
  br label %966

965:                                              ; preds = %963, %627
  call void @_ZNSt6vectorIN6Crypto4HashESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %38) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %38) #8
  call void @_ZNSt6vectorIN6Crypto4HashESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %37) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %37) #8
  br label %967

966:                                              ; preds = %964, %626, %555, %497
  call void @_ZNSt6vectorIN6Crypto4HashESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %38) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %38) #8
  call void @_ZNSt6vectorIN6Crypto4HashESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %37) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %37) #8
  br label %968

967:                                              ; preds = %965, %429, %144
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #8
  br label %969

968:                                              ; preds = %966, %433, %157, %145
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #8
  br label %971

969:                                              ; preds = %967, %117
  call void @_ZNSt10lock_guardISt15recursive_mutexED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %8) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #8
  %970 = load i1, ptr %4, align 1
  ret i1 %970

971:                                              ; preds = %968, %126
  call void @_ZNSt10lock_guardISt15recursive_mutexED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %8) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #8
  br label %972

972:                                              ; preds = %971
  %973 = load ptr, ptr %10, align 8
  %974 = load i32, ptr %11, align 4
  %975 = insertvalue { ptr, i32 } poison, ptr %973, 0
  %976 = insertvalue { ptr, i32 } %975, i32 %974, 1
  resume { ptr, i32 } %976

977:                                              ; preds = %368
  unreachable
}

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(161) ptr @_ZStlsIN7Logging13LoggerMessageEA77_cEOT_S4_RKT0_(ptr noundef nonnull align 8 dereferenceable(161), ptr noundef nonnull align 1 dereferenceable(77)) #4

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

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(161) ptr @_ZStlsIN7Logging13LoggerMessageEA10_cEOT_S4_RKT0_(ptr noundef nonnull align 8 dereferenceable(161), ptr noundef nonnull align 1 dereferenceable(10)) #4

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(161) ptr @_ZStlsIN7Logging13LoggerMessageEA79_cEOT_S4_RKT0_(ptr noundef nonnull align 8 dereferenceable(161), ptr noundef nonnull align 1 dereferenceable(79)) #4

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(161) ptr @_ZStlsIN7Logging13LoggerMessageEA25_cEOT_S4_RKT0_(ptr noundef nonnull align 8 dereferenceable(161), ptr noundef nonnull align 1 dereferenceable(25)) #4

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden noundef double @_ZL15calc_poisson_lndm(double noundef, i64 noundef) #3

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(161) ptr @_ZStlsIN7Logging13LoggerMessageEA19_cEOT_S4_RKT0_(ptr noundef nonnull align 8 dereferenceable(161), ptr noundef nonnull align 1 dereferenceable(19)) #4

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(161) ptr @_ZStlsIN7Logging13LoggerMessageEA15_cEOT_S4_RKT0_(ptr noundef nonnull align 8 dereferenceable(161), ptr noundef nonnull align 1 dereferenceable(15)) #4

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(161) ptr @_ZStlsIN7Logging13LoggerMessageEA72_cEOT_S4_RKT0_(ptr noundef nonnull align 8 dereferenceable(161), ptr noundef nonnull align 1 dereferenceable(72)) #4

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN7DynexCN5BlockC2ERKS0_(ptr noundef nonnull align 8 dereferenceable(384), ptr noundef nonnull align 8 dereferenceable(384)) unnamed_addr #4 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local { ptr, ptr } @_ZSt4copyIN9__gnu_cxx17__normal_iteratorIPN6Crypto4HashESt6vectorIS3_SaIS3_EEEESt15insert_iteratorIS7_EET0_T_SC_SB_(ptr, ptr, ptr, ptr) #4

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local { ptr, ptr } @_ZSt8inserterISt6vectorIN6Crypto4HashESaIS2_EEESt15insert_iteratorIT_ERS6_NS6_8iteratorE(ptr noundef nonnull align 8 dereferenceable(24), ptr) #4

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local ptr @_ZSt4findIN9__gnu_cxx17__normal_iteratorIPN6Crypto4HashESt6vectorIS3_SaIS3_EEEES3_ET_S9_S9_RKT0_(ptr, ptr, ptr noundef nonnull align 1 dereferenceable(32)) #4

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(161) ptr @_ZStlsIN7Logging13LoggerMessageEA43_cEOT_S4_RKT0_(ptr noundef nonnull align 8 dereferenceable(161), ptr noundef nonnull align 1 dereferenceable(43)) #4

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(161) ptr @_ZStlsIN7Logging13LoggerMessageEA86_cEOT_S4_RKT0_(ptr noundef nonnull align 8 dereferenceable(161), ptr noundef nonnull align 1 dereferenceable(86)) #4

declare noundef zeroext i1 @_ZN7DynexCN17OrphanBlocksIndex6removeERKNS_5BlockE(ptr noundef nonnull align 8 dereferenceable(57), ptr noundef nonnull align 8 dereferenceable(384)) #5

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(161) ptr @_ZStlsIN7Logging13LoggerMessageEA58_cEOT_S4_RKT0_(ptr noundef nonnull align 8 dereferenceable(161), ptr noundef nonnull align 1 dereferenceable(58)) #4

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

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

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

declare void @_ZN7DynexCN18ChainSwitchMessageC1EOSt6vectorIN6Crypto4HashESaIS3_EE(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #5

declare void @_ZN7DynexCN17BlockchainMessageC1EONS_18ChainSwitchMessageE(ptr noundef nonnull align 8 dereferenceable(40), ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #5

; Function Attrs: nounwind
declare void @_ZN7DynexCN17BlockchainMessageD1Ev(ptr noundef nonnull align 8 dereferenceable(40)) unnamed_addr #6

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"bool", !7, i64 0}
!11 = !{!12, !17, i64 416}
!12 = !{!"_ZTSSt4pairIKN6Crypto4HashEN7DynexCN10Blockchain10BlockEntryEE", !13, i64 0, !14, i64 32}
!13 = !{!"_ZTSN6Crypto4HashE", !7, i64 0}
!14 = !{!"_ZTSN7DynexCN10Blockchain10BlockEntryE", !15, i64 0, !17, i64 384, !18, i64 392, !18, i64 400, !18, i64 408, !43, i64 416}
!15 = !{!"_ZTSN7DynexCN5BlockE", !16, i64 0, !19, i64 48, !25, i64 248, !21, i64 360}
!16 = !{!"_ZTSN7DynexCN11BlockHeaderE", !7, i64 0, !7, i64 1, !17, i64 4, !18, i64 8, !13, i64 16}
!17 = !{!"int", !7, i64 0}
!18 = !{!"long", !7, i64 0}
!19 = !{!"_ZTSN7DynexCN11ParentBlockE", !7, i64 0, !7, i64 1, !13, i64 2, !20, i64 34, !21, i64 40, !25, i64 64, !21, i64 176}
!20 = !{!"short", !7, i64 0}
!21 = !{!"_ZTSSt6vectorIN6Crypto4HashESaIS1_EE", !22, i64 0}
!22 = !{!"_ZTSSt12_Vector_baseIN6Crypto4HashESaIS1_EE", !23, i64 0}
!23 = !{!"_ZTSNSt12_Vector_baseIN6Crypto4HashESaIS1_EE12_Vector_implE", !24, i64 0}
!24 = !{!"_ZTSNSt12_Vector_baseIN6Crypto4HashESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!25 = !{!"_ZTSN7DynexCN11TransactionE", !26, i64 0, !39, i64 88}
!26 = !{!"_ZTSN7DynexCN17TransactionPrefixE", !7, i64 0, !18, i64 8, !27, i64 16, !31, i64 40, !35, i64 64}
!27 = !{!"_ZTSSt6vectorIN5boost7variantIN7DynexCN9BaseInputEJNS2_8KeyInputENS2_19MultisignatureInputEEEESaIS6_EE", !28, i64 0}
!28 = !{!"_ZTSSt12_Vector_baseIN5boost7variantIN7DynexCN9BaseInputEJNS2_8KeyInputENS2_19MultisignatureInputEEEESaIS6_EE", !29, i64 0}
!29 = !{!"_ZTSNSt12_Vector_baseIN5boost7variantIN7DynexCN9BaseInputEJNS2_8KeyInputENS2_19MultisignatureInputEEEESaIS6_EE12_Vector_implE", !30, i64 0}
!30 = !{!"_ZTSNSt12_Vector_baseIN5boost7variantIN7DynexCN9BaseInputEJNS2_8KeyInputENS2_19MultisignatureInputEEEESaIS6_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!31 = !{!"_ZTSSt6vectorIN7DynexCN17TransactionOutputESaIS1_EE", !32, i64 0}
!32 = !{!"_ZTSSt12_Vector_baseIN7DynexCN17TransactionOutputESaIS1_EE", !33, i64 0}
!33 = !{!"_ZTSNSt12_Vector_baseIN7DynexCN17TransactionOutputESaIS1_EE12_Vector_implE", !34, i64 0}
!34 = !{!"_ZTSNSt12_Vector_baseIN7DynexCN17TransactionOutputESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!35 = !{!"_ZTSSt6vectorIhSaIhEE", !36, i64 0}
!36 = !{!"_ZTSSt12_Vector_baseIhSaIhEE", !37, i64 0}
!37 = !{!"_ZTSNSt12_Vector_baseIhSaIhEE12_Vector_implE", !38, i64 0}
!38 = !{!"_ZTSNSt12_Vector_baseIhSaIhEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!39 = !{!"_ZTSSt6vectorIS_IN6Crypto9SignatureESaIS1_EESaIS3_EE", !40, i64 0}
!40 = !{!"_ZTSSt12_Vector_baseISt6vectorIN6Crypto9SignatureESaIS2_EESaIS4_EE", !41, i64 0}
!41 = !{!"_ZTSNSt12_Vector_baseISt6vectorIN6Crypto9SignatureESaIS2_EESaIS4_EE12_Vector_implE", !42, i64 0}
!42 = !{!"_ZTSNSt12_Vector_baseISt6vectorIN6Crypto9SignatureESaIS2_EESaIS4_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!43 = !{!"_ZTSSt6vectorIN7DynexCN10Blockchain16TransactionEntryESaIS2_EE", !44, i64 0}
!44 = !{!"_ZTSSt12_Vector_baseIN7DynexCN10Blockchain16TransactionEntryESaIS2_EE", !45, i64 0}
!45 = !{!"_ZTSNSt12_Vector_baseIN7DynexCN10Blockchain16TransactionEntryESaIS2_EE12_Vector_implE", !46, i64 0}
!46 = !{!"_ZTSNSt12_Vector_baseIN7DynexCN10Blockchain16TransactionEntryESaIS2_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!47 = !{!18, !18, i64 0}
!48 = !{!16, !18, i64 8}
!49 = !{i64 0, i64 32, !50}
!50 = !{!7, !7, i64 0}
!51 = !{!52, !52, i64 0}
!52 = !{!"double", !7, i64 0}
!53 = distinct !{!53, !54}
!54 = !{!"llvm.loop.mustprogress"}
!55 = distinct !{!55, !54}
!56 = distinct !{!56, !54}
!57 = distinct !{!57, !54}
!58 = distinct !{!58, !54}
!59 = !{i64 0, i64 1, !9, i64 1, i64 1, !9, i64 2, i64 1, !9, i64 3, i64 1, !9, i64 4, i64 1, !9}
!60 = !{i8 0, i8 2}
!61 = !{}
!62 = !{!63, !10, i64 0}
!63 = !{!"_ZTSN7DynexCN26block_verification_contextE", !10, i64 0, !10, i64 1, !10, i64 2, !10, i64 3, !10, i64 4}
!64 = !{i64 0, i64 8, !5}
!65 = distinct !{!65, !54}
!66 = distinct !{!66, !54}


; 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"

%"struct.Crypto::Hash" = type { [32 x i8] }
%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon.38 }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon.38 = type { i64, [8 x i8] }
%"class.Logging::LoggerMessage" = type <{ %"class.std::basic_ostream.base", %"class.std::basic_streambuf", ptr, %"class.std::__cxx11::basic_string", i32, [4 x i8], %"class.std::__cxx11::basic_string", %"class.boost::posix_time::ptime", i8, [7 x i8], %"class.std::basic_ios" }>
%"class.std::basic_ostream.base" = type { ptr }
%"class.std::basic_streambuf" = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, %"class.std::locale" }
%"class.std::locale" = type { ptr }
%"class.boost::posix_time::ptime" = type { %"class.boost::date_time::base_time" }
%"class.boost::date_time::base_time" = type { %"struct.boost::date_time::counted_time_rep" }
%"struct.boost::date_time::counted_time_rep" = type { %"class.boost::date_time::int_adapter" }
%"class.boost::date_time::int_adapter" = type { i64 }
%"class.std::basic_ios" = type { %"class.std::ios_base", ptr, i8, i8, ptr, ptr, ptr, ptr }
%"class.std::ios_base" = type { ptr, i64, i64, i32, i32, i32, ptr, %"struct.std::ios_base::_Words", [8 x %"struct.std::ios_base::_Words"], i32, ptr, %"class.std::locale" }
%"struct.std::ios_base::_Words" = type { ptr, i64 }
%"class.std::lock_guard" = type { ptr }
%"struct.std::_List_iterator.277" = type { ptr }
%"struct.DynexCN::Block" = type { %"struct.DynexCN::BlockHeader", %"struct.DynexCN::ParentBlock", %"struct.DynexCN::Transaction", %"class.std::vector.147" }
%"struct.DynexCN::BlockHeader" = type { i8, i8, i32, i64, %"struct.Crypto::Hash" }
%"struct.DynexCN::ParentBlock" = type { i8, i8, %"struct.Crypto::Hash", i16, %"class.std::vector.147", %"struct.DynexCN::Transaction", %"class.std::vector.147" }
%"struct.DynexCN::Transaction" = type { %"struct.DynexCN::TransactionPrefix", %"class.std::vector.167" }
%"struct.DynexCN::TransactionPrefix" = type { i8, i64, %"class.std::vector.152", %"class.std::vector.157", %"class.std::vector.162" }
%"class.std::vector.152" = type { %"struct.std::_Vector_base.153" }
%"struct.std::_Vector_base.153" = type { %"struct.std::_Vector_base<boost::variant<DynexCN::BaseInput, DynexCN::KeyInput, DynexCN::MultisignatureInput>, std::allocator<boost::variant<DynexCN::BaseInput, DynexCN::KeyInput, DynexCN::MultisignatureInput>>>::_Vector_impl" }
%"struct.std::_Vector_base<boost::variant<DynexCN::BaseInput, DynexCN::KeyInput, DynexCN::MultisignatureInput>, std::allocator<boost::variant<DynexCN::BaseInput, DynexCN::KeyInput, DynexCN::MultisignatureInput>>>::_Vector_impl" = type { %"struct.std::_Vector_base<boost::variant<DynexCN::BaseInput, DynexCN::KeyInput, DynexCN::MultisignatureInput>, std::allocator<boost::variant<DynexCN::BaseInput, DynexCN::KeyInput, DynexCN::MultisignatureInput>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<boost::variant<DynexCN::BaseInput, DynexCN::KeyInput, DynexCN::MultisignatureInput>, std::allocator<boost::variant<DynexCN::BaseInput, DynexCN::KeyInput, DynexCN::MultisignatureInput>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.157" = type { %"struct.std::_Vector_base.158" }
%"struct.std::_Vector_base.158" = type { %"struct.std::_Vector_base<DynexCN::TransactionOutput, std::allocator<DynexCN::TransactionOutput>>::_Vector_impl" }
%"struct.std::_Vector_base<DynexCN::TransactionOutput, std::allocator<DynexCN::TransactionOutput>>::_Vector_impl" = type { %"struct.std::_Vector_base<DynexCN::TransactionOutput, std::allocator<DynexCN::TransactionOutput>>::_Vector_impl_data" }
%"struct.std::_Vector_base<DynexCN::TransactionOutput, std::allocator<DynexCN::TransactionOutput>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.162" = type { %"struct.std::_Vector_base.163" }
%"struct.std::_Vector_base.163" = type { %"struct.std::_Vector_base<unsigned char, std::allocator<unsigned char>>::_Vector_impl" }
%"struct.std::_Vector_base<unsigned char, std::allocator<unsigned char>>::_Vector_impl" = type { %"struct.std::_Vector_base<unsigned char, std::allocator<unsigned char>>::_Vector_impl_data" }
%"struct.std::_Vector_base<unsigned char, std::allocator<unsigned char>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.167" = type { %"struct.std::_Vector_base.168" }
%"struct.std::_Vector_base.168" = type { %"struct.std::_Vector_base<std::vector<Crypto::Signature>, std::allocator<std::vector<Crypto::Signature>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::vector<Crypto::Signature>, std::allocator<std::vector<Crypto::Signature>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::vector<Crypto::Signature>, std::allocator<std::vector<Crypto::Signature>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::vector<Crypto::Signature>, std::allocator<std::vector<Crypto::Signature>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.147" = type { %"struct.std::_Vector_base.148" }
%"struct.std::_Vector_base.148" = type { %"struct.std::_Vector_base<Crypto::Hash, std::allocator<Crypto::Hash>>::_Vector_impl" }
%"struct.std::_Vector_base<Crypto::Hash, std::allocator<Crypto::Hash>>::_Vector_impl" = type { %"struct.std::_Vector_base<Crypto::Hash, std::allocator<Crypto::Hash>>::_Vector_impl_data" }
%"struct.std::_Vector_base<Crypto::Hash, std::allocator<Crypto::Hash>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.std::__detail::_Node_iterator.266" = type { %"struct.std::__detail::_Node_iterator_base.262" }
%"struct.std::__detail::_Node_iterator_base.262" = type { ptr }
%"class.__gnu_cxx::__normal_iterator.265" = type { ptr }
%"class.std::__cxx11::list.267" = type { %"class.std::__cxx11::_List_base.268" }
%"class.std::__cxx11::_List_base.268" = type { %"struct.std::__cxx11::_List_base<DynexCN::Block, std::allocator<DynexCN::Block>>::_List_impl" }
%"struct.std::__cxx11::_List_base<DynexCN::Block, std::allocator<DynexCN::Block>>::_List_impl" = type { %"struct.std::__detail::_List_node_header" }
%"struct.std::__detail::_List_node_header" = type { %"struct.std::__detail::_List_node_base", i64 }
%"struct.std::__detail::_List_node_base" = type { ptr, ptr }
%"struct.DynexCN::block_verification_context" = type { i8, i8, i8, i8, i8 }
%"class.boost::value_initialized.232" = type { %"class.boost::initialized.233" }
%"class.boost::initialized.233" = type { %"struct.DynexCN::block_verification_context" }
%"struct.std::_List_iterator" = type { ptr }
%"class.DynexCN::BlockchainMessage" = type { i32, %union.anon.278 }
%union.anon.278 = type { ptr, [24 x i8] }
%"class.DynexCN::ChainSwitchMessage" = type { %"class.std::vector.147" }

@_ZN7DynexCNL9NULL_HASHE = external hidden global %"struct.Crypto::Hash", align 1
@_ZN7Logging7DEFAULTB5cxx11E = external global %"class.std::__cxx11::basic_string", align 8
@_ZN7Logging10BRIGHT_REDB5cxx11E = external global %"class.std::__cxx11::basic_string", align 8
@_ZN7Logging12BRIGHT_WHITEB5cxx11E = external global %"class.std::__cxx11::basic_string", align 8
@_ZN7Logging13BRIGHT_YELLOWB5cxx11E = external global %"class.std::__cxx11::basic_string", align 8
@_ZN7Logging12BRIGHT_GREENB5cxx11E = external global %"class.std::__cxx11::basic_string", align 8
@.str.54 = external hidden unnamed_addr constant [53 x i8], align 1
@.str.55 = external hidden unnamed_addr constant [77 x i8], align 1
@.str.56 = external hidden unnamed_addr constant [79 x i8], align 1
@.str.57 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.58 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.59 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.60 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.61 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.62 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.63 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.64 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.65 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.66 = external hidden unnamed_addr constant [72 x i8], align 1
@.str.67 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.68 = external hidden unnamed_addr constant [70 x i8], align 1
@.str.69 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.70 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.71 = external hidden unnamed_addr constant [86 x i8], align 1
@.str.72 = external hidden unnamed_addr constant [58 x i8], align 1
@.str.73 = external hidden unnamed_addr constant [32 x i8], align 1
@.str.74 = external hidden unnamed_addr constant [24 x i8], align 1

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

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

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

declare i32 @__gxx_personality_v0(...)

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN6CryptoeqERKNS_4HashES2_(ptr noundef nonnull align 1 dereferenceable(32), ptr noundef nonnull align 1 dereferenceable(32)) local_unnamed_addr #3

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(161) ptr @_ZStlsIN7Logging13LoggerMessageEA27_cEOT_S4_RKT0_(ptr noundef nonnull align 8 dereferenceable(161), ptr noundef nonnull align 1 dereferenceable(27)) local_unnamed_addr #4

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(161) ptr @_ZStlsIN7Logging13LoggerMessageEA24_cEOT_S4_RKT0_(ptr noundef nonnull align 8 dereferenceable(161), ptr noundef nonnull align 1 dereferenceable(24)) local_unnamed_addr #4

declare void @_ZNK7Logging9LoggerRefclENS_5LevelERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.Logging::LoggerMessage") align 8, ptr noundef nonnull align 8 dereferenceable(40), i32 noundef, ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #5

; Function Attrs: nounwind
declare void @_ZN7Logging13LoggerMessageD1Ev(ptr noundef nonnull align 8 dereferenceable(161)) unnamed_addr #6

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(161) ptr @_ZStlsIN7Logging13LoggerMessageEA22_cEOT_S4_RKT0_(ptr noundef nonnull align 8 dereferenceable(161), ptr noundef nonnull align 1 dereferenceable(22)) local_unnamed_addr #4

declare void @_ZN7DynexCN14get_block_hashERKNS_5BlockE(ptr dead_on_unwind writable sret(%"struct.Crypto::Hash") align 1, ptr noundef nonnull align 8 dereferenceable(384)) local_unnamed_addr #5

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(161) ptr @_ZStlsIN7Logging13LoggerMessageEA53_cEOT_S4_RKT0_(ptr noundef nonnull align 8 dereferenceable(161), ptr noundef nonnull align 1 dereferenceable(53)) local_unnamed_addr #4

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN7DynexCN10Blockchain9pushBlockERKNS_5BlockERNS_26block_verification_contextE(ptr noundef nonnull align 8 dereferenceable(2636), ptr noundef nonnull align 8 dereferenceable(384), ptr noundef nonnull align 1 dereferenceable(5)) local_unnamed_addr #7 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(161) ptr @_ZStlsIN7Logging13LoggerMessageEA42_cEOT_S4_RKT0_(ptr noundef nonnull align 8 dereferenceable(161), ptr noundef nonnull align 1 dereferenceable(42)) local_unnamed_addr #4

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(440) ptr @_ZN13SwappedVectorIN7DynexCN10Blockchain10BlockEntryEEixEm(ptr noundef nonnull align 8 dereferenceable(1184), i64 noundef) local_unnamed_addr #7 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(161) ptr @_ZStlsIN7Logging13LoggerMessageEA70_cEOT_S4_RKT0_(ptr noundef nonnull align 8 dereferenceable(161), ptr noundef nonnull align 1 dereferenceable(70)) local_unnamed_addr #4

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(161) ptr @_ZStlsIN7Logging13LoggerMessageEA8_cEOT_S4_RKT0_(ptr noundef nonnull align 8 dereferenceable(161), ptr noundef nonnull align 1 dereferenceable(8)) local_unnamed_addr #4

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(161) ptr @_ZStlsIN7Logging13LoggerMessageEA32_cEOT_S4_RKT0_(ptr noundef nonnull align 8 dereferenceable(161), ptr noundef nonnull align 1 dereferenceable(32)) local_unnamed_addr #4

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(161) ptr @_ZStlsIN7Logging13LoggerMessageEN6Crypto4HashEEOT_S5_RKT0_(ptr noundef nonnull align 8 dereferenceable(161), ptr noundef nonnull align 1 dereferenceable(32)) local_unnamed_addr #4

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN7DynexCN10Blockchain29rollback_blockchain_switchingERNSt7__cxx114listINS_5BlockESaIS3_EEEm(ptr noundef nonnull align 8 dereferenceable(2636), ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) local_unnamed_addr #7 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7DynexCN10Blockchain8popBlockEv(ptr noundef nonnull align 8 dereferenceable(2636)) local_unnamed_addr #7 align 2

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

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(161) ptr @_ZStlsIN7Logging13LoggerMessageEA18_cEOT_S4_RKT0_(ptr noundef nonnull align 8 dereferenceable(161), ptr noundef nonnull align 1 dereferenceable(18)) local_unnamed_addr #4

; Function Attrs: mustprogress uwtable
define dso_local noundef zeroext i1 @_ZN7DynexCN10Blockchain32switch_to_alternative_blockchainERNSt7__cxx114listINSt8__detail14_Node_iteratorISt4pairIKN6Crypto4HashENS0_10BlockEntryEELb0ELb1EEESaISB_EEEb(ptr noundef nonnull align 8 dereferenceable(2636) %0, ptr noundef nonnull align 8 dereferenceable(24) %1, i1 noundef zeroext %2) local_unnamed_addr #7 align 2 personality ptr @__gxx_personality_v0 {
  %4 = alloca %"class.std::lock_guard", align 8
  %5 = alloca %"class.Logging::LoggerMessage", align 8
  %6 = alloca i64, align 8
  %7 = alloca %"class.Logging::LoggerMessage", align 8
  %8 = alloca i64, align 8
  %9 = alloca i64, align 8
  %10 = alloca %"struct.Crypto::Hash", align 1
  %11 = alloca %"struct.std::_List_iterator.277", align 8
  %12 = alloca %"struct.std::_List_iterator.277", align 8
  %13 = alloca %"class.Logging::LoggerMessage", align 8
  %14 = alloca i64, align 8
  %15 = alloca %"class.Logging::LoggerMessage", align 8
  %16 = alloca i64, align 8
  %17 = alloca i64, align 8
  %18 = alloca %"struct.DynexCN::Block", align 8
  %19 = alloca %"class.Logging::LoggerMessage", align 8
  %20 = alloca %"class.Logging::LoggerMessage", align 8
  %21 = alloca i64, align 8
  %22 = alloca i64, align 8
  %23 = alloca %"class.Logging::LoggerMessage", align 8
  %24 = alloca %"class.Logging::LoggerMessage", align 8
  %25 = alloca %"class.std::vector.147", align 8
  %26 = alloca %"class.std::vector.147", align 8
  %27 = alloca %"struct.DynexCN::Block", align 8
  %28 = alloca %"struct.std::_List_iterator.277", align 8
  %29 = alloca %"struct.std::_List_iterator.277", align 8
  %30 = alloca %"struct.std::__detail::_Node_iterator.266", align 8
  %31 = alloca %"struct.DynexCN::Block", align 8
  %32 = alloca %"class.__gnu_cxx::__normal_iterator.265", align 8
  %33 = alloca %"class.__gnu_cxx::__normal_iterator.265", align 8
  %34 = alloca %"struct.Crypto::Hash", align 1
  %35 = alloca %"class.__gnu_cxx::__normal_iterator.265", align 8
  %36 = alloca %"class.__gnu_cxx::__normal_iterator.265", align 8
  %37 = alloca %"class.Logging::LoggerMessage", align 8
  %38 = alloca %"class.std::__cxx11::basic_string", align 8
  %39 = alloca %"class.std::__cxx11::list.267", align 8
  %40 = alloca %"struct.DynexCN::Block", align 8
  %41 = alloca %"struct.std::_List_iterator.277", align 8
  %42 = alloca %"struct.std::_List_iterator.277", align 8
  %43 = alloca %"struct.std::__detail::_Node_iterator.266", align 8
  %44 = alloca %"struct.DynexCN::block_verification_context", align 1
  %45 = alloca %"class.boost::value_initialized.232", align 1
  %46 = alloca %"class.Logging::LoggerMessage", align 8
  %47 = alloca %"class.Logging::LoggerMessage", align 8
  %48 = alloca %"struct.Crypto::Hash", align 1
  %49 = alloca %"struct.std::_List_iterator.277", align 8
  %50 = alloca %"struct.std::_List_iterator.277", align 8
  %51 = alloca %"struct.std::_List_iterator", align 8
  %52 = alloca %"struct.std::_List_iterator", align 8
  %53 = alloca %"struct.DynexCN::block_verification_context", align 1
  %54 = alloca %"class.boost::value_initialized.232", align 1
  %55 = alloca %"struct.Crypto::Hash", align 1
  %56 = alloca %"class.Logging::LoggerMessage", align 8
  %57 = alloca %"class.std::vector.147", align 8
  %58 = alloca %"struct.std::_List_iterator.277", align 8
  %59 = alloca %"struct.std::_List_iterator.277", align 8
  %60 = alloca %"struct.std::__detail::_Node_iterator.266", align 8
  %61 = alloca %"struct.Crypto::Hash", align 1
  %62 = alloca %"class.DynexCN::BlockchainMessage", align 8
  %63 = alloca %"class.DynexCN::ChainSwitchMessage", align 8
  %64 = alloca %"class.Logging::LoggerMessage", align 8
  %65 = alloca i64, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %4) #8
  %66 = getelementptr inbounds i8, ptr %0, i64 96
  call void @_ZNSt10lock_guardISt15recursive_mutexEC2ERS0_(ptr noundef nonnull align 8 dereferenceable(8) %4, ptr noundef nonnull align 8 dereferenceable(40) %66)
  %67 = call noundef i64 @_ZNKSt7__cxx114listINSt8__detail14_Node_iteratorISt4pairIKN6Crypto4HashEN7DynexCN10Blockchain10BlockEntryEELb0ELb1EEESaISB_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1) #8
  %.not = icmp eq i64 %67, 0
  br i1 %.not, label %68, label %78

68:                                               ; preds = %3
  call void @llvm.lifetime.start.p0(i64 432, ptr nonnull %5) #8
  %69 = getelementptr inbounds i8, ptr %0, i64 2592
  invoke void @_ZNK7Logging9LoggerRefclENS_5LevelERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%"class.Logging::LoggerMessage") align 8 %5, ptr noundef nonnull align 8 dereferenceable(40) %69, i32 noundef 1, ptr noundef nonnull align 8 dereferenceable(32) @_ZN7Logging10BRIGHT_REDB5cxx11E)
          to label %70 unwind label %73

70:                                               ; preds = %68
  %71 = invoke noundef nonnull align 8 dereferenceable(161) ptr @_ZStlsIN7Logging13LoggerMessageEA53_cEOT_S4_RKT0_(ptr noundef nonnull align 8 dereferenceable(161) %5, ptr noundef nonnull align 1 dereferenceable(53) @.str.54)
          to label %72 unwind label %75

72:                                               ; preds = %70
  call void @_ZN7Logging13LoggerMessageD1Ev(ptr noundef nonnull align 8 dereferenceable(161) %5) #8
  call void @llvm.lifetime.end.p0(i64 432, ptr nonnull %5) #8
  br label %551

73:                                               ; preds = %68
  %74 = landingpad { ptr, i32 }
          cleanup
  br label %77

75:                                               ; preds = %70
  %76 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7Logging13LoggerMessageD1Ev(ptr noundef nonnull align 8 dereferenceable(161) %5) #8
  br label %77

77:                                               ; preds = %75, %73
  %.pn = phi { ptr, i32 } [ %76, %75 ], [ %74, %73 ]
  call void @llvm.lifetime.end.p0(i64 432, ptr nonnull %5) #8
  br label %552

78:                                               ; preds = %3
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %6) #8
  %79 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt7__cxx114listINSt8__detail14_Node_iteratorISt4pairIKN6Crypto4HashEN7DynexCN10Blockchain10BlockEntryEELb0ELb1EEESaISB_EE5frontEv(ptr noundef nonnull align 8 dereferenceable(24) %1) #8
  %80 = call noundef ptr @_ZNKSt8__detail14_Node_iteratorISt4pairIKN6Crypto4HashEN7DynexCN10Blockchain10BlockEntryEELb0ELb1EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %79) #8
  %81 = getelementptr inbounds i8, ptr %80, i64 416
  %82 = load i32, ptr %81, align 8, !tbaa !5
  %83 = zext i32 %82 to i64
  store i64 %83, ptr %6, align 8, !tbaa !44
  %84 = getelementptr inbounds i8, ptr %0, i64 576
  %85 = call noundef i64 @_ZNK13SwappedVectorIN7DynexCN10Blockchain10BlockEntryEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(1184) %84)
  %86 = icmp ugt i64 %85, %83
  br i1 %86, label %97, label %87

87:                                               ; preds = %78
  call void @llvm.lifetime.start.p0(i64 432, ptr nonnull %7) #8
  %88 = getelementptr inbounds i8, ptr %0, i64 2592
  invoke void @_ZNK7Logging9LoggerRefclENS_5LevelERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%"class.Logging::LoggerMessage") align 8 %7, ptr noundef nonnull align 8 dereferenceable(40) %88, i32 noundef 1, ptr noundef nonnull align 8 dereferenceable(32) @_ZN7Logging10BRIGHT_REDB5cxx11E)
          to label %89 unwind label %92

89:                                               ; preds = %87
  %90 = invoke noundef nonnull align 8 dereferenceable(161) ptr @_ZStlsIN7Logging13LoggerMessageEA77_cEOT_S4_RKT0_(ptr noundef nonnull align 8 dereferenceable(161) %7, ptr noundef nonnull align 1 dereferenceable(77) @.str.55)
          to label %91 unwind label %94

91:                                               ; preds = %89
  call void @_ZN7Logging13LoggerMessageD1Ev(ptr noundef nonnull align 8 dereferenceable(161) %7) #8
  call void @llvm.lifetime.end.p0(i64 432, ptr nonnull %7) #8
  br label %549

92:                                               ; preds = %87
  %93 = landingpad { ptr, i32 }
          cleanup
  br label %96

94:                                               ; preds = %89
  %95 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7Logging13LoggerMessageD1Ev(ptr noundef nonnull align 8 dereferenceable(161) %7) #8
  br label %96

96:                                               ; preds = %94, %92
  %.pn143 = phi { ptr, i32 } [ %95, %94 ], [ %93, %92 ]
  call void @llvm.lifetime.end.p0(i64 432, ptr nonnull %7) #8
  br label %550

97:                                               ; preds = %78
  %98 = call noundef i64 @_ZNKSt7__cxx114listINSt8__detail14_Node_iteratorISt4pairIKN6Crypto4HashEN7DynexCN10Blockchain10BlockEntryEELb0ELb1EEESaISB_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1) #8
  %99 = icmp ugt i64 %98, 9
  br i1 %99, label %100, label %272

100:                                              ; preds = %97
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %8) #8
  %101 = call noundef i64 @_ZNKSt7__cxx114listINSt8__detail14_Node_iteratorISt4pairIKN6Crypto4HashEN7DynexCN10Blockchain10BlockEntryEELb0ELb1EEESaISB_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1) #8
  store i64 %101, ptr %8, align 8, !tbaa !44
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %9) #8
  %102 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt7__cxx114listINSt8__detail14_Node_iteratorISt4pairIKN6Crypto4HashEN7DynexCN10Blockchain10BlockEntryEELb0ELb1EEESaISB_EE4backEv(ptr noundef nonnull align 8 dereferenceable(24) %1) #8
  %103 = call noundef ptr @_ZNKSt8__detail14_Node_iteratorISt4pairIKN6Crypto4HashEN7DynexCN10Blockchain10BlockEntryEELb0ELb1EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %102) #8
  %104 = getelementptr inbounds i8, ptr %103, i64 40
  %105 = load i64, ptr %104, align 8, !tbaa !45
  store i64 %105, ptr %9, align 8, !tbaa !44
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %10) #8
  %106 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt7__cxx114listINSt8__detail14_Node_iteratorISt4pairIKN6Crypto4HashEN7DynexCN10Blockchain10BlockEntryEELb0ELb1EEESaISB_EE5frontEv(ptr noundef nonnull align 8 dereferenceable(24) %1) #8
  %107 = call noundef ptr @_ZNKSt8__detail14_Node_iteratorISt4pairIKN6Crypto4HashEN7DynexCN10Blockchain10BlockEntryEELb0ELb1EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %106) #8
  %108 = getelementptr inbounds i8, ptr %107, i64 48
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(32) %10, ptr noundef nonnull align 8 dereferenceable(32) %108, i64 32, i1 false), !tbaa.struct !46
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %11) #8
  %109 = call ptr @_ZNSt7__cxx114listINSt8__detail14_Node_iteratorISt4pairIKN6Crypto4HashEN7DynexCN10Blockchain10BlockEntryEELb0ELb1EEESaISB_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %1) #8
  store ptr %109, ptr %11, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %12) #8
  %110 = call ptr @_ZNSt7__cxx114listINSt8__detail14_Node_iteratorISt4pairIKN6Crypto4HashEN7DynexCN10Blockchain10BlockEntryEELb0ELb1EEESaISB_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %1) #8
  store ptr %110, ptr %12, align 8
  %111 = call noundef zeroext i1 @_ZStneRKSt14_List_iteratorINSt8__detail14_Node_iteratorISt4pairIKN6Crypto4HashEN7DynexCN10Blockchain10BlockEntryEELb0ELb1EEEESD_(ptr noundef nonnull align 8 dereferenceable(8) %11, ptr noundef nonnull align 8 dereferenceable(8) %12) #8
  br i1 %111, label %.lr.ph, label %._crit_edge

._crit_edge:                                      ; preds = %127, %100
  %112 = phi i64 [ %105, %100 ], [ %128, %127 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #8
  %113 = call noundef i64 @_ZN7DynexCN10Blockchain17get_adjusted_timeEv(ptr noundef nonnull align 8 dereferenceable(2636) %0)
  %114 = add i64 %113, 360
  %115 = icmp ugt i64 %112, %114
  %116 = getelementptr inbounds i8, ptr %0, i64 2592
  br i1 %115, label %131, label %150

.lr.ph:                                           ; preds = %100, %127
  %117 = phi i64 [ %128, %127 ], [ %105, %100 ]
  %118 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt14_List_iteratorINSt8__detail14_Node_iteratorISt4pairIKN6Crypto4HashEN7DynexCN10Blockchain10BlockEntryEELb0ELb1EEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %11) #8
  %119 = call noundef ptr @_ZNKSt8__detail14_Node_iteratorISt4pairIKN6Crypto4HashEN7DynexCN10Blockchain10BlockEntryEELb0ELb1EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %118) #8
  %120 = getelementptr inbounds i8, ptr %119, i64 40
  %121 = load i64, ptr %120, align 8, !tbaa !45
  %122 = icmp ult i64 %117, %121
  br i1 %122, label %123, label %127

123:                                              ; preds = %.lr.ph
  %124 = call noundef ptr @_ZNKSt8__detail14_Node_iteratorISt4pairIKN6Crypto4HashEN7DynexCN10Blockchain10BlockEntryEELb0ELb1EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %118) #8
  %125 = getelementptr inbounds i8, ptr %124, i64 40
  %126 = load i64, ptr %125, align 8, !tbaa !45
  store i64 %126, ptr %9, align 8, !tbaa !44
  br label %127

127:                                              ; preds = %123, %.lr.ph
  %128 = phi i64 [ %126, %123 ], [ %117, %.lr.ph ]
  %129 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt14_List_iteratorINSt8__detail14_Node_iteratorISt4pairIKN6Crypto4HashEN7DynexCN10Blockchain10BlockEntryEELb0ELb1EEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %11) #8
  %130 = call noundef zeroext i1 @_ZStneRKSt14_List_iteratorINSt8__detail14_Node_iteratorISt4pairIKN6Crypto4HashEN7DynexCN10Blockchain10BlockEntryEELb0ELb1EEEESD_(ptr noundef nonnull align 8 dereferenceable(8) %11, ptr noundef nonnull align 8 dereferenceable(8) %12) #8
  br i1 %130, label %.lr.ph, label %._crit_edge

131:                                              ; preds = %._crit_edge
  call void @llvm.lifetime.start.p0(i64 432, ptr nonnull %13) #8
  invoke void @_ZNK7Logging9LoggerRefclENS_5LevelERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%"class.Logging::LoggerMessage") align 8 %13, ptr noundef nonnull align 8 dereferenceable(40) %116, i32 noundef 1, ptr noundef nonnull align 8 dereferenceable(32) @_ZN7Logging10BRIGHT_REDB5cxx11E)
          to label %132 unwind label %142

132:                                              ; preds = %131
  %133 = invoke noundef nonnull align 8 dereferenceable(161) ptr @_ZStlsIN7Logging13LoggerMessageEA79_cEOT_S4_RKT0_(ptr noundef nonnull align 8 dereferenceable(161) %13, ptr noundef nonnull align 1 dereferenceable(79) @.str.56)
          to label %134 unwind label %144

134:                                              ; preds = %132
  %135 = invoke noundef nonnull align 8 dereferenceable(161) ptr @_ZStlsIN7Logging13LoggerMessageEmEOT_S3_RKT0_(ptr noundef nonnull align 8 dereferenceable(161) %133, ptr noundef nonnull align 8 dereferenceable(8) %9)
          to label %136 unwind label %144

136:                                              ; preds = %134
  %137 = invoke noundef nonnull align 8 dereferenceable(161) ptr @_ZStlsIN7Logging13LoggerMessageEA10_cEOT_S4_RKT0_(ptr noundef nonnull align 8 dereferenceable(161) %135, ptr noundef nonnull align 1 dereferenceable(10) @.str.57)
          to label %138 unwind label %144

138:                                              ; preds = %136
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %14) #8
  %139 = call noundef i64 @_ZN7DynexCN10Blockchain17get_adjusted_timeEv(ptr noundef nonnull align 8 dereferenceable(2636) %0)
  %140 = add i64 %139, 360
  store i64 %140, ptr %14, align 8, !tbaa !44
  %141 = invoke noundef nonnull align 8 dereferenceable(161) ptr @_ZStlsIN7Logging13LoggerMessageEmEOT_S3_RKT0_(ptr noundef nonnull align 8 dereferenceable(161) %137, ptr noundef nonnull align 8 dereferenceable(8) %14)
          to label %.thread unwind label %146

.thread:                                          ; preds = %138
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #8
  call void @_ZN7Logging13LoggerMessageD1Ev(ptr noundef nonnull align 8 dereferenceable(161) %13) #8
  call void @llvm.lifetime.end.p0(i64 432, ptr nonnull %13) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %10) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #8
  br label %549

142:                                              ; preds = %131
  %143 = landingpad { ptr, i32 }
          cleanup
  br label %149

144:                                              ; preds = %136, %134, %132
  %145 = landingpad { ptr, i32 }
          cleanup
  br label %148

146:                                              ; preds = %138
  %147 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #8
  br label %148

148:                                              ; preds = %146, %144
  %.pn161 = phi { ptr, i32 } [ %147, %146 ], [ %145, %144 ]
  call void @_ZN7Logging13LoggerMessageD1Ev(ptr noundef nonnull align 8 dereferenceable(161) %13) #8
  br label %149

149:                                              ; preds = %148, %142
  %.pn161.pn = phi { ptr, i32 } [ %.pn161, %148 ], [ %143, %142 ]
  call void @llvm.lifetime.end.p0(i64 432, ptr nonnull %13) #8
  br label %271

150:                                              ; preds = %._crit_edge
  call void @llvm.lifetime.start.p0(i64 432, ptr nonnull %15) #8
  invoke void @_ZNK7Logging9LoggerRefclENS_5LevelERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%"class.Logging::LoggerMessage") align 8 %15, ptr noundef nonnull align 8 dereferenceable(40) %116, i32 noundef 2, ptr noundef nonnull align 8 dereferenceable(32) @_ZN7Logging7DEFAULTB5cxx11E)
          to label %151 unwind label %160

151:                                              ; preds = %150
  %152 = invoke noundef nonnull align 8 dereferenceable(161) ptr @_ZStlsIN7Logging13LoggerMessageEA42_cEOT_S4_RKT0_(ptr noundef nonnull align 8 dereferenceable(161) %15, ptr noundef nonnull align 1 dereferenceable(42) @.str.58)
          to label %153 unwind label %162

153:                                              ; preds = %151
  %154 = invoke noundef nonnull align 8 dereferenceable(161) ptr @_ZStlsIN7Logging13LoggerMessageEmEOT_S3_RKT0_(ptr noundef nonnull align 8 dereferenceable(161) %152, ptr noundef nonnull align 8 dereferenceable(8) %8)
          to label %155 unwind label %162

155:                                              ; preds = %153
  call void @_ZN7Logging13LoggerMessageD1Ev(ptr noundef nonnull align 8 dereferenceable(161) %15) #8
  call void @llvm.lifetime.end.p0(i64 432, ptr nonnull %15) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %16) #8
  store i64 0, ptr %16, align 8, !tbaa !44
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %17) #8
  store i64 1, ptr %17, align 8, !tbaa !44
  %156 = getelementptr inbounds i8, ptr %18, i64 8
  %157 = getelementptr inbounds i8, ptr %18, i64 16
  br label %158

158:                                              ; preds = %155, %226
  %159 = call noundef zeroext i1 @_ZN6CryptoeqERKNS_4HashES2_(ptr noundef nonnull align 1 dereferenceable(32) %10, ptr noundef nonnull align 1 dereferenceable(32) @_ZN7DynexCNL9NULL_HASHE)
  br i1 %159, label %._crit_edge253, label %165

._crit_edge253:                                   ; preds = %158
  %.pre = load i64, ptr %17, align 8, !tbaa !44
  br label %split

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

162:                                              ; preds = %153, %151
  %163 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7Logging13LoggerMessageD1Ev(ptr noundef nonnull align 8 dereferenceable(161) %15) #8
  br label %164

164:                                              ; preds = %162, %160
  %.pn145 = phi { ptr, i32 } [ %163, %162 ], [ %161, %160 ]
  call void @llvm.lifetime.end.p0(i64 432, ptr nonnull %15) #8
  br label %271

165:                                              ; preds = %158
  call void @llvm.lifetime.start.p0(i64 384, ptr nonnull %18) #8
  call void @_ZN7DynexCN5BlockC2Ev(ptr noundef nonnull align 8 dereferenceable(384) %18) #8
  %166 = invoke noundef zeroext i1 @_ZN7DynexCN10Blockchain14getBlockByHashERKN6Crypto4HashERNS_5BlockE(ptr noundef nonnull align 8 dereferenceable(2636) %0, ptr noundef nonnull align 1 dereferenceable(32) %10, ptr noundef nonnull align 8 dereferenceable(384) %18)
          to label %167 unwind label %179

167:                                              ; preds = %165
  %168 = load i64, ptr %156, align 8, !tbaa !45
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(32) %10, ptr noundef nonnull align 8 dereferenceable(32) %157, i64 32, i1 false), !tbaa.struct !46
  %.not147 = icmp ult i64 %168, %112
  br i1 %.not147, label %186, label %169

169:                                              ; preds = %167
  call void @llvm.lifetime.start.p0(i64 432, ptr nonnull %19) #8
  invoke void @_ZNK7Logging9LoggerRefclENS_5LevelERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%"class.Logging::LoggerMessage") align 8 %19, ptr noundef nonnull align 8 dereferenceable(40) %116, i32 noundef 3, ptr noundef nonnull align 8 dereferenceable(32) @_ZN7Logging7DEFAULTB5cxx11E)
          to label %170 unwind label %181

170:                                              ; preds = %169
  %171 = invoke noundef nonnull align 8 dereferenceable(161) ptr @_ZStlsIN7Logging13LoggerMessageEA25_cEOT_S4_RKT0_(ptr noundef nonnull align 8 dereferenceable(161) %19, ptr noundef nonnull align 1 dereferenceable(25) @.str.59)
          to label %172 unwind label %183

172:                                              ; preds = %170
  %173 = invoke noundef nonnull align 8 dereferenceable(161) ptr @_ZStlsIN7Logging13LoggerMessageEmEOT_S3_RKT0_(ptr noundef nonnull align 8 dereferenceable(161) %171, ptr noundef nonnull align 8 dereferenceable(8) %17)
          to label %174 unwind label %183

174:                                              ; preds = %172
  %175 = invoke noundef nonnull align 8 dereferenceable(161) ptr @_ZStlsIN7Logging13LoggerMessageEA42_cEOT_S4_RKT0_(ptr noundef nonnull align 8 dereferenceable(161) %173, ptr noundef nonnull align 1 dereferenceable(42) @.str.60)
          to label %176 unwind label %183

176:                                              ; preds = %174
  call void @_ZN7Logging13LoggerMessageD1Ev(ptr noundef nonnull align 8 dereferenceable(161) %19) #8
  call void @llvm.lifetime.end.p0(i64 432, ptr nonnull %19) #8
  %177 = load i64, ptr %16, align 8, !tbaa !44
  %178 = add i64 %177, 1
  store i64 %178, ptr %16, align 8, !tbaa !44
  br label %226

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

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

183:                                              ; preds = %174, %172, %170
  %184 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7Logging13LoggerMessageD1Ev(ptr noundef nonnull align 8 dereferenceable(161) %19) #8
  br label %185

185:                                              ; preds = %183, %181
  %.pn152 = phi { ptr, i32 } [ %184, %183 ], [ %182, %181 ]
  call void @llvm.lifetime.end.p0(i64 432, ptr nonnull %19) #8
  br label %230

186:                                              ; preds = %167
  %187 = sub i64 %112, %168
  %188 = uitofp i64 %187 to double
  %189 = fdiv double %188, 1.200000e+02
  %190 = load i64, ptr %8, align 8, !tbaa !44
  %191 = load i64, ptr %17, align 8, !tbaa !44
  %192 = add i64 %191, %190
  %193 = call noundef double @_ZL15calc_poisson_lndm(double noundef %189, i64 noundef %192)
  %194 = fcmp olt double %193, -7.500000e+01
  br i1 %194, label %195, label %226

195:                                              ; preds = %186
  call void @llvm.lifetime.start.p0(i64 432, ptr nonnull %20) #8
  invoke void @_ZNK7Logging9LoggerRefclENS_5LevelERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%"class.Logging::LoggerMessage") align 8 %20, ptr noundef nonnull align 8 dereferenceable(40) %116, i32 noundef 3, ptr noundef nonnull align 8 dereferenceable(32) @_ZN7Logging7DEFAULTB5cxx11E)
          to label %196 unwind label %215

196:                                              ; preds = %195
  %197 = invoke noundef nonnull align 8 dereferenceable(161) ptr @_ZStlsIN7Logging13LoggerMessageEA24_cEOT_S4_RKT0_(ptr noundef nonnull align 8 dereferenceable(161) %20, ptr noundef nonnull align 1 dereferenceable(24) @.str.61)
          to label %198 unwind label %217

198:                                              ; preds = %196
  %199 = invoke noundef nonnull align 8 dereferenceable(161) ptr @_ZStlsIN7Logging13LoggerMessageEmEOT_S3_RKT0_(ptr noundef nonnull align 8 dereferenceable(161) %197, ptr noundef nonnull align 8 dereferenceable(8) %17)
          to label %200 unwind label %217

200:                                              ; preds = %198
  %201 = invoke noundef nonnull align 8 dereferenceable(161) ptr @_ZStlsIN7Logging13LoggerMessageEA19_cEOT_S4_RKT0_(ptr noundef nonnull align 8 dereferenceable(161) %199, ptr noundef nonnull align 1 dereferenceable(19) @.str.62)
          to label %202 unwind label %217

202:                                              ; preds = %200
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %21) #8
  %203 = sub i64 %112, %168
  store i64 %203, ptr %21, align 8, !tbaa !44
  %204 = invoke noundef nonnull align 8 dereferenceable(161) ptr @_ZStlsIN7Logging13LoggerMessageEmEOT_S3_RKT0_(ptr noundef nonnull align 8 dereferenceable(161) %201, ptr noundef nonnull align 8 dereferenceable(8) %21)
          to label %205 unwind label %219

205:                                              ; preds = %202
  %206 = invoke noundef nonnull align 8 dereferenceable(161) ptr @_ZStlsIN7Logging13LoggerMessageEA8_cEOT_S4_RKT0_(ptr noundef nonnull align 8 dereferenceable(161) %204, ptr noundef nonnull align 1 dereferenceable(8) @.str.63)
          to label %207 unwind label %219

207:                                              ; preds = %205
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %22) #8
  %208 = load i64, ptr %8, align 8, !tbaa !44
  %209 = load i64, ptr %17, align 8, !tbaa !44
  %210 = add i64 %209, %208
  store i64 %210, ptr %22, align 8, !tbaa !44
  %211 = invoke noundef nonnull align 8 dereferenceable(161) ptr @_ZStlsIN7Logging13LoggerMessageEmEOT_S3_RKT0_(ptr noundef nonnull align 8 dereferenceable(161) %206, ptr noundef nonnull align 8 dereferenceable(8) %22)
          to label %212 unwind label %221

212:                                              ; preds = %207
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #8
  call void @_ZN7Logging13LoggerMessageD1Ev(ptr noundef nonnull align 8 dereferenceable(161) %20) #8
  call void @llvm.lifetime.end.p0(i64 432, ptr nonnull %20) #8
  %213 = load i64, ptr %16, align 8, !tbaa !44
  %214 = add i64 %213, 1
  store i64 %214, ptr %16, align 8, !tbaa !44
  br label %226

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

217:                                              ; preds = %200, %198, %196
  %218 = landingpad { ptr, i32 }
          cleanup
  br label %224

219:                                              ; preds = %205, %202
  %220 = landingpad { ptr, i32 }
          cleanup
  br label %223

221:                                              ; preds = %207
  %222 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #8
  br label %223

223:                                              ; preds = %221, %219
  %.pn148 = phi { ptr, i32 } [ %222, %221 ], [ %220, %219 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #8
  br label %224

224:                                              ; preds = %223, %217
  %.pn148.pn = phi { ptr, i32 } [ %.pn148, %223 ], [ %218, %217 ]
  call void @_ZN7Logging13LoggerMessageD1Ev(ptr noundef nonnull align 8 dereferenceable(161) %20) #8
  br label %225

225:                                              ; preds = %224, %215
  %.pn148.pn.pn = phi { ptr, i32 } [ %.pn148.pn, %224 ], [ %216, %215 ]
  call void @llvm.lifetime.end.p0(i64 432, ptr nonnull %20) #8
  br label %230

226:                                              ; preds = %186, %212, %176
  call void @_ZN7DynexCN5BlockD2Ev(ptr noundef nonnull align 8 dereferenceable(384) %18) #8
  call void @llvm.lifetime.end.p0(i64 384, ptr nonnull %18) #8
  %227 = load i64, ptr %17, align 8, !tbaa !44
  %228 = add i64 %227, 1
  store i64 %228, ptr %17, align 8, !tbaa !44
  %229 = icmp ult i64 %228, 61
  br i1 %229, label %158, label %split, !llvm.loop !48

230:                                              ; preds = %185, %225, %179
  %.pn152.pn.pn = phi { ptr, i32 } [ %180, %179 ], [ %.pn152, %185 ], [ %.pn148.pn.pn, %225 ]
  call void @_ZN7DynexCN5BlockD2Ev(ptr noundef nonnull align 8 dereferenceable(384) %18) #8
  call void @llvm.lifetime.end.p0(i64 384, ptr nonnull %18) #8
  br label %270

split:                                            ; preds = %226, %._crit_edge253
  %231 = phi i64 [ %.pre, %._crit_edge253 ], [ %228, %226 ]
  %232 = add i64 %231, -1
  store i64 %232, ptr %17, align 8, !tbaa !44
  call void @llvm.lifetime.start.p0(i64 432, ptr nonnull %23) #8
  invoke void @_ZNK7Logging9LoggerRefclENS_5LevelERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%"class.Logging::LoggerMessage") align 8 %23, ptr noundef nonnull align 8 dereferenceable(40) %116, i32 noundef 3, ptr noundef nonnull align 8 dereferenceable(32) @_ZN7Logging7DEFAULTB5cxx11E)
          to label %233 unwind label %259

233:                                              ; preds = %split
  %234 = invoke noundef nonnull align 8 dereferenceable(161) ptr @_ZStlsIN7Logging13LoggerMessageEA22_cEOT_S4_RKT0_(ptr noundef nonnull align 8 dereferenceable(161) %23, ptr noundef nonnull align 1 dereferenceable(22) @.str.64)
          to label %235 unwind label %261

235:                                              ; preds = %233
  %236 = invoke noundef nonnull align 8 dereferenceable(161) ptr @_ZStlsIN7Logging13LoggerMessageEmEOT_S3_RKT0_(ptr noundef nonnull align 8 dereferenceable(161) %234, ptr noundef nonnull align 8 dereferenceable(8) %16)
          to label %237 unwind label %261

237:                                              ; preds = %235
  %238 = invoke noundef nonnull align 8 dereferenceable(161) ptr @_ZStlsIN7Logging13LoggerMessageEA15_cEOT_S4_RKT0_(ptr noundef nonnull align 8 dereferenceable(161) %236, ptr noundef nonnull align 1 dereferenceable(15) @.str.65)
          to label %239 unwind label %261

239:                                              ; preds = %237
  %240 = invoke noundef nonnull align 8 dereferenceable(161) ptr @_ZStlsIN7Logging13LoggerMessageEmEOT_S3_RKT0_(ptr noundef nonnull align 8 dereferenceable(161) %238, ptr noundef nonnull align 8 dereferenceable(8) %17)
          to label %241 unwind label %261

241:                                              ; preds = %239
  call void @_ZN7Logging13LoggerMessageD1Ev(ptr noundef nonnull align 8 dereferenceable(161) %23) #8
  call void @llvm.lifetime.end.p0(i64 432, ptr nonnull %23) #8
  %242 = load i64, ptr %16, align 8, !tbaa !44
  %243 = load i64, ptr %17, align 8, !tbaa !44
  %244 = lshr i64 %243, 1
  %245 = icmp ugt i64 %242, %244
  br i1 %245, label %246, label %.thread214

.thread214:                                       ; preds = %241
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %10) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #8
  br label %272

246:                                              ; preds = %241
  call void @llvm.lifetime.start.p0(i64 432, ptr nonnull %24) #8
  invoke void @_ZNK7Logging9LoggerRefclENS_5LevelERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%"class.Logging::LoggerMessage") align 8 %24, ptr noundef nonnull align 8 dereferenceable(40) %116, i32 noundef 1, ptr noundef nonnull align 8 dereferenceable(32) @_ZN7Logging10BRIGHT_REDB5cxx11E)
          to label %247 unwind label %264

247:                                              ; preds = %246
  %248 = invoke noundef nonnull align 8 dereferenceable(161) ptr @_ZStlsIN7Logging13LoggerMessageEA72_cEOT_S4_RKT0_(ptr noundef nonnull align 8 dereferenceable(161) %24, ptr noundef nonnull align 1 dereferenceable(72) @.str.66)
          to label %249 unwind label %266

249:                                              ; preds = %247
  %250 = invoke noundef nonnull align 8 dereferenceable(161) ptr @_ZStlsIN7Logging13LoggerMessageEmEOT_S3_RKT0_(ptr noundef nonnull align 8 dereferenceable(161) %248, ptr noundef nonnull align 8 dereferenceable(8) %16)
          to label %251 unwind label %266

251:                                              ; preds = %249
  %252 = invoke noundef nonnull align 8 dereferenceable(161) ptr @_ZStlsIN7Logging13LoggerMessageEA15_cEOT_S4_RKT0_(ptr noundef nonnull align 8 dereferenceable(161) %250, ptr noundef nonnull align 1 dereferenceable(15) @.str.65)
          to label %253 unwind label %266

253:                                              ; preds = %251
  %254 = invoke noundef nonnull align 8 dereferenceable(161) ptr @_ZStlsIN7Logging13LoggerMessageEmEOT_S3_RKT0_(ptr noundef nonnull align 8 dereferenceable(161) %252, ptr noundef nonnull align 8 dereferenceable(8) %17)
          to label %255 unwind label %266

255:                                              ; preds = %253
  %256 = invoke noundef nonnull align 8 dereferenceable(161) ptr @_ZStlsIN7Logging13LoggerMessageEA18_cEOT_S4_RKT0_(ptr noundef nonnull align 8 dereferenceable(161) %254, ptr noundef nonnull align 1 dereferenceable(18) @.str.67)
          to label %257 unwind label %266

257:                                              ; preds = %255
  %258 = invoke noundef nonnull align 8 dereferenceable(161) ptr @_ZStlsIN7Logging13LoggerMessageEmEOT_S3_RKT0_(ptr noundef nonnull align 8 dereferenceable(161) %256, ptr noundef nonnull align 8 dereferenceable(8) %8)
          to label %269 unwind label %266

259:                                              ; preds = %split
  %260 = landingpad { ptr, i32 }
          cleanup
  br label %263

261:                                              ; preds = %239, %237, %235, %233
  %262 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7Logging13LoggerMessageD1Ev(ptr noundef nonnull align 8 dereferenceable(161) %23) #8
  br label %263

263:                                              ; preds = %261, %259
  %.pn156 = phi { ptr, i32 } [ %262, %261 ], [ %260, %259 ]
  call void @llvm.lifetime.end.p0(i64 432, ptr nonnull %23) #8
  br label %270

264:                                              ; preds = %246
  %265 = landingpad { ptr, i32 }
          cleanup
  br label %268

266:                                              ; preds = %257, %255, %253, %251, %249, %247
  %267 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7Logging13LoggerMessageD1Ev(ptr noundef nonnull align 8 dereferenceable(161) %24) #8
  br label %268

268:                                              ; preds = %266, %264
  %.pn158 = phi { ptr, i32 } [ %267, %266 ], [ %265, %264 ]
  call void @llvm.lifetime.end.p0(i64 432, ptr nonnull %24) #8
  br label %270

269:                                              ; preds = %257
  call void @_ZN7Logging13LoggerMessageD1Ev(ptr noundef nonnull align 8 dereferenceable(161) %24) #8
  call void @llvm.lifetime.end.p0(i64 432, ptr nonnull %24) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %10) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #8
  br label %549

270:                                              ; preds = %268, %263, %230
  %.pn158.pn = phi { ptr, i32 } [ %.pn158, %268 ], [ %.pn156, %263 ], [ %.pn152.pn.pn, %230 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #8
  br label %271

271:                                              ; preds = %270, %164, %149
  %.pn161.pn.pn = phi { ptr, i32 } [ %.pn161.pn, %149 ], [ %.pn158.pn, %270 ], [ %.pn145, %164 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %10) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #8
  br label %550

272:                                              ; preds = %.thread214, %97
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %25) #8
  call void @_ZNSt6vectorIN6Crypto4HashESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %25) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %26) #8
  call void @_ZNSt6vectorIN6Crypto4HashESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %26) #8
  %273 = call noundef i64 @_ZNK13SwappedVectorIN7DynexCN10Blockchain10BlockEntryEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(1184) %84)
  %.0139221 = add i64 %273, -1
  %.not165222 = icmp ult i64 %.0139221, %83
  br i1 %.not165222, label %._crit_edge226, label %.lr.ph225

.lr.ph225:                                        ; preds = %272
  %274 = getelementptr inbounds i8, ptr %27, i64 360
  br label %279

._crit_edge226:                                   ; preds = %291, %272
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %28) #8
  %275 = call ptr @_ZNSt7__cxx114listINSt8__detail14_Node_iteratorISt4pairIKN6Crypto4HashEN7DynexCN10Blockchain10BlockEntryEELb0ELb1EEESaISB_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %1) #8
  store ptr %275, ptr %28, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %29) #8
  %276 = call ptr @_ZNSt7__cxx114listINSt8__detail14_Node_iteratorISt4pairIKN6Crypto4HashEN7DynexCN10Blockchain10BlockEntryEELb0ELb1EEESaISB_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %1) #8
  store ptr %276, ptr %29, align 8
  %277 = call noundef zeroext i1 @_ZStneRKSt14_List_iteratorINSt8__detail14_Node_iteratorISt4pairIKN6Crypto4HashEN7DynexCN10Blockchain10BlockEntryEELb0ELb1EEEESD_(ptr noundef nonnull align 8 dereferenceable(8) %28, ptr noundef nonnull align 8 dereferenceable(8) %29) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %29) #8
  br i1 %277, label %.lr.ph228, label %._crit_edge229

.lr.ph228:                                        ; preds = %._crit_edge226
  %278 = getelementptr inbounds i8, ptr %31, i64 360
  br label %301

279:                                              ; preds = %.lr.ph225, %291
  %.0139223 = phi i64 [ %.0139221, %.lr.ph225 ], [ %.0139, %291 ]
  call void @llvm.lifetime.start.p0(i64 384, ptr nonnull %27) #8
  %280 = invoke noundef nonnull align 8 dereferenceable(440) ptr @_ZN13SwappedVectorIN7DynexCN10Blockchain10BlockEntryEEixEm(ptr noundef nonnull align 8 dereferenceable(1184) %84, i64 noundef %.0139223)
          to label %281 unwind label %293

281:                                              ; preds = %279
  invoke void @_ZN7DynexCN5BlockC2ERKS0_(ptr noundef nonnull align 8 dereferenceable(384) %27, ptr noundef nonnull align 8 dereferenceable(384) %280)
          to label %282 unwind label %293

282:                                              ; preds = %281
  %283 = call ptr @_ZNSt6vectorIN6Crypto4HashESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %274) #8
  %284 = call ptr @_ZNSt6vectorIN6Crypto4HashESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %274) #8
  %285 = call ptr @_ZNSt6vectorIN6Crypto4HashESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %25) #8
  %286 = invoke { ptr, ptr } @_ZSt8inserterISt6vectorIN6Crypto4HashESaIS2_EEESt15insert_iteratorIT_ERS6_NS6_8iteratorE(ptr noundef nonnull align 8 dereferenceable(24) %25, ptr %285)
          to label %287 unwind label %295

287:                                              ; preds = %282
  %288 = extractvalue { ptr, ptr } %286, 0
  %289 = extractvalue { ptr, ptr } %286, 1
  %290 = invoke { ptr, ptr } @_ZSt4copyIN9__gnu_cxx17__normal_iteratorIPN6Crypto4HashESt6vectorIS3_SaIS3_EEEESt15insert_iteratorIS7_EET0_T_SC_SB_(ptr %283, ptr %284, ptr %288, ptr %289)
          to label %291 unwind label %295

291:                                              ; preds = %287
  call void @_ZN7DynexCN5BlockD2Ev(ptr noundef nonnull align 8 dereferenceable(384) %27) #8
  call void @llvm.lifetime.end.p0(i64 384, ptr nonnull %27) #8
  %.0139 = add i64 %.0139223, -1
  %292 = load i64, ptr %6, align 8, !tbaa !44
  %.not165 = icmp ult i64 %.0139, %292
  br i1 %.not165, label %._crit_edge226, label %279, !llvm.loop !50

293:                                              ; preds = %281, %279
  %294 = landingpad { ptr, i32 }
          cleanup
  br label %297

295:                                              ; preds = %287, %282
  %296 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7DynexCN5BlockD2Ev(ptr noundef nonnull align 8 dereferenceable(384) %27) #8
  br label %297

297:                                              ; preds = %295, %293
  %.pn199 = phi { ptr, i32 } [ %296, %295 ], [ %294, %293 ]
  call void @llvm.lifetime.end.p0(i64 384, ptr nonnull %27) #8
  br label %548

._crit_edge229:                                   ; preds = %315, %._crit_edge226
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %28) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %32) #8
  %298 = call ptr @_ZNSt6vectorIN6Crypto4HashESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %25) #8
  store ptr %298, ptr %32, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %33) #8
  %299 = call ptr @_ZNSt6vectorIN6Crypto4HashESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %25) #8
  store ptr %299, ptr %33, align 8
  %300 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN6Crypto4HashESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %32, ptr noundef nonnull align 8 dereferenceable(8) %33) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %33) #8
  br i1 %300, label %.lr.ph231, label %._crit_edge232

301:                                              ; preds = %.lr.ph228, %315
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %30) #8
  %302 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt14_List_iteratorINSt8__detail14_Node_iteratorISt4pairIKN6Crypto4HashEN7DynexCN10Blockchain10BlockEntryEELb0ELb1EEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %28) #8
  %303 = load i64, ptr %302, align 8
  store i64 %303, ptr %30, align 8
  call void @llvm.lifetime.start.p0(i64 384, ptr nonnull %31) #8
  %304 = call noundef ptr @_ZNKSt8__detail14_Node_iteratorISt4pairIKN6Crypto4HashEN7DynexCN10Blockchain10BlockEntryEELb0ELb1EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %30) #8
  %305 = getelementptr inbounds i8, ptr %304, i64 32
  invoke void @_ZN7DynexCN5BlockC2ERKS0_(ptr noundef nonnull align 8 dereferenceable(384) %31, ptr noundef nonnull align 8 dereferenceable(384) %305)
          to label %306 unwind label %319

306:                                              ; preds = %301
  %307 = call ptr @_ZNSt6vectorIN6Crypto4HashESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %278) #8
  %308 = call ptr @_ZNSt6vectorIN6Crypto4HashESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %278) #8
  %309 = call ptr @_ZNSt6vectorIN6Crypto4HashESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %26) #8
  %310 = invoke { ptr, ptr } @_ZSt8inserterISt6vectorIN6Crypto4HashESaIS2_EEESt15insert_iteratorIT_ERS6_NS6_8iteratorE(ptr noundef nonnull align 8 dereferenceable(24) %26, ptr %309)
          to label %311 unwind label %321

311:                                              ; preds = %306
  %312 = extractvalue { ptr, ptr } %310, 0
  %313 = extractvalue { ptr, ptr } %310, 1
  %314 = invoke { ptr, ptr } @_ZSt4copyIN9__gnu_cxx17__normal_iteratorIPN6Crypto4HashESt6vectorIS3_SaIS3_EEEESt15insert_iteratorIS7_EET0_T_SC_SB_(ptr %307, ptr %308, ptr %312, ptr %313)
          to label %315 unwind label %321

315:                                              ; preds = %311
  call void @_ZN7DynexCN5BlockD2Ev(ptr noundef nonnull align 8 dereferenceable(384) %31) #8
  call void @llvm.lifetime.end.p0(i64 384, ptr nonnull %31) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %30) #8
  %316 = call ptr @_ZNSt14_List_iteratorINSt8__detail14_Node_iteratorISt4pairIKN6Crypto4HashEN7DynexCN10Blockchain10BlockEntryEELb0ELb1EEEEppEi(ptr noundef nonnull align 8 dereferenceable(8) %28, i32 noundef 0) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %29) #8
  %317 = call ptr @_ZNSt7__cxx114listINSt8__detail14_Node_iteratorISt4pairIKN6Crypto4HashEN7DynexCN10Blockchain10BlockEntryEELb0ELb1EEESaISB_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %1) #8
  store ptr %317, ptr %29, align 8
  %318 = call noundef zeroext i1 @_ZStneRKSt14_List_iteratorINSt8__detail14_Node_iteratorISt4pairIKN6Crypto4HashEN7DynexCN10Blockchain10BlockEntryEELb0ELb1EEEESD_(ptr noundef nonnull align 8 dereferenceable(8) %28, ptr noundef nonnull align 8 dereferenceable(8) %29) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %29) #8
  br i1 %318, label %301, label %._crit_edge229, !llvm.loop !51

319:                                              ; preds = %301
  %320 = landingpad { ptr, i32 }
          cleanup
  br label %323

321:                                              ; preds = %311, %306
  %322 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7DynexCN5BlockD2Ev(ptr noundef nonnull align 8 dereferenceable(384) %31) #8
  br label %323

323:                                              ; preds = %321, %319
  %.pn197 = phi { ptr, i32 } [ %322, %321 ], [ %320, %319 ]
  call void @llvm.lifetime.end.p0(i64 384, ptr nonnull %31) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %30) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %28) #8
  br label %548

.lr.ph231:                                        ; preds = %._crit_edge229, %357
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %34) #8
  %324 = call noundef nonnull align 1 dereferenceable(32) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN6Crypto4HashESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %32) #8
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(32) %34, ptr noundef nonnull align 1 dereferenceable(32) %324, i64 32, i1 false), !tbaa.struct !46
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %35) #8
  %325 = call ptr @_ZNSt6vectorIN6Crypto4HashESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %26) #8
  %326 = call ptr @_ZNSt6vectorIN6Crypto4HashESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %26) #8
  %327 = invoke ptr @_ZSt4findIN9__gnu_cxx17__normal_iteratorIPN6Crypto4HashESt6vectorIS3_SaIS3_EEEES3_ET_S9_S9_RKT0_(ptr %325, ptr %326, ptr noundef nonnull align 1 dereferenceable(32) %34)
          to label %328 unwind label %342

328:                                              ; preds = %.lr.ph231
  store ptr %327, ptr %35, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %36) #8
  %329 = call ptr @_ZNSt6vectorIN6Crypto4HashESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %26) #8
  store ptr %329, ptr %36, align 8
  %330 = call noundef zeroext i1 @_ZN9__gnu_cxxeqIPN6Crypto4HashESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %35, ptr noundef nonnull align 8 dereferenceable(8) %36) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %36) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %35) #8
  br i1 %330, label %331, label %357

331:                                              ; preds = %328
  call void @llvm.lifetime.start.p0(i64 432, ptr nonnull %37) #8
  %332 = getelementptr inbounds i8, ptr %0, i64 2592
  invoke void @_ZNK7Logging9LoggerRefclENS_5LevelERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%"class.Logging::LoggerMessage") align 8 %37, ptr noundef nonnull align 8 dereferenceable(40) %332, i32 noundef 1, ptr noundef nonnull align 8 dereferenceable(32) @_ZN7Logging10BRIGHT_REDB5cxx11E)
          to label %333 unwind label %344

333:                                              ; preds = %331
  %334 = invoke noundef nonnull align 8 dereferenceable(161) ptr @_ZStlsIN7Logging13LoggerMessageEA70_cEOT_S4_RKT0_(ptr noundef nonnull align 8 dereferenceable(161) %37, ptr noundef nonnull align 1 dereferenceable(70) @.str.68)
          to label %335 unwind label %346

335:                                              ; preds = %333
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %38) #8
  invoke void @_ZN6Common8podToHexIN6Crypto4HashEEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKT_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %38, ptr noundef nonnull align 1 dereferenceable(32) %34)
          to label %336 unwind label %348

336:                                              ; preds = %335
  %337 = invoke noundef nonnull align 8 dereferenceable(161) ptr @_ZStlsIN7Logging13LoggerMessageENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEOT_S9_RKT0_(ptr noundef nonnull align 8 dereferenceable(161) %334, ptr noundef nonnull align 8 dereferenceable(32) %38)
          to label %338 unwind label %350

338:                                              ; preds = %336
  %339 = invoke noundef nonnull align 8 dereferenceable(161) ptr @_ZStlsIN7Logging13LoggerMessageEA27_cEOT_S4_RKT0_(ptr noundef nonnull align 8 dereferenceable(161) %337, ptr noundef nonnull align 1 dereferenceable(27) @.str.69)
          to label %340 unwind label %350

340:                                              ; preds = %338
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %38) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %38) #8
  call void @_ZN7Logging13LoggerMessageD1Ev(ptr noundef nonnull align 8 dereferenceable(161) %37) #8
  call void @llvm.lifetime.end.p0(i64 432, ptr nonnull %37) #8
  call void @_ZNSt6vectorIN6Crypto4HashESaIS1_EE5clearEv(ptr noundef nonnull align 8 dereferenceable(24) %25) #8
  invoke void @_ZNSt6vectorIN6Crypto4HashESaIS1_EE13shrink_to_fitEv(ptr noundef nonnull align 8 dereferenceable(24) %25)
          to label %341 unwind label %355

341:                                              ; preds = %340
  call void @_ZNSt6vectorIN6Crypto4HashESaIS1_EE5clearEv(ptr noundef nonnull align 8 dereferenceable(24) %26) #8
  invoke void @_ZNSt6vectorIN6Crypto4HashESaIS1_EE13shrink_to_fitEv(ptr noundef nonnull align 8 dereferenceable(24) %26)
          to label %362 unwind label %355

342:                                              ; preds = %.lr.ph231
  %343 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %35) #8
  br label %361

344:                                              ; preds = %331
  %345 = landingpad { ptr, i32 }
          cleanup
  br label %354

346:                                              ; preds = %333
  %347 = landingpad { ptr, i32 }
          cleanup
  br label %353

348:                                              ; preds = %335
  %349 = landingpad { ptr, i32 }
          cleanup
  br label %352

350:                                              ; preds = %338, %336
  %351 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %38) #8
  br label %352

352:                                              ; preds = %350, %348
  %.pn166 = phi { ptr, i32 } [ %351, %350 ], [ %349, %348 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %38) #8
  br label %353

353:                                              ; preds = %352, %346
  %.pn166.pn = phi { ptr, i32 } [ %.pn166, %352 ], [ %347, %346 ]
  call void @_ZN7Logging13LoggerMessageD1Ev(ptr noundef nonnull align 8 dereferenceable(161) %37) #8
  br label %354

354:                                              ; preds = %353, %344
  %.pn166.pn.pn = phi { ptr, i32 } [ %.pn166.pn, %353 ], [ %345, %344 ]
  call void @llvm.lifetime.end.p0(i64 432, ptr nonnull %37) #8
  br label %361

355:                                              ; preds = %341, %340
  %356 = landingpad { ptr, i32 }
          cleanup
  br label %361

357:                                              ; preds = %328
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %34) #8
  %358 = call ptr @_ZN9__gnu_cxx17__normal_iteratorIPN6Crypto4HashESt6vectorIS2_SaIS2_EEEppEi(ptr noundef nonnull align 8 dereferenceable(8) %32, i32 noundef 0) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %33) #8
  %359 = call ptr @_ZNSt6vectorIN6Crypto4HashESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %25) #8
  store ptr %359, ptr %33, align 8
  %360 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN6Crypto4HashESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %32, ptr noundef nonnull align 8 dereferenceable(8) %33) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %33) #8
  br i1 %360, label %.lr.ph231, label %._crit_edge232, !llvm.loop !52

361:                                              ; preds = %355, %354, %342
  %.pn170 = phi { ptr, i32 } [ %356, %355 ], [ %.pn166.pn.pn, %354 ], [ %343, %342 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %34) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %32) #8
  br label %548

362:                                              ; preds = %341
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %34) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %32) #8
  br label %547

._crit_edge232:                                   ; preds = %357, %._crit_edge229
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %32) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %39) #8
  call void @_ZNSt7__cxx114listIN7DynexCN5BlockESaIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %39) #8
  %363 = call noundef i64 @_ZNK13SwappedVectorIN7DynexCN10Blockchain10BlockEntryEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(1184) %84)
  %.0140233 = add i64 %363, -1
  %364 = load i64, ptr %6, align 8, !tbaa !44
  %.not172234 = icmp ult i64 %.0140233, %364
  br i1 %.not172234, label %._crit_edge238, label %.lr.ph237

._crit_edge238:                                   ; preds = %372, %._crit_edge232
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %41) #8
  %365 = call ptr @_ZNSt7__cxx114listINSt8__detail14_Node_iteratorISt4pairIKN6Crypto4HashEN7DynexCN10Blockchain10BlockEntryEELb0ELb1EEESaISB_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %1) #8
  store ptr %365, ptr %41, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %42) #8
  %366 = call ptr @_ZNSt7__cxx114listINSt8__detail14_Node_iteratorISt4pairIKN6Crypto4HashEN7DynexCN10Blockchain10BlockEntryEELb0ELb1EEESaISB_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %1) #8
  store ptr %366, ptr %42, align 8
  %367 = call noundef zeroext i1 @_ZStneRKSt14_List_iteratorINSt8__detail14_Node_iteratorISt4pairIKN6Crypto4HashEN7DynexCN10Blockchain10BlockEntryEELb0ELb1EEEESD_(ptr noundef nonnull align 8 dereferenceable(8) %41, ptr noundef nonnull align 8 dereferenceable(8) %42) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %42) #8
  br i1 %367, label %.lr.ph240, label %.loopexit254

.lr.ph237:                                        ; preds = %._crit_edge232, %372
  %.0140235 = phi i64 [ %.0140, %372 ], [ %.0140233, %._crit_edge232 ]
  call void @llvm.lifetime.start.p0(i64 384, ptr nonnull %40) #8
  %368 = invoke noundef nonnull align 8 dereferenceable(440) ptr @_ZN13SwappedVectorIN7DynexCN10Blockchain10BlockEntryEEixEm(ptr noundef nonnull align 8 dereferenceable(1184) %84, i64 noundef %.0140235)
          to label %369 unwind label %373

369:                                              ; preds = %.lr.ph237
  invoke void @_ZN7DynexCN5BlockC2ERKS0_(ptr noundef nonnull align 8 dereferenceable(384) %40, ptr noundef nonnull align 8 dereferenceable(384) %368)
          to label %370 unwind label %373

370:                                              ; preds = %369
  invoke void @_ZN7DynexCN10Blockchain8popBlockEv(ptr noundef nonnull align 8 dereferenceable(2636) %0)
          to label %371 unwind label %375

371:                                              ; preds = %370
  invoke void @_ZNSt7__cxx114listIN7DynexCN5BlockESaIS2_EE10push_frontERKS2_(ptr noundef nonnull align 8 dereferenceable(24) %39, ptr noundef nonnull align 8 dereferenceable(384) %40)
          to label %372 unwind label %375

372:                                              ; preds = %371
  call void @_ZN7DynexCN5BlockD2Ev(ptr noundef nonnull align 8 dereferenceable(384) %40) #8
  call void @llvm.lifetime.end.p0(i64 384, ptr nonnull %40) #8
  %.0140 = add i64 %.0140235, -1
  %.not172 = icmp ult i64 %.0140, %364
  br i1 %.not172, label %._crit_edge238, label %.lr.ph237, !llvm.loop !53

373:                                              ; preds = %369, %.lr.ph237
  %374 = landingpad { ptr, i32 }
          cleanup
  br label %377

375:                                              ; preds = %371, %370
  %376 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7DynexCN5BlockD2Ev(ptr noundef nonnull align 8 dereferenceable(384) %40) #8
  br label %377

377:                                              ; preds = %375, %373
  %.pn194 = phi { ptr, i32 } [ %376, %375 ], [ %374, %373 ]
  call void @llvm.lifetime.end.p0(i64 384, ptr nonnull %40) #8
  br label %546

.lr.ph240:                                        ; preds = %._crit_edge238, %445
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %43) #8
  %378 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt14_List_iteratorINSt8__detail14_Node_iteratorISt4pairIKN6Crypto4HashEN7DynexCN10Blockchain10BlockEntryEELb0ELb1EEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %41) #8
  %379 = load i64, ptr %378, align 8
  store i64 %379, ptr %43, align 8
  call void @llvm.lifetime.start.p0(i64 5, ptr nonnull %44) #8
  call void @llvm.lifetime.start.p0(i64 5, ptr nonnull %45) #8
  invoke void @_ZN5boost17value_initializedIN7DynexCN26block_verification_contextEEC2Ev(ptr noundef nonnull align 1 dereferenceable(5) %45)
          to label %380 unwind label %417

380:                                              ; preds = %.lr.ph240
  %381 = invoke noundef nonnull align 1 dereferenceable(5) ptr @_ZN5boost17value_initializedIN7DynexCN26block_verification_contextEEcvRS2_Ev(ptr noundef nonnull align 1 dereferenceable(5) %45)
          to label %382 unwind label %417

382:                                              ; preds = %380
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(5) %44, ptr noundef nonnull align 1 dereferenceable(5) %381, i64 5, i1 false), !tbaa.struct !54
  call void @llvm.lifetime.end.p0(i64 5, ptr nonnull %45) #8
  %383 = call noundef ptr @_ZNKSt8__detail14_Node_iteratorISt4pairIKN6Crypto4HashEN7DynexCN10Blockchain10BlockEntryEELb0ELb1EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %43) #8
  %384 = getelementptr inbounds i8, ptr %383, i64 32
  %385 = invoke noundef zeroext i1 @_ZN7DynexCN10Blockchain9pushBlockERKNS_5BlockERNS_26block_verification_contextE(ptr noundef nonnull align 8 dereferenceable(2636) %0, ptr noundef nonnull align 8 dereferenceable(384) %384, ptr noundef nonnull align 1 dereferenceable(5) %44)
          to label %386 unwind label %.loopexit217

386:                                              ; preds = %382
  br i1 %385, label %387, label %390

387:                                              ; preds = %386
  %388 = load i8, ptr %44, align 1, !tbaa !57, !range !59, !noundef !60
  %389 = trunc nuw i8 %388 to i1
  br i1 %389, label %445, label %390

390:                                              ; preds = %387, %386
  call void @llvm.lifetime.start.p0(i64 432, ptr nonnull %46) #8
  %391 = getelementptr inbounds i8, ptr %0, i64 2592
  invoke void @_ZNK7Logging9LoggerRefclENS_5LevelERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%"class.Logging::LoggerMessage") align 8 %46, ptr noundef nonnull align 8 dereferenceable(40) %391, i32 noundef 3, ptr noundef nonnull align 8 dereferenceable(32) @_ZN7Logging12BRIGHT_WHITEB5cxx11E)
          to label %392 unwind label %419

392:                                              ; preds = %390
  %393 = invoke noundef nonnull align 8 dereferenceable(161) ptr @_ZStlsIN7Logging13LoggerMessageEA43_cEOT_S4_RKT0_(ptr noundef nonnull align 8 dereferenceable(161) %46, ptr noundef nonnull align 1 dereferenceable(43) @.str.70)
          to label %394 unwind label %421

394:                                              ; preds = %392
  call void @_ZN7Logging13LoggerMessageD1Ev(ptr noundef nonnull align 8 dereferenceable(161) %46) #8
  call void @llvm.lifetime.end.p0(i64 432, ptr nonnull %46) #8
  %395 = invoke noundef zeroext i1 @_ZN7DynexCN10Blockchain29rollback_blockchain_switchingERNSt7__cxx114listINS_5BlockESaIS3_EEEm(ptr noundef nonnull align 8 dereferenceable(2636) %0, ptr noundef nonnull align 8 dereferenceable(24) %39, i64 noundef %364)
          to label %396 unwind label %.loopexit.split-lp

396:                                              ; preds = %394
  call void @llvm.lifetime.start.p0(i64 432, ptr nonnull %47) #8
  invoke void @_ZNK7Logging9LoggerRefclENS_5LevelERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%"class.Logging::LoggerMessage") align 8 %47, ptr noundef nonnull align 8 dereferenceable(40) %391, i32 noundef 3, ptr noundef nonnull align 8 dereferenceable(32) @_ZN7Logging12BRIGHT_WHITEB5cxx11E)
          to label %397 unwind label %424

397:                                              ; preds = %396
  %398 = invoke noundef nonnull align 8 dereferenceable(161) ptr @_ZStlsIN7Logging13LoggerMessageEA86_cEOT_S4_RKT0_(ptr noundef nonnull align 8 dereferenceable(161) %47, ptr noundef nonnull align 1 dereferenceable(86) @.str.71)
          to label %399 unwind label %426

399:                                              ; preds = %397
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %48) #8
  %400 = call noundef ptr @_ZNKSt8__detail14_Node_iteratorISt4pairIKN6Crypto4HashEN7DynexCN10Blockchain10BlockEntryEELb0ELb1EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %43) #8
  %401 = getelementptr inbounds i8, ptr %400, i64 32
  invoke void @_ZN7DynexCN14get_block_hashERKNS_5BlockE(ptr dead_on_unwind nonnull writable sret(%"struct.Crypto::Hash") align 1 %48, ptr noundef nonnull align 8 dereferenceable(384) %401)
          to label %402 unwind label %428

402:                                              ; preds = %399
  %403 = invoke noundef nonnull align 8 dereferenceable(161) ptr @_ZStlsIN7Logging13LoggerMessageEN6Crypto4HashEEOT_S5_RKT0_(ptr noundef nonnull align 8 dereferenceable(161) %398, ptr noundef nonnull align 1 dereferenceable(32) %48)
          to label %404 unwind label %428

404:                                              ; preds = %402
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %48) #8
  call void @_ZN7Logging13LoggerMessageD1Ev(ptr noundef nonnull align 8 dereferenceable(161) %47) #8
  call void @llvm.lifetime.end.p0(i64 432, ptr nonnull %47) #8
  %405 = getelementptr inbounds i8, ptr %0, i64 2504
  %406 = call noundef ptr @_ZNKSt8__detail14_Node_iteratorISt4pairIKN6Crypto4HashEN7DynexCN10Blockchain10BlockEntryEELb0ELb1EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %43) #8
  %407 = getelementptr inbounds i8, ptr %406, i64 32
  %408 = invoke noundef zeroext i1 @_ZN7DynexCN17OrphanBlocksIndex6removeERKNS_5BlockE(ptr noundef nonnull align 8 dereferenceable(57) %405, ptr noundef nonnull align 8 dereferenceable(384) %407)
          to label %409 unwind label %.loopexit.split-lp

409:                                              ; preds = %404
  %410 = getelementptr inbounds i8, ptr %0, i64 304
  %.sroa.018.0.copyload = load ptr, ptr %43, align 8
  %411 = invoke ptr @_ZNSt13unordered_mapIN6Crypto4HashEN7DynexCN10Blockchain10BlockEntryESt4hashIS1_ESt8equal_toIS1_ESaISt4pairIKS1_S4_EEE5eraseENSt8__detail14_Node_iteratorISB_Lb0ELb1EEE(ptr noundef nonnull align 8 dereferenceable(56) %410, ptr %.sroa.018.0.copyload)
          to label %412 unwind label %.loopexit.split-lp

412:                                              ; preds = %409
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %49) #8
  %413 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt14_List_iteratorINSt8__detail14_Node_iteratorISt4pairIKN6Crypto4HashEN7DynexCN10Blockchain10BlockEntryEELb0ELb1EEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %41) #8
  %414 = load i64, ptr %413, align 8, !tbaa !61
  store i64 %414, ptr %49, align 8, !tbaa !61
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %50) #8
  %415 = call ptr @_ZNSt7__cxx114listINSt8__detail14_Node_iteratorISt4pairIKN6Crypto4HashEN7DynexCN10Blockchain10BlockEntryEELb0ELb1EEESaISB_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %1) #8
  store ptr %415, ptr %50, align 8
  %416 = call noundef zeroext i1 @_ZStneRKSt14_List_iteratorINSt8__detail14_Node_iteratorISt4pairIKN6Crypto4HashEN7DynexCN10Blockchain10BlockEntryEELb0ELb1EEEESD_(ptr noundef nonnull align 8 dereferenceable(8) %49, ptr noundef nonnull align 8 dereferenceable(8) %50) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %50) #8
  br i1 %416, label %.lr.ph242, label %.critedge207

.critedge207:                                     ; preds = %439, %412
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %49) #8
  call void @llvm.lifetime.end.p0(i64 5, ptr nonnull %44) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %43) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %41) #8
  br label %545

417:                                              ; preds = %380, %.lr.ph240
  %418 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 5, ptr nonnull %45) #8
  br label %449

.loopexit217:                                     ; preds = %382
  %lpad.loopexit = landingpad { ptr, i32 }
          cleanup
  br label %449

.loopexit.split-lp:                               ; preds = %394, %404, %409
  %lpad.loopexit.split-lp = landingpad { ptr, i32 }
          cleanup
  br label %449

419:                                              ; preds = %390
  %420 = landingpad { ptr, i32 }
          cleanup
  br label %423

421:                                              ; preds = %392
  %422 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7Logging13LoggerMessageD1Ev(ptr noundef nonnull align 8 dereferenceable(161) %46) #8
  br label %423

423:                                              ; preds = %421, %419
  %.pn173 = phi { ptr, i32 } [ %422, %421 ], [ %420, %419 ]
  call void @llvm.lifetime.end.p0(i64 432, ptr nonnull %46) #8
  br label %449

424:                                              ; preds = %396
  %425 = landingpad { ptr, i32 }
          cleanup
  br label %431

426:                                              ; preds = %397
  %427 = landingpad { ptr, i32 }
          cleanup
  br label %430

428:                                              ; preds = %402, %399
  %429 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %48) #8
  br label %430

430:                                              ; preds = %428, %426
  %.pn175 = phi { ptr, i32 } [ %429, %428 ], [ %427, %426 ]
  call void @_ZN7Logging13LoggerMessageD1Ev(ptr noundef nonnull align 8 dereferenceable(161) %47) #8
  br label %431

431:                                              ; preds = %430, %424
  %.pn175.pn = phi { ptr, i32 } [ %.pn175, %430 ], [ %425, %424 ]
  call void @llvm.lifetime.end.p0(i64 432, ptr nonnull %47) #8
  br label %449

.lr.ph242:                                        ; preds = %412, %439
  %432 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt14_List_iteratorINSt8__detail14_Node_iteratorISt4pairIKN6Crypto4HashEN7DynexCN10Blockchain10BlockEntryEELb0ELb1EEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %49) #8
  %433 = call noundef ptr @_ZNKSt8__detail14_Node_iteratorISt4pairIKN6Crypto4HashEN7DynexCN10Blockchain10BlockEntryEELb0ELb1EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %432) #8
  %434 = getelementptr inbounds i8, ptr %433, i64 32
  %435 = invoke noundef zeroext i1 @_ZN7DynexCN17OrphanBlocksIndex6removeERKNS_5BlockE(ptr noundef nonnull align 8 dereferenceable(57) %405, ptr noundef nonnull align 8 dereferenceable(384) %434)
          to label %436 unwind label %443

436:                                              ; preds = %.lr.ph242
  %437 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt14_List_iteratorINSt8__detail14_Node_iteratorISt4pairIKN6Crypto4HashEN7DynexCN10Blockchain10BlockEntryEELb0ELb1EEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %49) #8
  %.sroa.016.0.copyload = load ptr, ptr %437, align 8
  %438 = invoke ptr @_ZNSt13unordered_mapIN6Crypto4HashEN7DynexCN10Blockchain10BlockEntryESt4hashIS1_ESt8equal_toIS1_ESaISt4pairIKS1_S4_EEE5eraseENSt8__detail14_Node_iteratorISB_Lb0ELb1EEE(ptr noundef nonnull align 8 dereferenceable(56) %410, ptr %.sroa.016.0.copyload)
          to label %439 unwind label %443

439:                                              ; preds = %436
  %440 = call ptr @_ZNSt14_List_iteratorINSt8__detail14_Node_iteratorISt4pairIKN6Crypto4HashEN7DynexCN10Blockchain10BlockEntryEELb0ELb1EEEEppEi(ptr noundef nonnull align 8 dereferenceable(8) %49, i32 noundef 0) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %50) #8
  %441 = call ptr @_ZNSt7__cxx114listINSt8__detail14_Node_iteratorISt4pairIKN6Crypto4HashEN7DynexCN10Blockchain10BlockEntryEELb0ELb1EEESaISB_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %1) #8
  store ptr %441, ptr %50, align 8
  %442 = call noundef zeroext i1 @_ZStneRKSt14_List_iteratorINSt8__detail14_Node_iteratorISt4pairIKN6Crypto4HashEN7DynexCN10Blockchain10BlockEntryEELb0ELb1EEEESD_(ptr noundef nonnull align 8 dereferenceable(8) %49, ptr noundef nonnull align 8 dereferenceable(8) %50) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %50) #8
  br i1 %442, label %.lr.ph242, label %.critedge207, !llvm.loop !62

443:                                              ; preds = %436, %.lr.ph242
  %444 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %49) #8
  br label %449

445:                                              ; preds = %387
  call void @llvm.lifetime.end.p0(i64 5, ptr nonnull %44) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %43) #8
  %446 = call ptr @_ZNSt14_List_iteratorINSt8__detail14_Node_iteratorISt4pairIKN6Crypto4HashEN7DynexCN10Blockchain10BlockEntryEELb0ELb1EEEEppEi(ptr noundef nonnull align 8 dereferenceable(8) %41, i32 noundef 0) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %42) #8
  %447 = call ptr @_ZNSt7__cxx114listINSt8__detail14_Node_iteratorISt4pairIKN6Crypto4HashEN7DynexCN10Blockchain10BlockEntryEELb0ELb1EEESaISB_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %1) #8
  store ptr %447, ptr %42, align 8
  %448 = call noundef zeroext i1 @_ZStneRKSt14_List_iteratorINSt8__detail14_Node_iteratorISt4pairIKN6Crypto4HashEN7DynexCN10Blockchain10BlockEntryEELb0ELb1EEEESD_(ptr noundef nonnull align 8 dereferenceable(8) %41, ptr noundef nonnull align 8 dereferenceable(8) %42) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %42) #8
  br i1 %448, label %.lr.ph240, label %.loopexit254, !llvm.loop !63

449:                                              ; preds = %.loopexit217, %.loopexit.split-lp, %423, %431, %443, %417
  %.pn178.pn = phi { ptr, i32 } [ %418, %417 ], [ %444, %443 ], [ %.pn175.pn, %431 ], [ %.pn173, %423 ], [ %lpad.loopexit, %.loopexit217 ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ]
  call void @llvm.lifetime.end.p0(i64 5, ptr nonnull %44) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %43) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %41) #8
  br label %546

.loopexit254:                                     ; preds = %445, %._crit_edge238
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %41) #8
  br i1 %2, label %479, label %450

450:                                              ; preds = %.loopexit254
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %51) #8
  %451 = call ptr @_ZNSt7__cxx114listIN7DynexCN5BlockESaIS2_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %39) #8
  store ptr %451, ptr %51, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %52) #8
  %452 = call ptr @_ZNSt7__cxx114listIN7DynexCN5BlockESaIS2_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %39) #8
  store ptr %452, ptr %52, align 8
  %453 = call noundef zeroext i1 @_ZStneRKSt14_List_iteratorIN7DynexCN5BlockEES4_(ptr noundef nonnull align 8 dereferenceable(8) %51, ptr noundef nonnull align 8 dereferenceable(8) %52) #8
  br i1 %453, label %.lr.ph244, label %.loopexit

.lr.ph244:                                        ; preds = %450, %475
  %454 = call noundef nonnull align 8 dereferenceable(384) ptr @_ZNKSt14_List_iteratorIN7DynexCN5BlockEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %51) #8
  call void @llvm.lifetime.start.p0(i64 5, ptr nonnull %53) #8
  call void @llvm.lifetime.start.p0(i64 5, ptr nonnull %54) #8
  invoke void @_ZN5boost17value_initializedIN7DynexCN26block_verification_contextEEC2Ev(ptr noundef nonnull align 1 dereferenceable(5) %54)
          to label %455 unwind label %466

455:                                              ; preds = %.lr.ph244
  %456 = invoke noundef nonnull align 1 dereferenceable(5) ptr @_ZN5boost17value_initializedIN7DynexCN26block_verification_contextEEcvRS2_Ev(ptr noundef nonnull align 1 dereferenceable(5) %54)
          to label %457 unwind label %466

457:                                              ; preds = %455
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(5) %53, ptr noundef nonnull align 1 dereferenceable(5) %456, i64 5, i1 false), !tbaa.struct !54
  call void @llvm.lifetime.end.p0(i64 5, ptr nonnull %54) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %55) #8
  invoke void @_ZN7DynexCN14get_block_hashERKNS_5BlockE(ptr dead_on_unwind nonnull writable sret(%"struct.Crypto::Hash") align 1 %55, ptr noundef nonnull align 8 dereferenceable(384) %454)
          to label %458 unwind label %468

458:                                              ; preds = %457
  %459 = invoke noundef zeroext i1 @_ZN7DynexCN10Blockchain24handle_alternative_blockERKNS_5BlockERKN6Crypto4HashERNS_26block_verification_contextEb(ptr noundef nonnull align 8 dereferenceable(2636) %0, ptr noundef nonnull align 8 dereferenceable(384) %454, ptr noundef nonnull align 1 dereferenceable(32) %55, ptr noundef nonnull align 1 dereferenceable(5) %53, i1 noundef zeroext false)
          to label %460 unwind label %468

460:                                              ; preds = %458
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %55) #8
  br i1 %459, label %475, label %461

461:                                              ; preds = %460
  call void @llvm.lifetime.start.p0(i64 432, ptr nonnull %56) #8
  %462 = getelementptr inbounds i8, ptr %0, i64 2592
  invoke void @_ZNK7Logging9LoggerRefclENS_5LevelERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%"class.Logging::LoggerMessage") align 8 %56, ptr noundef nonnull align 8 dereferenceable(40) %462, i32 noundef 2, ptr noundef nonnull align 8 dereferenceable(32) @_ZN7Logging13BRIGHT_YELLOWB5cxx11E)
          to label %463 unwind label %470

463:                                              ; preds = %461
  %464 = invoke noundef nonnull align 8 dereferenceable(161) ptr @_ZStlsIN7Logging13LoggerMessageEA58_cEOT_S4_RKT0_(ptr noundef nonnull align 8 dereferenceable(161) %56, ptr noundef nonnull align 1 dereferenceable(58) @.str.72)
          to label %465 unwind label %472

465:                                              ; preds = %463
  call void @_ZN7Logging13LoggerMessageD1Ev(ptr noundef nonnull align 8 dereferenceable(161) %56) #8
  call void @llvm.lifetime.end.p0(i64 432, ptr nonnull %56) #8
  call void @llvm.lifetime.end.p0(i64 5, ptr nonnull %53) #8
  br label %.loopexit

466:                                              ; preds = %455, %.lr.ph244
  %467 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 5, ptr nonnull %54) #8
  br label %478

468:                                              ; preds = %458, %457
  %469 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %55) #8
  br label %478

470:                                              ; preds = %461
  %471 = landingpad { ptr, i32 }
          cleanup
  br label %474

472:                                              ; preds = %463
  %473 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7Logging13LoggerMessageD1Ev(ptr noundef nonnull align 8 dereferenceable(161) %56) #8
  br label %474

474:                                              ; preds = %472, %470
  %.pn181 = phi { ptr, i32 } [ %473, %472 ], [ %471, %470 ]
  call void @llvm.lifetime.end.p0(i64 432, ptr nonnull %56) #8
  br label %478

475:                                              ; preds = %460
  call void @llvm.lifetime.end.p0(i64 5, ptr nonnull %53) #8
  %476 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt14_List_iteratorIN7DynexCN5BlockEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %51) #8
  %477 = call noundef zeroext i1 @_ZStneRKSt14_List_iteratorIN7DynexCN5BlockEES4_(ptr noundef nonnull align 8 dereferenceable(8) %51, ptr noundef nonnull align 8 dereferenceable(8) %52) #8
  br i1 %477, label %.lr.ph244, label %.loopexit

478:                                              ; preds = %468, %474, %466
  %.pn181.pn.pn = phi { ptr, i32 } [ %467, %466 ], [ %.pn181, %474 ], [ %469, %468 ]
  call void @llvm.lifetime.end.p0(i64 5, ptr nonnull %53) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %52) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %51) #8
  br label %546

.loopexit:                                        ; preds = %475, %450, %465
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %52) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %51) #8
  br label %479

479:                                              ; preds = %.loopexit, %.loopexit254
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %57) #8
  call void @_ZNSt6vectorIN6Crypto4HashESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %57) #8
  %480 = call noundef i64 @_ZNKSt7__cxx114listINSt8__detail14_Node_iteratorISt4pairIKN6Crypto4HashEN7DynexCN10Blockchain10BlockEntryEELb0ELb1EEESaISB_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1) #8
  %481 = add i64 %480, 1
  invoke void @_ZNSt6vectorIN6Crypto4HashESaIS1_EE7reserveEm(ptr noundef nonnull align 8 dereferenceable(24) %57, i64 noundef %481)
          to label %482 unwind label %492

482:                                              ; preds = %479
  %483 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt7__cxx114listINSt8__detail14_Node_iteratorISt4pairIKN6Crypto4HashEN7DynexCN10Blockchain10BlockEntryEELb0ELb1EEESaISB_EE5frontEv(ptr noundef nonnull align 8 dereferenceable(24) %1) #8
  %484 = call noundef ptr @_ZNKSt8__detail14_Node_iteratorISt4pairIKN6Crypto4HashEN7DynexCN10Blockchain10BlockEntryEELb0ELb1EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %483) #8
  %485 = getelementptr inbounds i8, ptr %484, i64 48
  invoke void @_ZNSt6vectorIN6Crypto4HashESaIS1_EE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %57, ptr noundef nonnull align 1 dereferenceable(32) %485)
          to label %486 unwind label %492

486:                                              ; preds = %482
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %58) #8
  %487 = call ptr @_ZNSt7__cxx114listINSt8__detail14_Node_iteratorISt4pairIKN6Crypto4HashEN7DynexCN10Blockchain10BlockEntryEELb0ELb1EEESaISB_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %1) #8
  store ptr %487, ptr %58, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %59) #8
  %488 = call ptr @_ZNSt7__cxx114listINSt8__detail14_Node_iteratorISt4pairIKN6Crypto4HashEN7DynexCN10Blockchain10BlockEntryEELb0ELb1EEESaISB_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %1) #8
  store ptr %488, ptr %59, align 8
  %489 = call noundef zeroext i1 @_ZStneRKSt14_List_iteratorINSt8__detail14_Node_iteratorISt4pairIKN6Crypto4HashEN7DynexCN10Blockchain10BlockEntryEELb0ELb1EEEESD_(ptr noundef nonnull align 8 dereferenceable(8) %58, ptr noundef nonnull align 8 dereferenceable(8) %59) #8
  br i1 %489, label %.lr.ph246, label %._crit_edge247

.lr.ph246:                                        ; preds = %486
  %490 = getelementptr inbounds i8, ptr %0, i64 2504
  %491 = getelementptr inbounds i8, ptr %0, i64 304
  br label %494

._crit_edge247:                                   ; preds = %506, %486
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %59) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %58) #8
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %62) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %63) #8
  invoke void @_ZN7DynexCN18ChainSwitchMessageC1EOSt6vectorIN6Crypto4HashESaIS3_EE(ptr noundef nonnull align 8 dereferenceable(24) %63, ptr noundef nonnull align 8 dereferenceable(24) %57)
          to label %514 unwind label %528

492:                                              ; preds = %482, %479
  %493 = landingpad { ptr, i32 }
          cleanup
  br label %544

494:                                              ; preds = %.lr.ph246, %506
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %60) #8
  %495 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt14_List_iteratorINSt8__detail14_Node_iteratorISt4pairIKN6Crypto4HashEN7DynexCN10Blockchain10BlockEntryEELb0ELb1EEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %58) #8
  %496 = load i64, ptr %495, align 8
  store i64 %496, ptr %60, align 8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %61) #8
  %497 = call noundef ptr @_ZNKSt8__detail14_Node_iteratorISt4pairIKN6Crypto4HashEN7DynexCN10Blockchain10BlockEntryEELb0ELb1EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %60) #8
  %498 = getelementptr inbounds i8, ptr %497, i64 32
  invoke void @_ZN7DynexCN14get_block_hashERKNS_5BlockE(ptr dead_on_unwind nonnull writable sret(%"struct.Crypto::Hash") align 1 %61, ptr noundef nonnull align 8 dereferenceable(384) %498)
          to label %499 unwind label %509

499:                                              ; preds = %494
  invoke void @_ZNSt6vectorIN6Crypto4HashESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %57, ptr noundef nonnull align 1 dereferenceable(32) %61)
          to label %500 unwind label %509

500:                                              ; preds = %499
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %61) #8
  %501 = call noundef ptr @_ZNKSt8__detail14_Node_iteratorISt4pairIKN6Crypto4HashEN7DynexCN10Blockchain10BlockEntryEELb0ELb1EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %60) #8
  %502 = getelementptr inbounds i8, ptr %501, i64 32
  %503 = invoke noundef zeroext i1 @_ZN7DynexCN17OrphanBlocksIndex6removeERKNS_5BlockE(ptr noundef nonnull align 8 dereferenceable(57) %490, ptr noundef nonnull align 8 dereferenceable(384) %502)
          to label %504 unwind label %511

504:                                              ; preds = %500
  %.sroa.07.0.copyload = load ptr, ptr %60, align 8
  %505 = invoke ptr @_ZNSt13unordered_mapIN6Crypto4HashEN7DynexCN10Blockchain10BlockEntryESt4hashIS1_ESt8equal_toIS1_ESaISt4pairIKS1_S4_EEE5eraseENSt8__detail14_Node_iteratorISB_Lb0ELb1EEE(ptr noundef nonnull align 8 dereferenceable(56) %491, ptr %.sroa.07.0.copyload)
          to label %506 unwind label %511

506:                                              ; preds = %504
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %60) #8
  %507 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt14_List_iteratorINSt8__detail14_Node_iteratorISt4pairIKN6Crypto4HashEN7DynexCN10Blockchain10BlockEntryEELb0ELb1EEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %58) #8
  %508 = call noundef zeroext i1 @_ZStneRKSt14_List_iteratorINSt8__detail14_Node_iteratorISt4pairIKN6Crypto4HashEN7DynexCN10Blockchain10BlockEntryEELb0ELb1EEEESD_(ptr noundef nonnull align 8 dereferenceable(8) %58, ptr noundef nonnull align 8 dereferenceable(8) %59) #8
  br i1 %508, label %494, label %._crit_edge247

509:                                              ; preds = %499, %494
  %510 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %61) #8
  br label %513

511:                                              ; preds = %504, %500
  %512 = landingpad { ptr, i32 }
          cleanup
  br label %513

513:                                              ; preds = %511, %509
  %.pn191 = phi { ptr, i32 } [ %512, %511 ], [ %510, %509 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %60) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %59) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %58) #8
  br label %544

514:                                              ; preds = %._crit_edge247
  invoke void @_ZN7DynexCN17BlockchainMessageC1EONS_18ChainSwitchMessageE(ptr noundef nonnull align 8 dereferenceable(40) %62, ptr noundef nonnull align 8 dereferenceable(24) %63)
          to label %515 unwind label %530

515:                                              ; preds = %514
  invoke void @_ZN7DynexCN10Blockchain11sendMessageERKNS_17BlockchainMessageE(ptr noundef nonnull align 8 dereferenceable(2636) %0, ptr noundef nonnull align 8 dereferenceable(40) %62)
          to label %516 unwind label %532

516:                                              ; preds = %515
  call void @_ZN7DynexCN17BlockchainMessageD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %62) #8
  call void @_ZN7DynexCN18ChainSwitchMessageD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %63) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %63) #8
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %62) #8
  call void @llvm.lifetime.start.p0(i64 432, ptr nonnull %64) #8
  %517 = getelementptr inbounds i8, ptr %0, i64 2592
  invoke void @_ZNK7Logging9LoggerRefclENS_5LevelERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%"class.Logging::LoggerMessage") align 8 %64, ptr noundef nonnull align 8 dereferenceable(40) %517, i32 noundef 3, ptr noundef nonnull align 8 dereferenceable(32) @_ZN7Logging12BRIGHT_GREENB5cxx11E)
          to label %518 unwind label %536

518:                                              ; preds = %516
  %519 = invoke noundef nonnull align 8 dereferenceable(161) ptr @_ZStlsIN7Logging13LoggerMessageEA32_cEOT_S4_RKT0_(ptr noundef nonnull align 8 dereferenceable(161) %64, ptr noundef nonnull align 1 dereferenceable(32) @.str.73)
          to label %520 unwind label %538

520:                                              ; preds = %518
  %521 = invoke noundef nonnull align 8 dereferenceable(161) ptr @_ZStlsIN7Logging13LoggerMessageEmEOT_S3_RKT0_(ptr noundef nonnull align 8 dereferenceable(161) %519, ptr noundef nonnull align 8 dereferenceable(8) %6)
          to label %522 unwind label %538

522:                                              ; preds = %520
  %523 = invoke noundef nonnull align 8 dereferenceable(161) ptr @_ZStlsIN7Logging13LoggerMessageEA24_cEOT_S4_RKT0_(ptr noundef nonnull align 8 dereferenceable(161) %521, ptr noundef nonnull align 1 dereferenceable(24) @.str.74)
          to label %524 unwind label %538

524:                                              ; preds = %522
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %65) #8
  %525 = call noundef i64 @_ZNK13SwappedVectorIN7DynexCN10Blockchain10BlockEntryEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(1184) %84)
  store i64 %525, ptr %65, align 8, !tbaa !44
  %526 = invoke noundef nonnull align 8 dereferenceable(161) ptr @_ZStlsIN7Logging13LoggerMessageEmEOT_S3_RKT0_(ptr noundef nonnull align 8 dereferenceable(161) %523, ptr noundef nonnull align 8 dereferenceable(8) %65)
          to label %527 unwind label %540

527:                                              ; preds = %524
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %65) #8
  call void @_ZN7Logging13LoggerMessageD1Ev(ptr noundef nonnull align 8 dereferenceable(161) %64) #8
  call void @llvm.lifetime.end.p0(i64 432, ptr nonnull %64) #8
  call void @_ZNSt6vectorIN6Crypto4HashESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %57) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %57) #8
  br label %545

528:                                              ; preds = %._crit_edge247
  %529 = landingpad { ptr, i32 }
          cleanup
  br label %535

530:                                              ; preds = %514
  %531 = landingpad { ptr, i32 }
          cleanup
  br label %534

532:                                              ; preds = %515
  %533 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7DynexCN17BlockchainMessageD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %62) #8
  br label %534

534:                                              ; preds = %532, %530
  %.pn185 = phi { ptr, i32 } [ %533, %532 ], [ %531, %530 ]
  call void @_ZN7DynexCN18ChainSwitchMessageD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %63) #8
  br label %535

535:                                              ; preds = %534, %528
  %.pn185.pn = phi { ptr, i32 } [ %.pn185, %534 ], [ %529, %528 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %63) #8
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %62) #8
  br label %544

536:                                              ; preds = %516
  %537 = landingpad { ptr, i32 }
          cleanup
  br label %543

538:                                              ; preds = %522, %520, %518
  %539 = landingpad { ptr, i32 }
          cleanup
  br label %542

540:                                              ; preds = %524
  %541 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %65) #8
  br label %542

542:                                              ; preds = %540, %538
  %.pn188 = phi { ptr, i32 } [ %541, %540 ], [ %539, %538 ]
  call void @_ZN7Logging13LoggerMessageD1Ev(ptr noundef nonnull align 8 dereferenceable(161) %64) #8
  br label %543

543:                                              ; preds = %542, %536
  %.pn188.pn = phi { ptr, i32 } [ %.pn188, %542 ], [ %537, %536 ]
  call void @llvm.lifetime.end.p0(i64 432, ptr nonnull %64) #8
  br label %544

544:                                              ; preds = %543, %535, %513, %492
  %.pn191.pn = phi { ptr, i32 } [ %.pn191, %513 ], [ %.pn188.pn, %543 ], [ %.pn185.pn, %535 ], [ %493, %492 ]
  call void @_ZNSt6vectorIN6Crypto4HashESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %57) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %57) #8
  br label %546

545:                                              ; preds = %.critedge207, %527
  %.9 = phi i1 [ false, %.critedge207 ], [ true, %527 ]
  call void @_ZNSt7__cxx1110_List_baseIN7DynexCN5BlockESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %39) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %39) #8
  br label %547

546:                                              ; preds = %544, %478, %449, %377
  %.pn194.pn = phi { ptr, i32 } [ %.pn194, %377 ], [ %.pn191.pn, %544 ], [ %.pn181.pn.pn, %478 ], [ %.pn178.pn, %449 ]
  call void @_ZNSt7__cxx1110_List_baseIN7DynexCN5BlockESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %39) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %39) #8
  br label %548

547:                                              ; preds = %362, %545
  %.10 = phi i1 [ %.9, %545 ], [ false, %362 ]
  call void @_ZNSt6vectorIN6Crypto4HashESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %26) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %26) #8
  call void @_ZNSt6vectorIN6Crypto4HashESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %25) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %25) #8
  br label %549

548:                                              ; preds = %546, %361, %323, %297
  %.pn199.pn = phi { ptr, i32 } [ %.pn199, %297 ], [ %.pn197, %323 ], [ %.pn194.pn, %546 ], [ %.pn170, %361 ]
  call void @_ZNSt6vectorIN6Crypto4HashESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %26) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %26) #8
  call void @_ZNSt6vectorIN6Crypto4HashESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %25) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %25) #8
  br label %550

549:                                              ; preds = %269, %.thread, %547, %91
  %.11 = phi i1 [ %.10, %547 ], [ false, %269 ], [ false, %91 ], [ false, %.thread ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #8
  br label %551

550:                                              ; preds = %548, %271, %96
  %.pn199.pn.pn = phi { ptr, i32 } [ %.pn199.pn, %548 ], [ %.pn161.pn.pn, %271 ], [ %.pn143, %96 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #8
  br label %552

551:                                              ; preds = %549, %72
  %.12 = phi i1 [ %.11, %549 ], [ false, %72 ]
  call void @_ZNSt10lock_guardISt15recursive_mutexED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %4) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) #8
  ret i1 %.12

552:                                              ; preds = %550, %77
  %.pn199.pn.pn.pn = phi { ptr, i32 } [ %.pn199.pn.pn, %550 ], [ %.pn, %77 ]
  call void @_ZNSt10lock_guardISt15recursive_mutexED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %4) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) #8
  resume { ptr, i32 } %.pn199.pn.pn.pn
}

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(161) ptr @_ZStlsIN7Logging13LoggerMessageEA77_cEOT_S4_RKT0_(ptr noundef nonnull align 8 dereferenceable(161), ptr noundef nonnull align 1 dereferenceable(77)) local_unnamed_addr #4

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

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(161) ptr @_ZStlsIN7Logging13LoggerMessageEA10_cEOT_S4_RKT0_(ptr noundef nonnull align 8 dereferenceable(161), ptr noundef nonnull align 1 dereferenceable(10)) local_unnamed_addr #4

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(161) ptr @_ZStlsIN7Logging13LoggerMessageEA79_cEOT_S4_RKT0_(ptr noundef nonnull align 8 dereferenceable(161), ptr noundef nonnull align 1 dereferenceable(79)) local_unnamed_addr #4

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(161) ptr @_ZStlsIN7Logging13LoggerMessageEA25_cEOT_S4_RKT0_(ptr noundef nonnull align 8 dereferenceable(161), ptr noundef nonnull align 1 dereferenceable(25)) local_unnamed_addr #4

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden noundef double @_ZL15calc_poisson_lndm(double noundef, i64 noundef) local_unnamed_addr #3

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(161) ptr @_ZStlsIN7Logging13LoggerMessageEA19_cEOT_S4_RKT0_(ptr noundef nonnull align 8 dereferenceable(161), ptr noundef nonnull align 1 dereferenceable(19)) local_unnamed_addr #4

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(161) ptr @_ZStlsIN7Logging13LoggerMessageEA15_cEOT_S4_RKT0_(ptr noundef nonnull align 8 dereferenceable(161), ptr noundef nonnull align 1 dereferenceable(15)) local_unnamed_addr #4

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(161) ptr @_ZStlsIN7Logging13LoggerMessageEA72_cEOT_S4_RKT0_(ptr noundef nonnull align 8 dereferenceable(161), ptr noundef nonnull align 1 dereferenceable(72)) local_unnamed_addr #4

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN7DynexCN5BlockC2ERKS0_(ptr noundef nonnull align 8 dereferenceable(384), ptr noundef nonnull align 8 dereferenceable(384)) unnamed_addr #4 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local { ptr, ptr } @_ZSt4copyIN9__gnu_cxx17__normal_iteratorIPN6Crypto4HashESt6vectorIS3_SaIS3_EEEESt15insert_iteratorIS7_EET0_T_SC_SB_(ptr, ptr, ptr, ptr) local_unnamed_addr #4

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local { ptr, ptr } @_ZSt8inserterISt6vectorIN6Crypto4HashESaIS2_EEESt15insert_iteratorIT_ERS6_NS6_8iteratorE(ptr noundef nonnull align 8 dereferenceable(24), ptr) local_unnamed_addr #4

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local ptr @_ZSt4findIN9__gnu_cxx17__normal_iteratorIPN6Crypto4HashESt6vectorIS3_SaIS3_EEEES3_ET_S9_S9_RKT0_(ptr, ptr, ptr noundef nonnull align 1 dereferenceable(32)) local_unnamed_addr #4

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(161) ptr @_ZStlsIN7Logging13LoggerMessageEA43_cEOT_S4_RKT0_(ptr noundef nonnull align 8 dereferenceable(161), ptr noundef nonnull align 1 dereferenceable(43)) local_unnamed_addr #4

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(161) ptr @_ZStlsIN7Logging13LoggerMessageEA86_cEOT_S4_RKT0_(ptr noundef nonnull align 8 dereferenceable(161), ptr noundef nonnull align 1 dereferenceable(86)) local_unnamed_addr #4

declare noundef zeroext i1 @_ZN7DynexCN17OrphanBlocksIndex6removeERKNS_5BlockE(ptr noundef nonnull align 8 dereferenceable(57), ptr noundef nonnull align 8 dereferenceable(384)) local_unnamed_addr #5

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN7DynexCN10Blockchain24handle_alternative_blockERKNS_5BlockERKN6Crypto4HashERNS_26block_verification_contextEb(ptr noundef nonnull align 8 dereferenceable(2636), ptr noundef nonnull align 8 dereferenceable(384), ptr noundef nonnull align 1 dereferenceable(32), ptr noundef nonnull align 1 dereferenceable(5), i1 noundef zeroext) local_unnamed_addr #7 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(161) ptr @_ZStlsIN7Logging13LoggerMessageEA58_cEOT_S4_RKT0_(ptr noundef nonnull align 8 dereferenceable(161), ptr noundef nonnull align 1 dereferenceable(58)) local_unnamed_addr #4

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7DynexCN10Blockchain11sendMessageERKNS_17BlockchainMessageE(ptr noundef nonnull align 8 dereferenceable(2636), ptr noundef nonnull align 8 dereferenceable(40)) local_unnamed_addr #7 align 2

declare void @_ZN7DynexCN18ChainSwitchMessageC1EOSt6vectorIN6Crypto4HashESaIS3_EE(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #5

declare void @_ZN7DynexCN17BlockchainMessageC1EONS_18ChainSwitchMessageE(ptr noundef nonnull align 8 dereferenceable(40), ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #5

; Function Attrs: nounwind
declare void @_ZN7DynexCN17BlockchainMessageD1Ev(ptr noundef nonnull align 8 dereferenceable(40)) unnamed_addr #6

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

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

attributes #0 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { 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 #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 = { "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 = { 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 #7 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #8 = { 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, !13, i64 416}
!6 = !{!"_ZTSSt4pairIKN6Crypto4HashEN7DynexCN10Blockchain10BlockEntryEE", !7, i64 0, !10, i64 32}
!7 = !{!"_ZTSN6Crypto4HashE", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C++ TBAA"}
!10 = !{!"_ZTSN7DynexCN10Blockchain10BlockEntryE", !11, i64 0, !13, i64 384, !14, i64 392, !14, i64 400, !14, i64 408, !40, i64 416}
!11 = !{!"_ZTSN7DynexCN5BlockE", !12, i64 0, !15, i64 48, !22, i64 248, !17, i64 360}
!12 = !{!"_ZTSN7DynexCN11BlockHeaderE", !8, i64 0, !8, i64 1, !13, i64 4, !14, i64 8, !7, i64 16}
!13 = !{!"int", !8, i64 0}
!14 = !{!"long", !8, i64 0}
!15 = !{!"_ZTSN7DynexCN11ParentBlockE", !8, i64 0, !8, i64 1, !7, i64 2, !16, i64 34, !17, i64 40, !22, i64 64, !17, i64 176}
!16 = !{!"short", !8, i64 0}
!17 = !{!"_ZTSSt6vectorIN6Crypto4HashESaIS1_EE", !18, i64 0}
!18 = !{!"_ZTSSt12_Vector_baseIN6Crypto4HashESaIS1_EE", !19, i64 0}
!19 = !{!"_ZTSNSt12_Vector_baseIN6Crypto4HashESaIS1_EE12_Vector_implE", !20, i64 0}
!20 = !{!"_ZTSNSt12_Vector_baseIN6Crypto4HashESaIS1_EE17_Vector_impl_dataE", !21, i64 0, !21, i64 8, !21, i64 16}
!21 = !{!"any pointer", !8, i64 0}
!22 = !{!"_ZTSN7DynexCN11TransactionE", !23, i64 0, !36, i64 88}
!23 = !{!"_ZTSN7DynexCN17TransactionPrefixE", !8, i64 0, !14, i64 8, !24, i64 16, !28, i64 40, !32, i64 64}
!24 = !{!"_ZTSSt6vectorIN5boost7variantIN7DynexCN9BaseInputEJNS2_8KeyInputENS2_19MultisignatureInputEEEESaIS6_EE", !25, i64 0}
!25 = !{!"_ZTSSt12_Vector_baseIN5boost7variantIN7DynexCN9BaseInputEJNS2_8KeyInputENS2_19MultisignatureInputEEEESaIS6_EE", !26, i64 0}
!26 = !{!"_ZTSNSt12_Vector_baseIN5boost7variantIN7DynexCN9BaseInputEJNS2_8KeyInputENS2_19MultisignatureInputEEEESaIS6_EE12_Vector_implE", !27, i64 0}
!27 = !{!"_ZTSNSt12_Vector_baseIN5boost7variantIN7DynexCN9BaseInputEJNS2_8KeyInputENS2_19MultisignatureInputEEEESaIS6_EE17_Vector_impl_dataE", !21, i64 0, !21, i64 8, !21, i64 16}
!28 = !{!"_ZTSSt6vectorIN7DynexCN17TransactionOutputESaIS1_EE", !29, i64 0}
!29 = !{!"_ZTSSt12_Vector_baseIN7DynexCN17TransactionOutputESaIS1_EE", !30, i64 0}
!30 = !{!"_ZTSNSt12_Vector_baseIN7DynexCN17TransactionOutputESaIS1_EE12_Vector_implE", !31, i64 0}
!31 = !{!"_ZTSNSt12_Vector_baseIN7DynexCN17TransactionOutputESaIS1_EE17_Vector_impl_dataE", !21, i64 0, !21, i64 8, !21, i64 16}
!32 = !{!"_ZTSSt6vectorIhSaIhEE", !33, i64 0}
!33 = !{!"_ZTSSt12_Vector_baseIhSaIhEE", !34, i64 0}
!34 = !{!"_ZTSNSt12_Vector_baseIhSaIhEE12_Vector_implE", !35, i64 0}
!35 = !{!"_ZTSNSt12_Vector_baseIhSaIhEE17_Vector_impl_dataE", !21, i64 0, !21, i64 8, !21, i64 16}
!36 = !{!"_ZTSSt6vectorIS_IN6Crypto9SignatureESaIS1_EESaIS3_EE", !37, i64 0}
!37 = !{!"_ZTSSt12_Vector_baseISt6vectorIN6Crypto9SignatureESaIS2_EESaIS4_EE", !38, i64 0}
!38 = !{!"_ZTSNSt12_Vector_baseISt6vectorIN6Crypto9SignatureESaIS2_EESaIS4_EE12_Vector_implE", !39, i64 0}
!39 = !{!"_ZTSNSt12_Vector_baseISt6vectorIN6Crypto9SignatureESaIS2_EESaIS4_EE17_Vector_impl_dataE", !21, i64 0, !21, i64 8, !21, i64 16}
!40 = !{!"_ZTSSt6vectorIN7DynexCN10Blockchain16TransactionEntryESaIS2_EE", !41, i64 0}
!41 = !{!"_ZTSSt12_Vector_baseIN7DynexCN10Blockchain16TransactionEntryESaIS2_EE", !42, i64 0}
!42 = !{!"_ZTSNSt12_Vector_baseIN7DynexCN10Blockchain16TransactionEntryESaIS2_EE12_Vector_implE", !43, i64 0}
!43 = !{!"_ZTSNSt12_Vector_baseIN7DynexCN10Blockchain16TransactionEntryESaIS2_EE17_Vector_impl_dataE", !21, i64 0, !21, i64 8, !21, i64 16}
!44 = !{!14, !14, i64 0}
!45 = !{!12, !14, i64 8}
!46 = !{i64 0, i64 32, !47}
!47 = !{!8, !8, i64 0}
!48 = distinct !{!48, !49}
!49 = !{!"llvm.loop.mustprogress"}
!50 = distinct !{!50, !49}
!51 = distinct !{!51, !49}
!52 = distinct !{!52, !49}
!53 = distinct !{!53, !49}
!54 = !{i64 0, i64 1, !55, i64 1, i64 1, !55, i64 2, i64 1, !55, i64 3, i64 1, !55, i64 4, i64 1, !55}
!55 = !{!56, !56, i64 0}
!56 = !{!"bool", !8, i64 0}
!57 = !{!58, !56, i64 0}
!58 = !{!"_ZTSN7DynexCN26block_verification_contextE", !56, i64 0, !56, i64 1, !56, i64 2, !56, i64 3, !56, i64 4}
!59 = !{i8 0, i8 2}
!60 = !{}
!61 = !{!21, !21, i64 0}
!62 = distinct !{!62, !49}
!63 = distinct !{!63, !49}


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