; LLVM IR from dynexcoin/Dynex :: src/PaymentGate (WalletService)

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

%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"class.Logging::LoggerMessage" = type <{ %"class.std::basic_ostream.base", %"class.std::basic_streambuf", ptr, %"class.std::__cxx11::basic_string", i32, [4 x i8], %"class.std::__cxx11::basic_string", %"class.boost::posix_time::ptime", i8, [7 x i8], %"class.std::basic_ios" }>
%"class.std::basic_ostream.base" = type { ptr }
%"class.std::basic_streambuf" = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, %"class.std::locale" }
%"class.std::locale" = type { ptr }
%"class.boost::posix_time::ptime" = type { %"class.boost::date_time::base_time" }
%"class.boost::date_time::base_time" = type { %"struct.boost::date_time::counted_time_rep" }
%"struct.boost::date_time::counted_time_rep" = type { %"class.boost::date_time::int_adapter" }
%"class.boost::date_time::int_adapter" = type { i64 }
%"class.std::basic_ios" = type { %"class.std::ios_base", ptr, i8, i8, ptr, ptr, ptr, ptr }
%"class.std::ios_base" = type { ptr, i64, i64, i32, i32, i32, ptr, %"struct.std::ios_base::_Words", [8 x %"struct.std::ios_base::_Words"], i32, ptr, %"class.std::locale" }
%"struct.std::ios_base::_Words" = type { ptr, i64 }
%"class.std::error_code" = type { i32, ptr }
%"class.System::EventLock" = type { ptr }
%"class.Logging::LoggerRef" = type { ptr, %"class.std::__cxx11::basic_string" }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::initializer_list.301" = type { ptr, i64 }
%"class.std::allocator.37" = type { i8 }
%"struct.DynexCN::TransactionParameters" = type { %"class.std::vector", %"class.std::vector.302", i64, i64, %"class.std::__cxx11::basic_string", i64, %"struct.DynexCN::DonationSettings", %"class.std::__cxx11::basic_string" }
%"class.std::vector.302" = type { %"struct.std::_Vector_base.303" }
%"struct.std::_Vector_base.303" = type { %"struct.std::_Vector_base<DynexCN::WalletOrder, std::allocator<DynexCN::WalletOrder>>::_Vector_impl" }
%"struct.std::_Vector_base<DynexCN::WalletOrder, std::allocator<DynexCN::WalletOrder>>::_Vector_impl" = type { %"struct.std::_Vector_base<DynexCN::WalletOrder, std::allocator<DynexCN::WalletOrder>>::_Vector_impl_data" }
%"struct.std::_Vector_base<DynexCN::WalletOrder, std::allocator<DynexCN::WalletOrder>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.DynexCN::DonationSettings" = type { %"class.std::__cxx11::basic_string", i64 }
%"struct.Crypto::SecretKey" = type { [32 x i8] }
%"struct.DynexCN::WalletTransaction" = type <{ i8, [7 x i8], i64, i32, %"struct.Crypto::Hash", %"class.boost::optional", [3 x i8], i64, i64, i64, i64, %"class.std::__cxx11::basic_string", i8, [7 x i8] }>
%"struct.Crypto::Hash" = type { [32 x i8] }
%"class.boost::optional" = type { %"class.boost::optional_detail::optional_base" }
%"class.boost::optional_detail::optional_base" = type { i8, %"class.boost::optional_detail::aligned_storage" }
%"class.boost::optional_detail::aligned_storage" = type { %"union.boost::optional_detail::aligned_storage<Crypto::SecretKey>::dummy_u" }
%"union.boost::optional_detail::aligned_storage<Crypto::SecretKey>::dummy_u" = type { [32 x i8] }
%"class.PaymentService::WalletService" = type { ptr, ptr, ptr, ptr, ptr, ptr, i8, %"class.Logging::LoggerRef", ptr, %"class.System::Event", %"class.System::ContextGroup", %"class.std::map.237" }
%"class.System::Event" = type { ptr, i8, ptr, ptr }
%"class.System::ContextGroup" = type { ptr, %"struct.System::NativeContextGroup" }
%"struct.System::NativeContextGroup" = type { ptr, ptr, ptr, ptr }
%"class.std::map.237" = type { %"class.std::_Rb_tree.238" }
%"class.std::_Rb_tree.238" = type { %"struct.std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, unsigned long>, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, unsigned long>>, std::less<std::__cxx11::basic_string<char>>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, unsigned long>, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, unsigned long>>, std::less<std::__cxx11::basic_string<char>>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"struct.std::_Rb_tree_header" = type { %"struct.std::_Rb_tree_node_base", i64 }
%"struct.std::_Rb_tree_node_base" = type { i32, ptr, ptr, ptr }
%"struct.PaymentService::SendTransaction::Request" = type { %"class.std::vector", %"class.std::vector.296", %"class.std::__cxx11::basic_string", i64, i32, %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", i64 }
%"class.std::vector.296" = type { %"struct.std::_Vector_base.297" }
%"struct.std::_Vector_base.297" = type { %"struct.std::_Vector_base<PaymentService::WalletRpcOrder, std::allocator<PaymentService::WalletRpcOrder>>::_Vector_impl" }
%"struct.std::_Vector_base<PaymentService::WalletRpcOrder, std::allocator<PaymentService::WalletRpcOrder>>::_Vector_impl" = type { %"struct.std::_Vector_base<PaymentService::WalletRpcOrder, std::allocator<PaymentService::WalletRpcOrder>>::_Vector_impl_data" }
%"struct.std::_Vector_base<PaymentService::WalletRpcOrder, std::allocator<PaymentService::WalletRpcOrder>>::_Vector_impl_data" = type { ptr, ptr, ptr }

@_ZTISt12system_error = external constant ptr
@_ZTISt9exception = external constant ptr
@_ZN7Logging13BRIGHT_YELLOWB5cxx11E = external global %"class.std::__cxx11::basic_string", align 8
@_ZN7Logging7DEFAULTB5cxx11E = external global %"class.std::__cxx11::basic_string", align 8
@.str.97 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.110 = external hidden unnamed_addr constant [49 x i8], align 1
@.str.111 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.112 = external hidden unnamed_addr constant [34 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: noinline noreturn nounwind uwtable
declare hidden void @__clang_call_terminate(ptr noundef) #2

declare ptr @__cxa_begin_catch(ptr)

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

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

declare void @__cxa_end_catch()

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #3 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 #4 align 2

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

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

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

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

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

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

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

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

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

declare void @_ZN6System9EventLockC1ERNS_5EventE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #5

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local { i32, ptr } @_Z15make_error_codeN7DynexCN5error16WalletErrorCodesE(i32 noundef) #8

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

; Function Attrs: nounwind memory(none)
declare i32 @llvm.eh.typeid.for.p0(ptr) #9

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN14PaymentService12_GLOBAL__N_117validateAddressesERKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS7_EERKN7DynexCN8CurrencyEN7Logging9LoggerRefE(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(984), ptr noundef) #4

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

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

; Function Attrs: mustprogress uwtable
define dso_local { i32, ptr } @_ZN14PaymentService13WalletService15sendTransactionERKNS_15SendTransaction7RequestERNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESB_(ptr noundef nonnull align 8 dereferenceable(224) %0, ptr noundef nonnull align 8 dereferenceable(168) %1, ptr noundef nonnull align 8 dereferenceable(32) %2, ptr noundef nonnull align 8 dereferenceable(32) %3) #4 align 2 personality ptr @__gxx_personality_v0 {
  %5 = alloca %"class.std::error_code", align 8
  %6 = alloca ptr, align 8
  %7 = alloca ptr, align 8
  %8 = alloca ptr, align 8
  %9 = alloca ptr, align 8
  %10 = alloca %"class.System::EventLock", align 8
  %11 = alloca ptr, align 8
  %12 = alloca i32, align 4
  %13 = alloca %"class.Logging::LoggerRef", align 8
  %14 = alloca %"class.std::vector", align 8
  %15 = alloca %"class.Logging::LoggerRef", align 8
  %16 = alloca %"class.std::vector", align 8
  %17 = alloca %"class.std::initializer_list.301", align 8
  %18 = alloca [1 x %"class.std::__cxx11::basic_string"], align 8
  %19 = alloca ptr, align 8
  %20 = alloca %"class.std::allocator.37", align 1
  %21 = alloca %"class.Logging::LoggerRef", align 8
  %22 = alloca i16, align 2
  %23 = alloca %"class.Logging::LoggerRef", align 8
  %24 = alloca %"class.Logging::LoggerMessage", align 8
  %25 = alloca i32, align 4
  %26 = alloca %"struct.DynexCN::TransactionParameters", align 8
  %27 = alloca %"class.std::__cxx11::basic_string", align 8
  %28 = alloca %"class.std::vector.302", align 8
  %29 = alloca %"struct.Crypto::SecretKey", align 1
  %30 = alloca i64, align 8
  %31 = alloca %"class.std::__cxx11::basic_string", align 8
  %32 = alloca %"struct.DynexCN::WalletTransaction", align 8
  %33 = alloca %"class.std::__cxx11::basic_string", align 8
  %34 = alloca %"class.Logging::LoggerMessage", align 8
  %35 = alloca ptr, align 8
  %36 = alloca %"class.Logging::LoggerMessage", align 8
  %37 = alloca ptr, align 8
  %38 = alloca ptr, align 8
  %39 = alloca %"class.Logging::LoggerMessage", align 8
  %40 = alloca ptr, align 8
  store ptr %0, ptr %6, align 8, !tbaa !5
  store ptr %1, ptr %7, align 8, !tbaa !5
  store ptr %2, ptr %8, align 8, !tbaa !5
  store ptr %3, ptr %9, align 8, !tbaa !5
  %41 = load ptr, ptr %6, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %10) #10
  %42 = getelementptr inbounds %"class.PaymentService::WalletService", ptr %41, i32 0, i32 9
  invoke void @_ZN6System9EventLockC1ERNS_5EventE(ptr noundef nonnull align 8 dereferenceable(8) %10, ptr noundef nonnull align 8 dereferenceable(32) %42)
          to label %43 unwind label %85

43:                                               ; preds = %4
  %44 = load ptr, ptr %7, align 8, !tbaa !5
  %45 = getelementptr inbounds %"struct.PaymentService::SendTransaction::Request", ptr %44, i32 0, i32 0
  %46 = getelementptr inbounds %"class.PaymentService::WalletService", ptr %41, i32 0, i32 1
  %47 = load ptr, ptr %46, align 8, !tbaa !9
  %48 = getelementptr inbounds %"class.PaymentService::WalletService", ptr %41, i32 0, i32 7
  invoke void @_ZN7Logging9LoggerRefC2ERKS0_(ptr noundef nonnull align 8 dereferenceable(40) %13, ptr noundef nonnull align 8 dereferenceable(40) %48)
          to label %49 unwind label %89

49:                                               ; preds = %43
  invoke void @_ZN14PaymentService12_GLOBAL__N_117validateAddressesERKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS7_EERKN7DynexCN8CurrencyEN7Logging9LoggerRefE(ptr noundef nonnull align 8 dereferenceable(24) %45, ptr noundef nonnull align 8 dereferenceable(984) %47, ptr noundef %13)
          to label %50 unwind label %93

50:                                               ; preds = %49
  call void @_ZN7Logging9LoggerRefD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %13) #10
  call void @llvm.lifetime.start.p0(i64 24, ptr %14) #10
  %51 = load ptr, ptr %7, align 8, !tbaa !5
  %52 = getelementptr inbounds %"struct.PaymentService::SendTransaction::Request", ptr %51, i32 0, i32 1
  invoke void @_ZN14PaymentService12_GLOBAL__N_127collectDestinationAddressesB5cxx11ERKSt6vectorINS_14WalletRpcOrderESaIS2_EE(ptr dead_on_unwind writable sret(%"class.std::vector") align 8 %14, ptr noundef nonnull align 8 dereferenceable(24) %52)
          to label %53 unwind label %97

53:                                               ; preds = %50
  %54 = getelementptr inbounds %"class.PaymentService::WalletService", ptr %41, i32 0, i32 1
  %55 = load ptr, ptr %54, align 8, !tbaa !9
  %56 = getelementptr inbounds %"class.PaymentService::WalletService", ptr %41, i32 0, i32 7
  invoke void @_ZN7Logging9LoggerRefC2ERKS0_(ptr noundef nonnull align 8 dereferenceable(40) %15, ptr noundef nonnull align 8 dereferenceable(40) %56)
          to label %57 unwind label %101

57:                                               ; preds = %53
  invoke void @_ZN14PaymentService12_GLOBAL__N_117validateAddressesERKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS7_EERKN7DynexCN8CurrencyEN7Logging9LoggerRefE(ptr noundef nonnull align 8 dereferenceable(24) %14, ptr noundef nonnull align 8 dereferenceable(984) %55, ptr noundef %15)
          to label %58 unwind label %105

58:                                               ; preds = %57
  call void @_ZN7Logging9LoggerRefD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %15) #10
  call void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %14) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %14) #10
  %59 = load ptr, ptr %7, align 8, !tbaa !5
  %60 = getelementptr inbounds %"struct.PaymentService::SendTransaction::Request", ptr %59, i32 0, i32 2
  %61 = call noundef zeroext i1 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(32) %60) #10
  br i1 %61, label %144, label %62

62:                                               ; preds = %58
  call void @llvm.lifetime.start.p0(i64 24, ptr %16) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr %18) #10
  store ptr %18, ptr %19, align 8
  %63 = load ptr, ptr %7, align 8, !tbaa !5
  %64 = getelementptr inbounds %"struct.PaymentService::SendTransaction::Request", ptr %63, i32 0, i32 2
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %18, ptr noundef nonnull align 8 dereferenceable(32) %64)
          to label %65 unwind label %111

65:                                               ; preds = %62
  %66 = getelementptr inbounds %"class.std::initializer_list.301", ptr %17, i32 0, i32 0
  store ptr %18, ptr %66, align 8, !tbaa !27
  %67 = getelementptr inbounds %"class.std::initializer_list.301", ptr %17, i32 0, i32 1
  store i64 1, ptr %67, align 8, !tbaa !29
  call void @llvm.lifetime.start.p0(i64 1, ptr %20) #10
  call void @_ZNSaINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %20) #10
  %68 = getelementptr inbounds { ptr, i64 }, ptr %17, i32 0, i32 0
  %69 = load ptr, ptr %68, align 8
  %70 = getelementptr inbounds { ptr, i64 }, ptr %17, i32 0, i32 1
  %71 = load i64, ptr %70, align 8
  invoke void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EEC2ESt16initializer_listIS5_ERKS6_(ptr noundef nonnull align 8 dereferenceable(24) %16, ptr %69, i64 %71, ptr noundef nonnull align 1 dereferenceable(1) %20)
          to label %72 unwind label %122

72:                                               ; preds = %65
  %73 = getelementptr inbounds %"class.PaymentService::WalletService", ptr %41, i32 0, i32 1
  %74 = load ptr, ptr %73, align 8, !tbaa !9
  %75 = getelementptr inbounds %"class.PaymentService::WalletService", ptr %41, i32 0, i32 7
  invoke void @_ZN7Logging9LoggerRefC2ERKS0_(ptr noundef nonnull align 8 dereferenceable(40) %21, ptr noundef nonnull align 8 dereferenceable(40) %75)
          to label %76 unwind label %126

76:                                               ; preds = %72
  invoke void @_ZN14PaymentService12_GLOBAL__N_117validateAddressesERKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS7_EERKN7DynexCN8CurrencyEN7Logging9LoggerRefE(ptr noundef nonnull align 8 dereferenceable(24) %16, ptr noundef nonnull align 8 dereferenceable(984) %74, ptr noundef %21)
          to label %77 unwind label %130

77:                                               ; preds = %76
  call void @_ZN7Logging9LoggerRefD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %21) #10
  call void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %16) #10
  call void @_ZNSt15__new_allocatorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %20) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %20) #10
  %78 = getelementptr inbounds [1 x %"class.std::__cxx11::basic_string"], ptr %18, i32 0, i32 0
  %79 = getelementptr inbounds %"class.std::__cxx11::basic_string", ptr %78, i64 1
  br label %80

80:                                               ; preds = %80, %77
  %81 = phi ptr [ %79, %77 ], [ %82, %80 ]
  %82 = getelementptr inbounds %"class.std::__cxx11::basic_string", ptr %81, i64 -1
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %82) #10
  %83 = icmp eq ptr %82, %78
  br i1 %83, label %84, label %80

84:                                               ; preds = %80
  call void @llvm.lifetime.end.p0(i64 32, ptr %18) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %16) #10
  br label %144

85:                                               ; preds = %4
  %86 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt12system_error
          catch ptr @_ZTISt9exception
  %87 = extractvalue { ptr, i32 } %86, 0
  store ptr %87, ptr %11, align 8
  %88 = extractvalue { ptr, i32 } %86, 1
  store i32 %88, ptr %12, align 4
  br label %305

89:                                               ; preds = %162, %43
  %90 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt12system_error
          catch ptr @_ZTISt9exception
  %91 = extractvalue { ptr, i32 } %90, 0
  store ptr %91, ptr %11, align 8
  %92 = extractvalue { ptr, i32 } %90, 1
  store i32 %92, ptr %12, align 4
  br label %304

93:                                               ; preds = %49
  %94 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt12system_error
          catch ptr @_ZTISt9exception
  %95 = extractvalue { ptr, i32 } %94, 0
  store ptr %95, ptr %11, align 8
  %96 = extractvalue { ptr, i32 } %94, 1
  store i32 %96, ptr %12, align 4
  call void @_ZN7Logging9LoggerRefD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %13) #10
  br label %304

97:                                               ; preds = %50
  %98 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt12system_error
          catch ptr @_ZTISt9exception
  %99 = extractvalue { ptr, i32 } %98, 0
  store ptr %99, ptr %11, align 8
  %100 = extractvalue { ptr, i32 } %98, 1
  store i32 %100, ptr %12, align 4
  br label %110

101:                                              ; preds = %53
  %102 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt12system_error
          catch ptr @_ZTISt9exception
  %103 = extractvalue { ptr, i32 } %102, 0
  store ptr %103, ptr %11, align 8
  %104 = extractvalue { ptr, i32 } %102, 1
  store i32 %104, ptr %12, align 4
  br label %109

105:                                              ; preds = %57
  %106 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt12system_error
          catch ptr @_ZTISt9exception
  %107 = extractvalue { ptr, i32 } %106, 0
  store ptr %107, ptr %11, align 8
  %108 = extractvalue { ptr, i32 } %106, 1
  store i32 %108, ptr %12, align 4
  call void @_ZN7Logging9LoggerRefD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %15) #10
  br label %109

109:                                              ; preds = %105, %101
  call void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %14) #10
  br label %110

110:                                              ; preds = %109, %97
  call void @llvm.lifetime.end.p0(i64 24, ptr %14) #10
  br label %304

111:                                              ; preds = %62
  %112 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt12system_error
          catch ptr @_ZTISt9exception
  %113 = extractvalue { ptr, i32 } %112, 0
  store ptr %113, ptr %11, align 8
  %114 = extractvalue { ptr, i32 } %112, 1
  store i32 %114, ptr %12, align 4
  %115 = load ptr, ptr %19, align 8
  %116 = icmp eq ptr %18, %115
  br i1 %116, label %121, label %117

117:                                              ; preds = %117, %111
  %118 = phi ptr [ %115, %111 ], [ %119, %117 ]
  %119 = getelementptr inbounds %"class.std::__cxx11::basic_string", ptr %118, i64 -1
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %119) #10
  %120 = icmp eq ptr %119, %18
  br i1 %120, label %121, label %117

121:                                              ; preds = %117, %111
  br label %143

122:                                              ; preds = %65
  %123 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt12system_error
          catch ptr @_ZTISt9exception
  %124 = extractvalue { ptr, i32 } %123, 0
  store ptr %124, ptr %11, align 8
  %125 = extractvalue { ptr, i32 } %123, 1
  store i32 %125, ptr %12, align 4
  br label %135

126:                                              ; preds = %72
  %127 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt12system_error
          catch ptr @_ZTISt9exception
  %128 = extractvalue { ptr, i32 } %127, 0
  store ptr %128, ptr %11, align 8
  %129 = extractvalue { ptr, i32 } %127, 1
  store i32 %129, ptr %12, align 4
  br label %134

130:                                              ; preds = %76
  %131 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt12system_error
          catch ptr @_ZTISt9exception
  %132 = extractvalue { ptr, i32 } %131, 0
  store ptr %132, ptr %11, align 8
  %133 = extractvalue { ptr, i32 } %131, 1
  store i32 %133, ptr %12, align 4
  call void @_ZN7Logging9LoggerRefD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %21) #10
  br label %134

134:                                              ; preds = %130, %126
  call void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %16) #10
  br label %135

135:                                              ; preds = %134, %122
  call void @_ZNSt15__new_allocatorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %20) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %20) #10
  %136 = getelementptr inbounds [1 x %"class.std::__cxx11::basic_string"], ptr %18, i32 0, i32 0
  %137 = getelementptr inbounds %"class.std::__cxx11::basic_string", ptr %136, i64 1
  br label %138

138:                                              ; preds = %138, %135
  %139 = phi ptr [ %137, %135 ], [ %140, %138 ]
  %140 = getelementptr inbounds %"class.std::__cxx11::basic_string", ptr %139, i64 -1
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %140) #10
  %141 = icmp eq ptr %140, %136
  br i1 %141, label %142, label %138

142:                                              ; preds = %138
  br label %143

143:                                              ; preds = %142, %121
  call void @llvm.lifetime.end.p0(i64 32, ptr %18) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %16) #10
  br label %304

144:                                              ; preds = %84, %58
  call void @llvm.lifetime.start.p0(i64 2, ptr %22) #10
  %145 = load ptr, ptr %7, align 8, !tbaa !5
  %146 = getelementptr inbounds %"struct.PaymentService::SendTransaction::Request", ptr %145, i32 0, i32 4
  %147 = load i32, ptr %146, align 8, !tbaa !30
  %148 = trunc i32 %147 to i16
  store i16 %148, ptr %22, align 2, !tbaa !41
  %149 = getelementptr inbounds %"class.PaymentService::WalletService", ptr %41, i32 0, i32 1
  %150 = load ptr, ptr %149, align 8, !tbaa !9
  %151 = getelementptr inbounds %"class.PaymentService::WalletService", ptr %41, i32 0, i32 7
  invoke void @_ZN7Logging9LoggerRefC2ERKS0_(ptr noundef nonnull align 8 dereferenceable(40) %23, ptr noundef nonnull align 8 dereferenceable(40) %151)
          to label %152 unwind label %169

152:                                              ; preds = %144
  invoke void @_ZN14PaymentService12_GLOBAL__N_113validateMixinERKtRKN7DynexCN8CurrencyEN7Logging9LoggerRefE(ptr noundef nonnull align 2 dereferenceable(2) %22, ptr noundef nonnull align 8 dereferenceable(984) %150, ptr noundef %23)
          to label %153 unwind label %173

153:                                              ; preds = %152
  call void @_ZN7Logging9LoggerRefD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %23) #10
  call void @llvm.lifetime.end.p0(i64 2, ptr %22) #10
  %154 = load ptr, ptr %7, align 8, !tbaa !5
  %155 = getelementptr inbounds %"struct.PaymentService::SendTransaction::Request", ptr %154, i32 0, i32 4
  %156 = load i32, ptr %155, align 8, !tbaa !30
  %157 = icmp ugt i32 %156, 0
  br i1 %157, label %158, label %187

158:                                              ; preds = %153
  call void @llvm.lifetime.start.p0(i64 432, ptr %24) #10
  %159 = getelementptr inbounds %"class.PaymentService::WalletService", ptr %41, i32 0, i32 7
  invoke void @_ZNK7Logging9LoggerRefclENS_5LevelERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.Logging::LoggerMessage") align 8 %24, ptr noundef nonnull align 8 dereferenceable(40) %159, i32 noundef 2, ptr noundef nonnull align 8 dereferenceable(32) @_ZN7Logging13BRIGHT_YELLOWB5cxx11E)
          to label %160 unwind label %178

160:                                              ; preds = %158
  %161 = invoke noundef nonnull align 8 dereferenceable(161) ptr @_ZStlsIN7Logging13LoggerMessageEA49_cEOT_S4_RKT0_(ptr noundef nonnull align 8 dereferenceable(161) %24, ptr noundef nonnull align 1 dereferenceable(49) @.str.110)
          to label %162 unwind label %182

162:                                              ; preds = %160
  call void @_ZN7Logging13LoggerMessageD1Ev(ptr noundef nonnull align 8 dereferenceable(161) %24) #10
  call void @llvm.lifetime.end.p0(i64 432, ptr %24) #10
  %163 = invoke { i32, ptr } @_Z15make_error_codeN7DynexCN5error16WalletErrorCodesE(i32 noundef 5)
          to label %164 unwind label %89

164:                                              ; preds = %162
  %165 = getelementptr inbounds { i32, ptr }, ptr %5, i32 0, i32 0
  %166 = extractvalue { i32, ptr } %163, 0
  store i32 %166, ptr %165, align 8
  %167 = getelementptr inbounds { i32, ptr }, ptr %5, i32 0, i32 1
  %168 = extractvalue { i32, ptr } %163, 1
  store ptr %168, ptr %167, align 8
  store i32 1, ptr %25, align 4
  br label %269

169:                                              ; preds = %144
  %170 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt12system_error
          catch ptr @_ZTISt9exception
  %171 = extractvalue { ptr, i32 } %170, 0
  store ptr %171, ptr %11, align 8
  %172 = extractvalue { ptr, i32 } %170, 1
  store i32 %172, ptr %12, align 4
  br label %177

173:                                              ; preds = %152
  %174 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt12system_error
          catch ptr @_ZTISt9exception
  %175 = extractvalue { ptr, i32 } %174, 0
  store ptr %175, ptr %11, align 8
  %176 = extractvalue { ptr, i32 } %174, 1
  store i32 %176, ptr %12, align 4
  call void @_ZN7Logging9LoggerRefD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %23) #10
  br label %177

177:                                              ; preds = %173, %169
  call void @llvm.lifetime.end.p0(i64 2, ptr %22) #10
  br label %304

178:                                              ; preds = %158
  %179 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt12system_error
          catch ptr @_ZTISt9exception
  %180 = extractvalue { ptr, i32 } %179, 0
  store ptr %180, ptr %11, align 8
  %181 = extractvalue { ptr, i32 } %179, 1
  store i32 %181, ptr %12, align 4
  br label %186

182:                                              ; preds = %160
  %183 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt12system_error
          catch ptr @_ZTISt9exception
  %184 = extractvalue { ptr, i32 } %183, 0
  store ptr %184, ptr %11, align 8
  %185 = extractvalue { ptr, i32 } %183, 1
  store i32 %185, ptr %12, align 4
  call void @_ZN7Logging13LoggerMessageD1Ev(ptr noundef nonnull align 8 dereferenceable(161) %24) #10
  br label %186

186:                                              ; preds = %182, %178
  call void @llvm.lifetime.end.p0(i64 432, ptr %24) #10
  br label %304

187:                                              ; preds = %153
  call void @llvm.lifetime.start.p0(i64 176, ptr %26) #10
  call void @_ZN7DynexCN21TransactionParametersC2Ev(ptr noundef nonnull align 8 dereferenceable(176) %26) #10
  %188 = load ptr, ptr %7, align 8, !tbaa !5
  %189 = getelementptr inbounds %"struct.PaymentService::SendTransaction::Request", ptr %188, i32 0, i32 6
  %190 = call noundef zeroext i1 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(32) %189) #10
  br i1 %190, label %200, label %191

191:                                              ; preds = %187
  %192 = load ptr, ptr %7, align 8, !tbaa !5
  %193 = getelementptr inbounds %"struct.PaymentService::SendTransaction::Request", ptr %192, i32 0, i32 6
  %194 = getelementptr inbounds %"struct.DynexCN::TransactionParameters", ptr %26, i32 0, i32 4
  invoke void @_ZN14PaymentService12_GLOBAL__N_119addPaymentIdToExtraERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERS6_(ptr noundef nonnull align 8 dereferenceable(32) %193, ptr noundef nonnull align 8 dereferenceable(32) %194)
          to label %195 unwind label %196

195:                                              ; preds = %191
  br label %210

196:                                              ; preds = %218, %210, %191
  %197 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt12system_error
          catch ptr @_ZTISt9exception
  %198 = extractvalue { ptr, i32 } %197, 0
  store ptr %198, ptr %11, align 8
  %199 = extractvalue { ptr, i32 } %197, 1
  store i32 %199, ptr %12, align 4
  br label %303

200:                                              ; preds = %187
  call void @llvm.lifetime.start.p0(i64 32, ptr %27) #10
  %201 = load ptr, ptr %7, align 8, !tbaa !5
  %202 = getelementptr inbounds %"struct.PaymentService::SendTransaction::Request", ptr %201, i32 0, i32 5
  invoke void @_ZN14PaymentService12_GLOBAL__N_134getValidatedTransactionExtraStringERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %27, ptr noundef nonnull align 8 dereferenceable(32) %202)
          to label %203 unwind label %206

203:                                              ; preds = %200
  %204 = getelementptr inbounds %"struct.DynexCN::TransactionParameters", ptr %26, i32 0, i32 4
  %205 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(32) %204, ptr noundef nonnull align 8 dereferenceable(32) %27) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %27) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %27) #10
  br label %210

206:                                              ; preds = %200
  %207 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt12system_error
          catch ptr @_ZTISt9exception
  %208 = extractvalue { ptr, i32 } %207, 0
  store ptr %208, ptr %11, align 8
  %209 = extractvalue { ptr, i32 } %207, 1
  store i32 %209, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %27) #10
  br label %303

210:                                              ; preds = %203, %195
  %211 = load ptr, ptr %7, align 8, !tbaa !5
  %212 = getelementptr inbounds %"struct.PaymentService::SendTransaction::Request", ptr %211, i32 0, i32 0
  %213 = getelementptr inbounds %"struct.DynexCN::TransactionParameters", ptr %26, i32 0, i32 0
  %214 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EEaSERKS7_(ptr noundef nonnull align 8 dereferenceable(24) %213, ptr noundef nonnull align 8 dereferenceable(24) %212)
          to label %215 unwind label %196

215:                                              ; preds = %210
  call void @llvm.lifetime.start.p0(i64 24, ptr %28) #10
  %216 = load ptr, ptr %7, align 8, !tbaa !5
  %217 = getelementptr inbounds %"struct.PaymentService::SendTransaction::Request", ptr %216, i32 0, i32 1
  invoke void @_ZN14PaymentService12_GLOBAL__N_136convertWalletRpcOrdersToWalletOrdersERKSt6vectorINS_14WalletRpcOrderESaIS2_EE(ptr dead_on_unwind writable sret(%"class.std::vector.302") align 8 %28, ptr noundef nonnull align 8 dereferenceable(24) %217)
          to label %218 unwind label %272

218:                                              ; preds = %215
  %219 = getelementptr inbounds %"struct.DynexCN::TransactionParameters", ptr %26, i32 0, i32 1
  %220 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIN7DynexCN11WalletOrderESaIS1_EEaSEOS3_(ptr noundef nonnull align 8 dereferenceable(24) %219, ptr noundef nonnull align 8 dereferenceable(24) %28) #10
  call void @_ZNSt6vectorIN7DynexCN11WalletOrderESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %28) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %28) #10
  %221 = load ptr, ptr %7, align 8, !tbaa !5
  %222 = getelementptr inbounds %"struct.PaymentService::SendTransaction::Request", ptr %221, i32 0, i32 3
  %223 = load i64, ptr %222, align 8, !tbaa !43
  %224 = getelementptr inbounds %"struct.DynexCN::TransactionParameters", ptr %26, i32 0, i32 2
  store i64 %223, ptr %224, align 8, !tbaa !44
  %225 = load ptr, ptr %7, align 8, !tbaa !5
  %226 = getelementptr inbounds %"struct.PaymentService::SendTransaction::Request", ptr %225, i32 0, i32 4
  %227 = load i32, ptr %226, align 8, !tbaa !30
  %228 = zext i32 %227 to i64
  %229 = getelementptr inbounds %"struct.DynexCN::TransactionParameters", ptr %26, i32 0, i32 3
  store i64 %228, ptr %229, align 8, !tbaa !51
  %230 = load ptr, ptr %7, align 8, !tbaa !5
  %231 = getelementptr inbounds %"struct.PaymentService::SendTransaction::Request", ptr %230, i32 0, i32 7
  %232 = load i64, ptr %231, align 8, !tbaa !52
  %233 = getelementptr inbounds %"struct.DynexCN::TransactionParameters", ptr %26, i32 0, i32 5
  store i64 %232, ptr %233, align 8, !tbaa !53
  %234 = load ptr, ptr %7, align 8, !tbaa !5
  %235 = getelementptr inbounds %"struct.PaymentService::SendTransaction::Request", ptr %234, i32 0, i32 2
  %236 = getelementptr inbounds %"struct.DynexCN::TransactionParameters", ptr %26, i32 0, i32 7
  %237 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %236, ptr noundef nonnull align 8 dereferenceable(32) %235)
          to label %238 unwind label %196

238:                                              ; preds = %218
  call void @llvm.lifetime.start.p0(i64 32, ptr %29) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #10
  %239 = getelementptr inbounds %"class.PaymentService::WalletService", ptr %41, i32 0, i32 2
  %240 = load ptr, ptr %239, align 8, !tbaa !54
  %241 = load ptr, ptr %240, align 8, !tbaa !55
  %242 = getelementptr inbounds ptr, ptr %241, i64 51
  %243 = load ptr, ptr %242, align 8
  %244 = invoke noundef i64 %243(ptr noundef nonnull align 8 dereferenceable(8) %240, ptr noundef nonnull align 8 dereferenceable(176) %26, ptr noundef nonnull align 1 dereferenceable(32) %29)
          to label %245 unwind label %276

245:                                              ; preds = %238
  store i64 %244, ptr %30, align 8, !tbaa !57
  call void @llvm.lifetime.start.p0(i64 32, ptr %31) #10
  call void @llvm.lifetime.start.p0(i64 160, ptr %32) #10
  %246 = getelementptr inbounds %"class.PaymentService::WalletService", ptr %41, i32 0, i32 2
  %247 = load ptr, ptr %246, align 8, !tbaa !54
  %248 = load i64, ptr %30, align 8, !tbaa !57
  %249 = load ptr, ptr %247, align 8, !tbaa !55
  %250 = getelementptr inbounds ptr, ptr %249, i64 35
  %251 = load ptr, ptr %250, align 8
  invoke void %251(ptr dead_on_unwind writable sret(%"struct.DynexCN::WalletTransaction") align 8 %32, ptr noundef nonnull align 8 dereferenceable(8) %247, i64 noundef %248)
          to label %252 unwind label %280

252:                                              ; preds = %245
  %253 = getelementptr inbounds %"struct.DynexCN::WalletTransaction", ptr %32, i32 0, i32 4
  invoke void @_ZN6Common8podToHexIN6Crypto4HashEEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKT_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %31, ptr noundef nonnull align 1 dereferenceable(32) %253)
          to label %254 unwind label %284

254:                                              ; preds = %252
  %255 = load ptr, ptr %8, align 8, !tbaa !5
  %256 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(32) %255, ptr noundef nonnull align 8 dereferenceable(32) %31) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %31) #10
  call void @_ZN7DynexCN17WalletTransactionD2Ev(ptr noundef nonnull align 8 dereferenceable(153) %32) #10
  call void @llvm.lifetime.end.p0(i64 160, ptr %32) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %31) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr %33) #10
  invoke void @_ZN6Common8podToHexIN6Crypto9SecretKeyEEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKT_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %33, ptr noundef nonnull align 1 dereferenceable(32) %29)
          to label %257 unwind label %289

257:                                              ; preds = %254
  %258 = load ptr, ptr %9, align 8, !tbaa !5
  %259 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(32) %258, ptr noundef nonnull align 8 dereferenceable(32) %33) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %33) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %33) #10
  call void @llvm.lifetime.start.p0(i64 432, ptr %34) #10
  %260 = getelementptr inbounds %"class.PaymentService::WalletService", ptr %41, i32 0, i32 7
  invoke void @_ZNK7Logging9LoggerRefclENS_5LevelERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.Logging::LoggerMessage") align 8 %34, ptr noundef nonnull align 8 dereferenceable(40) %260, i32 noundef 4, ptr noundef nonnull align 8 dereferenceable(32) @_ZN7Logging7DEFAULTB5cxx11E)
          to label %261 unwind label %293

261:                                              ; preds = %257
  %262 = invoke noundef nonnull align 8 dereferenceable(161) ptr @_ZStlsIN7Logging13LoggerMessageEA13_cEOT_S4_RKT0_(ptr noundef nonnull align 8 dereferenceable(161) %34, ptr noundef nonnull align 1 dereferenceable(13) @.str.97)
          to label %263 unwind label %297

263:                                              ; preds = %261
  %264 = load ptr, ptr %8, align 8, !tbaa !5
  %265 = invoke noundef nonnull align 8 dereferenceable(161) ptr @_ZStlsIN7Logging13LoggerMessageENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEOT_S9_RKT0_(ptr noundef nonnull align 8 dereferenceable(161) %262, ptr noundef nonnull align 8 dereferenceable(32) %264)
          to label %266 unwind label %297

266:                                              ; preds = %263
  %267 = invoke noundef nonnull align 8 dereferenceable(161) ptr @_ZStlsIN7Logging13LoggerMessageEA15_cEOT_S4_RKT0_(ptr noundef nonnull align 8 dereferenceable(161) %265, ptr noundef nonnull align 1 dereferenceable(15) @.str.111)
          to label %268 unwind label %297

268:                                              ; preds = %266
  call void @_ZN7Logging13LoggerMessageD1Ev(ptr noundef nonnull align 8 dereferenceable(161) %34) #10
  call void @llvm.lifetime.end.p0(i64 432, ptr %34) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %29) #10
  call void @_ZN7DynexCN21TransactionParametersD2Ev(ptr noundef nonnull align 8 dereferenceable(176) %26) #10
  call void @llvm.lifetime.end.p0(i64 176, ptr %26) #10
  store i32 0, ptr %25, align 4
  br label %269

269:                                              ; preds = %268, %164
  call void @_ZN6System9EventLockD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %10) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #10
  %270 = load i32, ptr %25, align 4
  switch i32 %270, label %395 [
    i32 0, label %271
    i32 1, label %385
  ]

271:                                              ; preds = %269
  br label %384

272:                                              ; preds = %215
  %273 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt12system_error
          catch ptr @_ZTISt9exception
  %274 = extractvalue { ptr, i32 } %273, 0
  store ptr %274, ptr %11, align 8
  %275 = extractvalue { ptr, i32 } %273, 1
  store i32 %275, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 24, ptr %28) #10
  br label %303

276:                                              ; preds = %238
  %277 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt12system_error
          catch ptr @_ZTISt9exception
  %278 = extractvalue { ptr, i32 } %277, 0
  store ptr %278, ptr %11, align 8
  %279 = extractvalue { ptr, i32 } %277, 1
  store i32 %279, ptr %12, align 4
  br label %302

280:                                              ; preds = %245
  %281 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt12system_error
          catch ptr @_ZTISt9exception
  %282 = extractvalue { ptr, i32 } %281, 0
  store ptr %282, ptr %11, align 8
  %283 = extractvalue { ptr, i32 } %281, 1
  store i32 %283, ptr %12, align 4
  br label %288

284:                                              ; preds = %252
  %285 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt12system_error
          catch ptr @_ZTISt9exception
  %286 = extractvalue { ptr, i32 } %285, 0
  store ptr %286, ptr %11, align 8
  %287 = extractvalue { ptr, i32 } %285, 1
  store i32 %287, ptr %12, align 4
  call void @_ZN7DynexCN17WalletTransactionD2Ev(ptr noundef nonnull align 8 dereferenceable(153) %32) #10
  br label %288

288:                                              ; preds = %284, %280
  call void @llvm.lifetime.end.p0(i64 160, ptr %32) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %31) #10
  br label %302

289:                                              ; preds = %254
  %290 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt12system_error
          catch ptr @_ZTISt9exception
  %291 = extractvalue { ptr, i32 } %290, 0
  store ptr %291, ptr %11, align 8
  %292 = extractvalue { ptr, i32 } %290, 1
  store i32 %292, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %33) #10
  br label %302

293:                                              ; preds = %257
  %294 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt12system_error
          catch ptr @_ZTISt9exception
  %295 = extractvalue { ptr, i32 } %294, 0
  store ptr %295, ptr %11, align 8
  %296 = extractvalue { ptr, i32 } %294, 1
  store i32 %296, ptr %12, align 4
  br label %301

297:                                              ; preds = %266, %263, %261
  %298 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt12system_error
          catch ptr @_ZTISt9exception
  %299 = extractvalue { ptr, i32 } %298, 0
  store ptr %299, ptr %11, align 8
  %300 = extractvalue { ptr, i32 } %298, 1
  store i32 %300, ptr %12, align 4
  call void @_ZN7Logging13LoggerMessageD1Ev(ptr noundef nonnull align 8 dereferenceable(161) %34) #10
  br label %301

301:                                              ; preds = %297, %293
  call void @llvm.lifetime.end.p0(i64 432, ptr %34) #10
  br label %302

302:                                              ; preds = %301, %289, %288, %276
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %29) #10
  br label %303

303:                                              ; preds = %302, %272, %206, %196
  call void @_ZN7DynexCN21TransactionParametersD2Ev(ptr noundef nonnull align 8 dereferenceable(176) %26) #10
  call void @llvm.lifetime.end.p0(i64 176, ptr %26) #10
  br label %304

304:                                              ; preds = %303, %186, %177, %143, %110, %93, %89
  call void @_ZN6System9EventLockD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %10) #10
  br label %305

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

306:                                              ; preds = %305
  %307 = load i32, ptr %12, align 4
  %308 = call i32 @llvm.eh.typeid.for.p0(ptr @_ZTISt12system_error) #10
  %309 = icmp eq i32 %307, %308
  br i1 %309, label %310, label %326

310:                                              ; preds = %306
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #10
  %311 = load ptr, ptr %11, align 8
  %312 = call ptr @__cxa_begin_catch(ptr %311) #10
  store ptr %312, ptr %38, align 8
  call void @llvm.lifetime.start.p0(i64 432, ptr %39) #10
  %313 = getelementptr inbounds %"class.PaymentService::WalletService", ptr %41, i32 0, i32 7
  invoke void @_ZNK7Logging9LoggerRefclENS_5LevelERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.Logging::LoggerMessage") align 8 %39, ptr noundef nonnull align 8 dereferenceable(40) %313, i32 noundef 2, ptr noundef nonnull align 8 dereferenceable(32) @_ZN7Logging13BRIGHT_YELLOWB5cxx11E)
          to label %314 unwind label %369

314:                                              ; preds = %310
  %315 = invoke noundef nonnull align 8 dereferenceable(161) ptr @_ZStlsIN7Logging13LoggerMessageEA34_cEOT_S4_RKT0_(ptr noundef nonnull align 8 dereferenceable(161) %39, ptr noundef nonnull align 1 dereferenceable(34) @.str.112)
          to label %316 unwind label %373

316:                                              ; preds = %314
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #10
  %317 = load ptr, ptr %38, align 8, !tbaa !5
  %318 = load ptr, ptr %317, align 8, !tbaa !55
  %319 = getelementptr inbounds ptr, ptr %318, i64 2
  %320 = load ptr, ptr %319, align 8
  %321 = call noundef ptr %320(ptr noundef nonnull align 8 dereferenceable(16) %317) #10
  store ptr %321, ptr %40, align 8, !tbaa !5
  %322 = invoke noundef nonnull align 8 dereferenceable(161) ptr @_ZStlsIN7Logging13LoggerMessageEPKcEOT_S5_RKT0_(ptr noundef nonnull align 8 dereferenceable(161) %315, ptr noundef nonnull align 8 dereferenceable(8) %40)
          to label %323 unwind label %377

323:                                              ; preds = %316
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #10
  call void @_ZN7Logging13LoggerMessageD1Ev(ptr noundef nonnull align 8 dereferenceable(161) %39) #10
  call void @llvm.lifetime.end.p0(i64 432, ptr %39) #10
  %324 = load ptr, ptr %38, align 8, !tbaa !5
  %325 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNKSt12system_error4codeEv(ptr noundef nonnull align 8 dereferenceable(32) %324) #10
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %5, ptr align 8 %325, i64 16, i1 false), !tbaa.struct !58
  store i32 1, ptr %25, align 4
  call void @__cxa_end_catch()
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #10
  br label %385

326:                                              ; preds = %306
  %327 = call i32 @llvm.eh.typeid.for.p0(ptr @_ZTISt9exception) #10
  %328 = icmp eq i32 %307, %327
  br i1 %328, label %329, label %387

329:                                              ; preds = %326
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #10
  %330 = load ptr, ptr %11, align 8
  %331 = call ptr @__cxa_begin_catch(ptr %330) #10
  store ptr %331, ptr %35, align 8
  call void @llvm.lifetime.start.p0(i64 432, ptr %36) #10
  %332 = getelementptr inbounds %"class.PaymentService::WalletService", ptr %41, i32 0, i32 7
  invoke void @_ZNK7Logging9LoggerRefclENS_5LevelERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.Logging::LoggerMessage") align 8 %36, ptr noundef nonnull align 8 dereferenceable(40) %332, i32 noundef 2, ptr noundef nonnull align 8 dereferenceable(32) @_ZN7Logging13BRIGHT_YELLOWB5cxx11E)
          to label %333 unwind label %349

333:                                              ; preds = %329
  %334 = invoke noundef nonnull align 8 dereferenceable(161) ptr @_ZStlsIN7Logging13LoggerMessageEA34_cEOT_S4_RKT0_(ptr noundef nonnull align 8 dereferenceable(161) %36, ptr noundef nonnull align 1 dereferenceable(34) @.str.112)
          to label %335 unwind label %353

335:                                              ; preds = %333
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #10
  %336 = load ptr, ptr %35, align 8, !tbaa !5
  %337 = load ptr, ptr %336, align 8, !tbaa !55
  %338 = getelementptr inbounds ptr, ptr %337, i64 2
  %339 = load ptr, ptr %338, align 8
  %340 = call noundef ptr %339(ptr noundef nonnull align 8 dereferenceable(8) %336) #10
  store ptr %340, ptr %37, align 8, !tbaa !5
  %341 = invoke noundef nonnull align 8 dereferenceable(161) ptr @_ZStlsIN7Logging13LoggerMessageEPKcEOT_S5_RKT0_(ptr noundef nonnull align 8 dereferenceable(161) %334, ptr noundef nonnull align 8 dereferenceable(8) %37)
          to label %342 unwind label %357

342:                                              ; preds = %335
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #10
  call void @_ZN7Logging13LoggerMessageD1Ev(ptr noundef nonnull align 8 dereferenceable(161) %36) #10
  call void @llvm.lifetime.end.p0(i64 432, ptr %36) #10
  %343 = invoke { i32, ptr } @_Z15make_error_codeN7DynexCN5error16WalletErrorCodesE(i32 noundef 5)
          to label %344 unwind label %363

344:                                              ; preds = %342
  %345 = getelementptr inbounds { i32, ptr }, ptr %5, i32 0, i32 0
  %346 = extractvalue { i32, ptr } %343, 0
  store i32 %346, ptr %345, align 8
  %347 = getelementptr inbounds { i32, ptr }, ptr %5, i32 0, i32 1
  %348 = extractvalue { i32, ptr } %343, 1
  store ptr %348, ptr %347, align 8
  store i32 1, ptr %25, align 4
  call void @__cxa_end_catch()
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #10
  br label %385

349:                                              ; preds = %329
  %350 = landingpad { ptr, i32 }
          cleanup
  %351 = extractvalue { ptr, i32 } %350, 0
  store ptr %351, ptr %11, align 8
  %352 = extractvalue { ptr, i32 } %350, 1
  store i32 %352, ptr %12, align 4
  br label %362

353:                                              ; preds = %333
  %354 = landingpad { ptr, i32 }
          cleanup
  %355 = extractvalue { ptr, i32 } %354, 0
  store ptr %355, ptr %11, align 8
  %356 = extractvalue { ptr, i32 } %354, 1
  store i32 %356, ptr %12, align 4
  br label %361

357:                                              ; preds = %335
  %358 = landingpad { ptr, i32 }
          cleanup
  %359 = extractvalue { ptr, i32 } %358, 0
  store ptr %359, ptr %11, align 8
  %360 = extractvalue { ptr, i32 } %358, 1
  store i32 %360, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #10
  br label %361

361:                                              ; preds = %357, %353
  call void @_ZN7Logging13LoggerMessageD1Ev(ptr noundef nonnull align 8 dereferenceable(161) %36) #10
  br label %362

362:                                              ; preds = %361, %349
  call void @llvm.lifetime.end.p0(i64 432, ptr %36) #10
  br label %367

363:                                              ; preds = %342
  %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
  br label %367

367:                                              ; preds = %363, %362
  invoke void @__cxa_end_catch()
          to label %368 unwind label %392

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

369:                                              ; preds = %310
  %370 = landingpad { ptr, i32 }
          cleanup
  %371 = extractvalue { ptr, i32 } %370, 0
  store ptr %371, ptr %11, align 8
  %372 = extractvalue { ptr, i32 } %370, 1
  store i32 %372, ptr %12, align 4
  br label %382

373:                                              ; preds = %314
  %374 = landingpad { ptr, i32 }
          cleanup
  %375 = extractvalue { ptr, i32 } %374, 0
  store ptr %375, ptr %11, align 8
  %376 = extractvalue { ptr, i32 } %374, 1
  store i32 %376, ptr %12, align 4
  br label %381

377:                                              ; preds = %316
  %378 = landingpad { ptr, i32 }
          cleanup
  %379 = extractvalue { ptr, i32 } %378, 0
  store ptr %379, ptr %11, align 8
  %380 = extractvalue { ptr, i32 } %378, 1
  store i32 %380, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #10
  br label %381

381:                                              ; preds = %377, %373
  call void @_ZN7Logging13LoggerMessageD1Ev(ptr noundef nonnull align 8 dereferenceable(161) %39) #10
  br label %382

382:                                              ; preds = %381, %369
  call void @llvm.lifetime.end.p0(i64 432, ptr %39) #10
  invoke void @__cxa_end_catch()
          to label %383 unwind label %392

383:                                              ; preds = %382
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #10
  br label %387

384:                                              ; preds = %271
  call void @_ZNSt10error_codeC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %5) #10
  br label %385

385:                                              ; preds = %384, %344, %323, %269
  %386 = load { i32, ptr }, ptr %5, align 8
  ret { i32, ptr } %386

387:                                              ; preds = %383, %368, %326
  %388 = load ptr, ptr %11, align 8
  %389 = load i32, ptr %12, align 4
  %390 = insertvalue { ptr, i32 } poison, ptr %388, 0
  %391 = insertvalue { ptr, i32 } %390, i32 %389, 1
  resume { ptr, i32 } %391

392:                                              ; preds = %382, %367
  %393 = landingpad { ptr, i32 }
          catch ptr null
  %394 = extractvalue { ptr, i32 } %393, 0
  call void @__clang_call_terminate(ptr %394) #11
  unreachable

395:                                              ; preds = %269
  unreachable
}

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN14PaymentService12_GLOBAL__N_127collectDestinationAddressesB5cxx11ERKSt6vectorINS_14WalletRpcOrderESaIS2_EE(ptr dead_on_unwind noalias writable sret(%"class.std::vector") align 8, ptr noundef nonnull align 8 dereferenceable(24)) #4

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

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

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

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN14PaymentService12_GLOBAL__N_113validateMixinERKtRKN7DynexCN8CurrencyEN7Logging9LoggerRefE(ptr noundef nonnull align 2 dereferenceable(2), ptr noundef nonnull align 8 dereferenceable(984), ptr noundef) #4

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

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN14PaymentService12_GLOBAL__N_119addPaymentIdToExtraERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERS6_(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(32)) #4

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

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

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN14PaymentService12_GLOBAL__N_136convertWalletRpcOrdersToWalletOrdersERKSt6vectorINS_14WalletRpcOrderESaIS2_EE(ptr dead_on_unwind noalias writable sret(%"class.std::vector.302") align 8, ptr noundef nonnull align 8 dereferenceable(24)) #4

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

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !6, i64 8}
!10 = !{!"_ZTSN14PaymentService13WalletServiceE", !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !11, i64 48, !12, i64 56, !6, i64 96, !16, i64 104, !17, i64 136, !19, i64 176}
!11 = !{!"bool", !7, i64 0}
!12 = !{!"_ZTSN7Logging9LoggerRefE", !6, i64 0, !13, i64 8}
!13 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !14, i64 0, !15, i64 8, !7, i64 16}
!14 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !6, i64 0}
!15 = !{!"long", !7, i64 0}
!16 = !{!"_ZTSN6System5EventE", !6, i64 0, !11, i64 8, !6, i64 16, !6, i64 24}
!17 = !{!"_ZTSN6System12ContextGroupE", !6, i64 0, !18, i64 8}
!18 = !{!"_ZTSN6System18NativeContextGroupE", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!19 = !{!"_ZTSSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEmSt4lessIS5_ESaISt4pairIKS5_mEEE", !20, i64 0}
!20 = !{!"_ZTSSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_mESt10_Select1stIS8_ESt4lessIS5_ESaIS8_EE", !21, i64 0}
!21 = !{!"_ZTSNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_mESt10_Select1stIS8_ESt4lessIS5_ESaIS8_EE13_Rb_tree_implISC_Lb1EEE", !22, i64 0, !24, i64 8}
!22 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEE", !23, i64 0}
!23 = !{!"_ZTSSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE"}
!24 = !{!"_ZTSSt15_Rb_tree_header", !25, i64 0, !15, i64 32}
!25 = !{!"_ZTSSt18_Rb_tree_node_base", !26, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!26 = !{!"_ZTSSt14_Rb_tree_color", !7, i64 0}
!27 = !{!28, !6, i64 0}
!28 = !{!"_ZTSSt16initializer_listINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE", !6, i64 0, !15, i64 8}
!29 = !{!28, !15, i64 8}
!30 = !{!31, !40, i64 88}
!31 = !{!"_ZTSN14PaymentService15SendTransaction7RequestE", !32, i64 0, !36, i64 24, !13, i64 48, !15, i64 80, !40, i64 88, !13, i64 96, !13, i64 128, !15, i64 160}
!32 = !{!"_ZTSSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE", !33, i64 0}
!33 = !{!"_ZTSSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE", !34, i64 0}
!34 = !{!"_ZTSNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12_Vector_implE", !35, i64 0}
!35 = !{!"_ZTSNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!36 = !{!"_ZTSSt6vectorIN14PaymentService14WalletRpcOrderESaIS1_EE", !37, i64 0}
!37 = !{!"_ZTSSt12_Vector_baseIN14PaymentService14WalletRpcOrderESaIS1_EE", !38, i64 0}
!38 = !{!"_ZTSNSt12_Vector_baseIN14PaymentService14WalletRpcOrderESaIS1_EE12_Vector_implE", !39, i64 0}
!39 = !{!"_ZTSNSt12_Vector_baseIN14PaymentService14WalletRpcOrderESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!40 = !{!"int", !7, i64 0}
!41 = !{!42, !42, i64 0}
!42 = !{!"short", !7, i64 0}
!43 = !{!31, !15, i64 80}
!44 = !{!45, !15, i64 48}
!45 = !{!"_ZTSN7DynexCN21TransactionParametersE", !32, i64 0, !46, i64 24, !15, i64 48, !15, i64 56, !13, i64 64, !15, i64 96, !50, i64 104, !13, i64 144}
!46 = !{!"_ZTSSt6vectorIN7DynexCN11WalletOrderESaIS1_EE", !47, i64 0}
!47 = !{!"_ZTSSt12_Vector_baseIN7DynexCN11WalletOrderESaIS1_EE", !48, i64 0}
!48 = !{!"_ZTSNSt12_Vector_baseIN7DynexCN11WalletOrderESaIS1_EE12_Vector_implE", !49, i64 0}
!49 = !{!"_ZTSNSt12_Vector_baseIN7DynexCN11WalletOrderESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!50 = !{!"_ZTSN7DynexCN16DonationSettingsE", !13, i64 0, !15, i64 32}
!51 = !{!45, !15, i64 56}
!52 = !{!31, !15, i64 160}
!53 = !{!45, !15, i64 96}
!54 = !{!10, !6, i64 16}
!55 = !{!56, !56, i64 0}
!56 = !{!"vtable pointer", !8, i64 0}
!57 = !{!15, !15, i64 0}
!58 = !{i64 0, i64 4, !59, i64 8, i64 8, !5}
!59 = !{!40, !40, i64 0}


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

%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"class.Logging::LoggerMessage" = type <{ %"class.std::basic_ostream.base", %"class.std::basic_streambuf", ptr, %"class.std::__cxx11::basic_string", i32, [4 x i8], %"class.std::__cxx11::basic_string", %"class.boost::posix_time::ptime", i8, [7 x i8], %"class.std::basic_ios" }>
%"class.std::basic_ostream.base" = type { ptr }
%"class.std::basic_streambuf" = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, %"class.std::locale" }
%"class.std::locale" = type { ptr }
%"class.boost::posix_time::ptime" = type { %"class.boost::date_time::base_time" }
%"class.boost::date_time::base_time" = type { %"struct.boost::date_time::counted_time_rep" }
%"struct.boost::date_time::counted_time_rep" = type { %"class.boost::date_time::int_adapter" }
%"class.boost::date_time::int_adapter" = type { i64 }
%"class.std::basic_ios" = type { %"class.std::ios_base", ptr, i8, i8, ptr, ptr, ptr, ptr }
%"class.std::ios_base" = type { ptr, i64, i64, i32, i32, i32, ptr, %"struct.std::ios_base::_Words", [8 x %"struct.std::ios_base::_Words"], i32, ptr, %"class.std::locale" }
%"struct.std::ios_base::_Words" = type { ptr, i64 }
%"class.std::error_code" = type { i32, ptr }
%"class.System::EventLock" = type { ptr }
%"class.Logging::LoggerRef" = type { ptr, %"class.std::__cxx11::basic_string" }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::allocator.37" = type { i8 }
%"struct.DynexCN::TransactionParameters" = type { %"class.std::vector", %"class.std::vector.302", i64, i64, %"class.std::__cxx11::basic_string", i64, %"struct.DynexCN::DonationSettings", %"class.std::__cxx11::basic_string" }
%"class.std::vector.302" = type { %"struct.std::_Vector_base.303" }
%"struct.std::_Vector_base.303" = type { %"struct.std::_Vector_base<DynexCN::WalletOrder, std::allocator<DynexCN::WalletOrder>>::_Vector_impl" }
%"struct.std::_Vector_base<DynexCN::WalletOrder, std::allocator<DynexCN::WalletOrder>>::_Vector_impl" = type { %"struct.std::_Vector_base<DynexCN::WalletOrder, std::allocator<DynexCN::WalletOrder>>::_Vector_impl_data" }
%"struct.std::_Vector_base<DynexCN::WalletOrder, std::allocator<DynexCN::WalletOrder>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.DynexCN::DonationSettings" = type { %"class.std::__cxx11::basic_string", i64 }
%"struct.Crypto::SecretKey" = type { [32 x i8] }
%"struct.DynexCN::WalletTransaction" = type <{ i8, [7 x i8], i64, i32, %"struct.Crypto::Hash", %"class.boost::optional", [3 x i8], i64, i64, i64, i64, %"class.std::__cxx11::basic_string", i8, [7 x i8] }>
%"struct.Crypto::Hash" = type { [32 x i8] }
%"class.boost::optional" = type { %"class.boost::optional_detail::optional_base" }
%"class.boost::optional_detail::optional_base" = type { i8, %"class.boost::optional_detail::aligned_storage" }
%"class.boost::optional_detail::aligned_storage" = type { %"union.boost::optional_detail::aligned_storage<Crypto::SecretKey>::dummy_u" }
%"union.boost::optional_detail::aligned_storage<Crypto::SecretKey>::dummy_u" = type { [32 x i8] }

@_ZTISt12system_error = external constant ptr
@_ZTISt9exception = external constant ptr
@_ZN7Logging13BRIGHT_YELLOWB5cxx11E = external global %"class.std::__cxx11::basic_string", align 8
@_ZN7Logging7DEFAULTB5cxx11E = external global %"class.std::__cxx11::basic_string", align 8
@.str.97 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.110 = external hidden unnamed_addr constant [49 x i8], align 1
@.str.111 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.112 = external hidden unnamed_addr constant [34 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: noinline noreturn nounwind uwtable
declare hidden void @__clang_call_terminate(ptr noundef) local_unnamed_addr #2

declare ptr @__cxa_begin_catch(ptr) local_unnamed_addr

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

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

declare void @__cxa_end_catch() local_unnamed_addr

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #3 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 #4 align 2

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

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

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

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

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

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

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

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

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

declare void @_ZN6System9EventLockC1ERNS_5EventE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #5

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local { i32, ptr } @_Z15make_error_codeN7DynexCN5error16WalletErrorCodesE(i32 noundef) local_unnamed_addr #8

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

; Function Attrs: nofree nosync nounwind memory(none)
declare i32 @llvm.eh.typeid.for.p0(ptr) #9

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN14PaymentService12_GLOBAL__N_117validateAddressesERKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS7_EERKN7DynexCN8CurrencyEN7Logging9LoggerRefE(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(984), ptr noundef) local_unnamed_addr #4

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

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

; Function Attrs: mustprogress uwtable
define dso_local { i32, ptr } @_ZN14PaymentService13WalletService15sendTransactionERKNS_15SendTransaction7RequestERNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESB_(ptr noundef nonnull align 8 dereferenceable(224) %0, ptr noundef nonnull align 8 dereferenceable(168) %1, ptr noundef nonnull align 8 dereferenceable(32) %2, ptr noundef nonnull align 8 dereferenceable(32) %3) local_unnamed_addr #4 align 2 personality ptr @__gxx_personality_v0 {
  %5 = alloca %"class.std::error_code", align 8
  %6 = alloca %"class.System::EventLock", align 8
  %7 = alloca %"class.Logging::LoggerRef", align 8
  %8 = alloca %"class.std::vector", align 8
  %9 = alloca %"class.Logging::LoggerRef", align 8
  %10 = alloca %"class.std::vector", align 8
  %11 = alloca [1 x %"class.std::__cxx11::basic_string"], align 8
  %12 = alloca %"class.std::allocator.37", align 1
  %13 = alloca %"class.Logging::LoggerRef", align 8
  %14 = alloca i16, align 2
  %15 = alloca %"class.Logging::LoggerRef", align 8
  %16 = alloca %"class.Logging::LoggerMessage", align 8
  %17 = alloca %"struct.DynexCN::TransactionParameters", align 8
  %18 = alloca %"class.std::__cxx11::basic_string", align 8
  %19 = alloca %"class.std::vector.302", align 8
  %20 = alloca %"struct.Crypto::SecretKey", align 1
  %21 = alloca %"class.std::__cxx11::basic_string", align 8
  %22 = alloca %"struct.DynexCN::WalletTransaction", align 8
  %23 = alloca %"class.std::__cxx11::basic_string", align 8
  %24 = alloca %"class.Logging::LoggerMessage", align 8
  %25 = alloca %"class.Logging::LoggerMessage", align 8
  %26 = alloca ptr, align 8
  %27 = alloca %"class.Logging::LoggerMessage", align 8
  %28 = alloca ptr, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %6) #10
  %29 = getelementptr inbounds i8, ptr %0, i64 104
  invoke void @_ZN6System9EventLockC1ERNS_5EventE(ptr noundef nonnull align 8 dereferenceable(8) %6, ptr noundef nonnull align 8 dereferenceable(32) %29)
          to label %30 unwind label %49

30:                                               ; preds = %4
  %31 = getelementptr inbounds i8, ptr %0, i64 8
  %32 = load ptr, ptr %31, align 8, !tbaa !5
  %33 = getelementptr inbounds i8, ptr %0, i64 56
  invoke void @_ZN7Logging9LoggerRefC2ERKS0_(ptr noundef nonnull align 8 dereferenceable(40) %7, ptr noundef nonnull align 8 dereferenceable(40) %33)
          to label %34 unwind label %51

34:                                               ; preds = %30
  invoke void @_ZN14PaymentService12_GLOBAL__N_117validateAddressesERKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS7_EERKN7DynexCN8CurrencyEN7Logging9LoggerRefE(ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef nonnull align 8 dereferenceable(984) %32, ptr noundef nonnull %7)
          to label %35 unwind label %53

35:                                               ; preds = %34
  call void @_ZN7Logging9LoggerRefD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %7) #10
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %8) #10
  %36 = getelementptr inbounds i8, ptr %1, i64 24
  invoke void @_ZN14PaymentService12_GLOBAL__N_127collectDestinationAddressesB5cxx11ERKSt6vectorINS_14WalletRpcOrderESaIS2_EE(ptr dead_on_unwind nonnull writable sret(%"class.std::vector") align 8 %8, ptr noundef nonnull align 8 dereferenceable(24) %36)
          to label %37 unwind label %55

37:                                               ; preds = %35
  %38 = load ptr, ptr %31, align 8, !tbaa !5
  invoke void @_ZN7Logging9LoggerRefC2ERKS0_(ptr noundef nonnull align 8 dereferenceable(40) %9, ptr noundef nonnull align 8 dereferenceable(40) %33)
          to label %39 unwind label %57

39:                                               ; preds = %37
  invoke void @_ZN14PaymentService12_GLOBAL__N_117validateAddressesERKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS7_EERKN7DynexCN8CurrencyEN7Logging9LoggerRefE(ptr noundef nonnull align 8 dereferenceable(24) %8, ptr noundef nonnull align 8 dereferenceable(984) %38, ptr noundef nonnull %9)
          to label %40 unwind label %59

40:                                               ; preds = %39
  call void @_ZN7Logging9LoggerRefD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %9) #10
  call void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %8) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %8) #10
  %41 = getelementptr inbounds i8, ptr %1, i64 48
  %42 = call noundef zeroext i1 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(32) %41) #10
  br i1 %42, label %72, label %43

43:                                               ; preds = %40
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %10) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %11) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %11, ptr noundef nonnull align 8 dereferenceable(32) %41)
          to label %44 unwind label %63

44:                                               ; preds = %43
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %12) #10
  call void @_ZNSaINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %12) #10
  invoke void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EEC2ESt16initializer_listIS5_ERKS6_(ptr noundef nonnull align 8 dereferenceable(24) %10, ptr nonnull %11, i64 1, ptr noundef nonnull align 1 dereferenceable(1) %12)
          to label %45 unwind label %65

45:                                               ; preds = %44
  %46 = load ptr, ptr %31, align 8, !tbaa !5
  invoke void @_ZN7Logging9LoggerRefC2ERKS0_(ptr noundef nonnull align 8 dereferenceable(40) %13, ptr noundef nonnull align 8 dereferenceable(40) %33)
          to label %47 unwind label %67

47:                                               ; preds = %45
  invoke void @_ZN14PaymentService12_GLOBAL__N_117validateAddressesERKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS7_EERKN7DynexCN8CurrencyEN7Logging9LoggerRefE(ptr noundef nonnull align 8 dereferenceable(24) %10, ptr noundef nonnull align 8 dereferenceable(984) %46, ptr noundef nonnull %13)
          to label %48 unwind label %69

48:                                               ; preds = %47
  call void @_ZN7Logging9LoggerRefD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %13) #10
  call void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %10) #10
  call void @_ZNSt15__new_allocatorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %12) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %12) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %11) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %10) #10
  br label %72

49:                                               ; preds = %4
  %50 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt12system_error
          catch ptr @_ZTISt9exception
  br label %172

51:                                               ; preds = %30
  %52 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt12system_error
          catch ptr @_ZTISt9exception
  br label %171

53:                                               ; preds = %34
  %54 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt12system_error
          catch ptr @_ZTISt9exception
  call void @_ZN7Logging9LoggerRefD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %7) #10
  br label %171

55:                                               ; preds = %35
  %56 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt12system_error
          catch ptr @_ZTISt9exception
  br label %62

57:                                               ; preds = %37
  %58 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt12system_error
          catch ptr @_ZTISt9exception
  br label %61

59:                                               ; preds = %39
  %60 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt12system_error
          catch ptr @_ZTISt9exception
  call void @_ZN7Logging9LoggerRefD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %9) #10
  br label %61

61:                                               ; preds = %59, %57
  %.pn = phi { ptr, i32 } [ %60, %59 ], [ %58, %57 ]
  call void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %8) #10
  br label %62

62:                                               ; preds = %61, %55
  %.pn.pn = phi { ptr, i32 } [ %.pn, %61 ], [ %56, %55 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %8) #10
  br label %171

63:                                               ; preds = %43
  %64 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt12system_error
          catch ptr @_ZTISt9exception
  br label %.loopexit

65:                                               ; preds = %44
  %66 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt12system_error
          catch ptr @_ZTISt9exception
  br label %.loopexit.loopexit

67:                                               ; preds = %45
  %68 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt12system_error
          catch ptr @_ZTISt9exception
  br label %71

69:                                               ; preds = %47
  %70 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt12system_error
          catch ptr @_ZTISt9exception
  call void @_ZN7Logging9LoggerRefD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %13) #10
  br label %71

71:                                               ; preds = %69, %67
  %.pn51 = phi { ptr, i32 } [ %70, %69 ], [ %68, %67 ]
  call void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %10) #10
  br label %.loopexit.loopexit

.loopexit.loopexit:                               ; preds = %71, %65
  %.pn51.pn = phi { ptr, i32 } [ %.pn51, %71 ], [ %66, %65 ]
  call void @_ZNSt15__new_allocatorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %12) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %12) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #10
  br label %.loopexit

.loopexit:                                        ; preds = %.loopexit.loopexit, %63
  %.pn51.pn.pn = phi { ptr, i32 } [ %64, %63 ], [ %.pn51.pn, %.loopexit.loopexit ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %11) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %10) #10
  br label %171

72:                                               ; preds = %48, %40
  call void @llvm.lifetime.start.p0(i64 2, ptr nonnull %14) #10
  %73 = getelementptr inbounds i8, ptr %1, i64 88
  %74 = load i32, ptr %73, align 8, !tbaa !26
  %75 = trunc i32 %74 to i16
  store i16 %75, ptr %14, align 2, !tbaa !37
  %76 = load ptr, ptr %31, align 8, !tbaa !5
  invoke void @_ZN7Logging9LoggerRefC2ERKS0_(ptr noundef nonnull align 8 dereferenceable(40) %15, ptr noundef nonnull align 8 dereferenceable(40) %33)
          to label %77 unwind label %83

77:                                               ; preds = %72
  invoke void @_ZN14PaymentService12_GLOBAL__N_113validateMixinERKtRKN7DynexCN8CurrencyEN7Logging9LoggerRefE(ptr noundef nonnull align 2 dereferenceable(2) %14, ptr noundef nonnull align 8 dereferenceable(984) %76, ptr noundef nonnull %15)
          to label %78 unwind label %85

78:                                               ; preds = %77
  call void @_ZN7Logging9LoggerRefD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %15) #10
  call void @llvm.lifetime.end.p0(i64 2, ptr nonnull %14) #10
  %79 = load i32, ptr %73, align 8, !tbaa !26
  %.not.not = icmp eq i32 %79, 0
  br i1 %.not.not, label %93, label %80

80:                                               ; preds = %78
  call void @llvm.lifetime.start.p0(i64 432, ptr nonnull %16) #10
  invoke void @_ZNK7Logging9LoggerRefclENS_5LevelERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%"class.Logging::LoggerMessage") align 8 %16, ptr noundef nonnull align 8 dereferenceable(40) %33, i32 noundef 2, ptr noundef nonnull align 8 dereferenceable(32) @_ZN7Logging13BRIGHT_YELLOWB5cxx11E)
          to label %81 unwind label %88

81:                                               ; preds = %80
  %82 = invoke noundef nonnull align 8 dereferenceable(161) ptr @_ZStlsIN7Logging13LoggerMessageEA49_cEOT_S4_RKT0_(ptr noundef nonnull align 8 dereferenceable(161) %16, ptr noundef nonnull align 1 dereferenceable(49) @.str.110)
          to label %148 unwind label %90

83:                                               ; preds = %72
  %84 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt12system_error
          catch ptr @_ZTISt9exception
  br label %87

85:                                               ; preds = %77
  %86 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt12system_error
          catch ptr @_ZTISt9exception
  call void @_ZN7Logging9LoggerRefD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %15) #10
  br label %87

87:                                               ; preds = %85, %83
  %.pn55 = phi { ptr, i32 } [ %86, %85 ], [ %84, %83 ]
  call void @llvm.lifetime.end.p0(i64 2, ptr nonnull %14) #10
  br label %171

88:                                               ; preds = %80
  %89 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt12system_error
          catch ptr @_ZTISt9exception
  br label %92

90:                                               ; preds = %81
  %91 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt12system_error
          catch ptr @_ZTISt9exception
  call void @_ZN7Logging13LoggerMessageD1Ev(ptr noundef nonnull align 8 dereferenceable(161) %16) #10
  br label %92

92:                                               ; preds = %90, %88
  %.pn63 = phi { ptr, i32 } [ %91, %90 ], [ %89, %88 ]
  call void @llvm.lifetime.end.p0(i64 432, ptr nonnull %16) #10
  br label %171

93:                                               ; preds = %78
  call void @llvm.lifetime.start.p0(i64 176, ptr nonnull %17) #10
  call void @_ZN7DynexCN21TransactionParametersC2Ev(ptr noundef nonnull align 8 dereferenceable(176) %17) #10
  %94 = getelementptr inbounds i8, ptr %1, i64 128
  %95 = call noundef zeroext i1 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(32) %94) #10
  br i1 %95, label %100, label %96

96:                                               ; preds = %93
  %97 = getelementptr inbounds i8, ptr %17, i64 64
  invoke void @_ZN14PaymentService12_GLOBAL__N_119addPaymentIdToExtraERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERS6_(ptr noundef nonnull align 8 dereferenceable(32) %94, ptr noundef nonnull align 8 dereferenceable(32) %97)
          to label %107 unwind label %98

98:                                               ; preds = %110, %107, %96
  %99 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt12system_error
          catch ptr @_ZTISt9exception
  br label %170

100:                                              ; preds = %93
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %18) #10
  %101 = getelementptr inbounds i8, ptr %1, i64 96
  invoke void @_ZN14PaymentService12_GLOBAL__N_134getValidatedTransactionExtraStringERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %18, ptr noundef nonnull align 8 dereferenceable(32) %101)
          to label %102 unwind label %105

102:                                              ; preds = %100
  %103 = getelementptr inbounds i8, ptr %17, i64 64
  %104 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(32) %103, ptr noundef nonnull align 8 dereferenceable(32) %18) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %18) #10
  br label %107

105:                                              ; preds = %100
  %106 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt12system_error
          catch ptr @_ZTISt9exception
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %18) #10
  br label %170

107:                                              ; preds = %96, %102
  %108 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EEaSERKS7_(ptr noundef nonnull align 8 dereferenceable(24) %17, ptr noundef nonnull align 8 dereferenceable(24) %1)
          to label %109 unwind label %98

109:                                              ; preds = %107
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %19) #10
  invoke void @_ZN14PaymentService12_GLOBAL__N_136convertWalletRpcOrdersToWalletOrdersERKSt6vectorINS_14WalletRpcOrderESaIS2_EE(ptr dead_on_unwind nonnull writable sret(%"class.std::vector.302") align 8 %19, ptr noundef nonnull align 8 dereferenceable(24) %36)
          to label %110 unwind label %153

110:                                              ; preds = %109
  %111 = getelementptr inbounds i8, ptr %17, i64 24
  %112 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIN7DynexCN11WalletOrderESaIS1_EEaSEOS3_(ptr noundef nonnull align 8 dereferenceable(24) %111, ptr noundef nonnull align 8 dereferenceable(24) %19) #10
  call void @_ZNSt6vectorIN7DynexCN11WalletOrderESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %19) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %19) #10
  %113 = getelementptr inbounds i8, ptr %1, i64 80
  %114 = load i64, ptr %113, align 8, !tbaa !39
  %115 = getelementptr inbounds i8, ptr %17, i64 48
  store i64 %114, ptr %115, align 8, !tbaa !40
  %116 = load i32, ptr %73, align 8, !tbaa !26
  %117 = zext i32 %116 to i64
  %118 = getelementptr inbounds i8, ptr %17, i64 56
  store i64 %117, ptr %118, align 8, !tbaa !47
  %119 = getelementptr inbounds i8, ptr %1, i64 160
  %120 = load i64, ptr %119, align 8, !tbaa !48
  %121 = getelementptr inbounds i8, ptr %17, i64 96
  store i64 %120, ptr %121, align 8, !tbaa !49
  %122 = getelementptr inbounds i8, ptr %17, i64 144
  %123 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %122, ptr noundef nonnull align 8 dereferenceable(32) %41)
          to label %124 unwind label %98

124:                                              ; preds = %110
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %20) #10
  %125 = getelementptr inbounds i8, ptr %0, i64 16
  %126 = load ptr, ptr %125, align 8, !tbaa !50
  %127 = load ptr, ptr %126, align 8, !tbaa !51
  %128 = getelementptr inbounds i8, ptr %127, i64 408
  %129 = load ptr, ptr %128, align 8
  %130 = invoke noundef i64 %129(ptr noundef nonnull align 8 dereferenceable(8) %126, ptr noundef nonnull align 8 dereferenceable(176) %17, ptr noundef nonnull align 1 dereferenceable(32) %20)
          to label %131 unwind label %155

131:                                              ; preds = %124
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %21) #10
  call void @llvm.lifetime.start.p0(i64 160, ptr nonnull %22) #10
  %132 = load ptr, ptr %125, align 8, !tbaa !50
  %133 = load ptr, ptr %132, align 8, !tbaa !51
  %134 = getelementptr inbounds i8, ptr %133, i64 280
  %135 = load ptr, ptr %134, align 8
  invoke void %135(ptr dead_on_unwind nonnull writable sret(%"struct.DynexCN::WalletTransaction") align 8 %22, ptr noundef nonnull align 8 dereferenceable(8) %132, i64 noundef %130)
          to label %136 unwind label %157

136:                                              ; preds = %131
  %137 = getelementptr inbounds i8, ptr %22, i64 20
  invoke void @_ZN6Common8podToHexIN6Crypto4HashEEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKT_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %21, ptr noundef nonnull align 1 dereferenceable(32) %137)
          to label %138 unwind label %159

138:                                              ; preds = %136
  %139 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(32) %2, ptr noundef nonnull align 8 dereferenceable(32) %21) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #10
  call void @_ZN7DynexCN17WalletTransactionD2Ev(ptr noundef nonnull align 8 dereferenceable(153) %22) #10
  call void @llvm.lifetime.end.p0(i64 160, ptr nonnull %22) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %21) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %23) #10
  invoke void @_ZN6Common8podToHexIN6Crypto9SecretKeyEEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKT_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %23, ptr noundef nonnull align 1 dereferenceable(32) %20)
          to label %140 unwind label %162

140:                                              ; preds = %138
  %141 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(32) %3, ptr noundef nonnull align 8 dereferenceable(32) %23) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %23) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %23) #10
  call void @llvm.lifetime.start.p0(i64 432, ptr nonnull %24) #10
  invoke void @_ZNK7Logging9LoggerRefclENS_5LevelERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%"class.Logging::LoggerMessage") align 8 %24, ptr noundef nonnull align 8 dereferenceable(40) %33, i32 noundef 4, ptr noundef nonnull align 8 dereferenceable(32) @_ZN7Logging7DEFAULTB5cxx11E)
          to label %142 unwind label %164

142:                                              ; preds = %140
  %143 = invoke noundef nonnull align 8 dereferenceable(161) ptr @_ZStlsIN7Logging13LoggerMessageEA13_cEOT_S4_RKT0_(ptr noundef nonnull align 8 dereferenceable(161) %24, ptr noundef nonnull align 1 dereferenceable(13) @.str.97)
          to label %144 unwind label %166

144:                                              ; preds = %142
  %145 = invoke noundef nonnull align 8 dereferenceable(161) ptr @_ZStlsIN7Logging13LoggerMessageENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEOT_S9_RKT0_(ptr noundef nonnull align 8 dereferenceable(161) %143, ptr noundef nonnull align 8 dereferenceable(32) %2)
          to label %146 unwind label %166

146:                                              ; preds = %144
  %147 = invoke noundef nonnull align 8 dereferenceable(161) ptr @_ZStlsIN7Logging13LoggerMessageEA15_cEOT_S4_RKT0_(ptr noundef nonnull align 8 dereferenceable(161) %145, ptr noundef nonnull align 1 dereferenceable(15) @.str.111)
          to label %223 unwind label %166

148:                                              ; preds = %81
  call void @_ZN7Logging13LoggerMessageD1Ev(ptr noundef nonnull align 8 dereferenceable(161) %16) #10
  call void @llvm.lifetime.end.p0(i64 432, ptr nonnull %16) #10
  %149 = call { i32, ptr } @_Z15make_error_codeN7DynexCN5error16WalletErrorCodesE(i32 noundef 5)
  %150 = extractvalue { i32, ptr } %149, 0
  store i32 %150, ptr %5, align 8
  %151 = getelementptr inbounds i8, ptr %5, i64 8
  %152 = extractvalue { i32, ptr } %149, 1
  store ptr %152, ptr %151, align 8
  call void @_ZN6System9EventLockD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %6) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #10
  br label %224

153:                                              ; preds = %109
  %154 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt12system_error
          catch ptr @_ZTISt9exception
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %19) #10
  br label %170

155:                                              ; preds = %124
  %156 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt12system_error
          catch ptr @_ZTISt9exception
  br label %169

157:                                              ; preds = %131
  %158 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt12system_error
          catch ptr @_ZTISt9exception
  br label %161

159:                                              ; preds = %136
  %160 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt12system_error
          catch ptr @_ZTISt9exception
  call void @_ZN7DynexCN17WalletTransactionD2Ev(ptr noundef nonnull align 8 dereferenceable(153) %22) #10
  br label %161

161:                                              ; preds = %159, %157
  %.pn57 = phi { ptr, i32 } [ %160, %159 ], [ %158, %157 ]
  call void @llvm.lifetime.end.p0(i64 160, ptr nonnull %22) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %21) #10
  br label %169

162:                                              ; preds = %138
  %163 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt12system_error
          catch ptr @_ZTISt9exception
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %23) #10
  br label %169

164:                                              ; preds = %140
  %165 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt12system_error
          catch ptr @_ZTISt9exception
  br label %168

166:                                              ; preds = %146, %144, %142
  %167 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt12system_error
          catch ptr @_ZTISt9exception
  call void @_ZN7Logging13LoggerMessageD1Ev(ptr noundef nonnull align 8 dereferenceable(161) %24) #10
  br label %168

168:                                              ; preds = %166, %164
  %.pn59 = phi { ptr, i32 } [ %167, %166 ], [ %165, %164 ]
  call void @llvm.lifetime.end.p0(i64 432, ptr nonnull %24) #10
  br label %169

169:                                              ; preds = %168, %162, %161, %155
  %.pn59.pn = phi { ptr, i32 } [ %.pn59, %168 ], [ %163, %162 ], [ %.pn57, %161 ], [ %156, %155 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %20) #10
  br label %170

170:                                              ; preds = %169, %153, %105, %98
  %.pn59.pn.pn = phi { ptr, i32 } [ %.pn59.pn, %169 ], [ %99, %98 ], [ %154, %153 ], [ %106, %105 ]
  call void @_ZN7DynexCN21TransactionParametersD2Ev(ptr noundef nonnull align 8 dereferenceable(176) %17) #10
  call void @llvm.lifetime.end.p0(i64 176, ptr nonnull %17) #10
  br label %171

171:                                              ; preds = %170, %92, %87, %.loopexit, %62, %53, %51
  %.pn63.pn = phi { ptr, i32 } [ %.pn63, %92 ], [ %.pn59.pn.pn, %170 ], [ %.pn55, %87 ], [ %.pn51.pn.pn, %.loopexit ], [ %.pn.pn, %62 ], [ %54, %53 ], [ %52, %51 ]
  call void @_ZN6System9EventLockD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %6) #10
  br label %172

172:                                              ; preds = %171, %49
  %.pn63.pn.pn = phi { ptr, i32 } [ %.pn63.pn, %171 ], [ %50, %49 ]
  %.12 = extractvalue { ptr, i32 } %.pn63.pn.pn, 0
  %.1241 = extractvalue { ptr, i32 } %.pn63.pn.pn, 1
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #10
  %173 = call i32 @llvm.eh.typeid.for.p0(ptr nonnull @_ZTISt12system_error) #10
  %174 = icmp eq i32 %.1241, %173
  br i1 %174, label %175, label %188

175:                                              ; preds = %172
  %176 = call ptr @__cxa_begin_catch(ptr %.12) #10
  call void @llvm.lifetime.start.p0(i64 432, ptr nonnull %27) #10
  %177 = getelementptr inbounds i8, ptr %0, i64 56
  invoke void @_ZNK7Logging9LoggerRefclENS_5LevelERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%"class.Logging::LoggerMessage") align 8 %27, ptr noundef nonnull align 8 dereferenceable(40) %177, i32 noundef 2, ptr noundef nonnull align 8 dereferenceable(32) @_ZN7Logging13BRIGHT_YELLOWB5cxx11E)
          to label %178 unwind label %215

178:                                              ; preds = %175
  %179 = invoke noundef nonnull align 8 dereferenceable(161) ptr @_ZStlsIN7Logging13LoggerMessageEA34_cEOT_S4_RKT0_(ptr noundef nonnull align 8 dereferenceable(161) %27, ptr noundef nonnull align 1 dereferenceable(34) @.str.112)
          to label %180 unwind label %217

180:                                              ; preds = %178
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %28) #10
  %181 = load ptr, ptr %176, align 8, !tbaa !51
  %182 = getelementptr inbounds i8, ptr %181, i64 16
  %183 = load ptr, ptr %182, align 8
  %184 = call noundef ptr %183(ptr noundef nonnull align 8 dereferenceable(16) %176) #10
  store ptr %184, ptr %28, align 8, !tbaa !53
  %185 = invoke noundef nonnull align 8 dereferenceable(161) ptr @_ZStlsIN7Logging13LoggerMessageEPKcEOT_S5_RKT0_(ptr noundef nonnull align 8 dereferenceable(161) %179, ptr noundef nonnull align 8 dereferenceable(8) %28)
          to label %186 unwind label %219

186:                                              ; preds = %180
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %28) #10
  call void @_ZN7Logging13LoggerMessageD1Ev(ptr noundef nonnull align 8 dereferenceable(161) %27) #10
  call void @llvm.lifetime.end.p0(i64 432, ptr nonnull %27) #10
  %187 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNKSt12system_error4codeEv(ptr noundef nonnull align 8 dereferenceable(32) %176) #10
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %5, ptr noundef nonnull align 8 dereferenceable(16) %187, i64 16, i1 false), !tbaa.struct !54
  call void @__cxa_end_catch()
  br label %224

188:                                              ; preds = %172
  %189 = call i32 @llvm.eh.typeid.for.p0(ptr nonnull @_ZTISt9exception) #10
  %190 = icmp eq i32 %.1241, %189
  br i1 %190, label %191, label %225

191:                                              ; preds = %188
  %192 = call ptr @__cxa_begin_catch(ptr %.12) #10
  call void @llvm.lifetime.start.p0(i64 432, ptr nonnull %25) #10
  %193 = getelementptr inbounds i8, ptr %0, i64 56
  invoke void @_ZNK7Logging9LoggerRefclENS_5LevelERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%"class.Logging::LoggerMessage") align 8 %25, ptr noundef nonnull align 8 dereferenceable(40) %193, i32 noundef 2, ptr noundef nonnull align 8 dereferenceable(32) @_ZN7Logging13BRIGHT_YELLOWB5cxx11E)
          to label %194 unwind label %207

194:                                              ; preds = %191
  %195 = invoke noundef nonnull align 8 dereferenceable(161) ptr @_ZStlsIN7Logging13LoggerMessageEA34_cEOT_S4_RKT0_(ptr noundef nonnull align 8 dereferenceable(161) %25, ptr noundef nonnull align 1 dereferenceable(34) @.str.112)
          to label %196 unwind label %209

196:                                              ; preds = %194
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %26) #10
  %197 = load ptr, ptr %192, align 8, !tbaa !51
  %198 = getelementptr inbounds i8, ptr %197, i64 16
  %199 = load ptr, ptr %198, align 8
  %200 = call noundef ptr %199(ptr noundef nonnull align 8 dereferenceable(8) %192) #10
  store ptr %200, ptr %26, align 8, !tbaa !53
  %201 = invoke noundef nonnull align 8 dereferenceable(161) ptr @_ZStlsIN7Logging13LoggerMessageEPKcEOT_S5_RKT0_(ptr noundef nonnull align 8 dereferenceable(161) %195, ptr noundef nonnull align 8 dereferenceable(8) %26)
          to label %202 unwind label %211

202:                                              ; preds = %196
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) #10
  call void @_ZN7Logging13LoggerMessageD1Ev(ptr noundef nonnull align 8 dereferenceable(161) %25) #10
  call void @llvm.lifetime.end.p0(i64 432, ptr nonnull %25) #10
  %203 = call { i32, ptr } @_Z15make_error_codeN7DynexCN5error16WalletErrorCodesE(i32 noundef 5)
  %204 = extractvalue { i32, ptr } %203, 0
  store i32 %204, ptr %5, align 8
  %205 = getelementptr inbounds i8, ptr %5, i64 8
  %206 = extractvalue { i32, ptr } %203, 1
  store ptr %206, ptr %205, align 8
  call void @__cxa_end_catch()
  br label %224

207:                                              ; preds = %191
  %208 = landingpad { ptr, i32 }
          cleanup
  br label %214

209:                                              ; preds = %194
  %210 = landingpad { ptr, i32 }
          cleanup
  br label %213

211:                                              ; preds = %196
  %212 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) #10
  br label %213

213:                                              ; preds = %211, %209
  %.pn67 = phi { ptr, i32 } [ %212, %211 ], [ %210, %209 ]
  call void @_ZN7Logging13LoggerMessageD1Ev(ptr noundef nonnull align 8 dereferenceable(161) %25) #10
  br label %214

214:                                              ; preds = %213, %207
  %.pn67.pn = phi { ptr, i32 } [ %.pn67, %213 ], [ %208, %207 ]
  call void @llvm.lifetime.end.p0(i64 432, ptr nonnull %25) #10
  invoke void @__cxa_end_catch()
          to label %225 unwind label %226

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

217:                                              ; preds = %178
  %218 = landingpad { ptr, i32 }
          cleanup
  br label %221

219:                                              ; preds = %180
  %220 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %28) #10
  br label %221

221:                                              ; preds = %219, %217
  %.pn70 = phi { ptr, i32 } [ %220, %219 ], [ %218, %217 ]
  call void @_ZN7Logging13LoggerMessageD1Ev(ptr noundef nonnull align 8 dereferenceable(161) %27) #10
  br label %222

222:                                              ; preds = %221, %215
  %.pn70.pn = phi { ptr, i32 } [ %.pn70, %221 ], [ %216, %215 ]
  call void @llvm.lifetime.end.p0(i64 432, ptr nonnull %27) #10
  invoke void @__cxa_end_catch()
          to label %225 unwind label %226

223:                                              ; preds = %146
  call void @_ZN7Logging13LoggerMessageD1Ev(ptr noundef nonnull align 8 dereferenceable(161) %24) #10
  call void @llvm.lifetime.end.p0(i64 432, ptr nonnull %24) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %20) #10
  call void @_ZN7DynexCN21TransactionParametersD2Ev(ptr noundef nonnull align 8 dereferenceable(176) %17) #10
  call void @llvm.lifetime.end.p0(i64 176, ptr nonnull %17) #10
  call void @_ZN6System9EventLockD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %6) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #10
  call void @_ZNSt10error_codeC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %5) #10
  br label %224

224:                                              ; preds = %148, %223, %202, %186
  %.fca.0.load = load i32, ptr %5, align 8
  %.fca.0.insert = insertvalue { i32, ptr } poison, i32 %.fca.0.load, 0
  %.fca.1.gep = getelementptr inbounds i8, ptr %5, i64 8
  %.fca.1.load = load ptr, ptr %.fca.1.gep, align 8
  %.fca.1.insert = insertvalue { i32, ptr } %.fca.0.insert, ptr %.fca.1.load, 1
  ret { i32, ptr } %.fca.1.insert

225:                                              ; preds = %222, %214, %188
  %.merged = phi { ptr, i32 } [ %.pn63.pn.pn, %188 ], [ %.pn67.pn, %214 ], [ %.pn70.pn, %222 ]
  resume { ptr, i32 } %.merged

226:                                              ; preds = %222, %214
  %227 = landingpad { ptr, i32 }
          catch ptr null
  %228 = extractvalue { ptr, i32 } %227, 0
  call void @__clang_call_terminate(ptr %228) #11
  unreachable
}

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN14PaymentService12_GLOBAL__N_127collectDestinationAddressesB5cxx11ERKSt6vectorINS_14WalletRpcOrderESaIS2_EE(ptr dead_on_unwind noalias writable sret(%"class.std::vector") align 8, ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #4

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

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

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

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN14PaymentService12_GLOBAL__N_113validateMixinERKtRKN7DynexCN8CurrencyEN7Logging9LoggerRefE(ptr noundef nonnull align 2 dereferenceable(2), ptr noundef nonnull align 8 dereferenceable(984), ptr noundef) local_unnamed_addr #4

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

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN14PaymentService12_GLOBAL__N_119addPaymentIdToExtraERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERS6_(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #4

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

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

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN14PaymentService12_GLOBAL__N_136convertWalletRpcOrdersToWalletOrdersERKSt6vectorINS_14WalletRpcOrderESaIS2_EE(ptr dead_on_unwind noalias writable sret(%"class.std::vector.302") align 8, ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #4

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN7DynexCN21TransactionParametersD2Ev(ptr noundef nonnull align 8 dereferenceable(176)) unnamed_addr #8 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 = { noinline noreturn nounwind uwtable "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #7 = { inlinehint mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #8 = { 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 #9 = { nofree nosync nounwind memory(none) }
attributes #10 = { nounwind }
attributes #11 = { noreturn nounwind }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !7, i64 8}
!6 = !{!"_ZTSN14PaymentService13WalletServiceE", !7, i64 8, !7, i64 16, !7, i64 24, !7, i64 32, !7, i64 40, !10, i64 48, !11, i64 56, !7, i64 96, !15, i64 104, !16, i64 136, !18, i64 176}
!7 = !{!"any pointer", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C++ TBAA"}
!10 = !{!"bool", !8, i64 0}
!11 = !{!"_ZTSN7Logging9LoggerRefE", !7, i64 0, !12, i64 8}
!12 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !13, i64 0, !14, i64 8, !8, i64 16}
!13 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !7, i64 0}
!14 = !{!"long", !8, i64 0}
!15 = !{!"_ZTSN6System5EventE", !7, i64 0, !10, i64 8, !7, i64 16, !7, i64 24}
!16 = !{!"_ZTSN6System12ContextGroupE", !7, i64 0, !17, i64 8}
!17 = !{!"_ZTSN6System18NativeContextGroupE", !7, i64 0, !7, i64 8, !7, i64 16, !7, i64 24}
!18 = !{!"_ZTSSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEmSt4lessIS5_ESaISt4pairIKS5_mEEE", !19, i64 0}
!19 = !{!"_ZTSSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_mESt10_Select1stIS8_ESt4lessIS5_ESaIS8_EE", !20, i64 0}
!20 = !{!"_ZTSNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_mESt10_Select1stIS8_ESt4lessIS5_ESaIS8_EE13_Rb_tree_implISC_Lb1EEE", !21, i64 0, !23, i64 8}
!21 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEE", !22, i64 0}
!22 = !{!"_ZTSSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE"}
!23 = !{!"_ZTSSt15_Rb_tree_header", !24, i64 0, !14, i64 32}
!24 = !{!"_ZTSSt18_Rb_tree_node_base", !25, i64 0, !7, i64 8, !7, i64 16, !7, i64 24}
!25 = !{!"_ZTSSt14_Rb_tree_color", !8, i64 0}
!26 = !{!27, !36, i64 88}
!27 = !{!"_ZTSN14PaymentService15SendTransaction7RequestE", !28, i64 0, !32, i64 24, !12, i64 48, !14, i64 80, !36, i64 88, !12, i64 96, !12, i64 128, !14, i64 160}
!28 = !{!"_ZTSSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE", !29, i64 0}
!29 = !{!"_ZTSSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE", !30, i64 0}
!30 = !{!"_ZTSNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12_Vector_implE", !31, i64 0}
!31 = !{!"_ZTSNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE17_Vector_impl_dataE", !7, i64 0, !7, i64 8, !7, i64 16}
!32 = !{!"_ZTSSt6vectorIN14PaymentService14WalletRpcOrderESaIS1_EE", !33, i64 0}
!33 = !{!"_ZTSSt12_Vector_baseIN14PaymentService14WalletRpcOrderESaIS1_EE", !34, i64 0}
!34 = !{!"_ZTSNSt12_Vector_baseIN14PaymentService14WalletRpcOrderESaIS1_EE12_Vector_implE", !35, i64 0}
!35 = !{!"_ZTSNSt12_Vector_baseIN14PaymentService14WalletRpcOrderESaIS1_EE17_Vector_impl_dataE", !7, i64 0, !7, i64 8, !7, i64 16}
!36 = !{!"int", !8, i64 0}
!37 = !{!38, !38, i64 0}
!38 = !{!"short", !8, i64 0}
!39 = !{!27, !14, i64 80}
!40 = !{!41, !14, i64 48}
!41 = !{!"_ZTSN7DynexCN21TransactionParametersE", !28, i64 0, !42, i64 24, !14, i64 48, !14, i64 56, !12, i64 64, !14, i64 96, !46, i64 104, !12, i64 144}
!42 = !{!"_ZTSSt6vectorIN7DynexCN11WalletOrderESaIS1_EE", !43, i64 0}
!43 = !{!"_ZTSSt12_Vector_baseIN7DynexCN11WalletOrderESaIS1_EE", !44, i64 0}
!44 = !{!"_ZTSNSt12_Vector_baseIN7DynexCN11WalletOrderESaIS1_EE12_Vector_implE", !45, i64 0}
!45 = !{!"_ZTSNSt12_Vector_baseIN7DynexCN11WalletOrderESaIS1_EE17_Vector_impl_dataE", !7, i64 0, !7, i64 8, !7, i64 16}
!46 = !{!"_ZTSN7DynexCN16DonationSettingsE", !12, i64 0, !14, i64 32}
!47 = !{!41, !14, i64 56}
!48 = !{!27, !14, i64 160}
!49 = !{!41, !14, i64 96}
!50 = !{!6, !7, i64 16}
!51 = !{!52, !52, i64 0}
!52 = !{!"vtable pointer", !9, i64 0}
!53 = !{!7, !7, i64 0}
!54 = !{i64 0, i64 4, !55, i64 8, i64 8, !53}
!55 = !{!36, !36, i64 0}


; Effective O3 passes: EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,LoopSimplifyPass,SROAPass,SimplifyCFGPass