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

%"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 }
%"struct.Crypto::Hash" = type { [32 x i8] }
%"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.std::lock_guard.363" = type { ptr }
%"class.std::lock_guard" = type { ptr }
%"class.DynexCN::BlockchainMessage" = type { i32, %union.anon.278 }
%union.anon.278 = type { ptr, [24 x i8] }
%"class.DynexCN::NewBlockMessage" = type { %"struct.Crypto::Hash" }
%"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" }
%"struct.std::__detail::_List_node_header" = type { %"struct.std::__detail::_List_node_base", i64 }
%"struct.std::__detail::_List_node_base" = type { ptr, ptr }
%"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.DynexCN::block_verification_context" = type { i8, i8, i8, i8, i8 }
%"struct.DynexCN::BaseInput" = type { i32 }

@_ZN7Logging7DEFAULTB5cxx11E = external global %"class.std::__cxx11::basic_string", align 8
@_ZN7Logging10BRIGHT_REDB5cxx11E = external global %"class.std::__cxx11::basic_string", align 8
@.str.192 = external hidden unnamed_addr constant [60 x i8], align 1
@.str.193 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.194 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.195 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.196 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.197 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.198 = external hidden unnamed_addr constant [25 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 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 #1 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)) #2

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7DynexCN10Blockchain9getTailIdEv(ptr dead_on_unwind noalias writable sret(%"struct.Crypto::Hash") align 1, ptr noundef nonnull align 8 dereferenceable(2636)) #5 align 2

; Function Attrs: mustprogress uwtable
define dso_local noundef zeroext i1 @_ZN7DynexCN10Blockchain11addNewBlockERKNS_5BlockERNS_26block_verification_contextE(ptr noundef nonnull align 8 dereferenceable(2636) %0, ptr noundef nonnull align 8 dereferenceable(384) %1, ptr noundef nonnull align 1 dereferenceable(5) %2) #5 align 2 personality ptr @__gxx_personality_v0 {
  %4 = alloca i1, align 1
  %5 = alloca ptr, align 8
  %6 = alloca ptr, align 8
  %7 = alloca ptr, align 8
  %8 = alloca %"struct.DynexCN::Block", align 8
  %9 = alloca %"struct.Crypto::Hash", align 1
  %10 = alloca ptr, align 8
  %11 = alloca i32, align 4
  %12 = alloca %"class.Logging::LoggerMessage", align 8
  %13 = alloca i32, align 4
  %14 = alloca i8, align 1
  %15 = alloca %"class.std::lock_guard.363", align 8
  %16 = alloca %"class.std::lock_guard", align 8
  %17 = alloca %"class.Logging::LoggerMessage", align 8
  %18 = alloca %"struct.Crypto::Hash", align 1
  %19 = alloca %"class.Logging::LoggerMessage", align 8
  %20 = alloca %"class.std::__cxx11::basic_string", align 8
  %21 = alloca %"class.std::__cxx11::basic_string", align 8
  %22 = alloca %"struct.Crypto::Hash", align 1
  %23 = alloca %"class.std::__cxx11::basic_string", align 8
  %24 = alloca %"class.DynexCN::BlockchainMessage", align 8
  %25 = alloca %"class.DynexCN::NewBlockMessage", align 1
  %26 = alloca { i64, i64 }, align 8
  store ptr %0, ptr %5, align 8, !tbaa !5
  store ptr %1, ptr %6, align 8, !tbaa !5
  store ptr %2, ptr %7, align 8, !tbaa !5
  %27 = load ptr, ptr %5, align 8
  call void @llvm.lifetime.start.p0(i64 384, ptr %8) #7
  %28 = load ptr, ptr %6, align 8, !tbaa !5
  call void @_ZN7DynexCN5BlockC2ERKS0_(ptr noundef nonnull align 8 dereferenceable(384) %8, ptr noundef nonnull align 8 dereferenceable(384) %28)
  call void @llvm.lifetime.start.p0(i64 32, ptr %9) #7
  %29 = invoke noundef zeroext i1 @_ZN7DynexCN14get_block_hashERKNS_5BlockERN6Crypto4HashE(ptr noundef nonnull align 8 dereferenceable(384) %8, ptr noundef nonnull align 1 dereferenceable(32) %9)
          to label %30 unwind label %38

30:                                               ; preds = %3
  br i1 %29, label %51, label %31

31:                                               ; preds = %30
  call void @llvm.lifetime.start.p0(i64 432, ptr %12) #7
  %32 = getelementptr inbounds %"class.DynexCN::Blockchain", ptr %27, i32 0, i32 33
  invoke void @_ZNK7Logging9LoggerRefclENS_5LevelERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.Logging::LoggerMessage") align 8 %12, ptr noundef nonnull align 8 dereferenceable(40) %32, i32 noundef 1, ptr noundef nonnull align 8 dereferenceable(32) @_ZN7Logging10BRIGHT_REDB5cxx11E)
          to label %33 unwind label %42

33:                                               ; preds = %31
  %34 = invoke noundef nonnull align 8 dereferenceable(161) ptr @_ZStlsIN7Logging13LoggerMessageEA60_cEOT_S4_RKT0_(ptr noundef nonnull align 8 dereferenceable(161) %12, ptr noundef nonnull align 1 dereferenceable(60) @.str.192)
          to label %35 unwind label %46

35:                                               ; preds = %33
  call void @_ZN7Logging13LoggerMessageD1Ev(ptr noundef nonnull align 8 dereferenceable(161) %12) #7
  call void @llvm.lifetime.end.p0(i64 432, ptr %12) #7
  %36 = load ptr, ptr %7, align 8, !tbaa !5
  %37 = getelementptr inbounds %"struct.DynexCN::block_verification_context", ptr %36, i32 0, i32 1
  store i8 1, ptr %37, align 1, !tbaa !9
  store i1 false, ptr %4, align 1
  store i32 1, ptr %13, align 4
  br label %227

38:                                               ; preds = %3
  %39 = landingpad { ptr, i32 }
          cleanup
  %40 = extractvalue { ptr, i32 } %39, 0
  store ptr %40, ptr %10, align 8
  %41 = extractvalue { ptr, i32 } %39, 1
  store i32 %41, ptr %11, align 4
  br label %229

42:                                               ; preds = %31
  %43 = landingpad { ptr, i32 }
          cleanup
  %44 = extractvalue { ptr, i32 } %43, 0
  store ptr %44, ptr %10, align 8
  %45 = extractvalue { ptr, i32 } %43, 1
  store i32 %45, ptr %11, align 4
  br label %50

46:                                               ; preds = %33
  %47 = landingpad { ptr, i32 }
          cleanup
  %48 = extractvalue { ptr, i32 } %47, 0
  store ptr %48, ptr %10, align 8
  %49 = extractvalue { ptr, i32 } %47, 1
  store i32 %49, ptr %11, align 4
  call void @_ZN7Logging13LoggerMessageD1Ev(ptr noundef nonnull align 8 dereferenceable(161) %12) #7
  br label %50

50:                                               ; preds = %46, %42
  call void @llvm.lifetime.end.p0(i64 432, ptr %12) #7
  br label %229

51:                                               ; preds = %30
  call void @llvm.lifetime.start.p0(i64 1, ptr %14) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #7
  %52 = getelementptr inbounds %"class.DynexCN::Blockchain", ptr %27, i32 0, i32 6
  %53 = load ptr, ptr %52, align 8, !tbaa !12
  invoke void @_ZNSt10lock_guardIRN7DynexCN14tx_memory_poolEEC2ES2_(ptr noundef nonnull align 8 dereferenceable(8) %15, ptr noundef nonnull align 8 dereferenceable(688) %53)
          to label %54 unwind label %70

54:                                               ; preds = %51
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #7
  %55 = getelementptr inbounds %"class.DynexCN::Blockchain", ptr %27, i32 0, i32 7
  invoke void @_ZNSt10lock_guardISt15recursive_mutexEC2ERS0_(ptr noundef nonnull align 8 dereferenceable(8) %16, ptr noundef nonnull align 8 dereferenceable(40) %55)
          to label %56 unwind label %74

56:                                               ; preds = %54
  %57 = invoke noundef zeroext i1 @_ZN7DynexCN10Blockchain9haveBlockERKN6Crypto4HashE(ptr noundef nonnull align 8 dereferenceable(2636) %27, ptr noundef nonnull align 1 dereferenceable(32) %9)
          to label %58 unwind label %78

58:                                               ; preds = %56
  br i1 %57, label %59, label %91

59:                                               ; preds = %58
  call void @llvm.lifetime.start.p0(i64 432, ptr %17) #7
  %60 = getelementptr inbounds %"class.DynexCN::Blockchain", ptr %27, i32 0, i32 33
  invoke void @_ZNK7Logging9LoggerRefclENS_5LevelERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.Logging::LoggerMessage") align 8 %17, ptr noundef nonnull align 8 dereferenceable(40) %60, i32 noundef 5, ptr noundef nonnull align 8 dereferenceable(32) @_ZN7Logging7DEFAULTB5cxx11E)
          to label %61 unwind label %82

61:                                               ; preds = %59
  %62 = invoke noundef nonnull align 8 dereferenceable(161) ptr @_ZStlsIN7Logging13LoggerMessageEA17_cEOT_S4_RKT0_(ptr noundef nonnull align 8 dereferenceable(161) %17, ptr noundef nonnull align 1 dereferenceable(17) @.str.193)
          to label %63 unwind label %86

63:                                               ; preds = %61
  %64 = invoke noundef nonnull align 8 dereferenceable(161) ptr @_ZStlsIN7Logging13LoggerMessageEN6Crypto4HashEEOT_S5_RKT0_(ptr noundef nonnull align 8 dereferenceable(161) %62, ptr noundef nonnull align 1 dereferenceable(32) %9)
          to label %65 unwind label %86

65:                                               ; preds = %63
  %66 = invoke noundef nonnull align 8 dereferenceable(161) ptr @_ZStlsIN7Logging13LoggerMessageEA16_cEOT_S4_RKT0_(ptr noundef nonnull align 8 dereferenceable(161) %64, ptr noundef nonnull align 1 dereferenceable(16) @.str.194)
          to label %67 unwind label %86

67:                                               ; preds = %65
  call void @_ZN7Logging13LoggerMessageD1Ev(ptr noundef nonnull align 8 dereferenceable(161) %17) #7
  call void @llvm.lifetime.end.p0(i64 432, ptr %17) #7
  %68 = load ptr, ptr %7, align 8, !tbaa !5
  %69 = getelementptr inbounds %"struct.DynexCN::block_verification_context", ptr %68, i32 0, i32 3
  store i8 1, ptr %69, align 1, !tbaa !152
  store i1 false, ptr %4, align 1
  store i32 1, ptr %13, align 4
  br label %198

70:                                               ; preds = %51
  %71 = landingpad { ptr, i32 }
          cleanup
  %72 = extractvalue { ptr, i32 } %71, 0
  store ptr %72, ptr %10, align 8
  %73 = extractvalue { ptr, i32 } %71, 1
  store i32 %73, ptr %11, align 4
  br label %217

74:                                               ; preds = %54
  %75 = landingpad { ptr, i32 }
          cleanup
  %76 = extractvalue { ptr, i32 } %75, 0
  store ptr %76, ptr %10, align 8
  %77 = extractvalue { ptr, i32 } %75, 1
  store i32 %77, ptr %11, align 4
  br label %216

78:                                               ; preds = %176, %126, %56
  %79 = landingpad { ptr, i32 }
          cleanup
  %80 = extractvalue { ptr, i32 } %79, 0
  store ptr %80, ptr %10, align 8
  %81 = extractvalue { ptr, i32 } %79, 1
  store i32 %81, ptr %11, align 4
  br label %215

82:                                               ; preds = %59
  %83 = landingpad { ptr, i32 }
          cleanup
  %84 = extractvalue { ptr, i32 } %83, 0
  store ptr %84, ptr %10, align 8
  %85 = extractvalue { ptr, i32 } %83, 1
  store i32 %85, ptr %11, align 4
  br label %90

86:                                               ; preds = %65, %63, %61
  %87 = landingpad { ptr, i32 }
          cleanup
  %88 = extractvalue { ptr, i32 } %87, 0
  store ptr %88, ptr %10, align 8
  %89 = extractvalue { ptr, i32 } %87, 1
  store i32 %89, ptr %11, align 4
  call void @_ZN7Logging13LoggerMessageD1Ev(ptr noundef nonnull align 8 dereferenceable(161) %17) #7
  br label %90

90:                                               ; preds = %86, %82
  call void @llvm.lifetime.end.p0(i64 432, ptr %17) #7
  br label %215

91:                                               ; preds = %58
  %92 = getelementptr inbounds %"struct.DynexCN::BlockHeader", ptr %8, i32 0, i32 4
  call void @llvm.lifetime.start.p0(i64 32, ptr %18) #7
  invoke void @_ZN7DynexCN10Blockchain9getTailIdEv(ptr dead_on_unwind writable sret(%"struct.Crypto::Hash") align 1 %18, ptr noundef nonnull align 8 dereferenceable(2636) %27)
          to label %93 unwind label %133

93:                                               ; preds = %91
  %94 = invoke noundef zeroext i1 @_ZN6CryptoeqERKNS_4HashES2_(ptr noundef nonnull align 1 dereferenceable(32) %92, ptr noundef nonnull align 1 dereferenceable(32) %18)
          to label %95 unwind label %133

95:                                               ; preds = %93
  %96 = xor i1 %94, true
  call void @llvm.lifetime.end.p0(i64 32, ptr %18) #7
  br i1 %96, label %97, label %176

97:                                               ; preds = %95
  call void @llvm.lifetime.start.p0(i64 432, ptr %19) #7
  %98 = getelementptr inbounds %"class.DynexCN::Blockchain", ptr %27, i32 0, i32 33
  invoke void @_ZNK7Logging9LoggerRefclENS_5LevelERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.Logging::LoggerMessage") align 8 %19, ptr noundef nonnull align 8 dereferenceable(40) %98, i32 noundef 4, ptr noundef nonnull align 8 dereferenceable(32) @_ZN7Logging7DEFAULTB5cxx11E)
          to label %99 unwind label %137

99:                                               ; preds = %97
  %100 = invoke noundef nonnull align 8 dereferenceable(161) ptr @_ZStlsIN7Logging13LoggerMessageEA28_cEOT_S4_RKT0_(ptr noundef nonnull align 8 dereferenceable(161) %19, ptr noundef nonnull align 1 dereferenceable(28) @.str.195)
          to label %101 unwind label %141

101:                                              ; preds = %99
  call void @llvm.lifetime.start.p0(i64 32, ptr %20) #7
  invoke void @_ZN6Common8podToHexIN6Crypto4HashEEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKT_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %20, ptr noundef nonnull align 1 dereferenceable(32) %9)
          to label %102 unwind label %145

102:                                              ; preds = %101
  %103 = invoke noundef nonnull align 8 dereferenceable(161) ptr @_ZStlsIN7Logging13LoggerMessageENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEOT_S9_RKT0_(ptr noundef nonnull align 8 dereferenceable(161) %100, ptr noundef nonnull align 8 dereferenceable(32) %20)
          to label %104 unwind label %149

104:                                              ; preds = %102
  %105 = invoke noundef nonnull align 8 dereferenceable(161) ptr @_ZStlsIN7Logging13LoggerMessageEA12_cEOT_S4_RKT0_(ptr noundef nonnull align 8 dereferenceable(161) %103, ptr noundef nonnull align 1 dereferenceable(12) @.str.196)
          to label %106 unwind label %149

106:                                              ; preds = %104
  %107 = getelementptr inbounds %"struct.DynexCN::Block", ptr %8, i32 0, i32 2
  %108 = getelementptr inbounds %"struct.DynexCN::TransactionPrefix", ptr %107, i32 0, i32 2
  %109 = call noundef nonnull align 8 dereferenceable(72) ptr @_ZNSt6vectorIN5boost7variantIN7DynexCN9BaseInputEJNS2_8KeyInputENS2_19MultisignatureInputEEEESaIS6_EE5frontEv(ptr noundef nonnull align 8 dereferenceable(24) %108) #7
  %110 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN5boost3getIN7DynexCN9BaseInputES2_JNS1_8KeyInputENS1_19MultisignatureInputEEEENS_13add_referenceIT_E4typeERNS_7variantIT0_JDpT1_EEE(ptr noundef nonnull align 8 dereferenceable(72) %109)
          to label %111 unwind label %149

111:                                              ; preds = %106
  %112 = getelementptr inbounds %"struct.DynexCN::BaseInput", ptr %110, i32 0, i32 0
  %113 = invoke noundef nonnull align 8 dereferenceable(161) ptr @_ZStlsIN7Logging13LoggerMessageEjEOT_S3_RKT0_(ptr noundef nonnull align 8 dereferenceable(161) %105, ptr noundef nonnull align 4 dereferenceable(4) %112)
          to label %114 unwind label %149

114:                                              ; preds = %111
  %115 = invoke noundef nonnull align 8 dereferenceable(161) ptr @_ZStlsIN7Logging13LoggerMessageEA36_cEOT_S4_RKT0_(ptr noundef nonnull align 8 dereferenceable(161) %113, ptr noundef nonnull align 1 dereferenceable(36) @.str.197)
          to label %116 unwind label %149

116:                                              ; preds = %114
  call void @llvm.lifetime.start.p0(i64 32, ptr %21) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %22) #7
  invoke void @_ZN7DynexCN10Blockchain9getTailIdEv(ptr dead_on_unwind writable sret(%"struct.Crypto::Hash") align 1 %22, ptr noundef nonnull align 8 dereferenceable(2636) %27)
          to label %117 unwind label %153

117:                                              ; preds = %116
  invoke void @_ZN6Common8podToHexIN6Crypto4HashEEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKT_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %21, ptr noundef nonnull align 1 dereferenceable(32) %22)
          to label %118 unwind label %153

118:                                              ; preds = %117
  %119 = invoke noundef nonnull align 8 dereferenceable(161) ptr @_ZStlsIN7Logging13LoggerMessageENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEOT_S9_RKT0_(ptr noundef nonnull align 8 dereferenceable(161) %115, ptr noundef nonnull align 8 dereferenceable(32) %21)
          to label %120 unwind label %157

120:                                              ; preds = %118
  %121 = invoke noundef nonnull align 8 dereferenceable(161) ptr @_ZStlsIN7Logging13LoggerMessageEA25_cEOT_S4_RKT0_(ptr noundef nonnull align 8 dereferenceable(161) %119, ptr noundef nonnull align 1 dereferenceable(25) @.str.198)
          to label %122 unwind label %157

122:                                              ; preds = %120
  call void @llvm.lifetime.start.p0(i64 32, ptr %23) #7
  %123 = getelementptr inbounds %"struct.DynexCN::BlockHeader", ptr %8, i32 0, i32 4
  invoke void @_ZN6Common8podToHexIN6Crypto4HashEEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKT_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %23, ptr noundef nonnull align 1 dereferenceable(32) %123)
          to label %124 unwind label %161

124:                                              ; preds = %122
  %125 = invoke noundef nonnull align 8 dereferenceable(161) ptr @_ZStlsIN7Logging13LoggerMessageENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEOT_S9_RKT0_(ptr noundef nonnull align 8 dereferenceable(161) %121, ptr noundef nonnull align 8 dereferenceable(32) %23)
          to label %126 unwind label %165

126:                                              ; preds = %124
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %23) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %23) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %22) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %21) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %20) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %20) #7
  call void @_ZN7Logging13LoggerMessageD1Ev(ptr noundef nonnull align 8 dereferenceable(161) %19) #7
  call void @llvm.lifetime.end.p0(i64 432, ptr %19) #7
  %127 = load ptr, ptr %7, align 8, !tbaa !5
  %128 = getelementptr inbounds %"struct.DynexCN::block_verification_context", ptr %127, i32 0, i32 0
  store i8 0, ptr %128, align 1, !tbaa !153
  %129 = load ptr, ptr %7, align 8, !tbaa !5
  %130 = invoke noundef zeroext i1 @_ZN7DynexCN10Blockchain24handle_alternative_blockERKNS_5BlockERKN6Crypto4HashERNS_26block_verification_contextEb(ptr noundef nonnull align 8 dereferenceable(2636) %27, ptr noundef nonnull align 8 dereferenceable(384) %8, ptr noundef nonnull align 1 dereferenceable(32) %9, ptr noundef nonnull align 1 dereferenceable(5) %129, i1 noundef zeroext true)
          to label %131 unwind label %78

131:                                              ; preds = %126
  %132 = zext i1 %130 to i8
  store i8 %132, ptr %14, align 1, !tbaa !154
  br label %197

133:                                              ; preds = %93, %91
  %134 = landingpad { ptr, i32 }
          cleanup
  %135 = extractvalue { ptr, i32 } %134, 0
  store ptr %135, ptr %10, align 8
  %136 = extractvalue { ptr, i32 } %134, 1
  store i32 %136, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %18) #7
  br label %215

137:                                              ; preds = %97
  %138 = landingpad { ptr, i32 }
          cleanup
  %139 = extractvalue { ptr, i32 } %138, 0
  store ptr %139, ptr %10, align 8
  %140 = extractvalue { ptr, i32 } %138, 1
  store i32 %140, ptr %11, align 4
  br label %175

141:                                              ; preds = %99
  %142 = landingpad { ptr, i32 }
          cleanup
  %143 = extractvalue { ptr, i32 } %142, 0
  store ptr %143, ptr %10, align 8
  %144 = extractvalue { ptr, i32 } %142, 1
  store i32 %144, ptr %11, align 4
  br label %174

145:                                              ; preds = %101
  %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 %173

149:                                              ; preds = %114, %111, %106, %104, %102
  %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 %172

153:                                              ; preds = %117, %116
  %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
  br label %171

157:                                              ; preds = %120, %118
  %158 = landingpad { ptr, i32 }
          cleanup
  %159 = extractvalue { ptr, i32 } %158, 0
  store ptr %159, ptr %10, align 8
  %160 = extractvalue { ptr, i32 } %158, 1
  store i32 %160, ptr %11, align 4
  br label %170

161:                                              ; preds = %122
  %162 = landingpad { ptr, i32 }
          cleanup
  %163 = extractvalue { ptr, i32 } %162, 0
  store ptr %163, ptr %10, align 8
  %164 = extractvalue { ptr, i32 } %162, 1
  store i32 %164, ptr %11, align 4
  br label %169

165:                                              ; preds = %124
  %166 = landingpad { ptr, i32 }
          cleanup
  %167 = extractvalue { ptr, i32 } %166, 0
  store ptr %167, ptr %10, align 8
  %168 = extractvalue { ptr, i32 } %166, 1
  store i32 %168, ptr %11, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %23) #7
  br label %169

169:                                              ; preds = %165, %161
  call void @llvm.lifetime.end.p0(i64 32, ptr %23) #7
  br label %170

170:                                              ; preds = %169, %157
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #7
  br label %171

171:                                              ; preds = %170, %153
  call void @llvm.lifetime.end.p0(i64 32, ptr %22) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %21) #7
  br label %172

172:                                              ; preds = %171, %149
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %20) #7
  br label %173

173:                                              ; preds = %172, %145
  call void @llvm.lifetime.end.p0(i64 32, ptr %20) #7
  br label %174

174:                                              ; preds = %173, %141
  call void @_ZN7Logging13LoggerMessageD1Ev(ptr noundef nonnull align 8 dereferenceable(161) %19) #7
  br label %175

175:                                              ; preds = %174, %137
  call void @llvm.lifetime.end.p0(i64 432, ptr %19) #7
  br label %215

176:                                              ; preds = %95
  %177 = load ptr, ptr %7, align 8, !tbaa !5
  %178 = invoke noundef zeroext i1 @_ZN7DynexCN10Blockchain9pushBlockERKNS_5BlockERNS_26block_verification_contextE(ptr noundef nonnull align 8 dereferenceable(2636) %27, ptr noundef nonnull align 8 dereferenceable(384) %8, ptr noundef nonnull align 1 dereferenceable(5) %177)
          to label %179 unwind label %78

179:                                              ; preds = %176
  %180 = zext i1 %178 to i8
  store i8 %180, ptr %14, align 1, !tbaa !154
  %181 = load i8, ptr %14, align 1, !tbaa !154, !range !155, !noundef !156
  %182 = trunc i8 %181 to i1
  br i1 %182, label %183, label %196

183:                                              ; preds = %179
  call void @llvm.lifetime.start.p0(i64 40, ptr %24) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %25) #7
  invoke void @_ZN7DynexCN15NewBlockMessageC1ERKN6Crypto4HashE(ptr noundef nonnull align 1 dereferenceable(32) %25, ptr noundef nonnull align 1 dereferenceable(32) %9)
          to label %184 unwind label %187

184:                                              ; preds = %183
  invoke void @_ZN7DynexCN17BlockchainMessageC1EONS_15NewBlockMessageE(ptr noundef nonnull align 8 dereferenceable(40) %24, ptr noundef nonnull align 1 dereferenceable(32) %25)
          to label %185 unwind label %187

185:                                              ; preds = %184
  invoke void @_ZN7DynexCN10Blockchain11sendMessageERKNS_17BlockchainMessageE(ptr noundef nonnull align 8 dereferenceable(2636) %27, ptr noundef nonnull align 8 dereferenceable(40) %24)
          to label %186 unwind label %191

186:                                              ; preds = %185
  call void @_ZN7DynexCN17BlockchainMessageD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %24) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %25) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr %24) #7
  br label %196

187:                                              ; preds = %184, %183
  %188 = landingpad { ptr, i32 }
          cleanup
  %189 = extractvalue { ptr, i32 } %188, 0
  store ptr %189, ptr %10, align 8
  %190 = extractvalue { ptr, i32 } %188, 1
  store i32 %190, ptr %11, align 4
  br label %195

191:                                              ; preds = %185
  %192 = landingpad { ptr, i32 }
          cleanup
  %193 = extractvalue { ptr, i32 } %192, 0
  store ptr %193, ptr %10, align 8
  %194 = extractvalue { ptr, i32 } %192, 1
  store i32 %194, ptr %11, align 4
  call void @_ZN7DynexCN17BlockchainMessageD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %24) #7
  br label %195

195:                                              ; preds = %191, %187
  call void @llvm.lifetime.end.p0(i64 32, ptr %25) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr %24) #7
  br label %215

196:                                              ; preds = %186, %179
  br label %197

197:                                              ; preds = %196, %131
  store i32 0, ptr %13, align 4
  br label %198

198:                                              ; preds = %197, %67
  call void @_ZNSt10lock_guardISt15recursive_mutexED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %16) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #7
  call void @_ZNSt10lock_guardIRN7DynexCN14tx_memory_poolEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %15) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #7
  %199 = load i32, ptr %13, align 4
  switch i32 %199, label %225 [
    i32 0, label %200
  ]

200:                                              ; preds = %198
  %201 = load i8, ptr %14, align 1, !tbaa !154, !range !155, !noundef !156
  %202 = trunc i8 %201 to i1
  br i1 %202, label %203, label %222

203:                                              ; preds = %200
  %204 = load ptr, ptr %7, align 8, !tbaa !5
  %205 = getelementptr inbounds %"struct.DynexCN::block_verification_context", ptr %204, i32 0, i32 0
  %206 = load i8, ptr %205, align 1, !tbaa !153, !range !155, !noundef !156
  %207 = trunc i8 %206 to i1
  br i1 %207, label %208, label %222

208:                                              ; preds = %203
  %209 = getelementptr inbounds %"class.DynexCN::Blockchain", ptr %27, i32 0, i32 9
  store { i64, i64 } { i64 17, i64 0 }, ptr %26, align 8, !tbaa !157
  %210 = getelementptr inbounds { i64, i64 }, ptr %26, i32 0, i32 0
  %211 = load i64, ptr %210, align 8
  %212 = getelementptr inbounds { i64, i64 }, ptr %26, i32 0, i32 1
  %213 = load i64, ptr %212, align 8
  invoke void @_ZN5Tools15ObserverManagerIN7DynexCN26IBlockchainStorageObserverEE6notifyIMS2_FvvEJEEEvT_DpT0_(ptr noundef nonnull align 8 dereferenceable(64) %209, i64 %211, i64 %213)
          to label %214 unwind label %218

214:                                              ; preds = %208
  br label %222

215:                                              ; preds = %195, %175, %133, %90, %78
  call void @_ZNSt10lock_guardISt15recursive_mutexED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %16) #7
  br label %216

216:                                              ; preds = %215, %74
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #7
  call void @_ZNSt10lock_guardIRN7DynexCN14tx_memory_poolEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %15) #7
  br label %217

217:                                              ; preds = %216, %70
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #7
  br label %226

218:                                              ; preds = %208
  %219 = landingpad { ptr, i32 }
          cleanup
  %220 = extractvalue { ptr, i32 } %219, 0
  store ptr %220, ptr %10, align 8
  %221 = extractvalue { ptr, i32 } %219, 1
  store i32 %221, ptr %11, align 4
  br label %226

222:                                              ; preds = %214, %203, %200
  %223 = load i8, ptr %14, align 1, !tbaa !154, !range !155, !noundef !156
  %224 = trunc i8 %223 to i1
  store i1 %224, ptr %4, align 1
  store i32 1, ptr %13, align 4
  br label %225

225:                                              ; preds = %222, %198
  call void @llvm.lifetime.end.p0(i64 1, ptr %14) #7
  br label %227

226:                                              ; preds = %218, %217
  call void @llvm.lifetime.end.p0(i64 1, ptr %14) #7
  br label %229

227:                                              ; preds = %225, %35
  call void @llvm.lifetime.end.p0(i64 32, ptr %9) #7
  call void @_ZN7DynexCN5BlockD2Ev(ptr noundef nonnull align 8 dereferenceable(384) %8) #7
  call void @llvm.lifetime.end.p0(i64 384, ptr %8) #7
  %228 = load i1, ptr %4, align 1
  ret i1 %228

229:                                              ; preds = %226, %50, %38
  call void @llvm.lifetime.end.p0(i64 32, ptr %9) #7
  call void @_ZN7DynexCN5BlockD2Ev(ptr noundef nonnull align 8 dereferenceable(384) %8) #7
  call void @llvm.lifetime.end.p0(i64 384, ptr %8) #7
  br label %230

230:                                              ; preds = %229
  %231 = load ptr, ptr %10, align 8
  %232 = load i32, ptr %11, align 4
  %233 = insertvalue { ptr, i32 } poison, ptr %231, 0
  %234 = insertvalue { ptr, i32 } %233, i32 %232, 1
  resume { ptr, i32 } %234
}

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN7DynexCN10Blockchain9haveBlockERKN6Crypto4HashE(ptr noundef nonnull align 8 dereferenceable(2636), ptr noundef nonnull align 1 dereferenceable(32)) #5 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)) #6

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

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

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

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

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

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

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

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

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

declare noundef zeroext i1 @_ZN7DynexCN14get_block_hashERKNS_5BlockERN6Crypto4HashE(ptr noundef nonnull align 8 dereferenceable(384), ptr noundef nonnull align 1 dereferenceable(32)) #3

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt10lock_guardIRN7DynexCN14tx_memory_poolEEC2ES2_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(688)) unnamed_addr #5 align 2

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

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

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

declare void @_ZN7DynexCN15NewBlockMessageC1ERKN6Crypto4HashE(ptr noundef nonnull align 1 dereferenceable(32), ptr noundef nonnull align 1 dereferenceable(32)) unnamed_addr #3

declare void @_ZN7DynexCN17BlockchainMessageC1EONS_15NewBlockMessageE(ptr noundef nonnull align 8 dereferenceable(40), ptr noundef nonnull align 1 dereferenceable(32)) unnamed_addr #3

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN5Tools15ObserverManagerIN7DynexCN26IBlockchainStorageObserverEE6notifyIMS2_FvvEJEEEvT_DpT0_(ptr noundef nonnull align 8 dereferenceable(64), i64, i64) #5 align 2

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { 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 #3 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { 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 #5 = { 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 #6 = { 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 #7 = { 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, !11, i64 1}
!10 = !{!"_ZTSN7DynexCN26block_verification_contextE", !11, i64 0, !11, i64 1, !11, i64 2, !11, i64 3, !11, i64 4}
!11 = !{!"bool", !7, i64 0}
!12 = !{!13, !6, i64 88}
!13 = !{!"_ZTSN7DynexCN10BlockchainE", !14, i64 0, !15, i64 8, !7, i64 16, !16, i64 24, !6, i64 80, !6, i64 88, !22, i64 96, !24, i64 136, !25, i64 144, !32, i64 208, !18, i64 296, !47, i64 304, !49, i64 360, !61, i64 448, !63, i64 480, !72, i64 568, !74, i64 576, !99, i64 1760, !114, i64 1888, !116, i64 1944, !126, i64 2032, !126, i64 2096, !126, i64 2160, !127, i64 2224, !135, i64 2320, !141, i64 2376, !145, i64 2432, !148, i64 2504, !11, i64 2568, !151, i64 2576, !71, i64 2592, !53, i64 2632}
!14 = !{!"_ZTSN7DynexCN21ITransactionValidatorE"}
!15 = !{!"_ZTSN7DynexCN24IDynexCNProtocolObserverE"}
!16 = !{!"_ZTSSt13unordered_mapIN6Crypto4HashEbSt4hashIS1_ESt8equal_toIS1_ESaISt4pairIKS1_bEEE", !17, i64 0}
!17 = !{!"_ZTSSt10_HashtableIN6Crypto4HashESt4pairIKS1_bESaIS4_ENSt8__detail10_Select1stESt8equal_toIS1_ESt4hashIS1_ENS6_18_Mod_range_hashingENS6_20_Default_ranged_hashENS6_20_Prime_rehash_policyENS6_17_Hashtable_traitsILb1ELb0ELb1EEEE", !6, i64 0, !18, i64 8, !19, i64 16, !18, i64 24, !20, i64 32, !6, i64 48}
!18 = !{!"long", !7, i64 0}
!19 = !{!"_ZTSNSt8__detail15_Hash_node_baseE", !6, i64 0}
!20 = !{!"_ZTSNSt8__detail20_Prime_rehash_policyE", !21, i64 0, !18, i64 8}
!21 = !{!"float", !7, i64 0}
!22 = !{!"_ZTSSt15recursive_mutex", !23, i64 0}
!23 = !{!"_ZTSSt22__recursive_mutex_base", !7, i64 0}
!24 = !{!"_ZTSN6Crypto10cn_contextE", !6, i64 0}
!25 = !{!"_ZTSN5Tools15ObserverManagerIN7DynexCN26IBlockchainStorageObserverEEE", !26, i64 0, !30, i64 24}
!26 = !{!"_ZTSSt6vectorIPN7DynexCN26IBlockchainStorageObserverESaIS2_EE", !27, i64 0}
!27 = !{!"_ZTSSt12_Vector_baseIPN7DynexCN26IBlockchainStorageObserverESaIS2_EE", !28, i64 0}
!28 = !{!"_ZTSNSt12_Vector_baseIPN7DynexCN26IBlockchainStorageObserverESaIS2_EE12_Vector_implE", !29, i64 0}
!29 = !{!"_ZTSNSt12_Vector_baseIPN7DynexCN26IBlockchainStorageObserverESaIS2_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!30 = !{!"_ZTSSt5mutex", !31, i64 0}
!31 = !{!"_ZTSSt12__mutex_base", !7, i64 0}
!32 = !{!"_ZTSN5boost11multi_index21multi_index_containerIN7DynexCN10Blockchain13SpentKeyImageENS0_10indexed_byINS0_18ordered_non_uniqueINS0_3tagINS3_13BlockIndexTagEN4mpl_2naESA_SA_SA_SA_SA_SA_SA_SA_SA_SA_SA_SA_SA_SA_SA_SA_SA_SA_EENS0_6memberIS4_jXadL_ZNS4_10blockIndexEEEEESA_EENS0_13hashed_uniqueINS7_INS3_11KeyImageTagESA_SA_SA_SA_SA_SA_SA_SA_SA_SA_SA_SA_SA_SA_SA_SA_SA_SA_SA_EENSC_IS4_N6Crypto8KeyImageEXadL_ZNS4_8keyImageEEEEESA_SA_EESA_SA_SA_SA_SA_SA_SA_SA_SA_SA_SA_SA_SA_SA_SA_SA_SA_SA_EESaIS4_EEE", !33, i64 0, !35, i64 8, !36, i64 16, !18, i64 80}
!33 = !{!"_ZTSN5boost16base_from_memberISaINS_11multi_index6detail18ordered_index_nodeINS2_19null_augment_policyENS2_17hashed_index_nodeINS2_15index_node_baseIN7DynexCN10Blockchain13SpentKeyImageESaIS9_EEEEEEEELi0EEE", !34, i64 0}
!34 = !{!"_ZTSSaIN5boost11multi_index6detail18ordered_index_nodeINS1_19null_augment_policyENS1_17hashed_index_nodeINS1_15index_node_baseIN7DynexCN10Blockchain13SpentKeyImageESaIS8_EEEEEEEE"}
!35 = !{!"_ZTSN5boost11multi_index6detail13header_holderIPNS1_18ordered_index_nodeINS1_19null_augment_policyENS1_17hashed_index_nodeINS1_15index_node_baseIN7DynexCN10Blockchain13SpentKeyImageESaIS9_EEEEEEENS0_21multi_index_containerIS9_NS0_10indexed_byINS0_18ordered_non_uniqueINS0_3tagINS8_13BlockIndexTagEN4mpl_2naESL_SL_SL_SL_SL_SL_SL_SL_SL_SL_SL_SL_SL_SL_SL_SL_SL_SL_EENS0_6memberIS9_jXadL_ZNS9_10blockIndexEEEEESL_EENS0_13hashed_uniqueINSI_INS8_11KeyImageTagESL_SL_SL_SL_SL_SL_SL_SL_SL_SL_SL_SL_SL_SL_SL_SL_SL_SL_SL_EENSN_IS9_N6Crypto8KeyImageEXadL_ZNS9_8keyImageEEEEESL_SL_EESL_SL_SL_SL_SL_SL_SL_SL_SL_SL_SL_SL_SL_SL_SL_SL_SL_SL_EESA_EEEE", !6, i64 0}
!36 = !{!"_ZTSN5boost11multi_index6detail13ordered_indexINS0_6memberIN7DynexCN10Blockchain13SpentKeyImageEjXadL_ZNS6_10blockIndexEEEEESt4lessIjENS1_9nth_layerILi1ES6_NS0_10indexed_byINS0_18ordered_non_uniqueINS0_3tagINS5_13BlockIndexTagEN4mpl_2naESG_SG_SG_SG_SG_SG_SG_SG_SG_SG_SG_SG_SG_SG_SG_SG_SG_SG_EES7_SG_EENS0_13hashed_uniqueINSD_INS5_11KeyImageTagESG_SG_SG_SG_SG_SG_SG_SG_SG_SG_SG_SG_SG_SG_SG_SG_SG_SG_SG_EENS3_IS6_N6Crypto8KeyImageEXadL_ZNS6_8keyImageEEEEESG_SG_EESG_SG_SG_SG_SG_SG_SG_SG_SG_SG_SG_SG_SG_SG_SG_SG_SG_SG_EESaIS6_EEENS_3mpl6v_itemISE_NST_7vector0ISG_EELi0EEENS1_22ordered_non_unique_tagENS1_19null_augment_policyEEE", !37, i64 0}
!37 = !{!"_ZTSN5boost11multi_index6detail18ordered_index_implINS0_6memberIN7DynexCN10Blockchain13SpentKeyImageEjXadL_ZNS6_10blockIndexEEEEESt4lessIjENS1_9nth_layerILi1ES6_NS0_10indexed_byINS0_18ordered_non_uniqueINS0_3tagINS5_13BlockIndexTagEN4mpl_2naESG_SG_SG_SG_SG_SG_SG_SG_SG_SG_SG_SG_SG_SG_SG_SG_SG_SG_EES7_SG_EENS0_13hashed_uniqueINSD_INS5_11KeyImageTagESG_SG_SG_SG_SG_SG_SG_SG_SG_SG_SG_SG_SG_SG_SG_SG_SG_SG_SG_EENS3_IS6_N6Crypto8KeyImageEXadL_ZNS6_8keyImageEEEEESG_SG_EESG_SG_SG_SG_SG_SG_SG_SG_SG_SG_SG_SG_SG_SG_SG_SG_SG_SG_EESaIS6_EEENS_3mpl6v_itemISE_NST_7vector0ISG_EELi0EEENS1_22ordered_non_unique_tagENS1_19null_augment_policyEEE", !38, i64 0, !45, i64 56, !46, i64 57}
!38 = !{!"_ZTSN5boost11multi_index6detail12hashed_indexINS0_6memberIN7DynexCN10Blockchain13SpentKeyImageEN6Crypto8KeyImageEXadL_ZNS6_8keyImageEEEEENS_4hashIS8_EESt8equal_toIS8_ENS1_9nth_layerILi2ES6_NS0_10indexed_byINS0_18ordered_non_uniqueINS0_3tagINS5_13BlockIndexTagEN4mpl_2naESK_SK_SK_SK_SK_SK_SK_SK_SK_SK_SK_SK_SK_SK_SK_SK_SK_SK_EENS3_IS6_jXadL_ZNS6_10blockIndexEEEEESK_EENS0_13hashed_uniqueINSH_INS5_11KeyImageTagESK_SK_SK_SK_SK_SK_SK_SK_SK_SK_SK_SK_SK_SK_SK_SK_SK_SK_SK_EES9_SK_SK_EESK_SK_SK_SK_SK_SK_SK_SK_SK_SK_SK_SK_SK_SK_SK_SK_SK_SK_EESaIS6_EEENS_3mpl6v_itemISP_NSV_7vector0ISK_EELi0EEENS1_17hashed_unique_tagEEE", !39, i64 0, !40, i64 1, !41, i64 2, !42, i64 8, !21, i64 40, !18, i64 48}
!39 = !{!"_ZTSN5boost11multi_index6memberIN7DynexCN10Blockchain13SpentKeyImageEN6Crypto8KeyImageEXadL_ZNS4_8keyImageEEEEE"}
!40 = !{!"_ZTSN5boost4hashIN6Crypto8KeyImageEEE"}
!41 = !{!"_ZTSSt8equal_toIN6Crypto8KeyImageEE"}
!42 = !{!"_ZTSN5boost11multi_index6detail12bucket_arrayISaIN7DynexCN10Blockchain13SpentKeyImageEEEE", !18, i64 0, !43, i64 8}
!43 = !{!"_ZTSN5boost11multi_index6detail10auto_spaceINS1_27hashed_index_base_node_implISaIcEEESaIN7DynexCN10Blockchain13SpentKeyImageEEEE", !44, i64 0, !18, i64 8, !6, i64 16}
!44 = !{!"_ZTSSaIN5boost11multi_index6detail27hashed_index_base_node_implISaIcEEEE"}
!45 = !{!"_ZTSN5boost11multi_index6memberIN7DynexCN10Blockchain13SpentKeyImageEjXadL_ZNS4_10blockIndexEEEEE"}
!46 = !{!"_ZTSSt4lessIjE"}
!47 = !{!"_ZTSSt13unordered_mapIN6Crypto4HashEN7DynexCN10Blockchain10BlockEntryESt4hashIS1_ESt8equal_toIS1_ESaISt4pairIKS1_S4_EEE", !48, i64 0}
!48 = !{!"_ZTSSt10_HashtableIN6Crypto4HashESt4pairIKS1_N7DynexCN10Blockchain10BlockEntryEESaIS7_ENSt8__detail10_Select1stESt8equal_toIS1_ESt4hashIS1_ENS9_18_Mod_range_hashingENS9_20_Default_ranged_hashENS9_20_Prime_rehash_policyENS9_17_Hashtable_traitsILb1ELb0ELb1EEEE", !6, i64 0, !18, i64 8, !19, i64 16, !18, i64 24, !20, i64 32, !6, i64 48}
!49 = !{!"_ZTSN6google15sparse_hash_mapImSt6vectorISt4pairIN7DynexCN10Blockchain16TransactionIndexEtESaIS6_EESt4hashImESt8equal_toImENS_27libc_allocator_with_reallocIS2_IKmS8_EEEEE", !50, i64 0}
!50 = !{!"_ZTSN6google16sparse_hashtableISt4pairIKmSt6vectorIS1_IN7DynexCN10Blockchain16TransactionIndexEtESaIS7_EEEmSt4hashImENS_15sparse_hash_mapImS9_SC_St8equal_toImENS_27libc_allocator_with_reallocISA_EEE9SelectKeyENSI_6SetKeyESF_SH_EE", !51, i64 0, !54, i64 32, !18, i64 40, !55, i64 48}
!51 = !{!"_ZTSN6google16sparse_hashtableISt4pairIKmSt6vectorIS1_IN7DynexCN10Blockchain16TransactionIndexEtESaIS7_EEEmSt4hashImENS_15sparse_hash_mapImS9_SC_St8equal_toImENS_27libc_allocator_with_reallocISA_EEE9SelectKeyENSI_6SetKeyESF_SH_E8SettingsE", !52, i64 0}
!52 = !{!"_ZTS21sh_hashtable_settingsImSt4hashImEmLi4EE", !18, i64 0, !18, i64 8, !21, i64 16, !21, i64 20, !11, i64 24, !11, i64 25, !11, i64 26, !53, i64 28}
!53 = !{!"int", !7, i64 0}
!54 = !{!"_ZTSN6google16sparse_hashtableISt4pairIKmSt6vectorIS1_IN7DynexCN10Blockchain16TransactionIndexEtESaIS7_EEEmSt4hashImENS_15sparse_hash_mapImS9_SC_St8equal_toImENS_27libc_allocator_with_reallocISA_EEE9SelectKeyENSI_6SetKeyESF_SH_E7KeyInfoE", !18, i64 0}
!55 = !{!"_ZTSN6google11sparsetableISt4pairIKmSt6vectorIS1_IN7DynexCN10Blockchain16TransactionIndexEtESaIS7_EEELt48ENS_27libc_allocator_with_reallocISA_EEEE", !56, i64 0, !60, i64 24}
!56 = !{!"_ZTSSt6vectorIN6google11sparsegroupISt4pairIKmS_IS2_IN7DynexCN10Blockchain16TransactionIndexEtESaIS7_EEELt48ENS0_27libc_allocator_with_reallocISA_EEEENSB_ISD_EEE", !57, i64 0}
!57 = !{!"_ZTSSt12_Vector_baseIN6google11sparsegroupISt4pairIKmSt6vectorIS2_IN7DynexCN10Blockchain16TransactionIndexEtESaIS8_EEELt48ENS0_27libc_allocator_with_reallocISB_EEEENSC_ISE_EEE", !58, i64 0}
!58 = !{!"_ZTSNSt12_Vector_baseIN6google11sparsegroupISt4pairIKmSt6vectorIS2_IN7DynexCN10Blockchain16TransactionIndexEtESaIS8_EEELt48ENS0_27libc_allocator_with_reallocISB_EEEENSC_ISE_EEE12_Vector_implE", !59, i64 0}
!59 = !{!"_ZTSNSt12_Vector_baseIN6google11sparsegroupISt4pairIKmSt6vectorIS2_IN7DynexCN10Blockchain16TransactionIndexEtESaIS8_EEELt48ENS0_27libc_allocator_with_reallocISB_EEEENSC_ISE_EEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!60 = !{!"_ZTSN6google11sparsetableISt4pairIKmSt6vectorIS1_IN7DynexCN10Blockchain16TransactionIndexEtESaIS7_EEELt48ENS_27libc_allocator_with_reallocISA_EEE8SettingsE", !18, i64 0, !18, i64 8}
!61 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !62, i64 0, !18, i64 8, !7, i64 16}
!62 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !6, i64 0}
!63 = !{!"_ZTSN7DynexCN11CheckpointsE", !64, i64 0, !71, i64 48}
!64 = !{!"_ZTSSt3mapIjN6Crypto4HashESt4lessIjESaISt4pairIKjS1_EEE", !65, i64 0}
!65 = !{!"_ZTSSt8_Rb_treeIjSt4pairIKjN6Crypto4HashEESt10_Select1stIS4_ESt4lessIjESaIS4_EE", !66, i64 0}
!66 = !{!"_ZTSNSt8_Rb_treeIjSt4pairIKjN6Crypto4HashEESt10_Select1stIS4_ESt4lessIjESaIS4_EE13_Rb_tree_implIS8_Lb1EEE", !67, i64 0, !68, i64 8}
!67 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessIjEE", !46, i64 0}
!68 = !{!"_ZTSSt15_Rb_tree_header", !69, i64 0, !18, i64 32}
!69 = !{!"_ZTSSt18_Rb_tree_node_base", !70, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!70 = !{!"_ZTSSt14_Rb_tree_color", !7, i64 0}
!71 = !{!"_ZTSN7Logging9LoggerRefE", !6, i64 0, !61, i64 8}
!72 = !{!"_ZTSSt6atomicIbE", !73, i64 0}
!73 = !{!"_ZTSSt13__atomic_baseIbE", !11, i64 0}
!74 = !{!"_ZTS13SwappedVectorIN7DynexCN10Blockchain10BlockEntryEE", !75, i64 0, !75, i64 528, !18, i64 1056, !85, i64 1064, !18, i64 1088, !89, i64 1096, !94, i64 1144, !18, i64 1168, !18, i64 1176}
!75 = !{!"_ZTSSt13basic_fstreamIcSt11char_traitsIcEE", !76, i64 0, !79, i64 24}
!76 = !{!"_ZTSSd", !77, i64 0, !78, i64 16}
!77 = !{!"_ZTSSi", !18, i64 8}
!78 = !{!"_ZTSSo"}
!79 = !{!"_ZTSSt13basic_filebufIcSt11char_traitsIcEE", !80, i64 0, !7, i64 64, !82, i64 104, !83, i64 120, !84, i64 124, !84, i64 132, !84, i64 140, !6, i64 152, !18, i64 160, !11, i64 168, !11, i64 169, !11, i64 170, !7, i64 171, !6, i64 176, !6, i64 184, !11, i64 192, !6, i64 200, !6, i64 208, !18, i64 216, !6, i64 224, !6, i64 232}
!80 = !{!"_ZTSSt15basic_streambufIcSt11char_traitsIcEE", !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !6, i64 48, !81, i64 56}
!81 = !{!"_ZTSSt6locale", !6, i64 0}
!82 = !{!"_ZTSSt12__basic_fileIcE", !6, i64 0, !11, i64 8}
!83 = !{!"_ZTSSt13_Ios_Openmode", !7, i64 0}
!84 = !{!"_ZTS11__mbstate_t", !53, i64 0, !7, i64 4}
!85 = !{!"_ZTSSt6vectorImSaImEE", !86, i64 0}
!86 = !{!"_ZTSSt12_Vector_baseImSaImEE", !87, i64 0}
!87 = !{!"_ZTSNSt12_Vector_baseImSaImEE12_Vector_implE", !88, i64 0}
!88 = !{!"_ZTSNSt12_Vector_baseImSaImEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!89 = !{!"_ZTSSt3mapImN13SwappedVectorIN7DynexCN10Blockchain10BlockEntryEE9ItemEntryESt4lessImESaISt4pairIKmS5_EEE", !90, i64 0}
!90 = !{!"_ZTSSt8_Rb_treeImSt4pairIKmN13SwappedVectorIN7DynexCN10Blockchain10BlockEntryEE9ItemEntryEESt10_Select1stIS8_ESt4lessImESaIS8_EE", !91, i64 0}
!91 = !{!"_ZTSNSt8_Rb_treeImSt4pairIKmN13SwappedVectorIN7DynexCN10Blockchain10BlockEntryEE9ItemEntryEESt10_Select1stIS8_ESt4lessImESaIS8_EE13_Rb_tree_implISC_Lb1EEE", !92, i64 0, !68, i64 8}
!92 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessImEE", !93, i64 0}
!93 = !{!"_ZTSSt4lessImE"}
!94 = !{!"_ZTSNSt7__cxx114listIN13SwappedVectorIN7DynexCN10Blockchain10BlockEntryEE10CacheEntryESaIS6_EEE", !95, i64 0}
!95 = !{!"_ZTSNSt7__cxx1110_List_baseIN13SwappedVectorIN7DynexCN10Blockchain10BlockEntryEE10CacheEntryESaIS6_EEE", !96, i64 0}
!96 = !{!"_ZTSNSt7__cxx1110_List_baseIN13SwappedVectorIN7DynexCN10Blockchain10BlockEntryEE10CacheEntryESaIS6_EE10_List_implE", !97, i64 0}
!97 = !{!"_ZTSNSt8__detail17_List_node_headerE", !98, i64 0, !18, i64 16}
!98 = !{!"_ZTSNSt8__detail15_List_node_baseE", !6, i64 0, !6, i64 8}
!99 = !{!"_ZTSN7DynexCN10BlockIndexE", !100, i64 0, !6, i64 120}
!100 = !{!"_ZTSN5boost11multi_index21multi_index_containerIN6Crypto4HashENS0_10indexed_byINS0_13random_accessINS0_3tagIN4mpl_2naES8_S8_S8_S8_S8_S8_S8_S8_S8_S8_S8_S8_S8_S8_S8_S8_S8_S8_S8_EEEENS0_13hashed_uniqueINS0_8identityIS3_EES8_S8_S8_EES8_S8_S8_S8_S8_S8_S8_S8_S8_S8_S8_S8_S8_S8_S8_S8_S8_S8_EESaIS3_EEE", !101, i64 0, !103, i64 8, !104, i64 16, !18, i64 112}
!101 = !{!"_ZTSN5boost16base_from_memberISaINS_11multi_index6detail24random_access_index_nodeINS2_17hashed_index_nodeINS2_15index_node_baseIN6Crypto4HashESaIS7_EEEEEEEELi0EEE", !102, i64 0}
!102 = !{!"_ZTSSaIN5boost11multi_index6detail24random_access_index_nodeINS1_17hashed_index_nodeINS1_15index_node_baseIN6Crypto4HashESaIS6_EEEEEEEE"}
!103 = !{!"_ZTSN5boost11multi_index6detail13header_holderIPNS1_24random_access_index_nodeINS1_17hashed_index_nodeINS1_15index_node_baseIN6Crypto4HashESaIS7_EEEEEEENS0_21multi_index_containerIS7_NS0_10indexed_byINS0_13random_accessINS0_3tagIN4mpl_2naESI_SI_SI_SI_SI_SI_SI_SI_SI_SI_SI_SI_SI_SI_SI_SI_SI_SI_SI_EEEENS0_13hashed_uniqueINS0_8identityIS7_EESI_SI_SI_EESI_SI_SI_SI_SI_SI_SI_SI_SI_SI_SI_SI_SI_SI_SI_SI_SI_SI_EES8_EEEE", !6, i64 0}
!104 = !{!"_ZTSN5boost11multi_index6detail19random_access_indexINS1_9nth_layerILi1EN6Crypto4HashENS0_10indexed_byINS0_13random_accessINS0_3tagIN4mpl_2naESA_SA_SA_SA_SA_SA_SA_SA_SA_SA_SA_SA_SA_SA_SA_SA_SA_SA_SA_EEEENS0_13hashed_uniqueINS0_8identityIS5_EESA_SA_SA_EESA_SA_SA_SA_SA_SA_SA_SA_SA_SA_SA_SA_SA_SA_SA_SA_SA_SA_EESaIS5_EEENS_3mpl7vector0ISA_EEEE", !105, i64 0, !111, i64 56}
!105 = !{!"_ZTSN5boost11multi_index6detail12hashed_indexINS0_8identityIN6Crypto4HashEEENS_4hashIS5_EESt8equal_toIS5_ENS1_9nth_layerILi2ES5_NS0_10indexed_byINS0_13random_accessINS0_3tagIN4mpl_2naESG_SG_SG_SG_SG_SG_SG_SG_SG_SG_SG_SG_SG_SG_SG_SG_SG_SG_SG_EEEENS0_13hashed_uniqueIS6_SG_SG_SG_EESG_SG_SG_SG_SG_SG_SG_SG_SG_SG_SG_SG_SG_SG_SG_SG_SG_SG_EESaIS5_EEENS_3mpl7vector0ISG_EENS1_17hashed_unique_tagEEE", !106, i64 0, !107, i64 1, !108, i64 2, !109, i64 8, !21, i64 40, !18, i64 48}
!106 = !{!"_ZTSN5boost11multi_index8identityIN6Crypto4HashEEE"}
!107 = !{!"_ZTSN5boost4hashIN6Crypto4HashEEE"}
!108 = !{!"_ZTSSt8equal_toIN6Crypto4HashEE"}
!109 = !{!"_ZTSN5boost11multi_index6detail12bucket_arrayISaIN6Crypto4HashEEEE", !18, i64 0, !110, i64 8}
!110 = !{!"_ZTSN5boost11multi_index6detail10auto_spaceINS1_27hashed_index_base_node_implISaIcEEESaIN6Crypto4HashEEEE", !44, i64 0, !18, i64 8, !6, i64 16}
!111 = !{!"_ZTSN5boost11multi_index6detail29random_access_index_ptr_arrayISaIN6Crypto4HashEEEE", !18, i64 0, !18, i64 8, !112, i64 16}
!112 = !{!"_ZTSN5boost11multi_index6detail10auto_spaceIPNS1_29random_access_index_node_implISaIcEEESaIN6Crypto4HashEEEE", !113, i64 0, !18, i64 8, !6, i64 16}
!113 = !{!"_ZTSSaIPN5boost11multi_index6detail29random_access_index_node_implISaIcEEEE"}
!114 = !{!"_ZTSSt13unordered_mapIN6Crypto4HashEN7DynexCN10Blockchain16TransactionIndexESt4hashIS1_ESt8equal_toIS1_ESaISt4pairIKS1_S4_EEE", !115, i64 0}
!115 = !{!"_ZTSSt10_HashtableIN6Crypto4HashESt4pairIKS1_N7DynexCN10Blockchain16TransactionIndexEESaIS7_ENSt8__detail10_Select1stESt8equal_toIS1_ESt4hashIS1_ENS9_18_Mod_range_hashingENS9_20_Default_ranged_hashENS9_20_Prime_rehash_policyENS9_17_Hashtable_traitsILb1ELb0ELb1EEEE", !6, i64 0, !18, i64 8, !19, i64 16, !18, i64 24, !20, i64 32, !6, i64 48}
!116 = !{!"_ZTSN6google15sparse_hash_mapImSt6vectorIN7DynexCN10Blockchain25MultisignatureOutputUsageESaIS4_EESt4hashImESt8equal_toImENS_27libc_allocator_with_reallocISt4pairIKmS6_EEEEE", !117, i64 0}
!117 = !{!"_ZTSN6google16sparse_hashtableISt4pairIKmSt6vectorIN7DynexCN10Blockchain25MultisignatureOutputUsageESaIS6_EEEmSt4hashImENS_15sparse_hash_mapImS8_SB_St8equal_toImENS_27libc_allocator_with_reallocIS9_EEE9SelectKeyENSH_6SetKeyESE_SG_EE", !118, i64 0, !119, i64 32, !18, i64 40, !120, i64 48}
!118 = !{!"_ZTSN6google16sparse_hashtableISt4pairIKmSt6vectorIN7DynexCN10Blockchain25MultisignatureOutputUsageESaIS6_EEEmSt4hashImENS_15sparse_hash_mapImS8_SB_St8equal_toImENS_27libc_allocator_with_reallocIS9_EEE9SelectKeyENSH_6SetKeyESE_SG_E8SettingsE", !52, i64 0}
!119 = !{!"_ZTSN6google16sparse_hashtableISt4pairIKmSt6vectorIN7DynexCN10Blockchain25MultisignatureOutputUsageESaIS6_EEEmSt4hashImENS_15sparse_hash_mapImS8_SB_St8equal_toImENS_27libc_allocator_with_reallocIS9_EEE9SelectKeyENSH_6SetKeyESE_SG_E7KeyInfoE", !18, i64 0}
!120 = !{!"_ZTSN6google11sparsetableISt4pairIKmSt6vectorIN7DynexCN10Blockchain25MultisignatureOutputUsageESaIS6_EEELt48ENS_27libc_allocator_with_reallocIS9_EEEE", !121, i64 0, !125, i64 24}
!121 = !{!"_ZTSSt6vectorIN6google11sparsegroupISt4pairIKmS_IN7DynexCN10Blockchain25MultisignatureOutputUsageESaIS6_EEELt48ENS0_27libc_allocator_with_reallocIS9_EEEENSA_ISC_EEE", !122, i64 0}
!122 = !{!"_ZTSSt12_Vector_baseIN6google11sparsegroupISt4pairIKmSt6vectorIN7DynexCN10Blockchain25MultisignatureOutputUsageESaIS7_EEELt48ENS0_27libc_allocator_with_reallocISA_EEEENSB_ISD_EEE", !123, i64 0}
!123 = !{!"_ZTSNSt12_Vector_baseIN6google11sparsegroupISt4pairIKmSt6vectorIN7DynexCN10Blockchain25MultisignatureOutputUsageESaIS7_EEELt48ENS0_27libc_allocator_with_reallocISA_EEEENSB_ISD_EEE12_Vector_implE", !124, i64 0}
!124 = !{!"_ZTSNSt12_Vector_baseIN6google11sparsegroupISt4pairIKmSt6vectorIN7DynexCN10Blockchain25MultisignatureOutputUsageESaIS7_EEELt48ENS0_27libc_allocator_with_reallocISA_EEEENSB_ISD_EEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!125 = !{!"_ZTSN6google11sparsetableISt4pairIKmSt6vectorIN7DynexCN10Blockchain25MultisignatureOutputUsageESaIS6_EEELt48ENS_27libc_allocator_with_reallocIS9_EEE8SettingsE", !18, i64 0, !18, i64 8}
!126 = !{!"_ZTSN7DynexCN20BasicUpgradeDetectorI13SwappedVectorINS_10Blockchain10BlockEntryEEEE", !71, i64 0, !6, i64 40, !6, i64 48, !7, i64 56, !53, i64 60}
!127 = !{!"_ZTSN7DynexCN14PaymentIdIndexE", !128, i64 0, !11, i64 88}
!128 = !{!"_ZTSSt18unordered_multimapIN6Crypto4HashES1_St8functionIFmRKS1_EESt8equal_toIS1_ESaISt4pairIS3_S1_EEE", !129, i64 0}
!129 = !{!"_ZTSSt10_HashtableIN6Crypto4HashESt4pairIKS1_S1_ESaIS4_ENSt8__detail10_Select1stESt8equal_toIS1_ESt8functionIFmRS3_EENS6_18_Mod_range_hashingENS6_20_Default_ranged_hashENS6_20_Prime_rehash_policyENS6_17_Hashtable_traitsILb1ELb0ELb0EEEE", !130, i64 0, !6, i64 32, !18, i64 40, !19, i64 48, !18, i64 56, !20, i64 64, !6, i64 80}
!130 = !{!"_ZTSNSt8__detail15_Hashtable_baseIN6Crypto4HashESt4pairIKS2_S2_ENS_10_Select1stESt8equal_toIS2_ESt8functionIFmRS4_EENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb0EEEEE", !131, i64 0}
!131 = !{!"_ZTSNSt8__detail15_Hash_code_baseIN6Crypto4HashESt4pairIKS2_S2_ENS_10_Select1stESt8functionIFmRS4_EENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb1EEE", !132, i64 0}
!132 = !{!"_ZTSNSt8__detail21_Hashtable_ebo_helperILi1ESt8functionIFmRKN6Crypto4HashEEELb0EEE", !133, i64 0}
!133 = !{!"_ZTSSt8functionIFmRKN6Crypto4HashEEE", !134, i64 0, !6, i64 24}
!134 = !{!"_ZTSSt14_Function_base", !7, i64 0, !6, i64 16}
!135 = !{!"_ZTSN7DynexCN12AddressIndexE", !136, i64 0, !11, i64 48}
!136 = !{!"_ZTSSt8multimapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN6Crypto4HashESt4lessIS5_ESaISt4pairIKS5_S7_EEE", !137, i64 0}
!137 = !{!"_ZTSSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_N6Crypto4HashEESt10_Select1stISA_ESt4lessIS5_ESaISA_EE", !138, i64 0}
!138 = !{!"_ZTSNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_N6Crypto4HashEESt10_Select1stISA_ESt4lessIS5_ESaISA_EE13_Rb_tree_implISE_Lb1EEE", !139, i64 0, !68, i64 8}
!139 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEE", !140, i64 0}
!140 = !{!"_ZTSSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE"}
!141 = !{!"_ZTSN7DynexCN20TimestampBlocksIndexE", !142, i64 0, !11, i64 48}
!142 = !{!"_ZTSSt8multimapImN6Crypto4HashESt4lessImESaISt4pairIKmS1_EEE", !143, i64 0}
!143 = !{!"_ZTSSt8_Rb_treeImSt4pairIKmN6Crypto4HashEESt10_Select1stIS4_ESt4lessImESaIS4_EE", !144, i64 0}
!144 = !{!"_ZTSNSt8_Rb_treeImSt4pairIKmN6Crypto4HashEESt10_Select1stIS4_ESt4lessImESaIS4_EE13_Rb_tree_implIS8_Lb1EEE", !92, i64 0, !68, i64 8}
!145 = !{!"_ZTSN7DynexCN26GeneratedTransactionsIndexE", !146, i64 0, !18, i64 56, !11, i64 64}
!146 = !{!"_ZTSSt13unordered_mapIjmSt4hashIjESt8equal_toIjESaISt4pairIKjmEEE", !147, i64 0}
!147 = !{!"_ZTSSt10_HashtableIjSt4pairIKjmESaIS2_ENSt8__detail10_Select1stESt8equal_toIjESt4hashIjENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb0ELb0ELb1EEEE", !6, i64 0, !18, i64 8, !19, i64 16, !18, i64 24, !20, i64 32, !6, i64 48}
!148 = !{!"_ZTSN7DynexCN17OrphanBlocksIndexE", !149, i64 0, !11, i64 56}
!149 = !{!"_ZTSSt18unordered_multimapIjN6Crypto4HashESt4hashIjESt8equal_toIjESaISt4pairIKjS1_EEE", !150, i64 0}
!150 = !{!"_ZTSSt10_HashtableIjSt4pairIKjN6Crypto4HashEESaIS4_ENSt8__detail10_Select1stESt8equal_toIjESt4hashIjENS6_18_Mod_range_hashingENS6_20_Default_ranged_hashENS6_20_Prime_rehash_policyENS6_17_Hashtable_traitsILb0ELb0ELb0EEEE", !6, i64 0, !18, i64 8, !19, i64 16, !18, i64 24, !20, i64 32, !6, i64 48}
!151 = !{!"_ZTSN7DynexCN19IntrusiveLinkedListINS_12MessageQueueINS_17BlockchainMessageEEEEE", !6, i64 0, !6, i64 8}
!152 = !{!10, !11, i64 3}
!153 = !{!10, !11, i64 0}
!154 = !{!11, !11, i64 0}
!155 = !{i8 0, i8 2}
!156 = !{}
!157 = !{!7, !7, i64 0}


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

%"class.std::__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 }
%"struct.Crypto::Hash" = type { [32 x i8] }
%"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.std::lock_guard.363" = type { ptr }
%"class.std::lock_guard" = type { ptr }
%"class.DynexCN::BlockchainMessage" = type { i32, %union.anon.278 }
%union.anon.278 = type { ptr, [24 x i8] }
%"class.DynexCN::NewBlockMessage" = type { %"struct.Crypto::Hash" }

@_ZN7Logging7DEFAULTB5cxx11E = external global %"class.std::__cxx11::basic_string", align 8
@_ZN7Logging10BRIGHT_REDB5cxx11E = external global %"class.std::__cxx11::basic_string", align 8
@.str.192 = external hidden unnamed_addr constant [60 x i8], align 1
@.str.193 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.194 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.195 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.196 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.197 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.198 = external hidden unnamed_addr constant [25 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 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 #1 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 #2

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 #3

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7DynexCN10Blockchain9getTailIdEv(ptr dead_on_unwind noalias writable sret(%"struct.Crypto::Hash") align 1, ptr noundef nonnull align 8 dereferenceable(2636)) local_unnamed_addr #5 align 2

; Function Attrs: mustprogress uwtable
define dso_local noundef zeroext i1 @_ZN7DynexCN10Blockchain11addNewBlockERKNS_5BlockERNS_26block_verification_contextE(ptr noundef nonnull align 8 dereferenceable(2636) %0, ptr noundef nonnull align 8 dereferenceable(384) %1, ptr noundef nonnull align 1 dereferenceable(5) %2) local_unnamed_addr #5 align 2 personality ptr @__gxx_personality_v0 {
  %4 = alloca %"struct.DynexCN::Block", align 8
  %5 = alloca %"struct.Crypto::Hash", align 1
  %6 = alloca %"class.Logging::LoggerMessage", align 8
  %7 = alloca %"class.std::lock_guard.363", align 8
  %8 = alloca %"class.std::lock_guard", align 8
  %9 = alloca %"class.Logging::LoggerMessage", align 8
  %10 = alloca %"struct.Crypto::Hash", align 1
  %11 = alloca %"class.Logging::LoggerMessage", align 8
  %12 = alloca %"class.std::__cxx11::basic_string", align 8
  %13 = alloca %"class.std::__cxx11::basic_string", align 8
  %14 = alloca %"struct.Crypto::Hash", align 1
  %15 = alloca %"class.std::__cxx11::basic_string", align 8
  %16 = alloca %"class.DynexCN::BlockchainMessage", align 8
  %17 = alloca %"class.DynexCN::NewBlockMessage", align 1
  call void @llvm.lifetime.start.p0(i64 384, ptr nonnull %4) #7
  call void @_ZN7DynexCN5BlockC2ERKS0_(ptr noundef nonnull align 8 dereferenceable(384) %4, ptr noundef nonnull align 8 dereferenceable(384) %1)
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %5) #7
  %18 = invoke noundef zeroext i1 @_ZN7DynexCN14get_block_hashERKNS_5BlockERN6Crypto4HashE(ptr noundef nonnull align 8 dereferenceable(384) %4, ptr noundef nonnull align 1 dereferenceable(32) %5)
          to label %19 unwind label %26

19:                                               ; preds = %3
  br i1 %18, label %33, label %20

20:                                               ; preds = %19
  call void @llvm.lifetime.start.p0(i64 432, ptr nonnull %6) #7
  %21 = 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 %6, ptr noundef nonnull align 8 dereferenceable(40) %21, i32 noundef 1, ptr noundef nonnull align 8 dereferenceable(32) @_ZN7Logging10BRIGHT_REDB5cxx11E)
          to label %22 unwind label %28

22:                                               ; preds = %20
  %23 = invoke noundef nonnull align 8 dereferenceable(161) ptr @_ZStlsIN7Logging13LoggerMessageEA60_cEOT_S4_RKT0_(ptr noundef nonnull align 8 dereferenceable(161) %6, ptr noundef nonnull align 1 dereferenceable(60) @.str.192)
          to label %24 unwind label %30

24:                                               ; preds = %22
  call void @_ZN7Logging13LoggerMessageD1Ev(ptr noundef nonnull align 8 dereferenceable(161) %6) #7
  call void @llvm.lifetime.end.p0(i64 432, ptr nonnull %6) #7
  %25 = getelementptr inbounds i8, ptr %2, i64 1
  store i8 1, ptr %25, align 1, !tbaa !5
  br label %142

26:                                               ; preds = %3
  %27 = landingpad { ptr, i32 }
          cleanup
  br label %143

28:                                               ; preds = %20
  %29 = landingpad { ptr, i32 }
          cleanup
  br label %32

30:                                               ; preds = %22
  %31 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7Logging13LoggerMessageD1Ev(ptr noundef nonnull align 8 dereferenceable(161) %6) #7
  br label %32

32:                                               ; preds = %30, %28
  %.pn = phi { ptr, i32 } [ %31, %30 ], [ %29, %28 ]
  call void @llvm.lifetime.end.p0(i64 432, ptr nonnull %6) #7
  br label %143

33:                                               ; preds = %19
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %7) #7
  %34 = getelementptr inbounds i8, ptr %0, i64 88
  %35 = load ptr, ptr %34, align 8, !tbaa !10
  invoke void @_ZNSt10lock_guardIRN7DynexCN14tx_memory_poolEEC2ES2_(ptr noundef nonnull align 8 dereferenceable(8) %7, ptr noundef nonnull align 8 dereferenceable(688) %35)
          to label %36 unwind label %51

36:                                               ; preds = %33
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %8) #7
  %37 = getelementptr inbounds i8, ptr %0, i64 96
  invoke void @_ZNSt10lock_guardISt15recursive_mutexEC2ERS0_(ptr noundef nonnull align 8 dereferenceable(8) %8, ptr noundef nonnull align 8 dereferenceable(40) %37)
          to label %38 unwind label %53

38:                                               ; preds = %36
  %39 = invoke noundef zeroext i1 @_ZN7DynexCN10Blockchain9haveBlockERKN6Crypto4HashE(ptr noundef nonnull align 8 dereferenceable(2636) %0, ptr noundef nonnull align 1 dereferenceable(32) %5)
          to label %40 unwind label %55

40:                                               ; preds = %38
  br i1 %39, label %41, label %62

41:                                               ; preds = %40
  call void @llvm.lifetime.start.p0(i64 432, ptr nonnull %9) #7
  %42 = 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 %9, ptr noundef nonnull align 8 dereferenceable(40) %42, i32 noundef 5, ptr noundef nonnull align 8 dereferenceable(32) @_ZN7Logging7DEFAULTB5cxx11E)
          to label %43 unwind label %57

43:                                               ; preds = %41
  %44 = invoke noundef nonnull align 8 dereferenceable(161) ptr @_ZStlsIN7Logging13LoggerMessageEA17_cEOT_S4_RKT0_(ptr noundef nonnull align 8 dereferenceable(161) %9, ptr noundef nonnull align 1 dereferenceable(17) @.str.193)
          to label %45 unwind label %59

45:                                               ; preds = %43
  %46 = invoke noundef nonnull align 8 dereferenceable(161) ptr @_ZStlsIN7Logging13LoggerMessageEN6Crypto4HashEEOT_S5_RKT0_(ptr noundef nonnull align 8 dereferenceable(161) %44, ptr noundef nonnull align 1 dereferenceable(32) %5)
          to label %47 unwind label %59

47:                                               ; preds = %45
  %48 = invoke noundef nonnull align 8 dereferenceable(161) ptr @_ZStlsIN7Logging13LoggerMessageEA16_cEOT_S4_RKT0_(ptr noundef nonnull align 8 dereferenceable(161) %46, ptr noundef nonnull align 1 dereferenceable(16) @.str.194)
          to label %49 unwind label %59

49:                                               ; preds = %47
  call void @_ZN7Logging13LoggerMessageD1Ev(ptr noundef nonnull align 8 dereferenceable(161) %9) #7
  call void @llvm.lifetime.end.p0(i64 432, ptr nonnull %9) #7
  %50 = getelementptr inbounds i8, ptr %2, i64 3
  store i8 1, ptr %50, align 1, !tbaa !151
  br label %131

51:                                               ; preds = %33
  %52 = landingpad { ptr, i32 }
          cleanup
  br label %139

53:                                               ; preds = %36
  %54 = landingpad { ptr, i32 }
          cleanup
  br label %138

55:                                               ; preds = %119, %92, %38
  %56 = landingpad { ptr, i32 }
          cleanup
  br label %137

57:                                               ; preds = %41
  %58 = landingpad { ptr, i32 }
          cleanup
  br label %61

59:                                               ; preds = %47, %45, %43
  %60 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7Logging13LoggerMessageD1Ev(ptr noundef nonnull align 8 dereferenceable(161) %9) #7
  br label %61

61:                                               ; preds = %59, %57
  %.pn46 = phi { ptr, i32 } [ %60, %59 ], [ %58, %57 ]
  call void @llvm.lifetime.end.p0(i64 432, ptr nonnull %9) #7
  br label %137

62:                                               ; preds = %40
  %63 = getelementptr inbounds i8, ptr %4, i64 16
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %10) #7
  invoke void @_ZN7DynexCN10Blockchain9getTailIdEv(ptr dead_on_unwind nonnull writable sret(%"struct.Crypto::Hash") align 1 %10, ptr noundef nonnull align 8 dereferenceable(2636) %0)
          to label %64 unwind label %94

64:                                               ; preds = %62
  %65 = call noundef zeroext i1 @_ZN6CryptoeqERKNS_4HashES2_(ptr noundef nonnull align 1 dereferenceable(32) %63, ptr noundef nonnull align 1 dereferenceable(32) %10)
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %10) #7
  br i1 %65, label %119, label %66

66:                                               ; preds = %64
  call void @llvm.lifetime.start.p0(i64 432, ptr nonnull %11) #7
  %67 = 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 %11, ptr noundef nonnull align 8 dereferenceable(40) %67, i32 noundef 4, ptr noundef nonnull align 8 dereferenceable(32) @_ZN7Logging7DEFAULTB5cxx11E)
          to label %68 unwind label %96

68:                                               ; preds = %66
  %69 = invoke noundef nonnull align 8 dereferenceable(161) ptr @_ZStlsIN7Logging13LoggerMessageEA28_cEOT_S4_RKT0_(ptr noundef nonnull align 8 dereferenceable(161) %11, ptr noundef nonnull align 1 dereferenceable(28) @.str.195)
          to label %70 unwind label %98

70:                                               ; preds = %68
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %12) #7
  invoke void @_ZN6Common8podToHexIN6Crypto4HashEEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKT_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %12, ptr noundef nonnull align 1 dereferenceable(32) %5)
          to label %71 unwind label %100

71:                                               ; preds = %70
  %72 = invoke noundef nonnull align 8 dereferenceable(161) ptr @_ZStlsIN7Logging13LoggerMessageENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEOT_S9_RKT0_(ptr noundef nonnull align 8 dereferenceable(161) %69, ptr noundef nonnull align 8 dereferenceable(32) %12)
          to label %73 unwind label %102

73:                                               ; preds = %71
  %74 = invoke noundef nonnull align 8 dereferenceable(161) ptr @_ZStlsIN7Logging13LoggerMessageEA12_cEOT_S4_RKT0_(ptr noundef nonnull align 8 dereferenceable(161) %72, ptr noundef nonnull align 1 dereferenceable(12) @.str.196)
          to label %75 unwind label %102

75:                                               ; preds = %73
  %76 = getelementptr inbounds i8, ptr %4, i64 264
  %77 = call noundef nonnull align 8 dereferenceable(72) ptr @_ZNSt6vectorIN5boost7variantIN7DynexCN9BaseInputEJNS2_8KeyInputENS2_19MultisignatureInputEEEESaIS6_EE5frontEv(ptr noundef nonnull align 8 dereferenceable(24) %76) #7
  %78 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN5boost3getIN7DynexCN9BaseInputES2_JNS1_8KeyInputENS1_19MultisignatureInputEEEENS_13add_referenceIT_E4typeERNS_7variantIT0_JDpT1_EEE(ptr noundef nonnull align 8 dereferenceable(72) %77)
          to label %79 unwind label %102

79:                                               ; preds = %75
  %80 = invoke noundef nonnull align 8 dereferenceable(161) ptr @_ZStlsIN7Logging13LoggerMessageEjEOT_S3_RKT0_(ptr noundef nonnull align 8 dereferenceable(161) %74, ptr noundef nonnull align 4 dereferenceable(4) %78)
          to label %81 unwind label %102

81:                                               ; preds = %79
  %82 = invoke noundef nonnull align 8 dereferenceable(161) ptr @_ZStlsIN7Logging13LoggerMessageEA36_cEOT_S4_RKT0_(ptr noundef nonnull align 8 dereferenceable(161) %80, ptr noundef nonnull align 1 dereferenceable(36) @.str.197)
          to label %83 unwind label %102

83:                                               ; preds = %81
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %13) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %14) #7
  invoke void @_ZN7DynexCN10Blockchain9getTailIdEv(ptr dead_on_unwind nonnull writable sret(%"struct.Crypto::Hash") align 1 %14, ptr noundef nonnull align 8 dereferenceable(2636) %0)
          to label %84 unwind label %104

84:                                               ; preds = %83
  invoke void @_ZN6Common8podToHexIN6Crypto4HashEEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKT_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %13, ptr noundef nonnull align 1 dereferenceable(32) %14)
          to label %85 unwind label %104

85:                                               ; preds = %84
  %86 = invoke noundef nonnull align 8 dereferenceable(161) ptr @_ZStlsIN7Logging13LoggerMessageENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEOT_S9_RKT0_(ptr noundef nonnull align 8 dereferenceable(161) %82, ptr noundef nonnull align 8 dereferenceable(32) %13)
          to label %87 unwind label %106

87:                                               ; preds = %85
  %88 = invoke noundef nonnull align 8 dereferenceable(161) ptr @_ZStlsIN7Logging13LoggerMessageEA25_cEOT_S4_RKT0_(ptr noundef nonnull align 8 dereferenceable(161) %86, ptr noundef nonnull align 1 dereferenceable(25) @.str.198)
          to label %89 unwind label %106

89:                                               ; preds = %87
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %15) #7
  invoke void @_ZN6Common8podToHexIN6Crypto4HashEEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKT_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %15, ptr noundef nonnull align 1 dereferenceable(32) %63)
          to label %90 unwind label %108

90:                                               ; preds = %89
  %91 = invoke noundef nonnull align 8 dereferenceable(161) ptr @_ZStlsIN7Logging13LoggerMessageENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEOT_S9_RKT0_(ptr noundef nonnull align 8 dereferenceable(161) %88, ptr noundef nonnull align 8 dereferenceable(32) %15)
          to label %92 unwind label %110

92:                                               ; preds = %90
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %15) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %14) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %13) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %12) #7
  call void @_ZN7Logging13LoggerMessageD1Ev(ptr noundef nonnull align 8 dereferenceable(161) %11) #7
  call void @llvm.lifetime.end.p0(i64 432, ptr nonnull %11) #7
  store i8 0, ptr %2, align 1, !tbaa !152
  %93 = 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) %4, ptr noundef nonnull align 1 dereferenceable(32) %5, ptr noundef nonnull align 1 dereferenceable(5) %2, i1 noundef zeroext true)
          to label %131 unwind label %55

94:                                               ; preds = %62
  %95 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %10) #7
  br label %137

96:                                               ; preds = %66
  %97 = landingpad { ptr, i32 }
          cleanup
  br label %118

98:                                               ; preds = %68
  %99 = landingpad { ptr, i32 }
          cleanup
  br label %117

100:                                              ; preds = %70
  %101 = landingpad { ptr, i32 }
          cleanup
  br label %116

102:                                              ; preds = %81, %79, %75, %73, %71
  %103 = landingpad { ptr, i32 }
          cleanup
  br label %115

104:                                              ; preds = %84, %83
  %105 = landingpad { ptr, i32 }
          cleanup
  br label %114

106:                                              ; preds = %87, %85
  %107 = landingpad { ptr, i32 }
          cleanup
  br label %113

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

110:                                              ; preds = %90
  %111 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #7
  br label %112

112:                                              ; preds = %110, %108
  %.pn38 = phi { ptr, i32 } [ %111, %110 ], [ %109, %108 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %15) #7
  br label %113

113:                                              ; preds = %112, %106
  %.pn38.pn = phi { ptr, i32 } [ %.pn38, %112 ], [ %107, %106 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #7
  br label %114

114:                                              ; preds = %113, %104
  %.pn38.pn.pn = phi { ptr, i32 } [ %.pn38.pn, %113 ], [ %105, %104 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %14) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %13) #7
  br label %115

115:                                              ; preds = %114, %102
  %.pn38.pn.pn.pn = phi { ptr, i32 } [ %.pn38.pn.pn, %114 ], [ %103, %102 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #7
  br label %116

116:                                              ; preds = %115, %100
  %.pn38.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn38.pn.pn.pn, %115 ], [ %101, %100 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %12) #7
  br label %117

117:                                              ; preds = %116, %98
  %.pn38.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn38.pn.pn.pn.pn, %116 ], [ %99, %98 ]
  call void @_ZN7Logging13LoggerMessageD1Ev(ptr noundef nonnull align 8 dereferenceable(161) %11) #7
  br label %118

118:                                              ; preds = %117, %96
  %.pn38.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn38.pn.pn.pn.pn.pn, %117 ], [ %97, %96 ]
  call void @llvm.lifetime.end.p0(i64 432, ptr nonnull %11) #7
  br label %137

119:                                              ; preds = %64
  %120 = invoke noundef zeroext i1 @_ZN7DynexCN10Blockchain9pushBlockERKNS_5BlockERNS_26block_verification_contextE(ptr noundef nonnull align 8 dereferenceable(2636) %0, ptr noundef nonnull align 8 dereferenceable(384) %4, ptr noundef nonnull align 1 dereferenceable(5) %2)
          to label %121 unwind label %55

121:                                              ; preds = %119
  br i1 %120, label %122, label %131

122:                                              ; preds = %121
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %16) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %17) #7
  invoke void @_ZN7DynexCN15NewBlockMessageC1ERKN6Crypto4HashE(ptr noundef nonnull align 1 dereferenceable(32) %17, ptr noundef nonnull align 1 dereferenceable(32) %5)
          to label %123 unwind label %126

123:                                              ; preds = %122
  invoke void @_ZN7DynexCN17BlockchainMessageC1EONS_15NewBlockMessageE(ptr noundef nonnull align 8 dereferenceable(40) %16, ptr noundef nonnull align 1 dereferenceable(32) %17)
          to label %124 unwind label %126

124:                                              ; preds = %123
  invoke void @_ZN7DynexCN10Blockchain11sendMessageERKNS_17BlockchainMessageE(ptr noundef nonnull align 8 dereferenceable(2636) %0, ptr noundef nonnull align 8 dereferenceable(40) %16)
          to label %125 unwind label %128

125:                                              ; preds = %124
  call void @_ZN7DynexCN17BlockchainMessageD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %16) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %17) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %16) #7
  br label %131

126:                                              ; preds = %123, %122
  %127 = landingpad { ptr, i32 }
          cleanup
  br label %130

128:                                              ; preds = %124
  %129 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7DynexCN17BlockchainMessageD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %16) #7
  br label %130

130:                                              ; preds = %128, %126
  %.pn36 = phi { ptr, i32 } [ %129, %128 ], [ %127, %126 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %17) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %16) #7
  br label %137

131:                                              ; preds = %125, %121, %92, %49
  %.118 = phi i1 [ undef, %49 ], [ true, %125 ], [ false, %121 ], [ %93, %92 ]
  call void @_ZNSt10lock_guardISt15recursive_mutexED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %8) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #7
  call void @_ZNSt10lock_guardIRN7DynexCN14tx_memory_poolEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %7) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #7
  %.118.not = xor i1 %.118, true
  %brmerge = or i1 %39, %.118.not
  %not. = xor i1 %39, true
  %.mux = and i1 %.118, %not.
  br i1 %brmerge, label %142, label %132

132:                                              ; preds = %131
  %133 = load i8, ptr %2, align 1, !tbaa !152, !range !153, !noundef !154
  %134 = trunc nuw i8 %133 to i1
  br i1 %134, label %135, label %142

135:                                              ; preds = %132
  %136 = getelementptr inbounds i8, ptr %0, i64 144
  invoke void @_ZN5Tools15ObserverManagerIN7DynexCN26IBlockchainStorageObserverEE6notifyIMS2_FvvEJEEEvT_DpT0_(ptr noundef nonnull align 8 dereferenceable(64) %136, i64 17, i64 0)
          to label %142 unwind label %140

137:                                              ; preds = %130, %118, %94, %61, %55
  %.pn46.pn = phi { ptr, i32 } [ %.pn46, %61 ], [ %56, %55 ], [ %.pn38.pn.pn.pn.pn.pn.pn, %118 ], [ %.pn36, %130 ], [ %95, %94 ]
  call void @_ZNSt10lock_guardISt15recursive_mutexED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %8) #7
  br label %138

138:                                              ; preds = %137, %53
  %.pn46.pn.pn = phi { ptr, i32 } [ %.pn46.pn, %137 ], [ %54, %53 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #7
  call void @_ZNSt10lock_guardIRN7DynexCN14tx_memory_poolEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %7) #7
  br label %139

139:                                              ; preds = %138, %51
  %.pn46.pn.pn.pn = phi { ptr, i32 } [ %.pn46.pn.pn, %138 ], [ %52, %51 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #7
  br label %143

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

142:                                              ; preds = %131, %135, %132, %24
  %.2 = phi i1 [ false, %24 ], [ %.mux, %131 ], [ %.118, %135 ], [ %.118, %132 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5) #7
  call void @_ZN7DynexCN5BlockD2Ev(ptr noundef nonnull align 8 dereferenceable(384) %4) #7
  call void @llvm.lifetime.end.p0(i64 384, ptr nonnull %4) #7
  ret i1 %.2

143:                                              ; preds = %139, %140, %32, %26
  %.pn51.pn = phi { ptr, i32 } [ %.pn, %32 ], [ %27, %26 ], [ %141, %140 ], [ %.pn46.pn.pn.pn, %139 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5) #7
  call void @_ZN7DynexCN5BlockD2Ev(ptr noundef nonnull align 8 dereferenceable(384) %4) #7
  call void @llvm.lifetime.end.p0(i64 384, ptr nonnull %4) #7
  resume { ptr, i32 } %.pn51.pn
}

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN7DynexCN10Blockchain9haveBlockERKN6Crypto4HashE(ptr noundef nonnull align 8 dereferenceable(2636), ptr noundef nonnull align 1 dereferenceable(32)) local_unnamed_addr #5 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 #6

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

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

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

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

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

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

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

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

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

declare noundef zeroext i1 @_ZN7DynexCN14get_block_hashERKNS_5BlockERN6Crypto4HashE(ptr noundef nonnull align 8 dereferenceable(384), 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 @_ZStlsIN7Logging13LoggerMessageEA36_cEOT_S4_RKT0_(ptr noundef nonnull align 8 dereferenceable(161), ptr noundef nonnull align 1 dereferenceable(36)) local_unnamed_addr #6

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt10lock_guardIRN7DynexCN14tx_memory_poolEEC2ES2_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(688)) unnamed_addr #5 align 2

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

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

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

declare void @_ZN7DynexCN15NewBlockMessageC1ERKN6Crypto4HashE(ptr noundef nonnull align 1 dereferenceable(32), ptr noundef nonnull align 1 dereferenceable(32)) unnamed_addr #3

declare void @_ZN7DynexCN17BlockchainMessageC1EONS_15NewBlockMessageE(ptr noundef nonnull align 8 dereferenceable(40), ptr noundef nonnull align 1 dereferenceable(32)) unnamed_addr #3

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN5Tools15ObserverManagerIN7DynexCN26IBlockchainStorageObserverEE6notifyIMS2_FvvEJEEEvT_DpT0_(ptr noundef nonnull align 8 dereferenceable(64), i64, i64) local_unnamed_addr #5 align 2

attributes #0 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { 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 #3 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { 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 #5 = { 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 #6 = { 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 #7 = { 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, !7, i64 1}
!6 = !{!"_ZTSN7DynexCN26block_verification_contextE", !7, i64 0, !7, i64 1, !7, i64 2, !7, i64 3, !7, i64 4}
!7 = !{!"bool", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C++ TBAA"}
!10 = !{!11, !16, i64 88}
!11 = !{!"_ZTSN7DynexCN10BlockchainE", !12, i64 0, !13, i64 8, !8, i64 16, !14, i64 24, !16, i64 80, !16, i64 88, !21, i64 96, !23, i64 136, !24, i64 144, !31, i64 208, !17, i64 296, !46, i64 304, !48, i64 360, !60, i64 448, !62, i64 480, !71, i64 568, !73, i64 576, !98, i64 1760, !113, i64 1888, !115, i64 1944, !125, i64 2032, !125, i64 2096, !125, i64 2160, !126, i64 2224, !134, i64 2320, !140, i64 2376, !144, i64 2432, !147, i64 2504, !7, i64 2568, !150, i64 2576, !70, i64 2592, !52, i64 2632}
!12 = !{!"_ZTSN7DynexCN21ITransactionValidatorE"}
!13 = !{!"_ZTSN7DynexCN24IDynexCNProtocolObserverE"}
!14 = !{!"_ZTSSt13unordered_mapIN6Crypto4HashEbSt4hashIS1_ESt8equal_toIS1_ESaISt4pairIKS1_bEEE", !15, i64 0}
!15 = !{!"_ZTSSt10_HashtableIN6Crypto4HashESt4pairIKS1_bESaIS4_ENSt8__detail10_Select1stESt8equal_toIS1_ESt4hashIS1_ENS6_18_Mod_range_hashingENS6_20_Default_ranged_hashENS6_20_Prime_rehash_policyENS6_17_Hashtable_traitsILb1ELb0ELb1EEEE", !16, i64 0, !17, i64 8, !18, i64 16, !17, i64 24, !19, i64 32, !16, i64 48}
!16 = !{!"any pointer", !8, i64 0}
!17 = !{!"long", !8, i64 0}
!18 = !{!"_ZTSNSt8__detail15_Hash_node_baseE", !16, i64 0}
!19 = !{!"_ZTSNSt8__detail20_Prime_rehash_policyE", !20, i64 0, !17, i64 8}
!20 = !{!"float", !8, i64 0}
!21 = !{!"_ZTSSt15recursive_mutex", !22, i64 0}
!22 = !{!"_ZTSSt22__recursive_mutex_base", !8, i64 0}
!23 = !{!"_ZTSN6Crypto10cn_contextE", !16, i64 0}
!24 = !{!"_ZTSN5Tools15ObserverManagerIN7DynexCN26IBlockchainStorageObserverEEE", !25, i64 0, !29, i64 24}
!25 = !{!"_ZTSSt6vectorIPN7DynexCN26IBlockchainStorageObserverESaIS2_EE", !26, i64 0}
!26 = !{!"_ZTSSt12_Vector_baseIPN7DynexCN26IBlockchainStorageObserverESaIS2_EE", !27, i64 0}
!27 = !{!"_ZTSNSt12_Vector_baseIPN7DynexCN26IBlockchainStorageObserverESaIS2_EE12_Vector_implE", !28, i64 0}
!28 = !{!"_ZTSNSt12_Vector_baseIPN7DynexCN26IBlockchainStorageObserverESaIS2_EE17_Vector_impl_dataE", !16, i64 0, !16, i64 8, !16, i64 16}
!29 = !{!"_ZTSSt5mutex", !30, i64 0}
!30 = !{!"_ZTSSt12__mutex_base", !8, i64 0}
!31 = !{!"_ZTSN5boost11multi_index21multi_index_containerIN7DynexCN10Blockchain13SpentKeyImageENS0_10indexed_byINS0_18ordered_non_uniqueINS0_3tagINS3_13BlockIndexTagEN4mpl_2naESA_SA_SA_SA_SA_SA_SA_SA_SA_SA_SA_SA_SA_SA_SA_SA_SA_SA_EENS0_6memberIS4_jXadL_ZNS4_10blockIndexEEEEESA_EENS0_13hashed_uniqueINS7_INS3_11KeyImageTagESA_SA_SA_SA_SA_SA_SA_SA_SA_SA_SA_SA_SA_SA_SA_SA_SA_SA_SA_EENSC_IS4_N6Crypto8KeyImageEXadL_ZNS4_8keyImageEEEEESA_SA_EESA_SA_SA_SA_SA_SA_SA_SA_SA_SA_SA_SA_SA_SA_SA_SA_SA_SA_EESaIS4_EEE", !32, i64 0, !34, i64 8, !35, i64 16, !17, i64 80}
!32 = !{!"_ZTSN5boost16base_from_memberISaINS_11multi_index6detail18ordered_index_nodeINS2_19null_augment_policyENS2_17hashed_index_nodeINS2_15index_node_baseIN7DynexCN10Blockchain13SpentKeyImageESaIS9_EEEEEEEELi0EEE", !33, i64 0}
!33 = !{!"_ZTSSaIN5boost11multi_index6detail18ordered_index_nodeINS1_19null_augment_policyENS1_17hashed_index_nodeINS1_15index_node_baseIN7DynexCN10Blockchain13SpentKeyImageESaIS8_EEEEEEEE"}
!34 = !{!"_ZTSN5boost11multi_index6detail13header_holderIPNS1_18ordered_index_nodeINS1_19null_augment_policyENS1_17hashed_index_nodeINS1_15index_node_baseIN7DynexCN10Blockchain13SpentKeyImageESaIS9_EEEEEEENS0_21multi_index_containerIS9_NS0_10indexed_byINS0_18ordered_non_uniqueINS0_3tagINS8_13BlockIndexTagEN4mpl_2naESL_SL_SL_SL_SL_SL_SL_SL_SL_SL_SL_SL_SL_SL_SL_SL_SL_SL_EENS0_6memberIS9_jXadL_ZNS9_10blockIndexEEEEESL_EENS0_13hashed_uniqueINSI_INS8_11KeyImageTagESL_SL_SL_SL_SL_SL_SL_SL_SL_SL_SL_SL_SL_SL_SL_SL_SL_SL_SL_EENSN_IS9_N6Crypto8KeyImageEXadL_ZNS9_8keyImageEEEEESL_SL_EESL_SL_SL_SL_SL_SL_SL_SL_SL_SL_SL_SL_SL_SL_SL_SL_SL_SL_EESA_EEEE", !16, i64 0}
!35 = !{!"_ZTSN5boost11multi_index6detail13ordered_indexINS0_6memberIN7DynexCN10Blockchain13SpentKeyImageEjXadL_ZNS6_10blockIndexEEEEESt4lessIjENS1_9nth_layerILi1ES6_NS0_10indexed_byINS0_18ordered_non_uniqueINS0_3tagINS5_13BlockIndexTagEN4mpl_2naESG_SG_SG_SG_SG_SG_SG_SG_SG_SG_SG_SG_SG_SG_SG_SG_SG_SG_EES7_SG_EENS0_13hashed_uniqueINSD_INS5_11KeyImageTagESG_SG_SG_SG_SG_SG_SG_SG_SG_SG_SG_SG_SG_SG_SG_SG_SG_SG_SG_EENS3_IS6_N6Crypto8KeyImageEXadL_ZNS6_8keyImageEEEEESG_SG_EESG_SG_SG_SG_SG_SG_SG_SG_SG_SG_SG_SG_SG_SG_SG_SG_SG_SG_EESaIS6_EEENS_3mpl6v_itemISE_NST_7vector0ISG_EELi0EEENS1_22ordered_non_unique_tagENS1_19null_augment_policyEEE", !36, i64 0}
!36 = !{!"_ZTSN5boost11multi_index6detail18ordered_index_implINS0_6memberIN7DynexCN10Blockchain13SpentKeyImageEjXadL_ZNS6_10blockIndexEEEEESt4lessIjENS1_9nth_layerILi1ES6_NS0_10indexed_byINS0_18ordered_non_uniqueINS0_3tagINS5_13BlockIndexTagEN4mpl_2naESG_SG_SG_SG_SG_SG_SG_SG_SG_SG_SG_SG_SG_SG_SG_SG_SG_SG_EES7_SG_EENS0_13hashed_uniqueINSD_INS5_11KeyImageTagESG_SG_SG_SG_SG_SG_SG_SG_SG_SG_SG_SG_SG_SG_SG_SG_SG_SG_SG_EENS3_IS6_N6Crypto8KeyImageEXadL_ZNS6_8keyImageEEEEESG_SG_EESG_SG_SG_SG_SG_SG_SG_SG_SG_SG_SG_SG_SG_SG_SG_SG_SG_SG_EESaIS6_EEENS_3mpl6v_itemISE_NST_7vector0ISG_EELi0EEENS1_22ordered_non_unique_tagENS1_19null_augment_policyEEE", !37, i64 0, !44, i64 56, !45, i64 57}
!37 = !{!"_ZTSN5boost11multi_index6detail12hashed_indexINS0_6memberIN7DynexCN10Blockchain13SpentKeyImageEN6Crypto8KeyImageEXadL_ZNS6_8keyImageEEEEENS_4hashIS8_EESt8equal_toIS8_ENS1_9nth_layerILi2ES6_NS0_10indexed_byINS0_18ordered_non_uniqueINS0_3tagINS5_13BlockIndexTagEN4mpl_2naESK_SK_SK_SK_SK_SK_SK_SK_SK_SK_SK_SK_SK_SK_SK_SK_SK_SK_EENS3_IS6_jXadL_ZNS6_10blockIndexEEEEESK_EENS0_13hashed_uniqueINSH_INS5_11KeyImageTagESK_SK_SK_SK_SK_SK_SK_SK_SK_SK_SK_SK_SK_SK_SK_SK_SK_SK_SK_EES9_SK_SK_EESK_SK_SK_SK_SK_SK_SK_SK_SK_SK_SK_SK_SK_SK_SK_SK_SK_SK_EESaIS6_EEENS_3mpl6v_itemISP_NSV_7vector0ISK_EELi0EEENS1_17hashed_unique_tagEEE", !38, i64 0, !39, i64 1, !40, i64 2, !41, i64 8, !20, i64 40, !17, i64 48}
!38 = !{!"_ZTSN5boost11multi_index6memberIN7DynexCN10Blockchain13SpentKeyImageEN6Crypto8KeyImageEXadL_ZNS4_8keyImageEEEEE"}
!39 = !{!"_ZTSN5boost4hashIN6Crypto8KeyImageEEE"}
!40 = !{!"_ZTSSt8equal_toIN6Crypto8KeyImageEE"}
!41 = !{!"_ZTSN5boost11multi_index6detail12bucket_arrayISaIN7DynexCN10Blockchain13SpentKeyImageEEEE", !17, i64 0, !42, i64 8}
!42 = !{!"_ZTSN5boost11multi_index6detail10auto_spaceINS1_27hashed_index_base_node_implISaIcEEESaIN7DynexCN10Blockchain13SpentKeyImageEEEE", !43, i64 0, !17, i64 8, !16, i64 16}
!43 = !{!"_ZTSSaIN5boost11multi_index6detail27hashed_index_base_node_implISaIcEEEE"}
!44 = !{!"_ZTSN5boost11multi_index6memberIN7DynexCN10Blockchain13SpentKeyImageEjXadL_ZNS4_10blockIndexEEEEE"}
!45 = !{!"_ZTSSt4lessIjE"}
!46 = !{!"_ZTSSt13unordered_mapIN6Crypto4HashEN7DynexCN10Blockchain10BlockEntryESt4hashIS1_ESt8equal_toIS1_ESaISt4pairIKS1_S4_EEE", !47, i64 0}
!47 = !{!"_ZTSSt10_HashtableIN6Crypto4HashESt4pairIKS1_N7DynexCN10Blockchain10BlockEntryEESaIS7_ENSt8__detail10_Select1stESt8equal_toIS1_ESt4hashIS1_ENS9_18_Mod_range_hashingENS9_20_Default_ranged_hashENS9_20_Prime_rehash_policyENS9_17_Hashtable_traitsILb1ELb0ELb1EEEE", !16, i64 0, !17, i64 8, !18, i64 16, !17, i64 24, !19, i64 32, !16, i64 48}
!48 = !{!"_ZTSN6google15sparse_hash_mapImSt6vectorISt4pairIN7DynexCN10Blockchain16TransactionIndexEtESaIS6_EESt4hashImESt8equal_toImENS_27libc_allocator_with_reallocIS2_IKmS8_EEEEE", !49, i64 0}
!49 = !{!"_ZTSN6google16sparse_hashtableISt4pairIKmSt6vectorIS1_IN7DynexCN10Blockchain16TransactionIndexEtESaIS7_EEEmSt4hashImENS_15sparse_hash_mapImS9_SC_St8equal_toImENS_27libc_allocator_with_reallocISA_EEE9SelectKeyENSI_6SetKeyESF_SH_EE", !50, i64 0, !53, i64 32, !17, i64 40, !54, i64 48}
!50 = !{!"_ZTSN6google16sparse_hashtableISt4pairIKmSt6vectorIS1_IN7DynexCN10Blockchain16TransactionIndexEtESaIS7_EEEmSt4hashImENS_15sparse_hash_mapImS9_SC_St8equal_toImENS_27libc_allocator_with_reallocISA_EEE9SelectKeyENSI_6SetKeyESF_SH_E8SettingsE", !51, i64 0}
!51 = !{!"_ZTS21sh_hashtable_settingsImSt4hashImEmLi4EE", !17, i64 0, !17, i64 8, !20, i64 16, !20, i64 20, !7, i64 24, !7, i64 25, !7, i64 26, !52, i64 28}
!52 = !{!"int", !8, i64 0}
!53 = !{!"_ZTSN6google16sparse_hashtableISt4pairIKmSt6vectorIS1_IN7DynexCN10Blockchain16TransactionIndexEtESaIS7_EEEmSt4hashImENS_15sparse_hash_mapImS9_SC_St8equal_toImENS_27libc_allocator_with_reallocISA_EEE9SelectKeyENSI_6SetKeyESF_SH_E7KeyInfoE", !17, i64 0}
!54 = !{!"_ZTSN6google11sparsetableISt4pairIKmSt6vectorIS1_IN7DynexCN10Blockchain16TransactionIndexEtESaIS7_EEELt48ENS_27libc_allocator_with_reallocISA_EEEE", !55, i64 0, !59, i64 24}
!55 = !{!"_ZTSSt6vectorIN6google11sparsegroupISt4pairIKmS_IS2_IN7DynexCN10Blockchain16TransactionIndexEtESaIS7_EEELt48ENS0_27libc_allocator_with_reallocISA_EEEENSB_ISD_EEE", !56, i64 0}
!56 = !{!"_ZTSSt12_Vector_baseIN6google11sparsegroupISt4pairIKmSt6vectorIS2_IN7DynexCN10Blockchain16TransactionIndexEtESaIS8_EEELt48ENS0_27libc_allocator_with_reallocISB_EEEENSC_ISE_EEE", !57, i64 0}
!57 = !{!"_ZTSNSt12_Vector_baseIN6google11sparsegroupISt4pairIKmSt6vectorIS2_IN7DynexCN10Blockchain16TransactionIndexEtESaIS8_EEELt48ENS0_27libc_allocator_with_reallocISB_EEEENSC_ISE_EEE12_Vector_implE", !58, i64 0}
!58 = !{!"_ZTSNSt12_Vector_baseIN6google11sparsegroupISt4pairIKmSt6vectorIS2_IN7DynexCN10Blockchain16TransactionIndexEtESaIS8_EEELt48ENS0_27libc_allocator_with_reallocISB_EEEENSC_ISE_EEE17_Vector_impl_dataE", !16, i64 0, !16, i64 8, !16, i64 16}
!59 = !{!"_ZTSN6google11sparsetableISt4pairIKmSt6vectorIS1_IN7DynexCN10Blockchain16TransactionIndexEtESaIS7_EEELt48ENS_27libc_allocator_with_reallocISA_EEE8SettingsE", !17, i64 0, !17, i64 8}
!60 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !61, i64 0, !17, i64 8, !8, i64 16}
!61 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !16, i64 0}
!62 = !{!"_ZTSN7DynexCN11CheckpointsE", !63, i64 0, !70, i64 48}
!63 = !{!"_ZTSSt3mapIjN6Crypto4HashESt4lessIjESaISt4pairIKjS1_EEE", !64, i64 0}
!64 = !{!"_ZTSSt8_Rb_treeIjSt4pairIKjN6Crypto4HashEESt10_Select1stIS4_ESt4lessIjESaIS4_EE", !65, i64 0}
!65 = !{!"_ZTSNSt8_Rb_treeIjSt4pairIKjN6Crypto4HashEESt10_Select1stIS4_ESt4lessIjESaIS4_EE13_Rb_tree_implIS8_Lb1EEE", !66, i64 0, !67, i64 8}
!66 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessIjEE", !45, i64 0}
!67 = !{!"_ZTSSt15_Rb_tree_header", !68, i64 0, !17, i64 32}
!68 = !{!"_ZTSSt18_Rb_tree_node_base", !69, i64 0, !16, i64 8, !16, i64 16, !16, i64 24}
!69 = !{!"_ZTSSt14_Rb_tree_color", !8, i64 0}
!70 = !{!"_ZTSN7Logging9LoggerRefE", !16, i64 0, !60, i64 8}
!71 = !{!"_ZTSSt6atomicIbE", !72, i64 0}
!72 = !{!"_ZTSSt13__atomic_baseIbE", !7, i64 0}
!73 = !{!"_ZTS13SwappedVectorIN7DynexCN10Blockchain10BlockEntryEE", !74, i64 0, !74, i64 528, !17, i64 1056, !84, i64 1064, !17, i64 1088, !88, i64 1096, !93, i64 1144, !17, i64 1168, !17, i64 1176}
!74 = !{!"_ZTSSt13basic_fstreamIcSt11char_traitsIcEE", !75, i64 0, !78, i64 24}
!75 = !{!"_ZTSSd", !76, i64 0, !77, i64 16}
!76 = !{!"_ZTSSi", !17, i64 8}
!77 = !{!"_ZTSSo"}
!78 = !{!"_ZTSSt13basic_filebufIcSt11char_traitsIcEE", !79, i64 0, !8, i64 64, !81, i64 104, !82, i64 120, !83, i64 124, !83, i64 132, !83, i64 140, !16, i64 152, !17, i64 160, !7, i64 168, !7, i64 169, !7, i64 170, !8, i64 171, !16, i64 176, !16, i64 184, !7, i64 192, !16, i64 200, !16, i64 208, !17, i64 216, !16, i64 224, !16, i64 232}
!79 = !{!"_ZTSSt15basic_streambufIcSt11char_traitsIcEE", !16, i64 8, !16, i64 16, !16, i64 24, !16, i64 32, !16, i64 40, !16, i64 48, !80, i64 56}
!80 = !{!"_ZTSSt6locale", !16, i64 0}
!81 = !{!"_ZTSSt12__basic_fileIcE", !16, i64 0, !7, i64 8}
!82 = !{!"_ZTSSt13_Ios_Openmode", !8, i64 0}
!83 = !{!"_ZTS11__mbstate_t", !52, i64 0, !8, i64 4}
!84 = !{!"_ZTSSt6vectorImSaImEE", !85, i64 0}
!85 = !{!"_ZTSSt12_Vector_baseImSaImEE", !86, i64 0}
!86 = !{!"_ZTSNSt12_Vector_baseImSaImEE12_Vector_implE", !87, i64 0}
!87 = !{!"_ZTSNSt12_Vector_baseImSaImEE17_Vector_impl_dataE", !16, i64 0, !16, i64 8, !16, i64 16}
!88 = !{!"_ZTSSt3mapImN13SwappedVectorIN7DynexCN10Blockchain10BlockEntryEE9ItemEntryESt4lessImESaISt4pairIKmS5_EEE", !89, i64 0}
!89 = !{!"_ZTSSt8_Rb_treeImSt4pairIKmN13SwappedVectorIN7DynexCN10Blockchain10BlockEntryEE9ItemEntryEESt10_Select1stIS8_ESt4lessImESaIS8_EE", !90, i64 0}
!90 = !{!"_ZTSNSt8_Rb_treeImSt4pairIKmN13SwappedVectorIN7DynexCN10Blockchain10BlockEntryEE9ItemEntryEESt10_Select1stIS8_ESt4lessImESaIS8_EE13_Rb_tree_implISC_Lb1EEE", !91, i64 0, !67, i64 8}
!91 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessImEE", !92, i64 0}
!92 = !{!"_ZTSSt4lessImE"}
!93 = !{!"_ZTSNSt7__cxx114listIN13SwappedVectorIN7DynexCN10Blockchain10BlockEntryEE10CacheEntryESaIS6_EEE", !94, i64 0}
!94 = !{!"_ZTSNSt7__cxx1110_List_baseIN13SwappedVectorIN7DynexCN10Blockchain10BlockEntryEE10CacheEntryESaIS6_EEE", !95, i64 0}
!95 = !{!"_ZTSNSt7__cxx1110_List_baseIN13SwappedVectorIN7DynexCN10Blockchain10BlockEntryEE10CacheEntryESaIS6_EE10_List_implE", !96, i64 0}
!96 = !{!"_ZTSNSt8__detail17_List_node_headerE", !97, i64 0, !17, i64 16}
!97 = !{!"_ZTSNSt8__detail15_List_node_baseE", !16, i64 0, !16, i64 8}
!98 = !{!"_ZTSN7DynexCN10BlockIndexE", !99, i64 0, !16, i64 120}
!99 = !{!"_ZTSN5boost11multi_index21multi_index_containerIN6Crypto4HashENS0_10indexed_byINS0_13random_accessINS0_3tagIN4mpl_2naES8_S8_S8_S8_S8_S8_S8_S8_S8_S8_S8_S8_S8_S8_S8_S8_S8_S8_S8_EEEENS0_13hashed_uniqueINS0_8identityIS3_EES8_S8_S8_EES8_S8_S8_S8_S8_S8_S8_S8_S8_S8_S8_S8_S8_S8_S8_S8_S8_S8_EESaIS3_EEE", !100, i64 0, !102, i64 8, !103, i64 16, !17, i64 112}
!100 = !{!"_ZTSN5boost16base_from_memberISaINS_11multi_index6detail24random_access_index_nodeINS2_17hashed_index_nodeINS2_15index_node_baseIN6Crypto4HashESaIS7_EEEEEEEELi0EEE", !101, i64 0}
!101 = !{!"_ZTSSaIN5boost11multi_index6detail24random_access_index_nodeINS1_17hashed_index_nodeINS1_15index_node_baseIN6Crypto4HashESaIS6_EEEEEEEE"}
!102 = !{!"_ZTSN5boost11multi_index6detail13header_holderIPNS1_24random_access_index_nodeINS1_17hashed_index_nodeINS1_15index_node_baseIN6Crypto4HashESaIS7_EEEEEEENS0_21multi_index_containerIS7_NS0_10indexed_byINS0_13random_accessINS0_3tagIN4mpl_2naESI_SI_SI_SI_SI_SI_SI_SI_SI_SI_SI_SI_SI_SI_SI_SI_SI_SI_SI_EEEENS0_13hashed_uniqueINS0_8identityIS7_EESI_SI_SI_EESI_SI_SI_SI_SI_SI_SI_SI_SI_SI_SI_SI_SI_SI_SI_SI_SI_SI_EES8_EEEE", !16, i64 0}
!103 = !{!"_ZTSN5boost11multi_index6detail19random_access_indexINS1_9nth_layerILi1EN6Crypto4HashENS0_10indexed_byINS0_13random_accessINS0_3tagIN4mpl_2naESA_SA_SA_SA_SA_SA_SA_SA_SA_SA_SA_SA_SA_SA_SA_SA_SA_SA_SA_EEEENS0_13hashed_uniqueINS0_8identityIS5_EESA_SA_SA_EESA_SA_SA_SA_SA_SA_SA_SA_SA_SA_SA_SA_SA_SA_SA_SA_SA_SA_EESaIS5_EEENS_3mpl7vector0ISA_EEEE", !104, i64 0, !110, i64 56}
!104 = !{!"_ZTSN5boost11multi_index6detail12hashed_indexINS0_8identityIN6Crypto4HashEEENS_4hashIS5_EESt8equal_toIS5_ENS1_9nth_layerILi2ES5_NS0_10indexed_byINS0_13random_accessINS0_3tagIN4mpl_2naESG_SG_SG_SG_SG_SG_SG_SG_SG_SG_SG_SG_SG_SG_SG_SG_SG_SG_SG_EEEENS0_13hashed_uniqueIS6_SG_SG_SG_EESG_SG_SG_SG_SG_SG_SG_SG_SG_SG_SG_SG_SG_SG_SG_SG_SG_SG_EESaIS5_EEENS_3mpl7vector0ISG_EENS1_17hashed_unique_tagEEE", !105, i64 0, !106, i64 1, !107, i64 2, !108, i64 8, !20, i64 40, !17, i64 48}
!105 = !{!"_ZTSN5boost11multi_index8identityIN6Crypto4HashEEE"}
!106 = !{!"_ZTSN5boost4hashIN6Crypto4HashEEE"}
!107 = !{!"_ZTSSt8equal_toIN6Crypto4HashEE"}
!108 = !{!"_ZTSN5boost11multi_index6detail12bucket_arrayISaIN6Crypto4HashEEEE", !17, i64 0, !109, i64 8}
!109 = !{!"_ZTSN5boost11multi_index6detail10auto_spaceINS1_27hashed_index_base_node_implISaIcEEESaIN6Crypto4HashEEEE", !43, i64 0, !17, i64 8, !16, i64 16}
!110 = !{!"_ZTSN5boost11multi_index6detail29random_access_index_ptr_arrayISaIN6Crypto4HashEEEE", !17, i64 0, !17, i64 8, !111, i64 16}
!111 = !{!"_ZTSN5boost11multi_index6detail10auto_spaceIPNS1_29random_access_index_node_implISaIcEEESaIN6Crypto4HashEEEE", !112, i64 0, !17, i64 8, !16, i64 16}
!112 = !{!"_ZTSSaIPN5boost11multi_index6detail29random_access_index_node_implISaIcEEEE"}
!113 = !{!"_ZTSSt13unordered_mapIN6Crypto4HashEN7DynexCN10Blockchain16TransactionIndexESt4hashIS1_ESt8equal_toIS1_ESaISt4pairIKS1_S4_EEE", !114, i64 0}
!114 = !{!"_ZTSSt10_HashtableIN6Crypto4HashESt4pairIKS1_N7DynexCN10Blockchain16TransactionIndexEESaIS7_ENSt8__detail10_Select1stESt8equal_toIS1_ESt4hashIS1_ENS9_18_Mod_range_hashingENS9_20_Default_ranged_hashENS9_20_Prime_rehash_policyENS9_17_Hashtable_traitsILb1ELb0ELb1EEEE", !16, i64 0, !17, i64 8, !18, i64 16, !17, i64 24, !19, i64 32, !16, i64 48}
!115 = !{!"_ZTSN6google15sparse_hash_mapImSt6vectorIN7DynexCN10Blockchain25MultisignatureOutputUsageESaIS4_EESt4hashImESt8equal_toImENS_27libc_allocator_with_reallocISt4pairIKmS6_EEEEE", !116, i64 0}
!116 = !{!"_ZTSN6google16sparse_hashtableISt4pairIKmSt6vectorIN7DynexCN10Blockchain25MultisignatureOutputUsageESaIS6_EEEmSt4hashImENS_15sparse_hash_mapImS8_SB_St8equal_toImENS_27libc_allocator_with_reallocIS9_EEE9SelectKeyENSH_6SetKeyESE_SG_EE", !117, i64 0, !118, i64 32, !17, i64 40, !119, i64 48}
!117 = !{!"_ZTSN6google16sparse_hashtableISt4pairIKmSt6vectorIN7DynexCN10Blockchain25MultisignatureOutputUsageESaIS6_EEEmSt4hashImENS_15sparse_hash_mapImS8_SB_St8equal_toImENS_27libc_allocator_with_reallocIS9_EEE9SelectKeyENSH_6SetKeyESE_SG_E8SettingsE", !51, i64 0}
!118 = !{!"_ZTSN6google16sparse_hashtableISt4pairIKmSt6vectorIN7DynexCN10Blockchain25MultisignatureOutputUsageESaIS6_EEEmSt4hashImENS_15sparse_hash_mapImS8_SB_St8equal_toImENS_27libc_allocator_with_reallocIS9_EEE9SelectKeyENSH_6SetKeyESE_SG_E7KeyInfoE", !17, i64 0}
!119 = !{!"_ZTSN6google11sparsetableISt4pairIKmSt6vectorIN7DynexCN10Blockchain25MultisignatureOutputUsageESaIS6_EEELt48ENS_27libc_allocator_with_reallocIS9_EEEE", !120, i64 0, !124, i64 24}
!120 = !{!"_ZTSSt6vectorIN6google11sparsegroupISt4pairIKmS_IN7DynexCN10Blockchain25MultisignatureOutputUsageESaIS6_EEELt48ENS0_27libc_allocator_with_reallocIS9_EEEENSA_ISC_EEE", !121, i64 0}
!121 = !{!"_ZTSSt12_Vector_baseIN6google11sparsegroupISt4pairIKmSt6vectorIN7DynexCN10Blockchain25MultisignatureOutputUsageESaIS7_EEELt48ENS0_27libc_allocator_with_reallocISA_EEEENSB_ISD_EEE", !122, i64 0}
!122 = !{!"_ZTSNSt12_Vector_baseIN6google11sparsegroupISt4pairIKmSt6vectorIN7DynexCN10Blockchain25MultisignatureOutputUsageESaIS7_EEELt48ENS0_27libc_allocator_with_reallocISA_EEEENSB_ISD_EEE12_Vector_implE", !123, i64 0}
!123 = !{!"_ZTSNSt12_Vector_baseIN6google11sparsegroupISt4pairIKmSt6vectorIN7DynexCN10Blockchain25MultisignatureOutputUsageESaIS7_EEELt48ENS0_27libc_allocator_with_reallocISA_EEEENSB_ISD_EEE17_Vector_impl_dataE", !16, i64 0, !16, i64 8, !16, i64 16}
!124 = !{!"_ZTSN6google11sparsetableISt4pairIKmSt6vectorIN7DynexCN10Blockchain25MultisignatureOutputUsageESaIS6_EEELt48ENS_27libc_allocator_with_reallocIS9_EEE8SettingsE", !17, i64 0, !17, i64 8}
!125 = !{!"_ZTSN7DynexCN20BasicUpgradeDetectorI13SwappedVectorINS_10Blockchain10BlockEntryEEEE", !70, i64 0, !16, i64 40, !16, i64 48, !8, i64 56, !52, i64 60}
!126 = !{!"_ZTSN7DynexCN14PaymentIdIndexE", !127, i64 0, !7, i64 88}
!127 = !{!"_ZTSSt18unordered_multimapIN6Crypto4HashES1_St8functionIFmRKS1_EESt8equal_toIS1_ESaISt4pairIS3_S1_EEE", !128, i64 0}
!128 = !{!"_ZTSSt10_HashtableIN6Crypto4HashESt4pairIKS1_S1_ESaIS4_ENSt8__detail10_Select1stESt8equal_toIS1_ESt8functionIFmRS3_EENS6_18_Mod_range_hashingENS6_20_Default_ranged_hashENS6_20_Prime_rehash_policyENS6_17_Hashtable_traitsILb1ELb0ELb0EEEE", !129, i64 0, !16, i64 32, !17, i64 40, !18, i64 48, !17, i64 56, !19, i64 64, !16, i64 80}
!129 = !{!"_ZTSNSt8__detail15_Hashtable_baseIN6Crypto4HashESt4pairIKS2_S2_ENS_10_Select1stESt8equal_toIS2_ESt8functionIFmRS4_EENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb0EEEEE", !130, i64 0}
!130 = !{!"_ZTSNSt8__detail15_Hash_code_baseIN6Crypto4HashESt4pairIKS2_S2_ENS_10_Select1stESt8functionIFmRS4_EENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb1EEE", !131, i64 0}
!131 = !{!"_ZTSNSt8__detail21_Hashtable_ebo_helperILi1ESt8functionIFmRKN6Crypto4HashEEELb0EEE", !132, i64 0}
!132 = !{!"_ZTSSt8functionIFmRKN6Crypto4HashEEE", !133, i64 0, !16, i64 24}
!133 = !{!"_ZTSSt14_Function_base", !8, i64 0, !16, i64 16}
!134 = !{!"_ZTSN7DynexCN12AddressIndexE", !135, i64 0, !7, i64 48}
!135 = !{!"_ZTSSt8multimapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN6Crypto4HashESt4lessIS5_ESaISt4pairIKS5_S7_EEE", !136, i64 0}
!136 = !{!"_ZTSSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_N6Crypto4HashEESt10_Select1stISA_ESt4lessIS5_ESaISA_EE", !137, i64 0}
!137 = !{!"_ZTSNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_N6Crypto4HashEESt10_Select1stISA_ESt4lessIS5_ESaISA_EE13_Rb_tree_implISE_Lb1EEE", !138, i64 0, !67, i64 8}
!138 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEE", !139, i64 0}
!139 = !{!"_ZTSSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE"}
!140 = !{!"_ZTSN7DynexCN20TimestampBlocksIndexE", !141, i64 0, !7, i64 48}
!141 = !{!"_ZTSSt8multimapImN6Crypto4HashESt4lessImESaISt4pairIKmS1_EEE", !142, i64 0}
!142 = !{!"_ZTSSt8_Rb_treeImSt4pairIKmN6Crypto4HashEESt10_Select1stIS4_ESt4lessImESaIS4_EE", !143, i64 0}
!143 = !{!"_ZTSNSt8_Rb_treeImSt4pairIKmN6Crypto4HashEESt10_Select1stIS4_ESt4lessImESaIS4_EE13_Rb_tree_implIS8_Lb1EEE", !91, i64 0, !67, i64 8}
!144 = !{!"_ZTSN7DynexCN26GeneratedTransactionsIndexE", !145, i64 0, !17, i64 56, !7, i64 64}
!145 = !{!"_ZTSSt13unordered_mapIjmSt4hashIjESt8equal_toIjESaISt4pairIKjmEEE", !146, i64 0}
!146 = !{!"_ZTSSt10_HashtableIjSt4pairIKjmESaIS2_ENSt8__detail10_Select1stESt8equal_toIjESt4hashIjENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb0ELb0ELb1EEEE", !16, i64 0, !17, i64 8, !18, i64 16, !17, i64 24, !19, i64 32, !16, i64 48}
!147 = !{!"_ZTSN7DynexCN17OrphanBlocksIndexE", !148, i64 0, !7, i64 56}
!148 = !{!"_ZTSSt18unordered_multimapIjN6Crypto4HashESt4hashIjESt8equal_toIjESaISt4pairIKjS1_EEE", !149, i64 0}
!149 = !{!"_ZTSSt10_HashtableIjSt4pairIKjN6Crypto4HashEESaIS4_ENSt8__detail10_Select1stESt8equal_toIjESt4hashIjENS6_18_Mod_range_hashingENS6_20_Default_ranged_hashENS6_20_Prime_rehash_policyENS6_17_Hashtable_traitsILb0ELb0ELb0EEEE", !16, i64 0, !17, i64 8, !18, i64 16, !17, i64 24, !19, i64 32, !16, i64 48}
!150 = !{!"_ZTSN7DynexCN19IntrusiveLinkedListINS_12MessageQueueINS_17BlockchainMessageEEEEE", !16, i64 0, !16, i64 8}
!151 = !{!6, !7, i64 3}
!152 = !{!6, !7, i64 0}
!153 = !{i8 0, i8 2}
!154 = !{}


; Effective O3 passes: CorrelatedValuePropagationPass,EarlyCSEPass,GlobalOptPass,IPSCCPPass,InferFunctionAttrsPass,InstCombinePass,ReassociatePass,SROAPass,SimplifyCFGPass