; LLVM IR from dynexcoin/Dynex :: src/WalletLegacy (WalletLegacy)

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

%"struct.Crypto::SecretKey" = type { [32 x i8] }
%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"struct.Crypto::KeyImage" = type { [32 x i8] }
%"struct.DynexCN::AccountKeys" = type { %"struct.DynexCN::AccountPublicAddress", %"struct.Crypto::SecretKey", %"struct.Crypto::SecretKey" }
%"struct.DynexCN::AccountPublicAddress" = type { %"struct.Crypto::PublicKey", %"struct.Crypto::PublicKey" }
%"struct.Crypto::PublicKey" = type { [32 x i8] }
%"class.std::vector.162" = type { %"struct.std::_Vector_base.163" }
%"struct.std::_Vector_base.163" = type { %"struct.std::_Vector_base<DynexCN::TransactionOutputInformation, std::allocator<DynexCN::TransactionOutputInformation>>::_Vector_impl" }
%"struct.std::_Vector_base<DynexCN::TransactionOutputInformation, std::allocator<DynexCN::TransactionOutputInformation>>::_Vector_impl" = type { %"struct.std::_Vector_base<DynexCN::TransactionOutputInformation, std::allocator<DynexCN::TransactionOutputInformation>>::_Vector_impl_data" }
%"struct.std::_Vector_base<DynexCN::TransactionOutputInformation, std::allocator<DynexCN::TransactionOutputInformation>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.__gnu_cxx::__normal_iterator" = type { ptr }
%"class.__gnu_cxx::__normal_iterator.246" = type { ptr }
%"class.std::vector.247" = type { %"struct.std::_Vector_base.248" }
%"struct.std::_Vector_base.248" = type { %"struct.std::_Vector_base<Crypto::KeyImage, std::allocator<Crypto::KeyImage>>::_Vector_impl" }
%"struct.std::_Vector_base<Crypto::KeyImage, std::allocator<Crypto::KeyImage>>::_Vector_impl" = type { %"struct.std::_Vector_base<Crypto::KeyImage, std::allocator<Crypto::KeyImage>>::_Vector_impl_data" }
%"struct.std::_Vector_base<Crypto::KeyImage, std::allocator<Crypto::KeyImage>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.DynexCN::KeyPair" = type { %"struct.Crypto::PublicKey", %"struct.Crypto::SecretKey" }
%"struct.Crypto::Hash" = type { [32 x i8] }
%"class.std::vector.252" = type { %"struct.std::_Vector_base.253" }
%"struct.std::_Vector_base.253" = type { %"struct.std::_Vector_base<DynexCN::reserve_proof_entry, std::allocator<DynexCN::reserve_proof_entry>>::_Vector_impl" }
%"struct.std::_Vector_base<DynexCN::reserve_proof_entry, std::allocator<DynexCN::reserve_proof_entry>>::_Vector_impl" = type { %"struct.std::_Vector_base<DynexCN::reserve_proof_entry, std::allocator<DynexCN::reserve_proof_entry>>::_Vector_impl_data" }
%"struct.std::_Vector_base<DynexCN::reserve_proof_entry, std::allocator<DynexCN::reserve_proof_entry>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::allocator.254" = type { i8 }
%"struct.Crypto::KeyDerivation" = type { [32 x i8] }
%"class.std::vector.257" = type { %"struct.std::_Vector_base.258" }
%"struct.std::_Vector_base.258" = type { %"struct.std::_Vector_base<const Crypto::PublicKey *, std::allocator<const Crypto::PublicKey *>>::_Vector_impl" }
%"struct.std::_Vector_base<const Crypto::PublicKey *, std::allocator<const Crypto::PublicKey *>>::_Vector_impl" = type { %"struct.std::_Vector_base<const Crypto::PublicKey *, std::allocator<const Crypto::PublicKey *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<const Crypto::PublicKey *, std::allocator<const Crypto::PublicKey *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::initializer_list.262" = type { ptr, i64 }
%"class.std::allocator.259" = type { i8 }
%"struct.Crypto::Signature" = type { [64 x i8] }
%"struct.DynexCN::reserve_proof" = type { %"class.std::vector.252", %"struct.Crypto::Signature" }
%"class.__gnu_cxx::__normal_iterator.263" = type { ptr }
%"class.std::vector.136" = type { %"struct.std::_Vector_base.137" }
%"struct.std::_Vector_base.137" = 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.DynexCN::WalletLegacy" = type { %"class.DynexCN::IWalletLegacy", %"class.DynexCN::IBlockchainSynchronizerObserver", %"class.DynexCN::ITransfersObserver", i32, %"class.std::mutex", %"class.DynexCN::AccountBase", %"class.std::__cxx11::basic_string", ptr, ptr, ptr, i8, %"struct.std::atomic", %"struct.std::atomic", %"struct.std::atomic", %"class.DynexCN::BlockchainSynchronizer", %"class.DynexCN::TransfersSyncronizer", ptr, %"class.DynexCN::WalletUserTransactionsCache", %"class.std::unique_ptr.99", %"class.DynexCN::WalletAsyncContextCounter", %"class.Tools::ObserverManager.107", %"class.std::unique_ptr.113" }
%"class.DynexCN::IWalletLegacy" = type { ptr }
%"class.DynexCN::IBlockchainSynchronizerObserver" = type { ptr }
%"class.DynexCN::ITransfersObserver" = type { ptr }
%"class.std::mutex" = type { %"class.std::__mutex_base" }
%"class.std::__mutex_base" = type { %union.pthread_mutex_t }
%union.pthread_mutex_t = type { %struct.__pthread_mutex_s }
%struct.__pthread_mutex_s = type { i32, i32, i32, i32, i32, i16, i16, %struct.__pthread_internal_list }
%struct.__pthread_internal_list = type { ptr, ptr }
%"class.DynexCN::AccountBase" = type { %"struct.DynexCN::AccountKeys", i64 }
%"struct.std::atomic" = type { %"struct.std::__atomic_base" }
%"struct.std::__atomic_base" = type { i64 }
%"class.DynexCN::BlockchainSynchronizer" = type { %"class.DynexCN::IObservableImpl", %"class.DynexCN::INodeObserver", %"class.Logging::LoggerRef", %"class.std::map", ptr, %"struct.Crypto::Hash", %"struct.Crypto::Hash", i32, i32, %"class.std::unique_ptr", %"class.std::__cxx11::list", %"class.std::__cxx11::list.15", %"class.std::mutex", %"class.std::mutex", %"class.std::condition_variable" }
%"class.DynexCN::IObservableImpl" = type { %"class.DynexCN::IBlockchainSynchronizer", %"class.Tools::ObserverManager" }
%"class.DynexCN::IBlockchainSynchronizer" = type { %"class.DynexCN::IObservable", %"class.DynexCN::IStreamSerializable" }
%"class.DynexCN::IObservable" = type { ptr }
%"class.DynexCN::IStreamSerializable" = type { ptr }
%"class.Tools::ObserverManager" = type { %"class.std::vector", %"class.std::mutex" }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<DynexCN::IBlockchainSynchronizerObserver *, std::allocator<DynexCN::IBlockchainSynchronizerObserver *>>::_Vector_impl" }
%"struct.std::_Vector_base<DynexCN::IBlockchainSynchronizerObserver *, std::allocator<DynexCN::IBlockchainSynchronizerObserver *>>::_Vector_impl" = type { %"struct.std::_Vector_base<DynexCN::IBlockchainSynchronizerObserver *, std::allocator<DynexCN::IBlockchainSynchronizerObserver *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<DynexCN::IBlockchainSynchronizerObserver *, std::allocator<DynexCN::IBlockchainSynchronizerObserver *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.DynexCN::INodeObserver" = type { ptr }
%"class.Logging::LoggerRef" = type { ptr, %"class.std::__cxx11::basic_string" }
%"class.std::map" = type { %"class.std::_Rb_tree" }
%"class.std::_Rb_tree" = type { %"struct.std::_Rb_tree<DynexCN::IBlockchainConsumer *, std::pair<DynexCN::IBlockchainConsumer *const, std::shared_ptr<DynexCN::SynchronizationState>>, std::_Select1st<std::pair<DynexCN::IBlockchainConsumer *const, std::shared_ptr<DynexCN::SynchronizationState>>>, std::less<DynexCN::IBlockchainConsumer *>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<DynexCN::IBlockchainConsumer *, std::pair<DynexCN::IBlockchainConsumer *const, std::shared_ptr<DynexCN::SynchronizationState>>, std::_Select1st<std::pair<DynexCN::IBlockchainConsumer *const, std::shared_ptr<DynexCN::SynchronizationState>>>, std::less<DynexCN::IBlockchainConsumer *>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"struct.std::_Rb_tree_header" = type { %"struct.std::_Rb_tree_node_base", i64 }
%"struct.std::_Rb_tree_node_base" = type { i32, ptr, ptr, ptr }
%"class.std::unique_ptr" = type { %"struct.std::__uniq_ptr_data" }
%"struct.std::__uniq_ptr_data" = type { %"class.std::__uniq_ptr_impl" }
%"class.std::__uniq_ptr_impl" = type { %"class.std::tuple" }
%"class.std::tuple" = type { %"struct.std::_Tuple_impl" }
%"struct.std::_Tuple_impl" = type { %"struct.std::_Head_base.11" }
%"struct.std::_Head_base.11" = type { ptr }
%"class.std::__cxx11::list" = type { %"class.std::__cxx11::_List_base" }
%"class.std::__cxx11::_List_base" = type { %"struct.std::__cxx11::_List_base<std::pair<const DynexCN::ITransactionReader *, std::promise<std::error_code>>, std::allocator<std::pair<const DynexCN::ITransactionReader *, std::promise<std::error_code>>>>::_List_impl" }
%"struct.std::__cxx11::_List_base<std::pair<const DynexCN::ITransactionReader *, std::promise<std::error_code>>, std::allocator<std::pair<const DynexCN::ITransactionReader *, std::promise<std::error_code>>>>::_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.std::__cxx11::list.15" = type { %"class.std::__cxx11::_List_base.16" }
%"class.std::__cxx11::_List_base.16" = type { %"struct.std::__cxx11::_List_base<std::pair<const Crypto::Hash *, std::promise<void>>, std::allocator<std::pair<const Crypto::Hash *, std::promise<void>>>>::_List_impl" }
%"struct.std::__cxx11::_List_base<std::pair<const Crypto::Hash *, std::promise<void>>, std::allocator<std::pair<const Crypto::Hash *, std::promise<void>>>>::_List_impl" = type { %"struct.std::__detail::_List_node_header" }
%"class.std::condition_variable" = type { %"class.std::__condvar" }
%"class.std::__condvar" = type { %union.pthread_cond_t }
%union.pthread_cond_t = type { %struct.__pthread_cond_s }
%struct.__pthread_cond_s = type { %union.__atomic_wide_counter, %union.__atomic_wide_counter, [2 x i32], [2 x i32], i32, i32, [2 x i32] }
%union.__atomic_wide_counter = type { i64 }
%"class.DynexCN::TransfersSyncronizer" = type { %"class.DynexCN::ITransfersSynchronizer", %"class.DynexCN::IBlockchainConsumerObserver", %"class.Logging::LoggerRef", %"class.std::unordered_map", %"class.std::unordered_map.25", ptr, ptr, ptr }
%"class.DynexCN::ITransfersSynchronizer" = type { %"class.DynexCN::IStreamSerializable" }
%"class.DynexCN::IBlockchainConsumerObserver" = 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::unordered_map.25" = type { %"class.std::_Hashtable.26" }
%"class.std::_Hashtable.26" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"class.DynexCN::WalletUserTransactionsCache" = type { %"class.std::vector.39", %"class.std::vector.44", %"class.DynexCN::WalletUnconfirmedTransactions", %"class.std::unordered_map.85" }
%"class.std::vector.39" = type { %"struct.std::_Vector_base.40" }
%"struct.std::_Vector_base.40" = type { %"struct.std::_Vector_base<DynexCN::WalletLegacyTransaction, std::allocator<DynexCN::WalletLegacyTransaction>>::_Vector_impl" }
%"struct.std::_Vector_base<DynexCN::WalletLegacyTransaction, std::allocator<DynexCN::WalletLegacyTransaction>>::_Vector_impl" = type { %"struct.std::_Vector_base<DynexCN::WalletLegacyTransaction, std::allocator<DynexCN::WalletLegacyTransaction>>::_Vector_impl_data" }
%"struct.std::_Vector_base<DynexCN::WalletLegacyTransaction, std::allocator<DynexCN::WalletLegacyTransaction>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.44" = type { %"struct.std::_Vector_base.45" }
%"struct.std::_Vector_base.45" = type { %"struct.std::_Vector_base<DynexCN::WalletLegacyTransfer, std::allocator<DynexCN::WalletLegacyTransfer>>::_Vector_impl" }
%"struct.std::_Vector_base<DynexCN::WalletLegacyTransfer, std::allocator<DynexCN::WalletLegacyTransfer>>::_Vector_impl" = type { %"struct.std::_Vector_base<DynexCN::WalletLegacyTransfer, std::allocator<DynexCN::WalletLegacyTransfer>>::_Vector_impl_data" }
%"struct.std::_Vector_base<DynexCN::WalletLegacyTransfer, std::allocator<DynexCN::WalletLegacyTransfer>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.DynexCN::WalletUnconfirmedTransactions" = type { %"class.std::unordered_map.49", %"class.std::unordered_set", i64 }
%"class.std::unordered_map.49" = type { %"class.std::_Hashtable.50" }
%"class.std::_Hashtable.50" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"class.std::unordered_set" = 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.std::unordered_map.85" = type { %"class.std::_Hashtable.86" }
%"class.std::_Hashtable.86" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"class.std::unique_ptr.99" = type { %"struct.std::__uniq_ptr_data.100" }
%"struct.std::__uniq_ptr_data.100" = type { %"class.std::__uniq_ptr_impl.101" }
%"class.std::__uniq_ptr_impl.101" = type { %"class.std::tuple.102" }
%"class.std::tuple.102" = type { %"struct.std::_Tuple_impl.103" }
%"struct.std::_Tuple_impl.103" = type { %"struct.std::_Head_base.106" }
%"struct.std::_Head_base.106" = type { ptr }
%"class.DynexCN::WalletAsyncContextCounter" = type { i32, %"class.std::condition_variable", %"class.std::mutex" }
%"class.Tools::ObserverManager.107" = type { %"class.std::vector.108", %"class.std::mutex" }
%"class.std::vector.108" = type { %"struct.std::_Vector_base.109" }
%"struct.std::_Vector_base.109" = type { %"struct.std::_Vector_base<DynexCN::IWalletLegacyObserver *, std::allocator<DynexCN::IWalletLegacyObserver *>>::_Vector_impl" }
%"struct.std::_Vector_base<DynexCN::IWalletLegacyObserver *, std::allocator<DynexCN::IWalletLegacyObserver *>>::_Vector_impl" = type { %"struct.std::_Vector_base<DynexCN::IWalletLegacyObserver *, std::allocator<DynexCN::IWalletLegacyObserver *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<DynexCN::IWalletLegacyObserver *, std::allocator<DynexCN::IWalletLegacyObserver *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::unique_ptr.113" = type { %"struct.std::__uniq_ptr_data.114" }
%"struct.std::__uniq_ptr_data.114" = type { %"class.std::__uniq_ptr_impl.115" }
%"class.std::__uniq_ptr_impl.115" = type { %"class.std::tuple.116" }
%"class.std::tuple.116" = type { %"struct.std::_Tuple_impl.117" }
%"struct.std::_Tuple_impl.117" = type { %"struct.std::_Head_base.120" }
%"struct.std::_Head_base.120" = type { ptr }
%"struct.DynexCN::TransactionOutputInformation" = type { i8, i64, i32, i32, %"struct.Crypto::Hash", %"struct.Crypto::PublicKey", %union.anon.167 }
%union.anon.167 = type { i32, [28 x i8] }
%"struct.DynexCN::reserve_proof_entry" = type { %"struct.Crypto::Hash", i64, %"struct.Crypto::PublicKey", %"struct.Crypto::KeyImage", %"struct.Crypto::Signature", %"struct.Crypto::Signature" }

@_ZN7DynexCNL15NULL_SECRET_KEYE = external hidden global %"struct.Crypto::SecretKey", align 1
@_ZTISt13runtime_error = external constant ptr
@.str.25 = external hidden unnamed_addr constant [53 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [60 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [53 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [15 x i8], align 1

declare i32 @__gxx_personality_v0(...)

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

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

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

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

declare ptr @__cxa_allocate_exception(i64)

declare void @__cxa_free_exception(ptr)

declare void @__cxa_throw(ptr, ptr, ptr)

declare noundef nonnull align 1 dereferenceable(128) ptr @_ZNK7DynexCN11AccountBase14getAccountKeysEv(ptr noundef nonnull align 8 dereferenceable(136)) #3

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN6Crypto13scalarmultKeyERKNS_8KeyImageES2_(ptr dead_on_unwind noalias writable sret(%"struct.Crypto::KeyImage") align 1, ptr noundef nonnull align 1 dereferenceable(32), ptr noundef nonnull align 1 dereferenceable(32)) #4

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN7DynexCN12WalletLegacy15getReserveProofERKmRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8 %0, ptr noundef nonnull align 8 dereferenceable(1336) %1, ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef nonnull align 8 dereferenceable(32) %3) unnamed_addr #6 align 2 personality ptr @__gxx_personality_v0 {
  %5 = alloca ptr, align 8
  %6 = alloca ptr, align 8
  %7 = alloca ptr, align 8
  %8 = alloca ptr, align 8
  %9 = alloca %"struct.DynexCN::AccountKeys", align 1
  %10 = alloca %"struct.Crypto::SecretKey", align 1
  %11 = alloca ptr, align 8
  %12 = alloca i32, align 4
  %13 = alloca %"class.std::vector.162", align 8
  %14 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %15 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %16 = alloca %"class.__gnu_cxx::__normal_iterator.246", align 8
  %17 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %18 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %19 = alloca i64, align 8
  %20 = alloca i64, align 8
  %21 = alloca %"class.std::__cxx11::basic_string", align 8
  %22 = alloca %"class.std::vector.247", align 8
  %23 = alloca %"struct.DynexCN::KeyPair", align 1
  %24 = alloca i64, align 8
  %25 = alloca ptr, align 8
  %26 = alloca %"struct.Crypto::KeyImage", align 1
  %27 = alloca i8, align 1
  %28 = alloca %"struct.Crypto::Hash", align 1
  %29 = alloca %"class.std::vector.252", align 8
  %30 = alloca %"class.std::allocator.254", align 1
  %31 = alloca i64, align 8
  %32 = alloca i32, align 4
  %33 = alloca ptr, align 8
  %34 = alloca ptr, align 8
  %35 = alloca %"struct.Crypto::PublicKey", align 1
  %36 = alloca i32, align 4
  %37 = alloca %"struct.Crypto::KeyImage", align 1
  %38 = alloca %"struct.Crypto::KeyDerivation", align 1
  %39 = alloca %"struct.Crypto::KeyImage", align 1
  %40 = alloca %"struct.DynexCN::KeyPair", align 1
  %41 = alloca i8, align 1
  %42 = alloca ptr, align 8
  %43 = alloca %"class.std::vector.257", align 8
  %44 = alloca %"class.std::initializer_list.262", align 8
  %45 = alloca [1 x ptr], align 8
  %46 = alloca %"class.std::allocator.259", align 1
  %47 = alloca %"struct.Crypto::Signature", align 1
  %48 = alloca %"struct.DynexCN::reserve_proof", align 8
  %49 = alloca %"class.__gnu_cxx::__normal_iterator.263", align 8
  %50 = alloca %"class.__gnu_cxx::__normal_iterator.263", align 8
  %51 = alloca %"class.std::vector.136", align 8
  %52 = alloca i1, align 1
  %53 = alloca %"class.std::__cxx11::basic_string", align 8
  %54 = alloca %"class.std::__cxx11::basic_string", align 8
  store ptr %0, ptr %5, align 8
  store ptr %1, ptr %6, align 8, !tbaa !5
  store ptr %2, ptr %7, align 8, !tbaa !5
  store ptr %3, ptr %8, align 8, !tbaa !5
  %55 = load ptr, ptr %6, align 8
  call void @llvm.lifetime.start.p0(i64 128, ptr %9) #8
  %56 = getelementptr inbounds %"class.DynexCN::WalletLegacy", ptr %55, i32 0, i32 5
  %57 = call noundef nonnull align 1 dereferenceable(128) ptr @_ZNK7DynexCN11AccountBase14getAccountKeysEv(ptr noundef nonnull align 8 dereferenceable(136) %56)
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %9, ptr align 1 %57, i64 128, i1 false), !tbaa.struct !9
  call void @llvm.lifetime.start.p0(i64 32, ptr %10) #8
  %58 = getelementptr inbounds %"struct.DynexCN::AccountKeys", ptr %9, i32 0, i32 2
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %10, ptr align 1 %58, i64 32, i1 false), !tbaa.struct !11
  %59 = getelementptr inbounds %"struct.DynexCN::AccountKeys", ptr %9, i32 0, i32 1
  %60 = call noundef zeroext i1 @_ZN6CryptoeqERKNS_9SecretKeyES2_(ptr noundef nonnull align 1 dereferenceable(32) %59, ptr noundef nonnull align 1 dereferenceable(32) @_ZN7DynexCNL15NULL_SECRET_KEYE)
  br i1 %60, label %61, label %68

61:                                               ; preds = %4
  %62 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %62, ptr noundef @.str.25)
          to label %63 unwind label %64

63:                                               ; preds = %61
  call void @__cxa_throw(ptr %62, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #9
  unreachable

64:                                               ; preds = %61
  %65 = landingpad { ptr, i32 }
          cleanup
  %66 = extractvalue { ptr, i32 } %65, 0
  store ptr %66, ptr %11, align 8
  %67 = extractvalue { ptr, i32 } %65, 1
  store i32 %67, ptr %12, align 4
  call void @__cxa_free_exception(ptr %62) #8
  br label %431

68:                                               ; preds = %4
  %69 = load ptr, ptr %55, align 8, !tbaa !12
  %70 = getelementptr inbounds ptr, ptr %69, i64 15
  %71 = load ptr, ptr %70, align 8
  %72 = call noundef i64 %71(ptr noundef nonnull align 8 dereferenceable(1336) %55)
  %73 = icmp eq i64 %72, 0
  br i1 %73, label %74, label %81

74:                                               ; preds = %68
  %75 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %75, ptr noundef @.str.26)
          to label %76 unwind label %77

76:                                               ; preds = %74
  call void @__cxa_throw(ptr %75, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #9
  unreachable

77:                                               ; preds = %74
  %78 = landingpad { ptr, i32 }
          cleanup
  %79 = extractvalue { ptr, i32 } %78, 0
  store ptr %79, ptr %11, align 8
  %80 = extractvalue { ptr, i32 } %78, 1
  store i32 %80, ptr %12, align 4
  call void @__cxa_free_exception(ptr %75) #8
  br label %431

81:                                               ; preds = %68
  %82 = load ptr, ptr %55, align 8, !tbaa !12
  %83 = getelementptr inbounds ptr, ptr %82, i64 15
  %84 = load ptr, ptr %83, align 8
  %85 = call noundef i64 %84(ptr noundef nonnull align 8 dereferenceable(1336) %55)
  %86 = load ptr, ptr %7, align 8, !tbaa !5
  %87 = load i64, ptr %86, align 8, !tbaa !14
  %88 = icmp ult i64 %85, %87
  br i1 %88, label %89, label %96

89:                                               ; preds = %81
  %90 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %90, ptr noundef @.str.27)
          to label %91 unwind label %92

91:                                               ; preds = %89
  call void @__cxa_throw(ptr %90, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #9
  unreachable

92:                                               ; preds = %89
  %93 = landingpad { ptr, i32 }
          cleanup
  %94 = extractvalue { ptr, i32 } %93, 0
  store ptr %94, ptr %11, align 8
  %95 = extractvalue { ptr, i32 } %93, 1
  store i32 %95, ptr %12, align 4
  call void @__cxa_free_exception(ptr %90) #8
  br label %431

96:                                               ; preds = %81
  call void @llvm.lifetime.start.p0(i64 24, ptr %13) #8
  call void @_ZNSt6vectorIN7DynexCN28TransactionOutputInformationESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %13) #8
  %97 = getelementptr inbounds %"class.DynexCN::WalletLegacy", ptr %55, i32 0, i32 16
  %98 = load ptr, ptr %97, align 8, !tbaa !16
  %99 = load ptr, ptr %98, align 8, !tbaa !12
  %100 = getelementptr inbounds ptr, ptr %99, i64 5
  %101 = load ptr, ptr %100, align 8
  invoke void %101(ptr noundef nonnull align 8 dereferenceable(8) %98, ptr noundef nonnull align 8 dereferenceable(24) %13, i32 noundef 65281)
          to label %102 unwind label %132

102:                                              ; preds = %96
  %103 = call ptr @_ZNSt6vectorIN7DynexCN28TransactionOutputInformationESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %13) #8
  %104 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %14, i32 0, i32 0
  store ptr %103, ptr %104, align 8
  %105 = call ptr @_ZNSt6vectorIN7DynexCN28TransactionOutputInformationESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %13) #8
  %106 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %15, i32 0, i32 0
  store ptr %105, ptr %106, align 8
  %107 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %14, i32 0, i32 0
  %108 = load ptr, ptr %107, align 8
  %109 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %15, i32 0, i32 0
  %110 = load ptr, ptr %109, align 8
  invoke void @_ZSt4sortIN9__gnu_cxx17__normal_iteratorIPN7DynexCN28TransactionOutputInformationESt6vectorIS3_SaIS3_EEEEPFbRKS3_SA_EEvT_SD_T0_(ptr %108, ptr %110, ptr noundef @_ZN7DynexCN43compareTransactionOutputInformationByAmountERKNS_28TransactionOutputInformationES2_)
          to label %111 unwind label %132

111:                                              ; preds = %102
  br label %112

112:                                              ; preds = %130, %111
  %113 = call noundef i64 @_ZNKSt6vectorIN7DynexCN28TransactionOutputInformationESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %13) #8
  %114 = icmp uge i64 %113, 2
  br i1 %114, label %115, label %122

115:                                              ; preds = %112
  %116 = call noundef nonnull align 8 dereferenceable(120) ptr @_ZNSt6vectorIN7DynexCN28TransactionOutputInformationESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %13, i64 noundef 1) #8
  %117 = getelementptr inbounds %"struct.DynexCN::TransactionOutputInformation", ptr %116, i32 0, i32 1
  %118 = load i64, ptr %117, align 8, !tbaa !117
  %119 = load ptr, ptr %7, align 8, !tbaa !5
  %120 = load i64, ptr %119, align 8, !tbaa !14
  %121 = icmp uge i64 %118, %120
  br label %122

122:                                              ; preds = %115, %112
  %123 = phi i1 [ false, %112 ], [ %121, %115 ]
  br i1 %123, label %124, label %140

124:                                              ; preds = %122
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #8
  %125 = call ptr @_ZNSt6vectorIN7DynexCN28TransactionOutputInformationESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %13) #8
  %126 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %17, i32 0, i32 0
  store ptr %125, ptr %126, align 8
  call void @_ZN9__gnu_cxx17__normal_iteratorIPKN7DynexCN28TransactionOutputInformationESt6vectorIS2_SaIS2_EEEC2IPS2_vEERKNS0_IT_S7_EE(ptr noundef nonnull align 8 dereferenceable(8) %16, ptr noundef nonnull align 8 dereferenceable(8) %17) #8
  %127 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.246", ptr %16, i32 0, i32 0
  %128 = load ptr, ptr %127, align 8
  %129 = invoke ptr @_ZNSt6vectorIN7DynexCN28TransactionOutputInformationESaIS1_EE5eraseEN9__gnu_cxx17__normal_iteratorIPKS1_S3_EE(ptr noundef nonnull align 8 dereferenceable(24) %13, ptr %128)
          to label %130 unwind label %136

130:                                              ; preds = %124
  %131 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %18, i32 0, i32 0
  store ptr %129, ptr %131, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #8
  br label %112, !llvm.loop !120

132:                                              ; preds = %102, %96
  %133 = landingpad { ptr, i32 }
          cleanup
  %134 = extractvalue { ptr, i32 } %133, 0
  store ptr %134, ptr %11, align 8
  %135 = extractvalue { ptr, i32 } %133, 1
  store i32 %135, ptr %12, align 4
  br label %430

136:                                              ; preds = %124
  %137 = landingpad { ptr, i32 }
          cleanup
  %138 = extractvalue { ptr, i32 } %137, 0
  store ptr %138, ptr %11, align 8
  %139 = extractvalue { ptr, i32 } %137, 1
  store i32 %139, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #8
  br label %430

140:                                              ; preds = %122
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #8
  store i64 0, ptr %19, align 8, !tbaa !14
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #8
  store i64 0, ptr %20, align 8, !tbaa !14
  br label %141

141:                                              ; preds = %146, %140
  %142 = load i64, ptr %20, align 8, !tbaa !14
  %143 = load ptr, ptr %7, align 8, !tbaa !5
  %144 = load i64, ptr %143, align 8, !tbaa !14
  %145 = icmp ult i64 %142, %144
  br i1 %145, label %146, label %155

146:                                              ; preds = %141
  %147 = load i64, ptr %19, align 8, !tbaa !14
  %148 = call noundef nonnull align 8 dereferenceable(120) ptr @_ZNSt6vectorIN7DynexCN28TransactionOutputInformationESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %13, i64 noundef %147) #8
  %149 = getelementptr inbounds %"struct.DynexCN::TransactionOutputInformation", ptr %148, i32 0, i32 1
  %150 = load i64, ptr %149, align 8, !tbaa !117
  %151 = load i64, ptr %20, align 8, !tbaa !14
  %152 = add i64 %151, %150
  store i64 %152, ptr %20, align 8, !tbaa !14
  %153 = load i64, ptr %19, align 8, !tbaa !14
  %154 = add i64 %153, 1
  store i64 %154, ptr %19, align 8, !tbaa !14
  br label %141, !llvm.loop !122

155:                                              ; preds = %141
  %156 = load i64, ptr %19, align 8, !tbaa !14
  invoke void @_ZNSt6vectorIN7DynexCN28TransactionOutputInformationESaIS1_EE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %13, i64 noundef %156)
          to label %157 unwind label %168

157:                                              ; preds = %155
  call void @llvm.lifetime.start.p0(i64 32, ptr %21) #8
  %158 = load ptr, ptr %8, align 8, !tbaa !5
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %21, ptr noundef nonnull align 8 dereferenceable(32) %158)
          to label %159 unwind label %172

159:                                              ; preds = %157
  %160 = getelementptr inbounds %"struct.DynexCN::AccountKeys", ptr %9, i32 0, i32 0
  %161 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6appendEPKcm(ptr noundef nonnull align 8 dereferenceable(32) %21, ptr noundef %160, i64 noundef 64)
          to label %162 unwind label %176

162:                                              ; preds = %159
  call void @llvm.lifetime.start.p0(i64 24, ptr %22) #8
  call void @_ZNSt6vectorIN6Crypto8KeyImageESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %22) #8
  call void @llvm.lifetime.start.p0(i64 64, ptr %23) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #8
  store i64 0, ptr %24, align 8, !tbaa !14
  br label %163

163:                                              ; preds = %212, %162
  %164 = load i64, ptr %24, align 8, !tbaa !14
  %165 = call noundef i64 @_ZNKSt6vectorIN7DynexCN28TransactionOutputInformationESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %13) #8
  %166 = icmp ult i64 %164, %165
  br i1 %166, label %180, label %167

167:                                              ; preds = %163
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #8
  br label %216

168:                                              ; preds = %155
  %169 = landingpad { ptr, i32 }
          cleanup
  %170 = extractvalue { ptr, i32 } %169, 0
  store ptr %170, ptr %11, align 8
  %171 = extractvalue { ptr, i32 } %169, 1
  store i32 %171, ptr %12, align 4
  br label %429

172:                                              ; preds = %157
  %173 = landingpad { ptr, i32 }
          cleanup
  %174 = extractvalue { ptr, i32 } %173, 0
  store ptr %174, ptr %11, align 8
  %175 = extractvalue { ptr, i32 } %173, 1
  store i32 %175, ptr %12, align 4
  br label %428

176:                                              ; preds = %159
  %177 = landingpad { ptr, i32 }
          cleanup
  %178 = extractvalue { ptr, i32 } %177, 0
  store ptr %178, ptr %11, align 8
  %179 = extractvalue { ptr, i32 } %177, 1
  store i32 %179, ptr %12, align 4
  br label %427

180:                                              ; preds = %163
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #8
  %181 = load i64, ptr %24, align 8, !tbaa !14
  %182 = call noundef nonnull align 8 dereferenceable(120) ptr @_ZNSt6vectorIN7DynexCN28TransactionOutputInformationESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %13, i64 noundef %181) #8
  store ptr %182, ptr %25, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %26) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %27) #8
  %183 = getelementptr inbounds %"class.DynexCN::WalletLegacy", ptr %55, i32 0, i32 5
  %184 = invoke noundef nonnull align 1 dereferenceable(128) ptr @_ZNK7DynexCN11AccountBase14getAccountKeysEv(ptr noundef nonnull align 8 dereferenceable(136) %183)
          to label %185 unwind label %200

185:                                              ; preds = %180
  %186 = load ptr, ptr %25, align 8, !tbaa !5
  %187 = getelementptr inbounds %"struct.DynexCN::TransactionOutputInformation", ptr %186, i32 0, i32 5
  %188 = load ptr, ptr %25, align 8, !tbaa !5
  %189 = getelementptr inbounds %"struct.DynexCN::TransactionOutputInformation", ptr %188, i32 0, i32 3
  %190 = load i32, ptr %189, align 4, !tbaa !123
  %191 = zext i32 %190 to i64
  %192 = invoke noundef zeroext i1 @_ZN7DynexCN25generate_key_image_helperERKNS_11AccountKeysERKN6Crypto9PublicKeyEmRNS_7KeyPairERNS3_8KeyImageE(ptr noundef nonnull align 1 dereferenceable(128) %184, ptr noundef nonnull align 1 dereferenceable(32) %187, i64 noundef %191, ptr noundef nonnull align 1 dereferenceable(64) %23, ptr noundef nonnull align 1 dereferenceable(32) %26)
          to label %193 unwind label %200

193:                                              ; preds = %185
  %194 = zext i1 %192 to i8
  store i8 %194, ptr %27, align 1, !tbaa !124
  %195 = load i8, ptr %27, align 1, !tbaa !124, !range !125, !noundef !126
  %196 = trunc i8 %195 to i1
  br i1 %196, label %208, label %197

197:                                              ; preds = %193
  %198 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %198, ptr noundef @.str.28)
          to label %199 unwind label %204

199:                                              ; preds = %197
  invoke void @__cxa_throw(ptr %198, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #9
          to label %437 unwind label %200

200:                                              ; preds = %210, %208, %199, %185, %180
  %201 = landingpad { ptr, i32 }
          cleanup
  %202 = extractvalue { ptr, i32 } %201, 0
  store ptr %202, ptr %11, align 8
  %203 = extractvalue { ptr, i32 } %201, 1
  store i32 %203, ptr %12, align 4
  br label %215

204:                                              ; preds = %197
  %205 = landingpad { ptr, i32 }
          cleanup
  %206 = extractvalue { ptr, i32 } %205, 0
  store ptr %206, ptr %11, align 8
  %207 = extractvalue { ptr, i32 } %205, 1
  store i32 %207, ptr %12, align 4
  call void @__cxa_free_exception(ptr %198) #8
  br label %215

208:                                              ; preds = %193
  %209 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6appendEPKcm(ptr noundef nonnull align 8 dereferenceable(32) %21, ptr noundef %26, i64 noundef 32)
          to label %210 unwind label %200

210:                                              ; preds = %208
  invoke void @_ZNSt6vectorIN6Crypto8KeyImageESaIS1_EE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %22, ptr noundef nonnull align 1 dereferenceable(32) %26)
          to label %211 unwind label %200

211:                                              ; preds = %210
  call void @llvm.lifetime.end.p0(i64 1, ptr %27) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %26) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #8
  br label %212

212:                                              ; preds = %211
  %213 = load i64, ptr %24, align 8, !tbaa !14
  %214 = add i64 %213, 1
  store i64 %214, ptr %24, align 8, !tbaa !14
  br label %163, !llvm.loop !127

215:                                              ; preds = %204, %200
  call void @llvm.lifetime.end.p0(i64 1, ptr %27) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %26) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #8
  br label %426

216:                                              ; preds = %167
  call void @llvm.lifetime.start.p0(i64 32, ptr %28) #8
  %217 = call noundef ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4dataEv(ptr noundef nonnull align 8 dereferenceable(32) %21) #8
  %218 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %21) #8
  invoke void @_ZN6Crypto12cn_fast_hashEPKvmRNS_4HashE(ptr noundef %217, i64 noundef %218, ptr noundef nonnull align 1 dereferenceable(32) %28)
          to label %219 unwind label %227

219:                                              ; preds = %216
  call void @llvm.lifetime.start.p0(i64 24, ptr %29) #8
  %220 = call noundef i64 @_ZNKSt6vectorIN7DynexCN28TransactionOutputInformationESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %13) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %30) #8
  call void @_ZNSaIN7DynexCN19reserve_proof_entryEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %30) #8
  invoke void @_ZNSt6vectorIN7DynexCN19reserve_proof_entryESaIS1_EEC2EmRKS2_(ptr noundef nonnull align 8 dereferenceable(24) %29, i64 noundef %220, ptr noundef nonnull align 1 dereferenceable(1) %30)
          to label %221 unwind label %231

221:                                              ; preds = %219
  call void @_ZNSt15__new_allocatorIN7DynexCN19reserve_proof_entryEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %30) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %30) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #8
  store i64 0, ptr %31, align 8, !tbaa !14
  br label %222

222:                                              ; preds = %356, %221
  %223 = load i64, ptr %31, align 8, !tbaa !14
  %224 = call noundef i64 @_ZNKSt6vectorIN7DynexCN28TransactionOutputInformationESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %13) #8
  %225 = icmp ult i64 %223, %224
  br i1 %225, label %235, label %226

226:                                              ; preds = %222
  store i32 9, ptr %32, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #8
  br label %370

227:                                              ; preds = %216
  %228 = landingpad { ptr, i32 }
          cleanup
  %229 = extractvalue { ptr, i32 } %228, 0
  store ptr %229, ptr %11, align 8
  %230 = extractvalue { ptr, i32 } %228, 1
  store i32 %230, ptr %12, align 4
  br label %425

231:                                              ; preds = %219
  %232 = landingpad { ptr, i32 }
          cleanup
  %233 = extractvalue { ptr, i32 } %232, 0
  store ptr %233, ptr %11, align 8
  %234 = extractvalue { ptr, i32 } %232, 1
  store i32 %234, ptr %12, align 4
  call void @_ZNSt15__new_allocatorIN7DynexCN19reserve_proof_entryEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %30) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %30) #8
  br label %424

235:                                              ; preds = %222
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #8
  %236 = load i64, ptr %31, align 8, !tbaa !14
  %237 = call noundef nonnull align 8 dereferenceable(120) ptr @_ZNSt6vectorIN7DynexCN28TransactionOutputInformationESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %13, i64 noundef %236) #8
  store ptr %237, ptr %33, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #8
  %238 = load i64, ptr %31, align 8, !tbaa !14
  %239 = call noundef nonnull align 8 dereferenceable(232) ptr @_ZNSt6vectorIN7DynexCN19reserve_proof_entryESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %29, i64 noundef %238) #8
  store ptr %239, ptr %34, align 8, !tbaa !5
  %240 = load i64, ptr %31, align 8, !tbaa !14
  %241 = call noundef nonnull align 1 dereferenceable(32) ptr @_ZNSt6vectorIN6Crypto8KeyImageESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %22, i64 noundef %240) #8
  %242 = load ptr, ptr %34, align 8, !tbaa !5
  %243 = getelementptr inbounds %"struct.DynexCN::reserve_proof_entry", ptr %242, i32 0, i32 3
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %243, ptr align 1 %241, i64 32, i1 false), !tbaa.struct !11
  %244 = load ptr, ptr %33, align 8, !tbaa !5
  %245 = getelementptr inbounds %"struct.DynexCN::TransactionOutputInformation", ptr %244, i32 0, i32 4
  %246 = load ptr, ptr %34, align 8, !tbaa !5
  %247 = getelementptr inbounds %"struct.DynexCN::reserve_proof_entry", ptr %246, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %247, ptr align 8 %245, i64 32, i1 false), !tbaa.struct !11
  %248 = load ptr, ptr %33, align 8, !tbaa !5
  %249 = getelementptr inbounds %"struct.DynexCN::TransactionOutputInformation", ptr %248, i32 0, i32 3
  %250 = load i32, ptr %249, align 4, !tbaa !123
  %251 = zext i32 %250 to i64
  %252 = load ptr, ptr %34, align 8, !tbaa !5
  %253 = getelementptr inbounds %"struct.DynexCN::reserve_proof_entry", ptr %252, i32 0, i32 1
  store i64 %251, ptr %253, align 8, !tbaa !128
  call void @llvm.lifetime.start.p0(i64 32, ptr %35) #8
  %254 = load ptr, ptr %33, align 8, !tbaa !5
  %255 = getelementptr inbounds %"struct.DynexCN::TransactionOutputInformation", ptr %254, i32 0, i32 5
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %35, ptr align 8 %255, i64 32, i1 false), !tbaa.struct !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %36) #8
  store i32 0, ptr %36, align 4, !tbaa !132
  br label %256

256:                                              ; preds = %284, %235
  %257 = load i32, ptr %36, align 4, !tbaa !132
  %258 = icmp slt i32 %257, 2
  br i1 %258, label %260, label %259

259:                                              ; preds = %256
  store i32 12, ptr %32, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #8
  br label %289

260:                                              ; preds = %256
  call void @llvm.lifetime.start.p0(i64 32, ptr %37) #8
  invoke void @_ZN6Crypto13scalarmultKeyERKNS_8KeyImageES2_(ptr dead_on_unwind writable sret(%"struct.Crypto::KeyImage") align 1 %37, ptr noundef nonnull align 1 dereferenceable(32) %35, ptr noundef nonnull align 1 dereferenceable(32) %10)
          to label %261 unwind label %271

261:                                              ; preds = %260
  %262 = load ptr, ptr %34, align 8, !tbaa !5
  %263 = getelementptr inbounds %"struct.DynexCN::reserve_proof_entry", ptr %262, i32 0, i32 2
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %263, ptr align 1 %37, i64 32, i1 false), !tbaa.struct !11
  call void @llvm.lifetime.start.p0(i64 32, ptr %38) #8
  %264 = load ptr, ptr %34, align 8, !tbaa !5
  %265 = getelementptr inbounds %"struct.DynexCN::reserve_proof_entry", ptr %264, i32 0, i32 2
  %266 = invoke noundef zeroext i1 @_ZN6Crypto23generate_key_derivationERKNS_9PublicKeyERKNS_9SecretKeyERNS_13KeyDerivationE(ptr noundef nonnull align 1 dereferenceable(32) %265, ptr noundef nonnull align 1 dereferenceable(32) %10, ptr noundef nonnull align 1 dereferenceable(32) %38)
          to label %267 unwind label %275

267:                                              ; preds = %261
  br i1 %266, label %283, label %268

268:                                              ; preds = %267
  %269 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %269, ptr noundef @.str.29)
          to label %270 unwind label %279

270:                                              ; preds = %268
  invoke void @__cxa_throw(ptr %269, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #9
          to label %437 unwind label %275

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

275:                                              ; preds = %270, %261
  %276 = landingpad { ptr, i32 }
          cleanup
  %277 = extractvalue { ptr, i32 } %276, 0
  store ptr %277, ptr %11, align 8
  %278 = extractvalue { ptr, i32 } %276, 1
  store i32 %278, ptr %12, align 4
  br label %287

279:                                              ; preds = %268
  %280 = landingpad { ptr, i32 }
          cleanup
  %281 = extractvalue { ptr, i32 } %280, 0
  store ptr %281, ptr %11, align 8
  %282 = extractvalue { ptr, i32 } %280, 1
  store i32 %282, ptr %12, align 4
  call void @__cxa_free_exception(ptr %269) #8
  br label %287

283:                                              ; preds = %267
  call void @llvm.lifetime.end.p0(i64 32, ptr %38) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %37) #8
  br label %284

284:                                              ; preds = %283
  %285 = load i32, ptr %36, align 4, !tbaa !132
  %286 = add nsw i32 %285, 1
  store i32 %286, ptr %36, align 4, !tbaa !132
  br label %256, !llvm.loop !133

287:                                              ; preds = %279, %275
  call void @llvm.lifetime.end.p0(i64 32, ptr %38) #8
  br label %288

288:                                              ; preds = %287, %271
  call void @llvm.lifetime.end.p0(i64 32, ptr %37) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #8
  br label %369

289:                                              ; preds = %259
  %290 = getelementptr inbounds %"struct.DynexCN::AccountKeys", ptr %9, i32 0, i32 0
  %291 = getelementptr inbounds %"struct.DynexCN::AccountPublicAddress", ptr %290, i32 0, i32 1
  %292 = load ptr, ptr %34, align 8, !tbaa !5
  %293 = getelementptr inbounds %"struct.DynexCN::reserve_proof_entry", ptr %292, i32 0, i32 2
  %294 = load ptr, ptr %34, align 8, !tbaa !5
  %295 = getelementptr inbounds %"struct.DynexCN::reserve_proof_entry", ptr %294, i32 0, i32 4
  invoke void @_ZN6Crypto17generate_tx_proofERKNS_4HashERKNS_9PublicKeyES5_S5_RKNS_9SecretKeyERNS_9SignatureE(ptr noundef nonnull align 1 dereferenceable(32) %28, ptr noundef nonnull align 1 dereferenceable(32) %291, ptr noundef nonnull align 1 dereferenceable(32) %35, ptr noundef nonnull align 1 dereferenceable(32) %293, ptr noundef nonnull align 1 dereferenceable(32) %10, ptr noundef nonnull align 1 dereferenceable(64) %295)
          to label %296 unwind label %314

296:                                              ; preds = %289
  call void @llvm.lifetime.start.p0(i64 32, ptr %39) #8
  call void @llvm.lifetime.start.p0(i64 64, ptr %40) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %41) #8
  %297 = getelementptr inbounds %"class.DynexCN::WalletLegacy", ptr %55, i32 0, i32 5
  %298 = invoke noundef nonnull align 1 dereferenceable(128) ptr @_ZNK7DynexCN11AccountBase14getAccountKeysEv(ptr noundef nonnull align 8 dereferenceable(136) %297)
          to label %299 unwind label %318

299:                                              ; preds = %296
  %300 = load ptr, ptr %33, align 8, !tbaa !5
  %301 = getelementptr inbounds %"struct.DynexCN::TransactionOutputInformation", ptr %300, i32 0, i32 5
  %302 = load ptr, ptr %33, align 8, !tbaa !5
  %303 = getelementptr inbounds %"struct.DynexCN::TransactionOutputInformation", ptr %302, i32 0, i32 3
  %304 = load i32, ptr %303, align 4, !tbaa !123
  %305 = zext i32 %304 to i64
  %306 = invoke noundef zeroext i1 @_ZN7DynexCN25generate_key_image_helperERKNS_11AccountKeysERKN6Crypto9PublicKeyEmRNS_7KeyPairERNS3_8KeyImageE(ptr noundef nonnull align 1 dereferenceable(128) %298, ptr noundef nonnull align 1 dereferenceable(32) %301, i64 noundef %305, ptr noundef nonnull align 1 dereferenceable(64) %40, ptr noundef nonnull align 1 dereferenceable(32) %39)
          to label %307 unwind label %318

307:                                              ; preds = %299
  %308 = zext i1 %306 to i8
  store i8 %308, ptr %41, align 1, !tbaa !124
  %309 = load i8, ptr %41, align 1, !tbaa !124, !range !125, !noundef !126
  %310 = trunc i8 %309 to i1
  br i1 %310, label %326, label %311

311:                                              ; preds = %307
  %312 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %312, ptr noundef @.str.28)
          to label %313 unwind label %322

313:                                              ; preds = %311
  invoke void @__cxa_throw(ptr %312, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #9
          to label %437 unwind label %318

314:                                              ; preds = %289
  %315 = landingpad { ptr, i32 }
          cleanup
  %316 = extractvalue { ptr, i32 } %315, 0
  store ptr %316, ptr %11, align 8
  %317 = extractvalue { ptr, i32 } %315, 1
  store i32 %317, ptr %12, align 4
  br label %369

318:                                              ; preds = %334, %326, %313, %299, %296
  %319 = landingpad { ptr, i32 }
          cleanup
  %320 = extractvalue { ptr, i32 } %319, 0
  store ptr %320, ptr %11, align 8
  %321 = extractvalue { ptr, i32 } %319, 1
  store i32 %321, ptr %12, align 4
  br label %368

322:                                              ; preds = %311
  %323 = landingpad { ptr, i32 }
          cleanup
  %324 = extractvalue { ptr, i32 } %323, 0
  store ptr %324, ptr %11, align 8
  %325 = extractvalue { ptr, i32 } %323, 1
  store i32 %325, ptr %12, align 4
  call void @__cxa_free_exception(ptr %312) #8
  br label %368

326:                                              ; preds = %307
  %327 = getelementptr inbounds %"struct.DynexCN::KeyPair", ptr %40, i32 0, i32 0
  %328 = load ptr, ptr %33, align 8, !tbaa !5
  %329 = getelementptr inbounds %"struct.DynexCN::TransactionOutputInformation", ptr %328, i32 0, i32 6
  %330 = invoke noundef zeroext i1 @_ZN6CryptoneERKNS_9PublicKeyES2_(ptr noundef nonnull align 1 dereferenceable(32) %327, ptr noundef nonnull align 1 dereferenceable(32) %329)
          to label %331 unwind label %318

331:                                              ; preds = %326
  br i1 %330, label %332, label %339

332:                                              ; preds = %331
  %333 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %333, ptr noundef @.str.30)
          to label %334 unwind label %335

334:                                              ; preds = %332
  invoke void @__cxa_throw(ptr %333, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #9
          to label %437 unwind label %318

335:                                              ; preds = %332
  %336 = landingpad { ptr, i32 }
          cleanup
  %337 = extractvalue { ptr, i32 } %336, 0
  store ptr %337, ptr %11, align 8
  %338 = extractvalue { ptr, i32 } %336, 1
  store i32 %338, ptr %12, align 4
  call void @__cxa_free_exception(ptr %333) #8
  br label %368

339:                                              ; preds = %331
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr %43) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %45) #8
  %340 = getelementptr inbounds %"struct.DynexCN::KeyPair", ptr %40, i32 0, i32 0
  store ptr %340, ptr %45, align 8, !tbaa !5
  %341 = getelementptr inbounds %"class.std::initializer_list.262", ptr %44, i32 0, i32 0
  store ptr %45, ptr %341, align 8, !tbaa !134
  %342 = getelementptr inbounds %"class.std::initializer_list.262", ptr %44, i32 0, i32 1
  store i64 1, ptr %342, align 8, !tbaa !136
  call void @llvm.lifetime.start.p0(i64 1, ptr %46) #8
  call void @_ZNSaIPKN6Crypto9PublicKeyEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %46) #8
  %343 = getelementptr inbounds { ptr, i64 }, ptr %44, i32 0, i32 0
  %344 = load ptr, ptr %343, align 8
  %345 = getelementptr inbounds { ptr, i64 }, ptr %44, i32 0, i32 1
  %346 = load i64, ptr %345, align 8
  invoke void @_ZNSt6vectorIPKN6Crypto9PublicKeyESaIS3_EEC2ESt16initializer_listIS3_ERKS4_(ptr noundef nonnull align 8 dereferenceable(24) %43, ptr %344, i64 %346, ptr noundef nonnull align 1 dereferenceable(1) %46)
          to label %347 unwind label %359

347:                                              ; preds = %339
  call void @_ZNSt15__new_allocatorIPKN6Crypto9PublicKeyEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %46) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %46) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #8
  store ptr %43, ptr %42, align 8, !tbaa !5
  %348 = load ptr, ptr %34, align 8, !tbaa !5
  %349 = getelementptr inbounds %"struct.DynexCN::reserve_proof_entry", ptr %348, i32 0, i32 3
  %350 = load ptr, ptr %42, align 8, !tbaa !5
  %351 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIPKN6Crypto9PublicKeyESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %350, i64 noundef 0) #8
  %352 = getelementptr inbounds %"struct.DynexCN::KeyPair", ptr %40, i32 0, i32 1
  %353 = load ptr, ptr %34, align 8, !tbaa !5
  %354 = getelementptr inbounds %"struct.DynexCN::reserve_proof_entry", ptr %353, i32 0, i32 5
  invoke void @_ZN6Crypto23generate_ring_signatureERKNS_4HashERKNS_8KeyImageEPKPKNS_9PublicKeyEmRKNS_9SecretKeyEmPNS_9SignatureE(ptr noundef nonnull align 1 dereferenceable(32) %28, ptr noundef nonnull align 1 dereferenceable(32) %349, ptr noundef %351, i64 noundef 1, ptr noundef nonnull align 1 dereferenceable(32) %352, i64 noundef 0, ptr noundef %354)
          to label %355 unwind label %363

355:                                              ; preds = %347
  call void @_ZNSt6vectorIPKN6Crypto9PublicKeyESaIS3_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %43) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %43) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %41) #8
  call void @llvm.lifetime.end.p0(i64 64, ptr %40) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %39) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %35) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #8
  br label %356

356:                                              ; preds = %355
  %357 = load i64, ptr %31, align 8, !tbaa !14
  %358 = add i64 %357, 1
  store i64 %358, ptr %31, align 8, !tbaa !14
  br label %222, !llvm.loop !137

359:                                              ; preds = %339
  %360 = landingpad { ptr, i32 }
          cleanup
  %361 = extractvalue { ptr, i32 } %360, 0
  store ptr %361, ptr %11, align 8
  %362 = extractvalue { ptr, i32 } %360, 1
  store i32 %362, ptr %12, align 4
  call void @_ZNSt15__new_allocatorIPKN6Crypto9PublicKeyEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %46) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %46) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #8
  br label %367

363:                                              ; preds = %347
  %364 = landingpad { ptr, i32 }
          cleanup
  %365 = extractvalue { ptr, i32 } %364, 0
  store ptr %365, ptr %11, align 8
  %366 = extractvalue { ptr, i32 } %364, 1
  store i32 %366, ptr %12, align 4
  call void @_ZNSt6vectorIPKN6Crypto9PublicKeyESaIS3_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %43) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %43) #8
  br label %367

367:                                              ; preds = %363, %359
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #8
  br label %368

368:                                              ; preds = %367, %335, %322, %318
  call void @llvm.lifetime.end.p0(i64 1, ptr %41) #8
  call void @llvm.lifetime.end.p0(i64 64, ptr %40) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %39) #8
  br label %369

369:                                              ; preds = %368, %314, %288
  call void @llvm.lifetime.end.p0(i64 32, ptr %35) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #8
  br label %423

370:                                              ; preds = %226
  call void @llvm.lifetime.start.p0(i64 64, ptr %47) #8
  %371 = getelementptr inbounds %"struct.DynexCN::AccountKeys", ptr %9, i32 0, i32 0
  %372 = getelementptr inbounds %"struct.DynexCN::AccountPublicAddress", ptr %371, i32 0, i32 0
  %373 = getelementptr inbounds %"struct.DynexCN::AccountKeys", ptr %9, i32 0, i32 1
  invoke void @_ZN6Crypto18generate_signatureERKNS_4HashERKNS_9PublicKeyERKNS_9SecretKeyERNS_9SignatureE(ptr noundef nonnull align 1 dereferenceable(32) %28, ptr noundef nonnull align 1 dereferenceable(32) %372, ptr noundef nonnull align 1 dereferenceable(32) %373, ptr noundef nonnull align 1 dereferenceable(64) %47)
          to label %374 unwind label %392

374:                                              ; preds = %370
  call void @llvm.lifetime.start.p0(i64 88, ptr %48) #8
  call void @_ZN7DynexCN13reserve_proofC2Ev(ptr noundef nonnull align 8 dereferenceable(88) %48) #8
  %375 = getelementptr inbounds %"struct.DynexCN::reserve_proof", ptr %48, i32 0, i32 0
  %376 = call ptr @_ZNSt6vectorIN7DynexCN19reserve_proof_entryESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %29) #8
  %377 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.263", ptr %49, i32 0, i32 0
  store ptr %376, ptr %377, align 8
  %378 = call ptr @_ZNSt6vectorIN7DynexCN19reserve_proof_entryESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %29) #8
  %379 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.263", ptr %50, i32 0, i32 0
  store ptr %378, ptr %379, align 8
  %380 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.263", ptr %49, i32 0, i32 0
  %381 = load ptr, ptr %380, align 8
  %382 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.263", ptr %50, i32 0, i32 0
  %383 = load ptr, ptr %382, align 8
  invoke void @_ZNSt6vectorIN7DynexCN19reserve_proof_entryESaIS1_EE6assignIN9__gnu_cxx17__normal_iteratorIPS1_S3_EEvEEvT_S9_(ptr noundef nonnull align 8 dereferenceable(24) %375, ptr %381, ptr %383)
          to label %384 unwind label %396

384:                                              ; preds = %374
  %385 = getelementptr inbounds %"struct.DynexCN::reserve_proof", ptr %48, i32 0, i32 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %385, ptr align 1 %47, i64 64, i1 false)
  call void @llvm.lifetime.start.p0(i64 24, ptr %51) #8
  invoke void @_ZN7DynexCN13toBinaryArrayINS_13reserve_proofEEESt6vectorIhSaIhEERKT_(ptr dead_on_unwind writable sret(%"class.std::vector.136") align 8 %51, ptr noundef nonnull align 8 dereferenceable(88) %48)
          to label %386 unwind label %400

386:                                              ; preds = %384
  store i1 false, ptr %52, align 1
  invoke void @_ZN6Common5toHexB5cxx11ERKSt6vectorIhSaIhEE(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %0, ptr noundef nonnull align 8 dereferenceable(24) %51)
          to label %387 unwind label %404

387:                                              ; preds = %386
  call void @llvm.lifetime.start.p0(i64 32, ptr %53) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %54) #8
  invoke void @_ZN5Tools6Base586encodeERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %54, ptr noundef nonnull align 8 dereferenceable(32) %0)
          to label %388 unwind label %408

388:                                              ; preds = %387
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_OS8_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %53, ptr noundef @.str.31, ptr noundef nonnull align 8 dereferenceable(32) %54)
          to label %389 unwind label %412

389:                                              ; preds = %388
  %390 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull align 8 dereferenceable(32) %53) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %53) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %54) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %54) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %53) #8
  store i1 true, ptr %52, align 1
  store i32 1, ptr %32, align 4
  %391 = load i1, ptr %52, align 1
  br i1 %391, label %418, label %417

392:                                              ; preds = %370
  %393 = landingpad { ptr, i32 }
          cleanup
  %394 = extractvalue { ptr, i32 } %393, 0
  store ptr %394, ptr %11, align 8
  %395 = extractvalue { ptr, i32 } %393, 1
  store i32 %395, ptr %12, align 4
  br label %422

396:                                              ; preds = %374
  %397 = landingpad { ptr, i32 }
          cleanup
  %398 = extractvalue { ptr, i32 } %397, 0
  store ptr %398, ptr %11, align 8
  %399 = extractvalue { ptr, i32 } %397, 1
  store i32 %399, ptr %12, align 4
  br label %421

400:                                              ; preds = %384
  %401 = landingpad { ptr, i32 }
          cleanup
  %402 = extractvalue { ptr, i32 } %401, 0
  store ptr %402, ptr %11, align 8
  %403 = extractvalue { ptr, i32 } %401, 1
  store i32 %403, ptr %12, align 4
  br label %420

404:                                              ; preds = %386
  %405 = landingpad { ptr, i32 }
          cleanup
  %406 = extractvalue { ptr, i32 } %405, 0
  store ptr %406, ptr %11, align 8
  %407 = extractvalue { ptr, i32 } %405, 1
  store i32 %407, ptr %12, align 4
  br label %419

408:                                              ; preds = %387
  %409 = landingpad { ptr, i32 }
          cleanup
  %410 = extractvalue { ptr, i32 } %409, 0
  store ptr %410, ptr %11, align 8
  %411 = extractvalue { ptr, i32 } %409, 1
  store i32 %411, ptr %12, align 4
  br label %416

412:                                              ; preds = %388
  %413 = landingpad { ptr, i32 }
          cleanup
  %414 = extractvalue { ptr, i32 } %413, 0
  store ptr %414, ptr %11, align 8
  %415 = extractvalue { ptr, i32 } %413, 1
  store i32 %415, ptr %12, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %54) #8
  br label %416

416:                                              ; preds = %412, %408
  call void @llvm.lifetime.end.p0(i64 32, ptr %54) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %53) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %0) #8
  br label %419

417:                                              ; preds = %389
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %0) #8
  br label %418

418:                                              ; preds = %417, %389
  call void @_ZNSt6vectorIhSaIhEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %51) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %51) #8
  call void @_ZN7DynexCN13reserve_proofD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %48) #8
  call void @llvm.lifetime.end.p0(i64 88, ptr %48) #8
  call void @llvm.lifetime.end.p0(i64 64, ptr %47) #8
  call void @_ZNSt6vectorIN7DynexCN19reserve_proof_entryESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %29) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %29) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %28) #8
  call void @llvm.lifetime.end.p0(i64 64, ptr %23) #8
  call void @_ZNSt6vectorIN6Crypto8KeyImageESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %22) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %22) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %21) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #8
  call void @_ZNSt6vectorIN7DynexCN28TransactionOutputInformationESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %13) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %13) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %10) #8
  call void @llvm.lifetime.end.p0(i64 128, ptr %9) #8
  ret void

419:                                              ; preds = %416, %404
  call void @_ZNSt6vectorIhSaIhEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %51) #8
  br label %420

420:                                              ; preds = %419, %400
  call void @llvm.lifetime.end.p0(i64 24, ptr %51) #8
  br label %421

421:                                              ; preds = %420, %396
  call void @_ZN7DynexCN13reserve_proofD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %48) #8
  call void @llvm.lifetime.end.p0(i64 88, ptr %48) #8
  br label %422

422:                                              ; preds = %421, %392
  call void @llvm.lifetime.end.p0(i64 64, ptr %47) #8
  br label %423

423:                                              ; preds = %422, %369
  call void @_ZNSt6vectorIN7DynexCN19reserve_proof_entryESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %29) #8
  br label %424

424:                                              ; preds = %423, %231
  call void @llvm.lifetime.end.p0(i64 24, ptr %29) #8
  br label %425

425:                                              ; preds = %424, %227
  call void @llvm.lifetime.end.p0(i64 32, ptr %28) #8
  br label %426

426:                                              ; preds = %425, %215
  call void @llvm.lifetime.end.p0(i64 64, ptr %23) #8
  call void @_ZNSt6vectorIN6Crypto8KeyImageESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %22) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %22) #8
  br label %427

427:                                              ; preds = %426, %176
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #8
  br label %428

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

429:                                              ; preds = %428, %168
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #8
  br label %430

430:                                              ; preds = %429, %136, %132
  call void @_ZNSt6vectorIN7DynexCN28TransactionOutputInformationESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %13) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %13) #8
  br label %431

431:                                              ; preds = %430, %92, %77, %64
  call void @llvm.lifetime.end.p0(i64 32, ptr %10) #8
  call void @llvm.lifetime.end.p0(i64 128, ptr %9) #8
  br label %432

432:                                              ; preds = %431
  %433 = load ptr, ptr %11, align 8
  %434 = load i32, ptr %12, align 4
  %435 = insertvalue { ptr, i32 } poison, ptr %433, 0
  %436 = insertvalue { ptr, i32 } %435, i32 %434, 1
  resume { ptr, i32 } %436

437:                                              ; preds = %334, %313, %270, %199
  unreachable
}

declare void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef) unnamed_addr #3

; Function Attrs: nounwind
declare void @_ZNSt13runtime_errorD1Ev(ptr noundef nonnull align 8 dereferenceable(16)) unnamed_addr #7

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZSt4sortIN9__gnu_cxx17__normal_iteratorIPN7DynexCN28TransactionOutputInformationESt6vectorIS3_SaIS3_EEEEPFbRKS3_SA_EEvT_SD_T0_(ptr, ptr, ptr noundef) #4

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

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

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

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

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

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

declare noundef zeroext i1 @_ZN7DynexCN25generate_key_image_helperERKNS_11AccountKeysERKN6Crypto9PublicKeyEmRNS_7KeyPairERNS3_8KeyImageE(ptr noundef nonnull align 1 dereferenceable(128), ptr noundef nonnull align 1 dereferenceable(32), i64 noundef, ptr noundef nonnull align 1 dereferenceable(64), ptr noundef nonnull align 1 dereferenceable(32)) #3

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7DynexCN13toBinaryArrayINS_13reserve_proofEEESt6vectorIhSaIhEERKT_(ptr dead_on_unwind noalias writable sret(%"class.std::vector.136") align 8, ptr noundef nonnull align 8 dereferenceable(88)) #6

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

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

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

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

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

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

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

!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 = !{i64 0, i64 32, !10, i64 32, i64 32, !10, i64 64, i64 32, !10, i64 96, i64 32, !10}
!10 = !{!7, !7, i64 0}
!11 = !{i64 0, i64 32, !10}
!12 = !{!13, !13, i64 0}
!13 = !{!"vtable pointer", !8, i64 0}
!14 = !{!15, !15, i64 0}
!15 = !{!"long", !7, i64 0}
!16 = !{!17, !6, i64 928}
!17 = !{!"_ZTSN7DynexCN12WalletLegacyE", !18, i64 0, !19, i64 8, !20, i64 16, !21, i64 24, !22, i64 32, !24, i64 72, !29, i64 208, !6, i64 240, !6, i64 248, !6, i64 256, !31, i64 264, !32, i64 272, !32, i64 280, !32, i64 288, !34, i64 296, !72, i64 736, !6, i64 928, !82, i64 936, !98, i64 1160, !104, i64 1168, !106, i64 1264, !111, i64 1328}
!18 = !{!"_ZTSN7DynexCN13IWalletLegacyE"}
!19 = !{!"_ZTSN7DynexCN31IBlockchainSynchronizerObserverE"}
!20 = !{!"_ZTSN7DynexCN18ITransfersObserverE"}
!21 = !{!"_ZTSN7DynexCN12WalletLegacy11WalletStateE", !7, i64 0}
!22 = !{!"_ZTSSt5mutex", !23, i64 0}
!23 = !{!"_ZTSSt12__mutex_base", !7, i64 0}
!24 = !{!"_ZTSN7DynexCN11AccountBaseE", !25, i64 0, !15, i64 128}
!25 = !{!"_ZTSN7DynexCN11AccountKeysE", !26, i64 0, !28, i64 64, !28, i64 96}
!26 = !{!"_ZTSN7DynexCN20AccountPublicAddressE", !27, i64 0, !27, i64 32}
!27 = !{!"_ZTSN6Crypto9PublicKeyE", !7, i64 0}
!28 = !{!"_ZTSN6Crypto9SecretKeyE", !7, i64 0}
!29 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !30, i64 0, !15, i64 8, !7, i64 16}
!30 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !6, i64 0}
!31 = !{!"bool", !7, i64 0}
!32 = !{!"_ZTSSt6atomicImE", !33, i64 0}
!33 = !{!"_ZTSSt13__atomic_baseImE", !15, i64 0}
!34 = !{!"_ZTSN7DynexCN22BlockchainSynchronizerE", !35, i64 0, !44, i64 80, !45, i64 88, !46, i64 128, !6, i64 176, !54, i64 184, !54, i64 216, !55, i64 248, !55, i64 252, !56, i64 256, !62, i64 264, !67, i64 288, !22, i64 312, !22, i64 352, !70, i64 392}
!35 = !{!"_ZTSN7DynexCN15IObservableImplINS_31IBlockchainSynchronizerObserverENS_23IBlockchainSynchronizerEEE", !36, i64 0, !39, i64 16}
!36 = !{!"_ZTSN7DynexCN23IBlockchainSynchronizerE", !37, i64 0, !38, i64 8}
!37 = !{!"_ZTSN7DynexCN11IObservableINS_31IBlockchainSynchronizerObserverEEE"}
!38 = !{!"_ZTSN7DynexCN19IStreamSerializableE"}
!39 = !{!"_ZTSN5Tools15ObserverManagerIN7DynexCN31IBlockchainSynchronizerObserverEEE", !40, i64 0, !22, i64 24}
!40 = !{!"_ZTSSt6vectorIPN7DynexCN31IBlockchainSynchronizerObserverESaIS2_EE", !41, i64 0}
!41 = !{!"_ZTSSt12_Vector_baseIPN7DynexCN31IBlockchainSynchronizerObserverESaIS2_EE", !42, i64 0}
!42 = !{!"_ZTSNSt12_Vector_baseIPN7DynexCN31IBlockchainSynchronizerObserverESaIS2_EE12_Vector_implE", !43, i64 0}
!43 = !{!"_ZTSNSt12_Vector_baseIPN7DynexCN31IBlockchainSynchronizerObserverESaIS2_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!44 = !{!"_ZTSN7DynexCN13INodeObserverE"}
!45 = !{!"_ZTSN7Logging9LoggerRefE", !6, i64 0, !29, i64 8}
!46 = !{!"_ZTSSt3mapIPN7DynexCN19IBlockchainConsumerESt10shared_ptrINS0_20SynchronizationStateEESt4lessIS2_ESaISt4pairIKS2_S5_EEE", !47, i64 0}
!47 = !{!"_ZTSSt8_Rb_treeIPN7DynexCN19IBlockchainConsumerESt4pairIKS2_St10shared_ptrINS0_20SynchronizationStateEEESt10_Select1stIS8_ESt4lessIS2_ESaIS8_EE", !48, i64 0}
!48 = !{!"_ZTSNSt8_Rb_treeIPN7DynexCN19IBlockchainConsumerESt4pairIKS2_St10shared_ptrINS0_20SynchronizationStateEEESt10_Select1stIS8_ESt4lessIS2_ESaIS8_EE13_Rb_tree_implISC_Lb1EEE", !49, i64 0, !51, i64 8}
!49 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessIPN7DynexCN19IBlockchainConsumerEEE", !50, i64 0}
!50 = !{!"_ZTSSt4lessIPN7DynexCN19IBlockchainConsumerEE"}
!51 = !{!"_ZTSSt15_Rb_tree_header", !52, i64 0, !15, i64 32}
!52 = !{!"_ZTSSt18_Rb_tree_node_base", !53, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!53 = !{!"_ZTSSt14_Rb_tree_color", !7, i64 0}
!54 = !{!"_ZTSN6Crypto4HashE", !7, i64 0}
!55 = !{!"_ZTSN7DynexCN22BlockchainSynchronizer5StateE", !7, i64 0}
!56 = !{!"_ZTSSt10unique_ptrISt6threadSt14default_deleteIS0_EE", !57, i64 0}
!57 = !{!"_ZTSSt15__uniq_ptr_dataISt6threadSt14default_deleteIS0_ELb1ELb1EE", !58, i64 0}
!58 = !{!"_ZTSSt15__uniq_ptr_implISt6threadSt14default_deleteIS0_EE", !59, i64 0}
!59 = !{!"_ZTSSt5tupleIJPSt6threadSt14default_deleteIS0_EEE", !60, i64 0}
!60 = !{!"_ZTSSt11_Tuple_implILm0EJPSt6threadSt14default_deleteIS0_EEE", !61, i64 0}
!61 = !{!"_ZTSSt10_Head_baseILm0EPSt6threadLb0EE", !6, i64 0}
!62 = !{!"_ZTSNSt7__cxx114listISt4pairIPKN7DynexCN18ITransactionReaderESt7promiseISt10error_codeEESaIS9_EEE", !63, i64 0}
!63 = !{!"_ZTSNSt7__cxx1110_List_baseISt4pairIPKN7DynexCN18ITransactionReaderESt7promiseISt10error_codeEESaIS9_EEE", !64, i64 0}
!64 = !{!"_ZTSNSt7__cxx1110_List_baseISt4pairIPKN7DynexCN18ITransactionReaderESt7promiseISt10error_codeEESaIS9_EE10_List_implE", !65, i64 0}
!65 = !{!"_ZTSNSt8__detail17_List_node_headerE", !66, i64 0, !15, i64 16}
!66 = !{!"_ZTSNSt8__detail15_List_node_baseE", !6, i64 0, !6, i64 8}
!67 = !{!"_ZTSNSt7__cxx114listISt4pairIPKN6Crypto4HashESt7promiseIvEESaIS8_EEE", !68, i64 0}
!68 = !{!"_ZTSNSt7__cxx1110_List_baseISt4pairIPKN6Crypto4HashESt7promiseIvEESaIS8_EEE", !69, i64 0}
!69 = !{!"_ZTSNSt7__cxx1110_List_baseISt4pairIPKN6Crypto4HashESt7promiseIvEESaIS8_EE10_List_implE", !65, i64 0}
!70 = !{!"_ZTSSt18condition_variable", !71, i64 0}
!71 = !{!"_ZTSSt9__condvar", !7, i64 0}
!72 = !{!"_ZTSN7DynexCN20TransfersSyncronizerE", !73, i64 0, !74, i64 8, !45, i64 16, !75, i64 56, !80, i64 112, !6, i64 168, !6, i64 176, !6, i64 184}
!73 = !{!"_ZTSN7DynexCN22ITransfersSynchronizerE", !38, i64 0}
!74 = !{!"_ZTSN7DynexCN27IBlockchainConsumerObserverE"}
!75 = !{!"_ZTSSt13unordered_mapIN6Crypto9PublicKeyESt10unique_ptrIN7DynexCN17TransfersConsumerESt14default_deleteIS4_EESt4hashIS1_ESt8equal_toIS1_ESaISt4pairIKS1_S7_EEE", !76, i64 0}
!76 = !{!"_ZTSSt10_HashtableIN6Crypto9PublicKeyESt4pairIKS1_St10unique_ptrIN7DynexCN17TransfersConsumerESt14default_deleteIS6_EEESaISA_ENSt8__detail10_Select1stESt8equal_toIS1_ESt4hashIS1_ENSC_18_Mod_range_hashingENSC_20_Default_ranged_hashENSC_20_Prime_rehash_policyENSC_17_Hashtable_traitsILb1ELb0ELb1EEEE", !6, i64 0, !15, i64 8, !77, i64 16, !15, i64 24, !78, i64 32, !6, i64 48}
!77 = !{!"_ZTSNSt8__detail15_Hash_node_baseE", !6, i64 0}
!78 = !{!"_ZTSNSt8__detail20_Prime_rehash_policyE", !79, i64 0, !15, i64 8}
!79 = !{!"float", !7, i64 0}
!80 = !{!"_ZTSSt13unordered_mapIN6Crypto9PublicKeyESt10unique_ptrIN5Tools15ObserverManagerIN7DynexCN30ITransfersSynchronizerObserverEEESt14default_deleteIS7_EESt4hashIS1_ESt8equal_toIS1_ESaISt4pairIKS1_SA_EEE", !81, i64 0}
!81 = !{!"_ZTSSt10_HashtableIN6Crypto9PublicKeyESt4pairIKS1_St10unique_ptrIN5Tools15ObserverManagerIN7DynexCN30ITransfersSynchronizerObserverEEESt14default_deleteIS9_EEESaISD_ENSt8__detail10_Select1stESt8equal_toIS1_ESt4hashIS1_ENSF_18_Mod_range_hashingENSF_20_Default_ranged_hashENSF_20_Prime_rehash_policyENSF_17_Hashtable_traitsILb1ELb0ELb1EEEE", !6, i64 0, !15, i64 8, !77, i64 16, !15, i64 24, !78, i64 32, !6, i64 48}
!82 = !{!"_ZTSN7DynexCN27WalletUserTransactionsCacheE", !83, i64 0, !87, i64 24, !91, i64 48, !96, i64 168}
!83 = !{!"_ZTSSt6vectorIN7DynexCN23WalletLegacyTransactionESaIS1_EE", !84, i64 0}
!84 = !{!"_ZTSSt12_Vector_baseIN7DynexCN23WalletLegacyTransactionESaIS1_EE", !85, i64 0}
!85 = !{!"_ZTSNSt12_Vector_baseIN7DynexCN23WalletLegacyTransactionESaIS1_EE12_Vector_implE", !86, i64 0}
!86 = !{!"_ZTSNSt12_Vector_baseIN7DynexCN23WalletLegacyTransactionESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!87 = !{!"_ZTSSt6vectorIN7DynexCN20WalletLegacyTransferESaIS1_EE", !88, i64 0}
!88 = !{!"_ZTSSt12_Vector_baseIN7DynexCN20WalletLegacyTransferESaIS1_EE", !89, i64 0}
!89 = !{!"_ZTSNSt12_Vector_baseIN7DynexCN20WalletLegacyTransferESaIS1_EE12_Vector_implE", !90, i64 0}
!90 = !{!"_ZTSNSt12_Vector_baseIN7DynexCN20WalletLegacyTransferESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!91 = !{!"_ZTSN7DynexCN29WalletUnconfirmedTransactionsE", !92, i64 0, !94, i64 56, !15, i64 112}
!92 = !{!"_ZTSSt13unordered_mapIN6Crypto4HashEN7DynexCN26UnconfirmedTransferDetailsEN5boost4hashIS1_EESt8equal_toIS1_ESaISt4pairIKS1_S3_EEE", !93, i64 0}
!93 = !{!"_ZTSSt10_HashtableIN6Crypto4HashESt4pairIKS1_N7DynexCN26UnconfirmedTransferDetailsEESaIS6_ENSt8__detail10_Select1stESt8equal_toIS1_EN5boost4hashIS1_EENS8_18_Mod_range_hashingENS8_20_Default_ranged_hashENS8_20_Prime_rehash_policyENS8_17_Hashtable_traitsILb1ELb0ELb1EEEE", !6, i64 0, !15, i64 8, !77, i64 16, !15, i64 24, !78, i64 32, !6, i64 48}
!94 = !{!"_ZTSSt13unordered_setISt4pairIN6Crypto9PublicKeyEmESt4hashIS3_ESt8equal_toIS3_ESaIS3_EE", !95, i64 0}
!95 = !{!"_ZTSSt10_HashtableISt4pairIN6Crypto9PublicKeyEmES3_SaIS3_ENSt8__detail9_IdentityESt8equal_toIS3_ESt4hashIS3_ENS5_18_Mod_range_hashingENS5_20_Default_ranged_hashENS5_20_Prime_rehash_policyENS5_17_Hashtable_traitsILb1ELb1ELb1EEEE", !6, i64 0, !15, i64 8, !77, i64 16, !15, i64 24, !78, i64 32, !6, i64 48}
!96 = !{!"_ZTSSt13unordered_mapIN6Crypto4HashESt6vectorImSaImEEN5boost4hashIS1_EESt8equal_toIS1_ESaISt4pairIKS1_S4_EEE", !97, i64 0}
!97 = !{!"_ZTSSt10_HashtableIN6Crypto4HashESt4pairIKS1_St6vectorImSaImEEESaIS7_ENSt8__detail10_Select1stESt8equal_toIS1_EN5boost4hashIS1_EENS9_18_Mod_range_hashingENS9_20_Default_ranged_hashENS9_20_Prime_rehash_policyENS9_17_Hashtable_traitsILb1ELb0ELb1EEEE", !6, i64 0, !15, i64 8, !77, i64 16, !15, i64 24, !78, i64 32, !6, i64 48}
!98 = !{!"_ZTSSt10unique_ptrIN7DynexCN23WalletTransactionSenderESt14default_deleteIS1_EE", !99, i64 0}
!99 = !{!"_ZTSSt15__uniq_ptr_dataIN7DynexCN23WalletTransactionSenderESt14default_deleteIS1_ELb1ELb1EE", !100, i64 0}
!100 = !{!"_ZTSSt15__uniq_ptr_implIN7DynexCN23WalletTransactionSenderESt14default_deleteIS1_EE", !101, i64 0}
!101 = !{!"_ZTSSt5tupleIJPN7DynexCN23WalletTransactionSenderESt14default_deleteIS1_EEE", !102, i64 0}
!102 = !{!"_ZTSSt11_Tuple_implILm0EJPN7DynexCN23WalletTransactionSenderESt14default_deleteIS1_EEE", !103, i64 0}
!103 = !{!"_ZTSSt10_Head_baseILm0EPN7DynexCN23WalletTransactionSenderELb0EE", !6, i64 0}
!104 = !{!"_ZTSN7DynexCN25WalletAsyncContextCounterE", !105, i64 0, !70, i64 8, !22, i64 56}
!105 = !{!"int", !7, i64 0}
!106 = !{!"_ZTSN5Tools15ObserverManagerIN7DynexCN21IWalletLegacyObserverEEE", !107, i64 0, !22, i64 24}
!107 = !{!"_ZTSSt6vectorIPN7DynexCN21IWalletLegacyObserverESaIS2_EE", !108, i64 0}
!108 = !{!"_ZTSSt12_Vector_baseIPN7DynexCN21IWalletLegacyObserverESaIS2_EE", !109, i64 0}
!109 = !{!"_ZTSNSt12_Vector_baseIPN7DynexCN21IWalletLegacyObserverESaIS2_EE12_Vector_implE", !110, i64 0}
!110 = !{!"_ZTSNSt12_Vector_baseIPN7DynexCN21IWalletLegacyObserverESaIS2_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!111 = !{!"_ZTSSt10unique_ptrIN7DynexCN11SyncStarterESt14default_deleteIS1_EE", !112, i64 0}
!112 = !{!"_ZTSSt15__uniq_ptr_dataIN7DynexCN11SyncStarterESt14default_deleteIS1_ELb1ELb1EE", !113, i64 0}
!113 = !{!"_ZTSSt15__uniq_ptr_implIN7DynexCN11SyncStarterESt14default_deleteIS1_EE", !114, i64 0}
!114 = !{!"_ZTSSt5tupleIJPN7DynexCN11SyncStarterESt14default_deleteIS1_EEE", !115, i64 0}
!115 = !{!"_ZTSSt11_Tuple_implILm0EJPN7DynexCN11SyncStarterESt14default_deleteIS1_EEE", !116, i64 0}
!116 = !{!"_ZTSSt10_Head_baseILm0EPN7DynexCN11SyncStarterELb0EE", !6, i64 0}
!117 = !{!118, !15, i64 8}
!118 = !{!"_ZTSN7DynexCN28TransactionOutputInformationE", !119, i64 0, !15, i64 8, !105, i64 16, !105, i64 20, !54, i64 24, !27, i64 56, !7, i64 88}
!119 = !{!"_ZTSN7DynexCN16TransactionTypes10OutputTypeE", !7, i64 0}
!120 = distinct !{!120, !121}
!121 = !{!"llvm.loop.mustprogress"}
!122 = distinct !{!122, !121}
!123 = !{!118, !105, i64 20}
!124 = !{!31, !31, i64 0}
!125 = !{i8 0, i8 2}
!126 = !{}
!127 = distinct !{!127, !121}
!128 = !{!129, !15, i64 32}
!129 = !{!"_ZTSN7DynexCN19reserve_proof_entryE", !54, i64 0, !15, i64 32, !27, i64 40, !130, i64 72, !131, i64 104, !131, i64 168}
!130 = !{!"_ZTSN6Crypto8KeyImageE", !7, i64 0}
!131 = !{!"_ZTSN6Crypto9SignatureE", !7, i64 0}
!132 = !{!105, !105, i64 0}
!133 = distinct !{!133, !121}
!134 = !{!135, !6, i64 0}
!135 = !{!"_ZTSSt16initializer_listIPKN6Crypto9PublicKeyEE", !6, i64 0, !15, i64 8}
!136 = !{!135, !15, i64 8}
!137 = distinct !{!137, !121}


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

%"struct.Crypto::SecretKey" = type { [32 x i8] }
%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"struct.Crypto::KeyImage" = type { [32 x i8] }
%"struct.DynexCN::AccountKeys" = type { %"struct.DynexCN::AccountPublicAddress", %"struct.Crypto::SecretKey", %"struct.Crypto::SecretKey" }
%"struct.DynexCN::AccountPublicAddress" = type { %"struct.Crypto::PublicKey", %"struct.Crypto::PublicKey" }
%"struct.Crypto::PublicKey" = type { [32 x i8] }
%"class.std::vector.162" = type { %"struct.std::_Vector_base.163" }
%"struct.std::_Vector_base.163" = type { %"struct.std::_Vector_base<DynexCN::TransactionOutputInformation, std::allocator<DynexCN::TransactionOutputInformation>>::_Vector_impl" }
%"struct.std::_Vector_base<DynexCN::TransactionOutputInformation, std::allocator<DynexCN::TransactionOutputInformation>>::_Vector_impl" = type { %"struct.std::_Vector_base<DynexCN::TransactionOutputInformation, std::allocator<DynexCN::TransactionOutputInformation>>::_Vector_impl_data" }
%"struct.std::_Vector_base<DynexCN::TransactionOutputInformation, std::allocator<DynexCN::TransactionOutputInformation>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.__gnu_cxx::__normal_iterator.246" = type { ptr }
%"class.__gnu_cxx::__normal_iterator" = type { ptr }
%"class.std::vector.247" = type { %"struct.std::_Vector_base.248" }
%"struct.std::_Vector_base.248" = type { %"struct.std::_Vector_base<Crypto::KeyImage, std::allocator<Crypto::KeyImage>>::_Vector_impl" }
%"struct.std::_Vector_base<Crypto::KeyImage, std::allocator<Crypto::KeyImage>>::_Vector_impl" = type { %"struct.std::_Vector_base<Crypto::KeyImage, std::allocator<Crypto::KeyImage>>::_Vector_impl_data" }
%"struct.std::_Vector_base<Crypto::KeyImage, std::allocator<Crypto::KeyImage>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.DynexCN::KeyPair" = type { %"struct.Crypto::PublicKey", %"struct.Crypto::SecretKey" }
%"struct.Crypto::Hash" = type { [32 x i8] }
%"class.std::vector.252" = type { %"struct.std::_Vector_base.253" }
%"struct.std::_Vector_base.253" = type { %"struct.std::_Vector_base<DynexCN::reserve_proof_entry, std::allocator<DynexCN::reserve_proof_entry>>::_Vector_impl" }
%"struct.std::_Vector_base<DynexCN::reserve_proof_entry, std::allocator<DynexCN::reserve_proof_entry>>::_Vector_impl" = type { %"struct.std::_Vector_base<DynexCN::reserve_proof_entry, std::allocator<DynexCN::reserve_proof_entry>>::_Vector_impl_data" }
%"struct.std::_Vector_base<DynexCN::reserve_proof_entry, std::allocator<DynexCN::reserve_proof_entry>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::allocator.254" = type { i8 }
%"struct.Crypto::KeyDerivation" = type { [32 x i8] }
%"class.std::vector.257" = type { %"struct.std::_Vector_base.258" }
%"struct.std::_Vector_base.258" = type { %"struct.std::_Vector_base<const Crypto::PublicKey *, std::allocator<const Crypto::PublicKey *>>::_Vector_impl" }
%"struct.std::_Vector_base<const Crypto::PublicKey *, std::allocator<const Crypto::PublicKey *>>::_Vector_impl" = type { %"struct.std::_Vector_base<const Crypto::PublicKey *, std::allocator<const Crypto::PublicKey *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<const Crypto::PublicKey *, std::allocator<const Crypto::PublicKey *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::allocator.259" = type { i8 }
%"struct.Crypto::Signature" = type { [64 x i8] }
%"struct.DynexCN::reserve_proof" = type { %"class.std::vector.252", %"struct.Crypto::Signature" }
%"class.std::vector.136" = type { %"struct.std::_Vector_base.137" }
%"struct.std::_Vector_base.137" = 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 }

@_ZN7DynexCNL15NULL_SECRET_KEYE = external hidden global %"struct.Crypto::SecretKey", align 1
@_ZTISt13runtime_error = external constant ptr
@.str.25 = external hidden unnamed_addr constant [53 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [60 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [53 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [15 x i8], align 1

declare i32 @__gxx_personality_v0(...)

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

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

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

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

declare ptr @__cxa_allocate_exception(i64) local_unnamed_addr

declare void @__cxa_free_exception(ptr) local_unnamed_addr

declare void @__cxa_throw(ptr, ptr, ptr) local_unnamed_addr

declare noundef nonnull align 1 dereferenceable(128) ptr @_ZNK7DynexCN11AccountBase14getAccountKeysEv(ptr noundef nonnull align 8 dereferenceable(136)) local_unnamed_addr #3

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

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

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

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

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

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

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

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

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

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

declare void @_ZN5Tools6Base586encodeERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #3

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN6Crypto13scalarmultKeyERKNS_8KeyImageES2_(ptr dead_on_unwind noalias writable sret(%"struct.Crypto::KeyImage") align 1, ptr noundef nonnull align 1 dereferenceable(32), ptr noundef nonnull align 1 dereferenceable(32)) local_unnamed_addr #4

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN7DynexCN12WalletLegacy15getReserveProofERKmRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8 %0, ptr noundef nonnull align 8 dereferenceable(1336) %1, ptr nocapture noundef nonnull readonly align 8 dereferenceable(8) %2, ptr noundef nonnull align 8 dereferenceable(32) %3) unnamed_addr #6 align 2 personality ptr @__gxx_personality_v0 {
  %5 = alloca %"struct.DynexCN::AccountKeys", align 1
  %6 = alloca %"struct.Crypto::SecretKey", align 1
  %7 = alloca %"class.std::vector.162", align 8
  %8 = alloca %"class.__gnu_cxx::__normal_iterator.246", align 8
  %9 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %10 = alloca %"class.std::__cxx11::basic_string", align 8
  %11 = alloca %"class.std::vector.247", align 8
  %12 = alloca %"struct.DynexCN::KeyPair", align 1
  %13 = alloca %"struct.Crypto::KeyImage", align 1
  %14 = alloca %"struct.Crypto::Hash", align 1
  %15 = alloca %"class.std::vector.252", align 8
  %16 = alloca %"class.std::allocator.254", align 1
  %17 = alloca %"struct.Crypto::PublicKey", align 1
  %18 = alloca %"struct.Crypto::KeyImage", align 1
  %19 = alloca %"struct.Crypto::KeyDerivation", align 1
  %20 = alloca %"struct.Crypto::KeyImage", align 1
  %21 = alloca %"struct.DynexCN::KeyPair", align 1
  %22 = alloca %"class.std::vector.257", align 8
  %23 = alloca [1 x ptr], align 8
  %24 = alloca %"class.std::allocator.259", align 1
  %25 = alloca %"struct.Crypto::Signature", align 1
  %26 = alloca %"struct.DynexCN::reserve_proof", align 8
  %27 = alloca %"class.std::vector.136", align 8
  %28 = alloca %"class.std::__cxx11::basic_string", align 8
  %29 = alloca %"class.std::__cxx11::basic_string", align 8
  call void @llvm.lifetime.start.p0(i64 128, ptr nonnull %5) #8
  %30 = getelementptr inbounds i8, ptr %1, i64 72
  %31 = tail call noundef nonnull align 1 dereferenceable(128) ptr @_ZNK7DynexCN11AccountBase14getAccountKeysEv(ptr noundef nonnull align 8 dereferenceable(136) %30)
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(128) %5, ptr noundef nonnull align 1 dereferenceable(128) %31, i64 128, i1 false), !tbaa.struct !5
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %6) #8
  %32 = getelementptr inbounds i8, ptr %31, i64 96
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(32) %6, ptr noundef nonnull align 1 dereferenceable(32) %32, i64 32, i1 false)
  %33 = getelementptr inbounds i8, ptr %5, i64 64
  %34 = call noundef zeroext i1 @_ZN6CryptoeqERKNS_9SecretKeyES2_(ptr noundef nonnull align 1 dereferenceable(32) %33, ptr noundef nonnull align 1 dereferenceable(32) @_ZN7DynexCNL15NULL_SECRET_KEYE)
  br i1 %34, label %35, label %40

35:                                               ; preds = %4
  %36 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %36, ptr noundef nonnull @.str.25)
          to label %37 unwind label %38

37:                                               ; preds = %35
  call void @__cxa_throw(ptr nonnull %36, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #9
  unreachable

38:                                               ; preds = %35
  %39 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %36) #8
  br label %240

40:                                               ; preds = %4
  %41 = load ptr, ptr %1, align 8, !tbaa !9
  %42 = getelementptr inbounds i8, ptr %41, i64 120
  %43 = load ptr, ptr %42, align 8
  %44 = call noundef i64 %43(ptr noundef nonnull align 8 dereferenceable(1336) %1)
  %45 = icmp eq i64 %44, 0
  br i1 %45, label %46, label %51

46:                                               ; preds = %40
  %47 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %47, ptr noundef nonnull @.str.26)
          to label %48 unwind label %49

48:                                               ; preds = %46
  call void @__cxa_throw(ptr nonnull %47, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #9
  unreachable

49:                                               ; preds = %46
  %50 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %47) #8
  br label %240

51:                                               ; preds = %40
  %52 = load ptr, ptr %1, align 8, !tbaa !9
  %53 = getelementptr inbounds i8, ptr %52, i64 120
  %54 = load ptr, ptr %53, align 8
  %55 = call noundef i64 %54(ptr noundef nonnull align 8 dereferenceable(1336) %1)
  %56 = load i64, ptr %2, align 8, !tbaa !11
  %57 = icmp ult i64 %55, %56
  br i1 %57, label %58, label %63

58:                                               ; preds = %51
  %59 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %59, ptr noundef nonnull @.str.27)
          to label %60 unwind label %61

60:                                               ; preds = %58
  call void @__cxa_throw(ptr nonnull %59, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #9
  unreachable

61:                                               ; preds = %58
  %62 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %59) #8
  br label %240

63:                                               ; preds = %51
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %7) #8
  call void @_ZNSt6vectorIN7DynexCN28TransactionOutputInformationESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %7) #8
  %64 = getelementptr inbounds i8, ptr %1, i64 928
  %65 = load ptr, ptr %64, align 8, !tbaa !13
  %66 = load ptr, ptr %65, align 8, !tbaa !9
  %67 = getelementptr inbounds i8, ptr %66, i64 40
  %68 = load ptr, ptr %67, align 8
  invoke void %68(ptr noundef nonnull align 8 dereferenceable(8) %65, ptr noundef nonnull align 8 dereferenceable(24) %7, i32 noundef 65281)
          to label %69 unwind label %85

69:                                               ; preds = %63
  %70 = call ptr @_ZNSt6vectorIN7DynexCN28TransactionOutputInformationESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %7) #8
  %71 = call ptr @_ZNSt6vectorIN7DynexCN28TransactionOutputInformationESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %7) #8
  invoke void @_ZSt4sortIN9__gnu_cxx17__normal_iteratorIPN7DynexCN28TransactionOutputInformationESt6vectorIS3_SaIS3_EEEEPFbRKS3_SA_EEvT_SD_T0_(ptr %70, ptr %71, ptr noundef nonnull @_ZN7DynexCN43compareTransactionOutputInformationByAmountERKNS_28TransactionOutputInformationES2_)
          to label %.preheader unwind label %85

.preheader:                                       ; preds = %69
  %72 = call noundef i64 @_ZNKSt6vectorIN7DynexCN28TransactionOutputInformationESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %7) #8
  %73 = icmp ugt i64 %72, 1
  br i1 %73, label %.lr.ph, label %.critedge

.lr.ph:                                           ; preds = %.preheader, %82
  %74 = call noundef nonnull align 8 dereferenceable(120) ptr @_ZNSt6vectorIN7DynexCN28TransactionOutputInformationESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %7, i64 noundef 1) #8
  %75 = getelementptr inbounds i8, ptr %74, i64 8
  %76 = load i64, ptr %75, align 8, !tbaa !115
  %77 = load i64, ptr %2, align 8, !tbaa !11
  %.not = icmp ult i64 %76, %77
  br i1 %.not, label %.lr.ph111.preheader, label %78

78:                                               ; preds = %.lr.ph
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %9) #8
  %79 = call ptr @_ZNSt6vectorIN7DynexCN28TransactionOutputInformationESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %7) #8
  store ptr %79, ptr %9, align 8
  call void @_ZN9__gnu_cxx17__normal_iteratorIPKN7DynexCN28TransactionOutputInformationESt6vectorIS2_SaIS2_EEEC2IPS2_vEERKNS0_IT_S7_EE(ptr noundef nonnull align 8 dereferenceable(8) %8, ptr noundef nonnull align 8 dereferenceable(8) %9) #8
  %80 = load ptr, ptr %8, align 8
  %81 = invoke ptr @_ZNSt6vectorIN7DynexCN28TransactionOutputInformationESaIS1_EE5eraseEN9__gnu_cxx17__normal_iteratorIPKS1_S3_EE(ptr noundef nonnull align 8 dereferenceable(24) %7, ptr %80)
          to label %82 unwind label %87

82:                                               ; preds = %78
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #8
  %83 = call noundef i64 @_ZNKSt6vectorIN7DynexCN28TransactionOutputInformationESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %7) #8
  %84 = icmp ugt i64 %83, 1
  br i1 %84, label %.lr.ph, label %.critedge, !llvm.loop !118

85:                                               ; preds = %69, %63
  %86 = landingpad { ptr, i32 }
          cleanup
  br label %239

87:                                               ; preds = %78
  %88 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #8
  br label %239

.critedge:                                        ; preds = %82, %.preheader
  %.pr = load i64, ptr %2, align 8, !tbaa !11
  %.not121 = icmp eq i64 %.pr, 0
  br i1 %.not121, label %._crit_edge, label %.lr.ph111.preheader

.lr.ph111.preheader:                              ; preds = %.lr.ph, %.critedge
  br label %.lr.ph111

.lr.ph111:                                        ; preds = %.lr.ph111.preheader, %.lr.ph111
  %.067110 = phi i64 [ %93, %.lr.ph111 ], [ 0, %.lr.ph111.preheader ]
  %.068109 = phi i64 [ %92, %.lr.ph111 ], [ 0, %.lr.ph111.preheader ]
  %89 = call noundef nonnull align 8 dereferenceable(120) ptr @_ZNSt6vectorIN7DynexCN28TransactionOutputInformationESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %7, i64 noundef %.067110) #8
  %90 = getelementptr inbounds i8, ptr %89, i64 8
  %91 = load i64, ptr %90, align 8, !tbaa !115
  %92 = add i64 %91, %.068109
  %93 = add i64 %.067110, 1
  %94 = load i64, ptr %2, align 8, !tbaa !11
  %95 = icmp ult i64 %92, %94
  br i1 %95, label %.lr.ph111, label %._crit_edge, !llvm.loop !120

._crit_edge:                                      ; preds = %.lr.ph111, %.critedge
  %.067.lcssa = phi i64 [ 0, %.critedge ], [ %93, %.lr.ph111 ]
  invoke void @_ZNSt6vectorIN7DynexCN28TransactionOutputInformationESaIS1_EE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %7, i64 noundef %.067.lcssa)
          to label %96 unwind label %103

96:                                               ; preds = %._crit_edge
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %10) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %10, ptr noundef nonnull align 8 dereferenceable(32) %3)
          to label %97 unwind label %105

97:                                               ; preds = %96
  %98 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6appendEPKcm(ptr noundef nonnull align 8 dereferenceable(32) %10, ptr noundef nonnull %5, i64 noundef 64)
          to label %99 unwind label %107

99:                                               ; preds = %97
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %11) #8
  call void @_ZNSt6vectorIN6Crypto8KeyImageESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %11) #8
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %12) #8
  %100 = call noundef i64 @_ZNKSt6vectorIN7DynexCN28TransactionOutputInformationESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %7) #8
  %.not122 = icmp eq i64 %100, 0
  br i1 %.not122, label %._crit_edge115, label %.lr.ph114

._crit_edge115:                                   ; preds = %126, %99
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %14) #8
  %101 = call noundef ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4dataEv(ptr noundef nonnull align 8 dereferenceable(32) %10) #8
  %102 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %10) #8
  invoke void @_ZN6Crypto12cn_fast_hashEPKvmRNS_4HashE(ptr noundef %101, i64 noundef %102, ptr noundef nonnull align 1 dereferenceable(32) %14)
          to label %131 unwind label %137

103:                                              ; preds = %._crit_edge
  %104 = landingpad { ptr, i32 }
          cleanup
  br label %239

105:                                              ; preds = %96
  %106 = landingpad { ptr, i32 }
          cleanup
  br label %238

107:                                              ; preds = %97
  %108 = landingpad { ptr, i32 }
          cleanup
  br label %237

.lr.ph114:                                        ; preds = %99, %126
  %.069112 = phi i64 [ %127, %126 ], [ 0, %99 ]
  %109 = call noundef nonnull align 8 dereferenceable(120) ptr @_ZNSt6vectorIN7DynexCN28TransactionOutputInformationESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %7, i64 noundef %.069112) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %13) #8
  %110 = invoke noundef nonnull align 1 dereferenceable(128) ptr @_ZNK7DynexCN11AccountBase14getAccountKeysEv(ptr noundef nonnull align 8 dereferenceable(136) %30)
          to label %111 unwind label %.loopexit103

111:                                              ; preds = %.lr.ph114
  %112 = getelementptr inbounds i8, ptr %109, i64 56
  %113 = getelementptr inbounds i8, ptr %109, i64 20
  %114 = load i32, ptr %113, align 4, !tbaa !121
  %115 = zext i32 %114 to i64
  %116 = invoke noundef zeroext i1 @_ZN7DynexCN25generate_key_image_helperERKNS_11AccountKeysERKN6Crypto9PublicKeyEmRNS_7KeyPairERNS3_8KeyImageE(ptr noundef nonnull align 1 dereferenceable(128) %110, ptr noundef nonnull align 1 dereferenceable(32) %112, i64 noundef %115, ptr noundef nonnull align 1 dereferenceable(64) %12, ptr noundef nonnull align 1 dereferenceable(32) %13)
          to label %117 unwind label %.loopexit103

117:                                              ; preds = %111
  br i1 %116, label %123, label %118

118:                                              ; preds = %117
  %119 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %119, ptr noundef nonnull @.str.28)
          to label %120 unwind label %121

120:                                              ; preds = %118
  invoke void @__cxa_throw(ptr nonnull %119, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #9
          to label %241 unwind label %.loopexit.split-lp104

.loopexit103:                                     ; preds = %.lr.ph114, %111, %123, %125
  %lpad.loopexit105 = landingpad { ptr, i32 }
          cleanup
  br label %130

.loopexit.split-lp104:                            ; preds = %120
  %lpad.loopexit.split-lp106 = landingpad { ptr, i32 }
          cleanup
  br label %130

121:                                              ; preds = %118
  %122 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %119) #8
  br label %130

123:                                              ; preds = %117
  %124 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6appendEPKcm(ptr noundef nonnull align 8 dereferenceable(32) %10, ptr noundef nonnull %13, i64 noundef 32)
          to label %125 unwind label %.loopexit103

125:                                              ; preds = %123
  invoke void @_ZNSt6vectorIN6Crypto8KeyImageESaIS1_EE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %11, ptr noundef nonnull align 1 dereferenceable(32) %13)
          to label %126 unwind label %.loopexit103

126:                                              ; preds = %125
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %13) #8
  %127 = add nuw i64 %.069112, 1
  %128 = call noundef i64 @_ZNKSt6vectorIN7DynexCN28TransactionOutputInformationESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %7) #8
  %129 = icmp ult i64 %127, %128
  br i1 %129, label %.lr.ph114, label %._crit_edge115, !llvm.loop !122

130:                                              ; preds = %.loopexit103, %.loopexit.split-lp104, %121
  %.pn88 = phi { ptr, i32 } [ %122, %121 ], [ %lpad.loopexit105, %.loopexit103 ], [ %lpad.loopexit.split-lp106, %.loopexit.split-lp104 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %13) #8
  br label %236

131:                                              ; preds = %._crit_edge115
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %15) #8
  %132 = call noundef i64 @_ZNKSt6vectorIN7DynexCN28TransactionOutputInformationESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %7) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %16) #8
  call void @_ZNSaIN7DynexCN19reserve_proof_entryEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %16) #8
  invoke void @_ZNSt6vectorIN7DynexCN19reserve_proof_entryESaIS1_EEC2EmRKS2_(ptr noundef nonnull align 8 dereferenceable(24) %15, i64 noundef %132, ptr noundef nonnull align 1 dereferenceable(1) %16)
          to label %133 unwind label %139

133:                                              ; preds = %131
  call void @_ZNSt15__new_allocatorIN7DynexCN19reserve_proof_entryEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %16) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %16) #8
  %134 = call noundef i64 @_ZNKSt6vectorIN7DynexCN28TransactionOutputInformationESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %7) #8
  %.not123 = icmp eq i64 %134, 0
  br i1 %.not123, label %._crit_edge120, label %.lr.ph119

.lr.ph119:                                        ; preds = %133
  %135 = getelementptr inbounds i8, ptr %5, i64 32
  %136 = getelementptr inbounds i8, ptr %21, i64 32
  br label %141

._crit_edge120:                                   ; preds = %196, %133
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %25) #8
  invoke void @_ZN6Crypto18generate_signatureERKNS_4HashERKNS_9PublicKeyERKNS_9SecretKeyERNS_9SignatureE(ptr noundef nonnull align 1 dereferenceable(32) %14, ptr noundef nonnull align 1 dereferenceable(32) %5, ptr noundef nonnull align 1 dereferenceable(32) %33, ptr noundef nonnull align 1 dereferenceable(64) %25)
          to label %206 unwind label %216

137:                                              ; preds = %._crit_edge115
  %138 = landingpad { ptr, i32 }
          cleanup
  br label %235

139:                                              ; preds = %131
  %140 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIN7DynexCN19reserve_proof_entryEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %16) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %16) #8
  br label %234

141:                                              ; preds = %.lr.ph119, %196
  %.070117 = phi i64 [ 0, %.lr.ph119 ], [ %197, %196 ]
  %142 = call noundef nonnull align 8 dereferenceable(120) ptr @_ZNSt6vectorIN7DynexCN28TransactionOutputInformationESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %7, i64 noundef %.070117) #8
  %143 = call noundef nonnull align 8 dereferenceable(232) ptr @_ZNSt6vectorIN7DynexCN19reserve_proof_entryESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %15, i64 noundef %.070117) #8
  %144 = call noundef nonnull align 1 dereferenceable(32) ptr @_ZNSt6vectorIN6Crypto8KeyImageESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %11, i64 noundef %.070117) #8
  %145 = getelementptr inbounds i8, ptr %143, i64 72
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %145, ptr noundef nonnull align 1 dereferenceable(32) %144, i64 32, i1 false), !tbaa.struct !123
  %146 = getelementptr inbounds i8, ptr %142, i64 24
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %143, ptr noundef nonnull align 8 dereferenceable(32) %146, i64 32, i1 false), !tbaa.struct !123
  %147 = getelementptr inbounds i8, ptr %142, i64 20
  %148 = load i32, ptr %147, align 4, !tbaa !121
  %149 = zext i32 %148 to i64
  %150 = getelementptr inbounds i8, ptr %143, i64 32
  store i64 %149, ptr %150, align 8, !tbaa !124
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %17) #8
  %151 = getelementptr inbounds i8, ptr %142, i64 56
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(32) %17, ptr noundef nonnull align 8 dereferenceable(32) %151, i64 32, i1 false), !tbaa.struct !123
  %152 = getelementptr inbounds i8, ptr %143, i64 40
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %18) #8
  invoke void @_ZN6Crypto13scalarmultKeyERKNS_8KeyImageES2_(ptr dead_on_unwind nonnull writable sret(%"struct.Crypto::KeyImage") align 1 %18, ptr noundef nonnull align 1 dereferenceable(32) %17, ptr noundef nonnull align 1 dereferenceable(32) %6)
          to label %153 unwind label %159

153:                                              ; preds = %141
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %152, ptr noundef nonnull align 1 dereferenceable(32) %18, i64 32, i1 false), !tbaa.struct !123
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %19) #8
  %154 = invoke noundef zeroext i1 @_ZN6Crypto23generate_key_derivationERKNS_9PublicKeyERKNS_9SecretKeyERNS_13KeyDerivationE(ptr noundef nonnull align 1 dereferenceable(32) %152, ptr noundef nonnull align 1 dereferenceable(32) %6, ptr noundef nonnull align 1 dereferenceable(32) %19)
          to label %155 unwind label %.loopexit

155:                                              ; preds = %153
  br i1 %154, label %163, label %156

156:                                              ; preds = %166, %155
  %157 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %157, ptr noundef nonnull @.str.29)
          to label %158 unwind label %161

158:                                              ; preds = %156
  invoke void @__cxa_throw(ptr nonnull %157, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #9
          to label %241 unwind label %.loopexit.split-lp

159:                                              ; preds = %163, %141
  %160 = landingpad { ptr, i32 }
          cleanup
  br label %170

.loopexit:                                        ; preds = %164, %153
  %lpad.loopexit = landingpad { ptr, i32 }
          cleanup
  br label %169

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

161:                                              ; preds = %156
  %162 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %157) #8
  br label %169

163:                                              ; preds = %155
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %19) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %18) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %18) #8
  invoke void @_ZN6Crypto13scalarmultKeyERKNS_8KeyImageES2_(ptr dead_on_unwind nonnull writable sret(%"struct.Crypto::KeyImage") align 1 %18, ptr noundef nonnull align 1 dereferenceable(32) %17, ptr noundef nonnull align 1 dereferenceable(32) %6)
          to label %164 unwind label %159

164:                                              ; preds = %163
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %152, ptr noundef nonnull align 1 dereferenceable(32) %18, i64 32, i1 false), !tbaa.struct !123
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %19) #8
  %165 = invoke noundef zeroext i1 @_ZN6Crypto23generate_key_derivationERKNS_9PublicKeyERKNS_9SecretKeyERNS_13KeyDerivationE(ptr noundef nonnull align 1 dereferenceable(32) %152, ptr noundef nonnull align 1 dereferenceable(32) %6, ptr noundef nonnull align 1 dereferenceable(32) %19)
          to label %166 unwind label %.loopexit

166:                                              ; preds = %164
  br i1 %165, label %167, label %156

167:                                              ; preds = %166
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %19) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %18) #8
  %168 = getelementptr inbounds i8, ptr %143, i64 104
  invoke void @_ZN6Crypto17generate_tx_proofERKNS_4HashERKNS_9PublicKeyES5_S5_RKNS_9SecretKeyERNS_9SignatureE(ptr noundef nonnull align 1 dereferenceable(32) %14, ptr noundef nonnull align 1 dereferenceable(32) %135, ptr noundef nonnull align 1 dereferenceable(32) %17, ptr noundef nonnull align 1 dereferenceable(32) %152, ptr noundef nonnull align 1 dereferenceable(32) %6, ptr noundef nonnull align 1 dereferenceable(64) %168)
          to label %171 unwind label %181

169:                                              ; preds = %.loopexit, %.loopexit.split-lp, %161
  %.pn81 = phi { ptr, i32 } [ %162, %161 ], [ %lpad.loopexit, %.loopexit ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %19) #8
  br label %170

170:                                              ; preds = %169, %159
  %.pn81.pn = phi { ptr, i32 } [ %.pn81, %169 ], [ %160, %159 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %18) #8
  br label %205

171:                                              ; preds = %167
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %20) #8
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %21) #8
  %172 = invoke noundef nonnull align 1 dereferenceable(128) ptr @_ZNK7DynexCN11AccountBase14getAccountKeysEv(ptr noundef nonnull align 8 dereferenceable(136) %30)
          to label %173 unwind label %.loopexit98

173:                                              ; preds = %171
  %174 = load i32, ptr %147, align 4, !tbaa !121
  %175 = zext i32 %174 to i64
  %176 = invoke noundef zeroext i1 @_ZN7DynexCN25generate_key_image_helperERKNS_11AccountKeysERKN6Crypto9PublicKeyEmRNS_7KeyPairERNS3_8KeyImageE(ptr noundef nonnull align 1 dereferenceable(128) %172, ptr noundef nonnull align 1 dereferenceable(32) %151, i64 noundef %175, ptr noundef nonnull align 1 dereferenceable(64) %21, ptr noundef nonnull align 1 dereferenceable(32) %20)
          to label %177 unwind label %.loopexit98

177:                                              ; preds = %173
  br i1 %176, label %185, label %178

178:                                              ; preds = %177
  %179 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %179, ptr noundef nonnull @.str.28)
          to label %.invoke unwind label %183

.invoke:                                          ; preds = %178, %188
  %180 = phi ptr [ %189, %188 ], [ %179, %178 ]
  invoke void @__cxa_throw(ptr nonnull %180, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #9
          to label %.cont unwind label %.loopexit.split-lp99

.cont:                                            ; preds = %.invoke
  unreachable

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

.loopexit98:                                      ; preds = %171, %173
  %lpad.loopexit100 = landingpad { ptr, i32 }
          cleanup
  br label %204

.loopexit.split-lp99:                             ; preds = %.invoke
  %lpad.loopexit.split-lp101 = landingpad { ptr, i32 }
          cleanup
  br label %204

183:                                              ; preds = %178
  %184 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %179) #8
  br label %204

185:                                              ; preds = %177
  %186 = getelementptr inbounds i8, ptr %142, i64 88
  %187 = call noundef zeroext i1 @_ZN6CryptoneERKNS_9PublicKeyES2_(ptr noundef nonnull align 1 dereferenceable(32) %21, ptr noundef nonnull align 1 dereferenceable(32) %186)
  br i1 %187, label %188, label %192

188:                                              ; preds = %185
  %189 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %189, ptr noundef nonnull @.str.30)
          to label %.invoke unwind label %190

190:                                              ; preds = %188
  %191 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %189) #8
  br label %204

192:                                              ; preds = %185
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %22) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %23) #8
  store ptr %21, ptr %23, align 8, !tbaa !128
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %24) #8
  call void @_ZNSaIPKN6Crypto9PublicKeyEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %24) #8
  invoke void @_ZNSt6vectorIPKN6Crypto9PublicKeyESaIS3_EEC2ESt16initializer_listIS3_ERKS4_(ptr noundef nonnull align 8 dereferenceable(24) %22, ptr nonnull %23, i64 1, ptr noundef nonnull align 1 dereferenceable(1) %24)
          to label %193 unwind label %200

193:                                              ; preds = %192
  call void @_ZNSt15__new_allocatorIPKN6Crypto9PublicKeyEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %24) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %24) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #8
  %194 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIPKN6Crypto9PublicKeyESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %22, i64 noundef 0) #8
  %195 = getelementptr inbounds i8, ptr %143, i64 168
  invoke void @_ZN6Crypto23generate_ring_signatureERKNS_4HashERKNS_8KeyImageEPKPKNS_9PublicKeyEmRKNS_9SecretKeyEmPNS_9SignatureE(ptr noundef nonnull align 1 dereferenceable(32) %14, ptr noundef nonnull align 1 dereferenceable(32) %145, ptr noundef nonnull %194, i64 noundef 1, ptr noundef nonnull align 1 dereferenceable(32) %136, i64 noundef 0, ptr noundef nonnull %195)
          to label %196 unwind label %202

196:                                              ; preds = %193
  call void @_ZNSt6vectorIPKN6Crypto9PublicKeyESaIS3_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %22) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %22) #8
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %21) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %20) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %17) #8
  %197 = add nuw i64 %.070117, 1
  %198 = call noundef i64 @_ZNKSt6vectorIN7DynexCN28TransactionOutputInformationESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %7) #8
  %199 = icmp ult i64 %197, %198
  br i1 %199, label %141, label %._crit_edge120, !llvm.loop !129

200:                                              ; preds = %192
  %201 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIPKN6Crypto9PublicKeyEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %24) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %24) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #8
  br label %204

202:                                              ; preds = %193
  %203 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorIPKN6Crypto9PublicKeyESaIS3_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %22) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %22) #8
  br label %204

204:                                              ; preds = %.loopexit98, %.loopexit.split-lp99, %200, %202, %190, %183
  %.pn79 = phi { ptr, i32 } [ %191, %190 ], [ %184, %183 ], [ %203, %202 ], [ %201, %200 ], [ %lpad.loopexit100, %.loopexit98 ], [ %lpad.loopexit.split-lp101, %.loopexit.split-lp99 ]
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %21) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %20) #8
  br label %205

205:                                              ; preds = %204, %181, %170
  %.pn81.pn.pn = phi { ptr, i32 } [ %.pn81.pn, %170 ], [ %.pn79, %204 ], [ %182, %181 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %17) #8
  br label %233

206:                                              ; preds = %._crit_edge120
  call void @llvm.lifetime.start.p0(i64 88, ptr nonnull %26) #8
  call void @_ZN7DynexCN13reserve_proofC2Ev(ptr noundef nonnull align 8 dereferenceable(88) %26) #8
  %207 = call ptr @_ZNSt6vectorIN7DynexCN19reserve_proof_entryESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %15) #8
  %208 = call ptr @_ZNSt6vectorIN7DynexCN19reserve_proof_entryESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %15) #8
  invoke void @_ZNSt6vectorIN7DynexCN19reserve_proof_entryESaIS1_EE6assignIN9__gnu_cxx17__normal_iteratorIPS1_S3_EEvEEvT_S9_(ptr noundef nonnull align 8 dereferenceable(24) %26, ptr %207, ptr %208)
          to label %209 unwind label %218

209:                                              ; preds = %206
  %210 = getelementptr inbounds i8, ptr %26, i64 24
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %210, ptr noundef nonnull align 1 dereferenceable(64) %25, i64 64, i1 false)
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %27) #8
  invoke void @_ZN7DynexCN13toBinaryArrayINS_13reserve_proofEEESt6vectorIhSaIhEERKT_(ptr dead_on_unwind nonnull writable sret(%"class.std::vector.136") align 8 %27, ptr noundef nonnull align 8 dereferenceable(88) %26)
          to label %211 unwind label %220

211:                                              ; preds = %209
  invoke void @_ZN6Common5toHexB5cxx11ERKSt6vectorIhSaIhEE(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %0, ptr noundef nonnull align 8 dereferenceable(24) %27)
          to label %212 unwind label %222

212:                                              ; preds = %211
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %28) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %29) #8
  invoke void @_ZN5Tools6Base586encodeERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %29, ptr noundef nonnull align 8 dereferenceable(32) %0)
          to label %213 unwind label %224

213:                                              ; preds = %212
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_OS8_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %28, ptr noundef nonnull @.str.31, ptr noundef nonnull align 8 dereferenceable(32) %29)
          to label %214 unwind label %226

214:                                              ; preds = %213
  %215 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull align 8 dereferenceable(32) %28) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %28) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %29) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %29) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %28) #8
  call void @_ZNSt6vectorIhSaIhEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %27) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %27) #8
  call void @_ZN7DynexCN13reserve_proofD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %26) #8
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %26) #8
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %25) #8
  call void @_ZNSt6vectorIN7DynexCN19reserve_proof_entryESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %15) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %15) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %14) #8
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %12) #8
  call void @_ZNSt6vectorIN6Crypto8KeyImageESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %11) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %11) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %10) #8
  call void @_ZNSt6vectorIN7DynexCN28TransactionOutputInformationESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %7) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %7) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %6) #8
  call void @llvm.lifetime.end.p0(i64 128, ptr nonnull %5) #8
  ret void

216:                                              ; preds = %._crit_edge120
  %217 = landingpad { ptr, i32 }
          cleanup
  br label %232

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

220:                                              ; preds = %209
  %221 = landingpad { ptr, i32 }
          cleanup
  br label %230

222:                                              ; preds = %211
  %223 = landingpad { ptr, i32 }
          cleanup
  br label %229

224:                                              ; preds = %212
  %225 = landingpad { ptr, i32 }
          cleanup
  br label %228

226:                                              ; preds = %213
  %227 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %29) #8
  br label %228

228:                                              ; preds = %226, %224
  %.pn = phi { ptr, i32 } [ %227, %226 ], [ %225, %224 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %29) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %28) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %0) #8
  br label %229

229:                                              ; preds = %228, %222
  %.pn.pn = phi { ptr, i32 } [ %.pn, %228 ], [ %223, %222 ]
  call void @_ZNSt6vectorIhSaIhEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %27) #8
  br label %230

230:                                              ; preds = %229, %220
  %.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn, %229 ], [ %221, %220 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %27) #8
  br label %231

231:                                              ; preds = %230, %218
  %.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn, %230 ], [ %219, %218 ]
  call void @_ZN7DynexCN13reserve_proofD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %26) #8
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %26) #8
  br label %232

232:                                              ; preds = %231, %216
  %.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn.pn, %231 ], [ %217, %216 ]
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %25) #8
  br label %233

233:                                              ; preds = %232, %205
  %.pn81.pn.pn.pn = phi { ptr, i32 } [ %.pn81.pn.pn, %205 ], [ %.pn.pn.pn.pn.pn, %232 ]
  call void @_ZNSt6vectorIN7DynexCN19reserve_proof_entryESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %15) #8
  br label %234

234:                                              ; preds = %233, %139
  %.pn81.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn81.pn.pn.pn, %233 ], [ %140, %139 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %15) #8
  br label %235

235:                                              ; preds = %234, %137
  %.pn81.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn81.pn.pn.pn.pn, %234 ], [ %138, %137 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %14) #8
  br label %236

236:                                              ; preds = %235, %130
  %.pn88.pn = phi { ptr, i32 } [ %.pn88, %130 ], [ %.pn81.pn.pn.pn.pn.pn, %235 ]
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %12) #8
  call void @_ZNSt6vectorIN6Crypto8KeyImageESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %11) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %11) #8
  br label %237

237:                                              ; preds = %236, %107
  %.pn88.pn.pn = phi { ptr, i32 } [ %.pn88.pn, %236 ], [ %108, %107 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #8
  br label %238

238:                                              ; preds = %237, %105
  %.pn88.pn.pn.pn = phi { ptr, i32 } [ %.pn88.pn.pn, %237 ], [ %106, %105 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %10) #8
  br label %239

239:                                              ; preds = %103, %238, %87, %85
  %.pn94 = phi { ptr, i32 } [ %88, %87 ], [ %86, %85 ], [ %.pn88.pn.pn.pn, %238 ], [ %104, %103 ]
  call void @_ZNSt6vectorIN7DynexCN28TransactionOutputInformationESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %7) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %7) #8
  br label %240

240:                                              ; preds = %239, %61, %49, %38
  %.pn96 = phi { ptr, i32 } [ %39, %38 ], [ %50, %49 ], [ %62, %61 ], [ %.pn94, %239 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %6) #8
  call void @llvm.lifetime.end.p0(i64 128, ptr nonnull %5) #8
  resume { ptr, i32 } %.pn96

241:                                              ; preds = %158, %120
  unreachable
}

declare void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef) unnamed_addr #3

; Function Attrs: nounwind
declare void @_ZNSt13runtime_errorD1Ev(ptr noundef nonnull align 8 dereferenceable(16)) unnamed_addr #7

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZSt4sortIN9__gnu_cxx17__normal_iteratorIPN7DynexCN28TransactionOutputInformationESt6vectorIS3_SaIS3_EEEEPFbRKS3_SA_EEvT_SD_T0_(ptr, ptr, ptr noundef) local_unnamed_addr #4

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

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

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

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

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

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

declare noundef zeroext i1 @_ZN7DynexCN25generate_key_image_helperERKNS_11AccountKeysERKN6Crypto9PublicKeyEmRNS_7KeyPairERNS3_8KeyImageE(ptr noundef nonnull align 1 dereferenceable(128), ptr noundef nonnull align 1 dereferenceable(32), i64 noundef, ptr noundef nonnull align 1 dereferenceable(64), ptr noundef nonnull align 1 dereferenceable(32)) local_unnamed_addr #3

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7DynexCN13toBinaryArrayINS_13reserve_proofEEESt6vectorIhSaIhEERKT_(ptr dead_on_unwind noalias writable sret(%"class.std::vector.136") align 8, ptr noundef nonnull align 8 dereferenceable(88)) local_unnamed_addr #6

declare void @_ZN6Common5toHexB5cxx11ERKSt6vectorIhSaIhEE(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #3

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

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

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

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

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

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

!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 = !{i64 0, i64 32, !6, i64 32, i64 32, !6, i64 64, i64 32, !6, i64 96, i64 32, !6}
!6 = !{!7, !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"vtable pointer", !8, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"long", !7, i64 0}
!13 = !{!14, !28, i64 928}
!14 = !{!"_ZTSN7DynexCN12WalletLegacyE", !15, i64 0, !16, i64 8, !17, i64 16, !18, i64 24, !19, i64 32, !21, i64 72, !26, i64 208, !28, i64 240, !28, i64 248, !28, i64 256, !29, i64 264, !30, i64 272, !30, i64 280, !30, i64 288, !32, i64 296, !70, i64 736, !28, i64 928, !80, i64 936, !96, i64 1160, !102, i64 1168, !104, i64 1264, !109, i64 1328}
!15 = !{!"_ZTSN7DynexCN13IWalletLegacyE"}
!16 = !{!"_ZTSN7DynexCN31IBlockchainSynchronizerObserverE"}
!17 = !{!"_ZTSN7DynexCN18ITransfersObserverE"}
!18 = !{!"_ZTSN7DynexCN12WalletLegacy11WalletStateE", !7, i64 0}
!19 = !{!"_ZTSSt5mutex", !20, i64 0}
!20 = !{!"_ZTSSt12__mutex_base", !7, i64 0}
!21 = !{!"_ZTSN7DynexCN11AccountBaseE", !22, i64 0, !12, i64 128}
!22 = !{!"_ZTSN7DynexCN11AccountKeysE", !23, i64 0, !25, i64 64, !25, i64 96}
!23 = !{!"_ZTSN7DynexCN20AccountPublicAddressE", !24, i64 0, !24, i64 32}
!24 = !{!"_ZTSN6Crypto9PublicKeyE", !7, i64 0}
!25 = !{!"_ZTSN6Crypto9SecretKeyE", !7, i64 0}
!26 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !27, i64 0, !12, i64 8, !7, i64 16}
!27 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !28, i64 0}
!28 = !{!"any pointer", !7, i64 0}
!29 = !{!"bool", !7, i64 0}
!30 = !{!"_ZTSSt6atomicImE", !31, i64 0}
!31 = !{!"_ZTSSt13__atomic_baseImE", !12, i64 0}
!32 = !{!"_ZTSN7DynexCN22BlockchainSynchronizerE", !33, i64 0, !42, i64 80, !43, i64 88, !44, i64 128, !28, i64 176, !52, i64 184, !52, i64 216, !53, i64 248, !53, i64 252, !54, i64 256, !60, i64 264, !65, i64 288, !19, i64 312, !19, i64 352, !68, i64 392}
!33 = !{!"_ZTSN7DynexCN15IObservableImplINS_31IBlockchainSynchronizerObserverENS_23IBlockchainSynchronizerEEE", !34, i64 0, !37, i64 16}
!34 = !{!"_ZTSN7DynexCN23IBlockchainSynchronizerE", !35, i64 0, !36, i64 8}
!35 = !{!"_ZTSN7DynexCN11IObservableINS_31IBlockchainSynchronizerObserverEEE"}
!36 = !{!"_ZTSN7DynexCN19IStreamSerializableE"}
!37 = !{!"_ZTSN5Tools15ObserverManagerIN7DynexCN31IBlockchainSynchronizerObserverEEE", !38, i64 0, !19, i64 24}
!38 = !{!"_ZTSSt6vectorIPN7DynexCN31IBlockchainSynchronizerObserverESaIS2_EE", !39, i64 0}
!39 = !{!"_ZTSSt12_Vector_baseIPN7DynexCN31IBlockchainSynchronizerObserverESaIS2_EE", !40, i64 0}
!40 = !{!"_ZTSNSt12_Vector_baseIPN7DynexCN31IBlockchainSynchronizerObserverESaIS2_EE12_Vector_implE", !41, i64 0}
!41 = !{!"_ZTSNSt12_Vector_baseIPN7DynexCN31IBlockchainSynchronizerObserverESaIS2_EE17_Vector_impl_dataE", !28, i64 0, !28, i64 8, !28, i64 16}
!42 = !{!"_ZTSN7DynexCN13INodeObserverE"}
!43 = !{!"_ZTSN7Logging9LoggerRefE", !28, i64 0, !26, i64 8}
!44 = !{!"_ZTSSt3mapIPN7DynexCN19IBlockchainConsumerESt10shared_ptrINS0_20SynchronizationStateEESt4lessIS2_ESaISt4pairIKS2_S5_EEE", !45, i64 0}
!45 = !{!"_ZTSSt8_Rb_treeIPN7DynexCN19IBlockchainConsumerESt4pairIKS2_St10shared_ptrINS0_20SynchronizationStateEEESt10_Select1stIS8_ESt4lessIS2_ESaIS8_EE", !46, i64 0}
!46 = !{!"_ZTSNSt8_Rb_treeIPN7DynexCN19IBlockchainConsumerESt4pairIKS2_St10shared_ptrINS0_20SynchronizationStateEEESt10_Select1stIS8_ESt4lessIS2_ESaIS8_EE13_Rb_tree_implISC_Lb1EEE", !47, i64 0, !49, i64 8}
!47 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessIPN7DynexCN19IBlockchainConsumerEEE", !48, i64 0}
!48 = !{!"_ZTSSt4lessIPN7DynexCN19IBlockchainConsumerEE"}
!49 = !{!"_ZTSSt15_Rb_tree_header", !50, i64 0, !12, i64 32}
!50 = !{!"_ZTSSt18_Rb_tree_node_base", !51, i64 0, !28, i64 8, !28, i64 16, !28, i64 24}
!51 = !{!"_ZTSSt14_Rb_tree_color", !7, i64 0}
!52 = !{!"_ZTSN6Crypto4HashE", !7, i64 0}
!53 = !{!"_ZTSN7DynexCN22BlockchainSynchronizer5StateE", !7, i64 0}
!54 = !{!"_ZTSSt10unique_ptrISt6threadSt14default_deleteIS0_EE", !55, i64 0}
!55 = !{!"_ZTSSt15__uniq_ptr_dataISt6threadSt14default_deleteIS0_ELb1ELb1EE", !56, i64 0}
!56 = !{!"_ZTSSt15__uniq_ptr_implISt6threadSt14default_deleteIS0_EE", !57, i64 0}
!57 = !{!"_ZTSSt5tupleIJPSt6threadSt14default_deleteIS0_EEE", !58, i64 0}
!58 = !{!"_ZTSSt11_Tuple_implILm0EJPSt6threadSt14default_deleteIS0_EEE", !59, i64 0}
!59 = !{!"_ZTSSt10_Head_baseILm0EPSt6threadLb0EE", !28, i64 0}
!60 = !{!"_ZTSNSt7__cxx114listISt4pairIPKN7DynexCN18ITransactionReaderESt7promiseISt10error_codeEESaIS9_EEE", !61, i64 0}
!61 = !{!"_ZTSNSt7__cxx1110_List_baseISt4pairIPKN7DynexCN18ITransactionReaderESt7promiseISt10error_codeEESaIS9_EEE", !62, i64 0}
!62 = !{!"_ZTSNSt7__cxx1110_List_baseISt4pairIPKN7DynexCN18ITransactionReaderESt7promiseISt10error_codeEESaIS9_EE10_List_implE", !63, i64 0}
!63 = !{!"_ZTSNSt8__detail17_List_node_headerE", !64, i64 0, !12, i64 16}
!64 = !{!"_ZTSNSt8__detail15_List_node_baseE", !28, i64 0, !28, i64 8}
!65 = !{!"_ZTSNSt7__cxx114listISt4pairIPKN6Crypto4HashESt7promiseIvEESaIS8_EEE", !66, i64 0}
!66 = !{!"_ZTSNSt7__cxx1110_List_baseISt4pairIPKN6Crypto4HashESt7promiseIvEESaIS8_EEE", !67, i64 0}
!67 = !{!"_ZTSNSt7__cxx1110_List_baseISt4pairIPKN6Crypto4HashESt7promiseIvEESaIS8_EE10_List_implE", !63, i64 0}
!68 = !{!"_ZTSSt18condition_variable", !69, i64 0}
!69 = !{!"_ZTSSt9__condvar", !7, i64 0}
!70 = !{!"_ZTSN7DynexCN20TransfersSyncronizerE", !71, i64 0, !72, i64 8, !43, i64 16, !73, i64 56, !78, i64 112, !28, i64 168, !28, i64 176, !28, i64 184}
!71 = !{!"_ZTSN7DynexCN22ITransfersSynchronizerE", !36, i64 0}
!72 = !{!"_ZTSN7DynexCN27IBlockchainConsumerObserverE"}
!73 = !{!"_ZTSSt13unordered_mapIN6Crypto9PublicKeyESt10unique_ptrIN7DynexCN17TransfersConsumerESt14default_deleteIS4_EESt4hashIS1_ESt8equal_toIS1_ESaISt4pairIKS1_S7_EEE", !74, i64 0}
!74 = !{!"_ZTSSt10_HashtableIN6Crypto9PublicKeyESt4pairIKS1_St10unique_ptrIN7DynexCN17TransfersConsumerESt14default_deleteIS6_EEESaISA_ENSt8__detail10_Select1stESt8equal_toIS1_ESt4hashIS1_ENSC_18_Mod_range_hashingENSC_20_Default_ranged_hashENSC_20_Prime_rehash_policyENSC_17_Hashtable_traitsILb1ELb0ELb1EEEE", !28, i64 0, !12, i64 8, !75, i64 16, !12, i64 24, !76, i64 32, !28, i64 48}
!75 = !{!"_ZTSNSt8__detail15_Hash_node_baseE", !28, i64 0}
!76 = !{!"_ZTSNSt8__detail20_Prime_rehash_policyE", !77, i64 0, !12, i64 8}
!77 = !{!"float", !7, i64 0}
!78 = !{!"_ZTSSt13unordered_mapIN6Crypto9PublicKeyESt10unique_ptrIN5Tools15ObserverManagerIN7DynexCN30ITransfersSynchronizerObserverEEESt14default_deleteIS7_EESt4hashIS1_ESt8equal_toIS1_ESaISt4pairIKS1_SA_EEE", !79, i64 0}
!79 = !{!"_ZTSSt10_HashtableIN6Crypto9PublicKeyESt4pairIKS1_St10unique_ptrIN5Tools15ObserverManagerIN7DynexCN30ITransfersSynchronizerObserverEEESt14default_deleteIS9_EEESaISD_ENSt8__detail10_Select1stESt8equal_toIS1_ESt4hashIS1_ENSF_18_Mod_range_hashingENSF_20_Default_ranged_hashENSF_20_Prime_rehash_policyENSF_17_Hashtable_traitsILb1ELb0ELb1EEEE", !28, i64 0, !12, i64 8, !75, i64 16, !12, i64 24, !76, i64 32, !28, i64 48}
!80 = !{!"_ZTSN7DynexCN27WalletUserTransactionsCacheE", !81, i64 0, !85, i64 24, !89, i64 48, !94, i64 168}
!81 = !{!"_ZTSSt6vectorIN7DynexCN23WalletLegacyTransactionESaIS1_EE", !82, i64 0}
!82 = !{!"_ZTSSt12_Vector_baseIN7DynexCN23WalletLegacyTransactionESaIS1_EE", !83, i64 0}
!83 = !{!"_ZTSNSt12_Vector_baseIN7DynexCN23WalletLegacyTransactionESaIS1_EE12_Vector_implE", !84, i64 0}
!84 = !{!"_ZTSNSt12_Vector_baseIN7DynexCN23WalletLegacyTransactionESaIS1_EE17_Vector_impl_dataE", !28, i64 0, !28, i64 8, !28, i64 16}
!85 = !{!"_ZTSSt6vectorIN7DynexCN20WalletLegacyTransferESaIS1_EE", !86, i64 0}
!86 = !{!"_ZTSSt12_Vector_baseIN7DynexCN20WalletLegacyTransferESaIS1_EE", !87, i64 0}
!87 = !{!"_ZTSNSt12_Vector_baseIN7DynexCN20WalletLegacyTransferESaIS1_EE12_Vector_implE", !88, i64 0}
!88 = !{!"_ZTSNSt12_Vector_baseIN7DynexCN20WalletLegacyTransferESaIS1_EE17_Vector_impl_dataE", !28, i64 0, !28, i64 8, !28, i64 16}
!89 = !{!"_ZTSN7DynexCN29WalletUnconfirmedTransactionsE", !90, i64 0, !92, i64 56, !12, i64 112}
!90 = !{!"_ZTSSt13unordered_mapIN6Crypto4HashEN7DynexCN26UnconfirmedTransferDetailsEN5boost4hashIS1_EESt8equal_toIS1_ESaISt4pairIKS1_S3_EEE", !91, i64 0}
!91 = !{!"_ZTSSt10_HashtableIN6Crypto4HashESt4pairIKS1_N7DynexCN26UnconfirmedTransferDetailsEESaIS6_ENSt8__detail10_Select1stESt8equal_toIS1_EN5boost4hashIS1_EENS8_18_Mod_range_hashingENS8_20_Default_ranged_hashENS8_20_Prime_rehash_policyENS8_17_Hashtable_traitsILb1ELb0ELb1EEEE", !28, i64 0, !12, i64 8, !75, i64 16, !12, i64 24, !76, i64 32, !28, i64 48}
!92 = !{!"_ZTSSt13unordered_setISt4pairIN6Crypto9PublicKeyEmESt4hashIS3_ESt8equal_toIS3_ESaIS3_EE", !93, i64 0}
!93 = !{!"_ZTSSt10_HashtableISt4pairIN6Crypto9PublicKeyEmES3_SaIS3_ENSt8__detail9_IdentityESt8equal_toIS3_ESt4hashIS3_ENS5_18_Mod_range_hashingENS5_20_Default_ranged_hashENS5_20_Prime_rehash_policyENS5_17_Hashtable_traitsILb1ELb1ELb1EEEE", !28, i64 0, !12, i64 8, !75, i64 16, !12, i64 24, !76, i64 32, !28, i64 48}
!94 = !{!"_ZTSSt13unordered_mapIN6Crypto4HashESt6vectorImSaImEEN5boost4hashIS1_EESt8equal_toIS1_ESaISt4pairIKS1_S4_EEE", !95, i64 0}
!95 = !{!"_ZTSSt10_HashtableIN6Crypto4HashESt4pairIKS1_St6vectorImSaImEEESaIS7_ENSt8__detail10_Select1stESt8equal_toIS1_EN5boost4hashIS1_EENS9_18_Mod_range_hashingENS9_20_Default_ranged_hashENS9_20_Prime_rehash_policyENS9_17_Hashtable_traitsILb1ELb0ELb1EEEE", !28, i64 0, !12, i64 8, !75, i64 16, !12, i64 24, !76, i64 32, !28, i64 48}
!96 = !{!"_ZTSSt10unique_ptrIN7DynexCN23WalletTransactionSenderESt14default_deleteIS1_EE", !97, i64 0}
!97 = !{!"_ZTSSt15__uniq_ptr_dataIN7DynexCN23WalletTransactionSenderESt14default_deleteIS1_ELb1ELb1EE", !98, i64 0}
!98 = !{!"_ZTSSt15__uniq_ptr_implIN7DynexCN23WalletTransactionSenderESt14default_deleteIS1_EE", !99, i64 0}
!99 = !{!"_ZTSSt5tupleIJPN7DynexCN23WalletTransactionSenderESt14default_deleteIS1_EEE", !100, i64 0}
!100 = !{!"_ZTSSt11_Tuple_implILm0EJPN7DynexCN23WalletTransactionSenderESt14default_deleteIS1_EEE", !101, i64 0}
!101 = !{!"_ZTSSt10_Head_baseILm0EPN7DynexCN23WalletTransactionSenderELb0EE", !28, i64 0}
!102 = !{!"_ZTSN7DynexCN25WalletAsyncContextCounterE", !103, i64 0, !68, i64 8, !19, i64 56}
!103 = !{!"int", !7, i64 0}
!104 = !{!"_ZTSN5Tools15ObserverManagerIN7DynexCN21IWalletLegacyObserverEEE", !105, i64 0, !19, i64 24}
!105 = !{!"_ZTSSt6vectorIPN7DynexCN21IWalletLegacyObserverESaIS2_EE", !106, i64 0}
!106 = !{!"_ZTSSt12_Vector_baseIPN7DynexCN21IWalletLegacyObserverESaIS2_EE", !107, i64 0}
!107 = !{!"_ZTSNSt12_Vector_baseIPN7DynexCN21IWalletLegacyObserverESaIS2_EE12_Vector_implE", !108, i64 0}
!108 = !{!"_ZTSNSt12_Vector_baseIPN7DynexCN21IWalletLegacyObserverESaIS2_EE17_Vector_impl_dataE", !28, i64 0, !28, i64 8, !28, i64 16}
!109 = !{!"_ZTSSt10unique_ptrIN7DynexCN11SyncStarterESt14default_deleteIS1_EE", !110, i64 0}
!110 = !{!"_ZTSSt15__uniq_ptr_dataIN7DynexCN11SyncStarterESt14default_deleteIS1_ELb1ELb1EE", !111, i64 0}
!111 = !{!"_ZTSSt15__uniq_ptr_implIN7DynexCN11SyncStarterESt14default_deleteIS1_EE", !112, i64 0}
!112 = !{!"_ZTSSt5tupleIJPN7DynexCN11SyncStarterESt14default_deleteIS1_EEE", !113, i64 0}
!113 = !{!"_ZTSSt11_Tuple_implILm0EJPN7DynexCN11SyncStarterESt14default_deleteIS1_EEE", !114, i64 0}
!114 = !{!"_ZTSSt10_Head_baseILm0EPN7DynexCN11SyncStarterELb0EE", !28, i64 0}
!115 = !{!116, !12, i64 8}
!116 = !{!"_ZTSN7DynexCN28TransactionOutputInformationE", !117, i64 0, !12, i64 8, !103, i64 16, !103, i64 20, !52, i64 24, !24, i64 56, !7, i64 88}
!117 = !{!"_ZTSN7DynexCN16TransactionTypes10OutputTypeE", !7, i64 0}
!118 = distinct !{!118, !119}
!119 = !{!"llvm.loop.mustprogress"}
!120 = distinct !{!120, !119}
!121 = !{!116, !103, i64 20}
!122 = distinct !{!122, !119}
!123 = !{i64 0, i64 32, !6}
!124 = !{!125, !12, i64 32}
!125 = !{!"_ZTSN7DynexCN19reserve_proof_entryE", !52, i64 0, !12, i64 32, !24, i64 40, !126, i64 72, !127, i64 104, !127, i64 168}
!126 = !{!"_ZTSN6Crypto8KeyImageE", !7, i64 0}
!127 = !{!"_ZTSN6Crypto9SignatureE", !7, i64 0}
!128 = !{!28, !28, i64 0}
!129 = distinct !{!129, !119}


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