; LLVM IR from dynexcoin/Dynex :: src/Wallet (WalletRpcServer)

; 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::__cxx11::list.128" = type { %"class.std::__cxx11::_List_base.129" }
%"class.std::__cxx11::_List_base.129" = type { %"struct.std::__cxx11::_List_base<DynexCN::TransactionOutputInformation, std::allocator<DynexCN::TransactionOutputInformation>>::_List_impl" }
%"struct.std::__cxx11::_List_base<DynexCN::TransactionOutputInformation, std::allocator<DynexCN::TransactionOutputInformation>>::_List_impl" = type { %"struct.std::__detail::_List_node_header" }
%"struct.std::__detail::_List_node_header" = type { %"struct.std::__detail::_List_node_base", i64 }
%"struct.std::__detail::_List_node_base" = type { ptr, ptr }
%"class.DynexCN::WalletHelper::SendCompleteResultObserver" = type { %"class.DynexCN::IWalletLegacyObserver", %"class.std::mutex", %"class.std::condition_variable", %"class.std::map.103", %"class.std::error_code" }
%"class.DynexCN::IWalletLegacyObserver" = type { ptr }
%"class.std::mutex" = type { %"class.std::__mutex_base" }
%"class.std::__mutex_base" = type { %union.pthread_mutex_t }
%union.pthread_mutex_t = type { %struct.__pthread_mutex_s }
%struct.__pthread_mutex_s = type { i32, i32, i32, i32, i32, i16, i16, %struct.__pthread_internal_list }
%struct.__pthread_internal_list = type { ptr, ptr }
%"class.std::condition_variable" = type { %"class.std::__condvar" }
%"class.std::__condvar" = type { %union.pthread_cond_t }
%union.pthread_cond_t = type { %struct.__pthread_cond_s }
%struct.__pthread_cond_s = type { %union.__atomic_wide_counter, %union.__atomic_wide_counter, [2 x i32], [2 x i32], i32, i32, [2 x i32] }
%union.__atomic_wide_counter = type { i64 }
%"class.std::map.103" = type { %"class.std::_Rb_tree.104" }
%"class.std::_Rb_tree.104" = type { %"struct.std::_Rb_tree<unsigned long, std::pair<const unsigned long, std::error_code>, std::_Select1st<std::pair<const unsigned long, std::error_code>>, std::less<unsigned long>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<unsigned long, std::pair<const unsigned long, std::error_code>, std::_Select1st<std::pair<const unsigned long, std::error_code>>, std::less<unsigned long>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"struct.std::_Rb_tree_header" = type { %"struct.std::_Rb_tree_node_base", i64 }
%"struct.std::_Rb_tree_node_base" = type { i32, ptr, ptr, ptr }
%"class.std::error_code" = type { i32, ptr }
%"class.DynexCN::WalletHelper::IWalletRemoveObserverGuard" = type <{ ptr, ptr, i8, [7 x i8] }>
%"struct.DynexCN::WalletLegacyTransaction" = type <{ i64, i64, i64, i64, i64, i64, %"struct.Crypto::Hash", %"class.boost::optional.109", i8, [2 x i8], i32, i64, %"class.std::__cxx11::basic_string", i8, [7 x i8] }>
%"struct.Crypto::Hash" = type { [32 x i8] }
%"class.boost::optional.109" = type { %"class.boost::optional_detail::optional_base.110" }
%"class.boost::optional_detail::optional_base.110" = type { i8, %"class.boost::optional_detail::aligned_storage.111" }
%"class.boost::optional_detail::aligned_storage.111" = 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.std::allocator" = type { i8 }
%"struct.Tools::wallet_rpc::COMMAND_RPC_SEND_FUSION::request" = type { i64, i64, i64 }
%"class.Tools::wallet_rpc_server" = type { %"class.DynexCN::HttpServer", %"class.Logging::LoggerRef", ptr, ptr, i16, %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", ptr, %"class.std::__cxx11::basic_string", ptr, %"class.System::Event" }
%"class.DynexCN::HttpServer" = type { ptr, ptr, %"class.System::ContextGroup", %"class.Logging::LoggerRef", %"class.System::TcpListener", %"class.std::unordered_set", %"class.std::__cxx11::basic_string" }
%"class.System::ContextGroup" = type { ptr, %"struct.System::NativeContextGroup" }
%"struct.System::NativeContextGroup" = type { ptr, ptr, ptr, ptr }
%"class.System::TcpListener" = type { ptr, i32, ptr }
%"class.std::unordered_set" = type { %"class.std::_Hashtable" }
%"class.std::_Hashtable" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"struct.std::__detail::_Hash_node_base" = type { ptr }
%"struct.std::__detail::_Prime_rehash_policy" = type { float, i64 }
%"class.Logging::LoggerRef" = type { ptr, %"class.std::__cxx11::basic_string" }
%"class.System::Event" = type { ptr, i8, ptr, ptr }
%"struct.Tools::wallet_rpc::COMMAND_RPC_SEND_FUSION::response" = type { %"class.std::__cxx11::basic_string" }

@_ZN7Logging7DEFAULTB5cxx11E = external global %"class.std::__cxx11::basic_string", align 8
@_ZTISt9exception = external constant ptr
@_ZTIN7DynexCN7JsonRpc12JsonRpcErrorE = external dso_local constant { ptr, ptr, ptr }, align 8
@.str.44 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.45 = external hidden unnamed_addr constant [17 x i8], align 1
@_ZTISt13runtime_error = external constant ptr
@_ZTISt12system_error = external constant ptr
@.str.74 = external hidden unnamed_addr constant [55 x i8], align 1
@.str.75 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.77 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.78 = external hidden unnamed_addr constant [67 x i8], align 1
@.str.79 = external hidden unnamed_addr constant [33 x i8], align 1

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

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

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

declare i32 @__gxx_personality_v0(...)

; Function Attrs: 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 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 nounwind uwtable
declare void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #3 align 2

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(32)) #3 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 uwtable
define dso_local noundef zeroext i1 @_ZN5Tools17wallet_rpc_server14on_send_fusionERKNS_10wallet_rpc23COMMAND_RPC_SEND_FUSION7requestERNS2_8responseE(ptr noundef nonnull align 8 dereferenceable(448) %0, ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef nonnull align 8 dereferenceable(32) %2) #4 align 2 personality ptr @__gxx_personality_v0 {
  %4 = alloca ptr, align 8
  %5 = alloca ptr, align 8
  %6 = alloca ptr, align 8
  %7 = alloca i64, align 8
  %8 = alloca %"class.Logging::LoggerMessage", align 8
  %9 = alloca ptr, align 8
  %10 = alloca i32, align 4
  %11 = alloca %"class.std::__cxx11::basic_string", align 8
  %12 = alloca %"class.std::__cxx11::basic_string", align 8
  %13 = alloca %"class.std::__cxx11::basic_string", align 8
  %14 = alloca %"class.std::__cxx11::basic_string", align 8
  %15 = alloca i1, align 1
  %16 = alloca %"class.std::__cxx11::basic_string", align 8
  %17 = alloca %"class.std::__cxx11::basic_string", align 8
  %18 = alloca %"class.std::__cxx11::basic_string", align 8
  %19 = alloca %"class.std::__cxx11::basic_string", align 8
  %20 = alloca %"class.std::__cxx11::basic_string", align 8
  %21 = alloca i1, align 1
  %22 = alloca i64, align 8
  %23 = alloca %"class.std::__cxx11::basic_string", align 8
  %24 = alloca %"class.std::__cxx11::basic_string", align 8
  %25 = alloca i1, align 1
  %26 = alloca %"class.std::__cxx11::list.128", align 8
  %27 = alloca %"class.std::__cxx11::basic_string", align 8
  %28 = alloca %"class.std::__cxx11::basic_string", align 8
  %29 = alloca i1, align 1
  %30 = alloca %"class.std::__cxx11::basic_string", align 8
  %31 = alloca %"class.DynexCN::WalletHelper::SendCompleteResultObserver", align 8
  %32 = alloca %"class.DynexCN::WalletHelper::IWalletRemoveObserverGuard", align 8
  %33 = alloca i64, align 8
  %34 = alloca %"class.std::error_code", align 8
  %35 = alloca %"class.std::error_code", align 8
  %36 = alloca %"struct.DynexCN::WalletLegacyTransaction", align 8
  %37 = alloca %"class.std::__cxx11::basic_string", align 8
  %38 = alloca ptr, align 8
  %39 = alloca %"class.std::__cxx11::basic_string", align 8
  %40 = alloca %"class.std::allocator", align 1
  %41 = alloca i1, align 1
  store ptr %0, ptr %4, align 8, !tbaa !5
  store ptr %1, ptr %5, align 8, !tbaa !5
  store ptr %2, ptr %6, align 8, !tbaa !5
  %42 = load ptr, ptr %4, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %7) #10
  store i64 4, ptr %7, align 8, !tbaa !9
  %43 = load ptr, ptr %5, align 8, !tbaa !5
  %44 = getelementptr inbounds %"struct.Tools::wallet_rpc::COMMAND_RPC_SEND_FUSION::request", ptr %43, i32 0, i32 0
  %45 = load i64, ptr %44, align 8, !tbaa !11
  %46 = getelementptr inbounds %"class.Tools::wallet_rpc_server", ptr %42, i32 0, i32 8
  %47 = load ptr, ptr %46, align 8, !tbaa !13
  %48 = call noundef i64 @_ZNK7DynexCN8Currency8minMixinEv(ptr noundef nonnull align 8 dereferenceable(984) %47)
  %49 = icmp ult i64 %45, %48
  br i1 %49, label %50, label %111

50:                                               ; preds = %3
  %51 = load ptr, ptr %5, align 8, !tbaa !5
  %52 = getelementptr inbounds %"struct.Tools::wallet_rpc::COMMAND_RPC_SEND_FUSION::request", ptr %51, i32 0, i32 0
  %53 = load i64, ptr %52, align 8, !tbaa !11
  %54 = icmp ne i64 %53, 0
  br i1 %54, label %55, label %111

55:                                               ; preds = %50
  call void @llvm.lifetime.start.p0(i64 432, ptr %8) #10
  %56 = getelementptr inbounds %"class.Tools::wallet_rpc_server", ptr %42, i32 0, i32 1
  call void @_ZNK7Logging9LoggerRefclENS_5LevelERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.Logging::LoggerMessage") align 8 %8, ptr noundef nonnull align 8 dereferenceable(40) %56, i32 noundef 1, ptr noundef nonnull align 8 dereferenceable(32) @_ZN7Logging7DEFAULTB5cxx11E)
  %57 = invoke noundef nonnull align 8 dereferenceable(161) ptr @_ZStlsIN7Logging13LoggerMessageEA17_cEOT_S4_RKT0_(ptr noundef nonnull align 8 dereferenceable(161) %8, ptr noundef nonnull align 1 dereferenceable(17) @.str.45)
          to label %58 unwind label %75

58:                                               ; preds = %55
  call void @llvm.lifetime.start.p0(i64 32, ptr %11) #10
  %59 = load ptr, ptr %5, align 8, !tbaa !5
  %60 = getelementptr inbounds %"struct.Tools::wallet_rpc::COMMAND_RPC_SEND_FUSION::request", ptr %59, i32 0, i32 0
  %61 = load i64, ptr %60, align 8, !tbaa !11
  invoke void @_ZNSt7__cxx119to_stringEm(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %11, i64 noundef %61)
          to label %62 unwind label %79

62:                                               ; preds = %58
  %63 = invoke noundef nonnull align 8 dereferenceable(161) ptr @_ZStlsIN7Logging13LoggerMessageENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEOT_S9_RKT0_(ptr noundef nonnull align 8 dereferenceable(161) %57, ptr noundef nonnull align 8 dereferenceable(32) %11)
          to label %64 unwind label %83

64:                                               ; preds = %62
  %65 = invoke noundef nonnull align 8 dereferenceable(161) ptr @_ZStlsIN7Logging13LoggerMessageEA12_cEOT_S4_RKT0_(ptr noundef nonnull align 8 dereferenceable(161) %63, ptr noundef nonnull align 1 dereferenceable(12) @.str.44)
          to label %66 unwind label %83

66:                                               ; preds = %64
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %11) #10
  call void @_ZN7Logging13LoggerMessageD1Ev(ptr noundef nonnull align 8 dereferenceable(161) %8) #10
  call void @llvm.lifetime.end.p0(i64 432, ptr %8) #10
  store i1 true, ptr %15, align 1
  %67 = call ptr @__cxa_allocate_exception(i64 48) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr %12) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr %13) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr %14) #10
  %68 = load ptr, ptr %5, align 8, !tbaa !5
  %69 = getelementptr inbounds %"struct.Tools::wallet_rpc::COMMAND_RPC_SEND_FUSION::request", ptr %68, i32 0, i32 0
  %70 = load i64, ptr %69, align 8, !tbaa !11
  invoke void @_ZNSt7__cxx119to_stringEm(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %14, i64 noundef %70)
          to label %71 unwind label %89

71:                                               ; preds = %66
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_OS8_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %13, ptr noundef @.str.45, ptr noundef nonnull align 8 dereferenceable(32) %14)
          to label %72 unwind label %93

72:                                               ; preds = %71
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %12, ptr noundef nonnull align 8 dereferenceable(32) %13, ptr noundef @.str.44)
          to label %73 unwind label %97

73:                                               ; preds = %72
  invoke void @_ZN7DynexCN7JsonRpc12JsonRpcErrorC1EiRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(48) %67, i32 noundef -6, ptr noundef nonnull align 8 dereferenceable(32) %12)
          to label %74 unwind label %101

74:                                               ; preds = %73
  store i1 false, ptr %15, align 1
  invoke void @__cxa_throw(ptr %67, ptr @_ZTIN7DynexCN7JsonRpc12JsonRpcErrorE, ptr @_ZN7DynexCN7JsonRpc12JsonRpcErrorD2Ev) #11
          to label %397 unwind label %101

75:                                               ; preds = %55
  %76 = landingpad { ptr, i32 }
          cleanup
  %77 = extractvalue { ptr, i32 } %76, 0
  store ptr %77, ptr %9, align 8
  %78 = extractvalue { ptr, i32 } %76, 1
  store i32 %78, ptr %10, align 4
  br label %88

79:                                               ; preds = %58
  %80 = landingpad { ptr, i32 }
          cleanup
  %81 = extractvalue { ptr, i32 } %80, 0
  store ptr %81, ptr %9, align 8
  %82 = extractvalue { ptr, i32 } %80, 1
  store i32 %82, ptr %10, align 4
  br label %87

83:                                               ; preds = %64, %62
  %84 = landingpad { ptr, i32 }
          cleanup
  %85 = extractvalue { ptr, i32 } %84, 0
  store ptr %85, ptr %9, align 8
  %86 = extractvalue { ptr, i32 } %84, 1
  store i32 %86, ptr %10, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #10
  br label %87

87:                                               ; preds = %83, %79
  call void @llvm.lifetime.end.p0(i64 32, ptr %11) #10
  br label %88

88:                                               ; preds = %87, %75
  call void @_ZN7Logging13LoggerMessageD1Ev(ptr noundef nonnull align 8 dereferenceable(161) %8) #10
  call void @llvm.lifetime.end.p0(i64 432, ptr %8) #10
  br label %388

89:                                               ; preds = %66
  %90 = landingpad { ptr, i32 }
          cleanup
  %91 = extractvalue { ptr, i32 } %90, 0
  store ptr %91, ptr %9, align 8
  %92 = extractvalue { ptr, i32 } %90, 1
  store i32 %92, ptr %10, align 4
  br label %107

93:                                               ; preds = %71
  %94 = landingpad { ptr, i32 }
          cleanup
  %95 = extractvalue { ptr, i32 } %94, 0
  store ptr %95, ptr %9, align 8
  %96 = extractvalue { ptr, i32 } %94, 1
  store i32 %96, ptr %10, align 4
  br label %106

97:                                               ; preds = %72
  %98 = landingpad { ptr, i32 }
          cleanup
  %99 = extractvalue { ptr, i32 } %98, 0
  store ptr %99, ptr %9, align 8
  %100 = extractvalue { ptr, i32 } %98, 1
  store i32 %100, ptr %10, align 4
  br label %105

101:                                              ; preds = %74, %73
  %102 = landingpad { ptr, i32 }
          cleanup
  %103 = extractvalue { ptr, i32 } %102, 0
  store ptr %103, ptr %9, align 8
  %104 = extractvalue { ptr, i32 } %102, 1
  store i32 %104, ptr %10, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #10
  br label %105

105:                                              ; preds = %101, %97
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #10
  br label %106

106:                                              ; preds = %105, %93
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %14) #10
  br label %107

107:                                              ; preds = %106, %89
  call void @llvm.lifetime.end.p0(i64 32, ptr %14) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %13) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %12) #10
  %108 = load i1, ptr %15, align 1
  br i1 %108, label %109, label %110

109:                                              ; preds = %107
  call void @__cxa_free_exception(ptr %67) #10
  br label %110

110:                                              ; preds = %109, %107
  br label %388

111:                                              ; preds = %50, %3
  %112 = load ptr, ptr %5, align 8, !tbaa !5
  %113 = getelementptr inbounds %"struct.Tools::wallet_rpc::COMMAND_RPC_SEND_FUSION::request", ptr %112, i32 0, i32 1
  %114 = load i64, ptr %113, align 8, !tbaa !31
  %115 = getelementptr inbounds %"class.Tools::wallet_rpc_server", ptr %42, i32 0, i32 8
  %116 = load ptr, ptr %115, align 8, !tbaa !13
  %117 = call noundef i64 @_ZNK7DynexCN8Currency20defaultDustThresholdEv(ptr noundef nonnull align 8 dereferenceable(984) %116)
  %118 = icmp ule i64 %114, %117
  br i1 %118, label %119, label %171

119:                                              ; preds = %111
  store i1 true, ptr %21, align 1
  %120 = call ptr @__cxa_allocate_exception(i64 48) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr %16) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr %17) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr %18) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr %19) #10
  %121 = getelementptr inbounds %"class.Tools::wallet_rpc_server", ptr %42, i32 0, i32 8
  %122 = load ptr, ptr %121, align 8, !tbaa !13
  %123 = load ptr, ptr %5, align 8, !tbaa !5
  %124 = getelementptr inbounds %"struct.Tools::wallet_rpc::COMMAND_RPC_SEND_FUSION::request", ptr %123, i32 0, i32 1
  %125 = load i64, ptr %124, align 8, !tbaa !31
  invoke void @_ZNK7DynexCN8Currency12formatAmountB5cxx11Em(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %19, ptr noundef nonnull align 8 dereferenceable(984) %122, i64 noundef %125)
          to label %126 unwind label %139

126:                                              ; preds = %119
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_OS8_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %18, ptr noundef @.str.74, ptr noundef nonnull align 8 dereferenceable(32) %19)
          to label %127 unwind label %143

127:                                              ; preds = %126
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %17, ptr noundef nonnull align 8 dereferenceable(32) %18, ptr noundef @.str.75)
          to label %128 unwind label %147

128:                                              ; preds = %127
  call void @llvm.lifetime.start.p0(i64 32, ptr %20) #10
  %129 = getelementptr inbounds %"class.Tools::wallet_rpc_server", ptr %42, i32 0, i32 8
  %130 = load ptr, ptr %129, align 8, !tbaa !13
  %131 = getelementptr inbounds %"class.Tools::wallet_rpc_server", ptr %42, i32 0, i32 8
  %132 = load ptr, ptr %131, align 8, !tbaa !13
  %133 = invoke noundef i64 @_ZNK7DynexCN8Currency20defaultDustThresholdEv(ptr noundef nonnull align 8 dereferenceable(984) %132)
          to label %134 unwind label %151

134:                                              ; preds = %128
  %135 = add i64 %133, 1
  invoke void @_ZNK7DynexCN8Currency12formatAmountB5cxx11Em(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %20, ptr noundef nonnull align 8 dereferenceable(984) %130, i64 noundef %135)
          to label %136 unwind label %151

136:                                              ; preds = %134
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_S9_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %16, ptr noundef nonnull align 8 dereferenceable(32) %17, ptr noundef nonnull align 8 dereferenceable(32) %20)
          to label %137 unwind label %155

137:                                              ; preds = %136
  invoke void @_ZN7DynexCN7JsonRpc12JsonRpcErrorC1EiRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(48) %120, i32 noundef -1, ptr noundef nonnull align 8 dereferenceable(32) %16)
          to label %138 unwind label %159

138:                                              ; preds = %137
  store i1 false, ptr %21, align 1
  invoke void @__cxa_throw(ptr %120, ptr @_ZTIN7DynexCN7JsonRpc12JsonRpcErrorE, ptr @_ZN7DynexCN7JsonRpc12JsonRpcErrorD2Ev) #11
          to label %397 unwind label %159

139:                                              ; preds = %119
  %140 = landingpad { ptr, i32 }
          cleanup
  %141 = extractvalue { ptr, i32 } %140, 0
  store ptr %141, ptr %9, align 8
  %142 = extractvalue { ptr, i32 } %140, 1
  store i32 %142, ptr %10, align 4
  br label %167

143:                                              ; preds = %126
  %144 = landingpad { ptr, i32 }
          cleanup
  %145 = extractvalue { ptr, i32 } %144, 0
  store ptr %145, ptr %9, align 8
  %146 = extractvalue { ptr, i32 } %144, 1
  store i32 %146, ptr %10, align 4
  br label %166

147:                                              ; preds = %127
  %148 = landingpad { ptr, i32 }
          cleanup
  %149 = extractvalue { ptr, i32 } %148, 0
  store ptr %149, ptr %9, align 8
  %150 = extractvalue { ptr, i32 } %148, 1
  store i32 %150, ptr %10, align 4
  br label %165

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

155:                                              ; preds = %136
  %156 = landingpad { ptr, i32 }
          cleanup
  %157 = extractvalue { ptr, i32 } %156, 0
  store ptr %157, ptr %9, align 8
  %158 = extractvalue { ptr, i32 } %156, 1
  store i32 %158, ptr %10, align 4
  br label %163

159:                                              ; preds = %138, %137
  %160 = landingpad { ptr, i32 }
          cleanup
  %161 = extractvalue { ptr, i32 } %160, 0
  store ptr %161, ptr %9, align 8
  %162 = extractvalue { ptr, i32 } %160, 1
  store i32 %162, ptr %10, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %16) #10
  br label %163

163:                                              ; preds = %159, %155
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %20) #10
  br label %164

164:                                              ; preds = %163, %151
  call void @llvm.lifetime.end.p0(i64 32, ptr %20) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %17) #10
  br label %165

165:                                              ; preds = %164, %147
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #10
  br label %166

166:                                              ; preds = %165, %143
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #10
  br label %167

167:                                              ; preds = %166, %139
  call void @llvm.lifetime.end.p0(i64 32, ptr %19) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %18) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %17) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %16) #10
  %168 = load i1, ptr %21, align 1
  br i1 %168, label %169, label %170

169:                                              ; preds = %167
  call void @__cxa_free_exception(ptr %120) #10
  br label %170

170:                                              ; preds = %169, %167
  br label %388

171:                                              ; preds = %111
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #10
  %172 = getelementptr inbounds %"class.Tools::wallet_rpc_server", ptr %42, i32 0, i32 8
  %173 = load ptr, ptr %172, align 8, !tbaa !13
  %174 = getelementptr inbounds %"class.Tools::wallet_rpc_server", ptr %42, i32 0, i32 8
  %175 = load ptr, ptr %174, align 8, !tbaa !13
  %176 = call noundef i64 @_ZNK7DynexCN8Currency15fusionTxMaxSizeEv(ptr noundef nonnull align 8 dereferenceable(984) %175)
  %177 = load ptr, ptr %5, align 8, !tbaa !5
  %178 = getelementptr inbounds %"struct.Tools::wallet_rpc::COMMAND_RPC_SEND_FUSION::request", ptr %177, i32 0, i32 0
  %179 = load i64, ptr %178, align 8, !tbaa !11
  %180 = call noundef i64 @_ZNK7DynexCN8Currency31getApproximateMaximumInputCountEmmm(ptr noundef nonnull align 8 dereferenceable(984) %173, i64 noundef %176, i64 noundef 4, i64 noundef %179)
  store i64 %180, ptr %22, align 8, !tbaa !9
  %181 = load i64, ptr %22, align 8, !tbaa !9
  %182 = getelementptr inbounds %"class.Tools::wallet_rpc_server", ptr %42, i32 0, i32 8
  %183 = load ptr, ptr %182, align 8, !tbaa !13
  %184 = call noundef i64 @_ZNK7DynexCN8Currency21fusionTxMinInputCountEv(ptr noundef nonnull align 8 dereferenceable(984) %183)
  %185 = icmp ult i64 %181, %184
  br i1 %185, label %186, label %211

186:                                              ; preds = %171
  store i1 true, ptr %25, align 1
  %187 = call ptr @__cxa_allocate_exception(i64 48) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr %23) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr %24) #10
  %188 = load ptr, ptr %5, align 8, !tbaa !5
  %189 = getelementptr inbounds %"struct.Tools::wallet_rpc::COMMAND_RPC_SEND_FUSION::request", ptr %188, i32 0, i32 0
  %190 = load i64, ptr %189, align 8, !tbaa !11
  invoke void @_ZNSt7__cxx119to_stringEm(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %24, i64 noundef %190)
          to label %191 unwind label %194

191:                                              ; preds = %186
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_OS8_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %23, ptr noundef @.str.77, ptr noundef nonnull align 8 dereferenceable(32) %24)
          to label %192 unwind label %198

192:                                              ; preds = %191
  invoke void @_ZN7DynexCN7JsonRpc12JsonRpcErrorC1EiRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(48) %187, i32 noundef -6, ptr noundef nonnull align 8 dereferenceable(32) %23)
          to label %193 unwind label %202

193:                                              ; preds = %192
  store i1 false, ptr %25, align 1
  invoke void @__cxa_throw(ptr %187, ptr @_ZTIN7DynexCN7JsonRpc12JsonRpcErrorE, ptr @_ZN7DynexCN7JsonRpc12JsonRpcErrorD2Ev) #11
          to label %397 unwind label %202

194:                                              ; preds = %186
  %195 = landingpad { ptr, i32 }
          cleanup
  %196 = extractvalue { ptr, i32 } %195, 0
  store ptr %196, ptr %9, align 8
  %197 = extractvalue { ptr, i32 } %195, 1
  store i32 %197, ptr %10, align 4
  br label %207

198:                                              ; preds = %191
  %199 = landingpad { ptr, i32 }
          cleanup
  %200 = extractvalue { ptr, i32 } %199, 0
  store ptr %200, ptr %9, align 8
  %201 = extractvalue { ptr, i32 } %199, 1
  store i32 %201, ptr %10, align 4
  br label %206

202:                                              ; preds = %193, %192
  %203 = landingpad { ptr, i32 }
          cleanup
  %204 = extractvalue { ptr, i32 } %203, 0
  store ptr %204, ptr %9, align 8
  %205 = extractvalue { ptr, i32 } %203, 1
  store i32 %205, ptr %10, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %23) #10
  br label %206

206:                                              ; preds = %202, %198
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #10
  br label %207

207:                                              ; preds = %206, %194
  call void @llvm.lifetime.end.p0(i64 32, ptr %24) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %23) #10
  %208 = load i1, ptr %25, align 1
  br i1 %208, label %209, label %210

209:                                              ; preds = %207
  call void @__cxa_free_exception(ptr %187) #10
  br label %210

210:                                              ; preds = %209, %207
  br label %387

211:                                              ; preds = %171
  call void @llvm.lifetime.start.p0(i64 24, ptr %26) #10
  %212 = getelementptr inbounds %"class.Tools::wallet_rpc_server", ptr %42, i32 0, i32 2
  %213 = load ptr, ptr %212, align 8, !tbaa !32
  %214 = load ptr, ptr %5, align 8, !tbaa !5
  %215 = getelementptr inbounds %"struct.Tools::wallet_rpc::COMMAND_RPC_SEND_FUSION::request", ptr %214, i32 0, i32 1
  %216 = load i64, ptr %215, align 8, !tbaa !31
  %217 = getelementptr inbounds %"class.Tools::wallet_rpc_server", ptr %42, i32 0, i32 8
  %218 = load ptr, ptr %217, align 8, !tbaa !13
  %219 = invoke noundef i64 @_ZNK7DynexCN8Currency21fusionTxMinInputCountEv(ptr noundef nonnull align 8 dereferenceable(984) %218)
          to label %220 unwind label %240

220:                                              ; preds = %211
  %221 = load i64, ptr %22, align 8, !tbaa !9
  %222 = load ptr, ptr %213, align 8, !tbaa !33
  %223 = getelementptr inbounds ptr, ptr %222, i64 39
  %224 = load ptr, ptr %223, align 8
  invoke void %224(ptr dead_on_unwind writable sret(%"class.std::__cxx11::list.128") align 8 %26, ptr noundef nonnull align 8 dereferenceable(8) %213, i64 noundef %216, i64 noundef %219, i64 noundef %221)
          to label %225 unwind label %240

225:                                              ; preds = %220
  %226 = call noundef i64 @_ZNKSt7__cxx114listIN7DynexCN28TransactionOutputInformationESaIS2_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %26) #10
  %227 = getelementptr inbounds %"class.Tools::wallet_rpc_server", ptr %42, i32 0, i32 8
  %228 = load ptr, ptr %227, align 8, !tbaa !13
  %229 = invoke noundef i64 @_ZNK7DynexCN8Currency21fusionTxMinInputCountEv(ptr noundef nonnull align 8 dereferenceable(984) %228)
          to label %230 unwind label %244

230:                                              ; preds = %225
  %231 = icmp ult i64 %226, %229
  br i1 %231, label %232, label %265

232:                                              ; preds = %230
  store i1 true, ptr %29, align 1
  %233 = call ptr @__cxa_allocate_exception(i64 48) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr %27) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr %28) #10
  %234 = load ptr, ptr %5, align 8, !tbaa !5
  %235 = getelementptr inbounds %"struct.Tools::wallet_rpc::COMMAND_RPC_SEND_FUSION::request", ptr %234, i32 0, i32 1
  %236 = load i64, ptr %235, align 8, !tbaa !31
  invoke void @_ZNSt7__cxx119to_stringEm(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %28, i64 noundef %236)
          to label %237 unwind label %248

237:                                              ; preds = %232
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_OS8_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %27, ptr noundef @.str.78, ptr noundef nonnull align 8 dereferenceable(32) %28)
          to label %238 unwind label %252

238:                                              ; preds = %237
  invoke void @_ZN7DynexCN7JsonRpc12JsonRpcErrorC1EiRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(48) %233, i32 noundef -1, ptr noundef nonnull align 8 dereferenceable(32) %27)
          to label %239 unwind label %256

239:                                              ; preds = %238
  store i1 false, ptr %29, align 1
  invoke void @__cxa_throw(ptr %233, ptr @_ZTIN7DynexCN7JsonRpc12JsonRpcErrorE, ptr @_ZN7DynexCN7JsonRpc12JsonRpcErrorD2Ev) #11
          to label %397 unwind label %256

240:                                              ; preds = %220, %211
  %241 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9exception
  %242 = extractvalue { ptr, i32 } %241, 0
  store ptr %242, ptr %9, align 8
  %243 = extractvalue { ptr, i32 } %241, 1
  store i32 %243, ptr %10, align 4
  br label %357

244:                                              ; preds = %225
  %245 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9exception
  %246 = extractvalue { ptr, i32 } %245, 0
  store ptr %246, ptr %9, align 8
  %247 = extractvalue { ptr, i32 } %245, 1
  store i32 %247, ptr %10, align 4
  br label %356

248:                                              ; preds = %232
  %249 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9exception
  %250 = extractvalue { ptr, i32 } %249, 0
  store ptr %250, ptr %9, align 8
  %251 = extractvalue { ptr, i32 } %249, 1
  store i32 %251, ptr %10, align 4
  br label %261

252:                                              ; preds = %237
  %253 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9exception
  %254 = extractvalue { ptr, i32 } %253, 0
  store ptr %254, ptr %9, align 8
  %255 = extractvalue { ptr, i32 } %253, 1
  store i32 %255, ptr %10, align 4
  br label %260

256:                                              ; preds = %239, %238
  %257 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9exception
  %258 = extractvalue { ptr, i32 } %257, 0
  store ptr %258, ptr %9, align 8
  %259 = extractvalue { ptr, i32 } %257, 1
  store i32 %259, ptr %10, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %27) #10
  br label %260

260:                                              ; preds = %256, %252
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %28) #10
  br label %261

261:                                              ; preds = %260, %248
  call void @llvm.lifetime.end.p0(i64 32, ptr %28) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %27) #10
  %262 = load i1, ptr %29, align 1
  br i1 %262, label %263, label %264

263:                                              ; preds = %261
  call void @__cxa_free_exception(ptr %233) #10
  br label %264

264:                                              ; preds = %263, %261
  br label %356

265:                                              ; preds = %230
  call void @llvm.lifetime.start.p0(i64 32, ptr %30) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %30) #10
  call void @llvm.lifetime.start.p0(i64 160, ptr %31) #10
  call void @_ZN7DynexCN12WalletHelper26SendCompleteResultObserverC2Ev(ptr noundef nonnull align 8 dereferenceable(160) %31) #10
  call void @llvm.lifetime.start.p0(i64 24, ptr %32) #10
  %266 = getelementptr inbounds %"class.Tools::wallet_rpc_server", ptr %42, i32 0, i32 2
  %267 = load ptr, ptr %266, align 8, !tbaa !32
  invoke void @_ZN7DynexCN12WalletHelper26IWalletRemoveObserverGuardC1ERNS_13IWalletLegacyERNS_21IWalletLegacyObserverE(ptr noundef nonnull align 8 dereferenceable(17) %32, ptr noundef nonnull align 8 dereferenceable(8) %267, ptr noundef nonnull align 8 dereferenceable(8) %31)
          to label %268 unwind label %287

268:                                              ; preds = %265
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #10
  %269 = getelementptr inbounds %"class.Tools::wallet_rpc_server", ptr %42, i32 0, i32 2
  %270 = load ptr, ptr %269, align 8, !tbaa !32
  %271 = load ptr, ptr %5, align 8, !tbaa !5
  %272 = getelementptr inbounds %"struct.Tools::wallet_rpc::COMMAND_RPC_SEND_FUSION::request", ptr %271, i32 0, i32 0
  %273 = load i64, ptr %272, align 8, !tbaa !11
  %274 = load ptr, ptr %5, align 8, !tbaa !5
  %275 = getelementptr inbounds %"struct.Tools::wallet_rpc::COMMAND_RPC_SEND_FUSION::request", ptr %274, i32 0, i32 2
  %276 = load i64, ptr %275, align 8, !tbaa !35
  %277 = load ptr, ptr %270, align 8, !tbaa !33
  %278 = getelementptr inbounds ptr, ptr %277, i64 36
  %279 = load ptr, ptr %278, align 8
  %280 = invoke noundef i64 %279(ptr noundef nonnull align 8 dereferenceable(8) %270, ptr noundef nonnull align 8 dereferenceable(24) %26, i64 noundef 0, ptr noundef nonnull align 8 dereferenceable(32) %30, i64 noundef %273, i64 noundef %276)
          to label %281 unwind label %291

281:                                              ; preds = %268
  store i64 %280, ptr %33, align 8, !tbaa !9
  %282 = load i64, ptr %33, align 8, !tbaa !9
  %283 = icmp eq i64 %282, -1
  br i1 %283, label %284, label %299

284:                                              ; preds = %281
  %285 = call ptr @__cxa_allocate_exception(i64 16) #10
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %285, ptr noundef @.str.79)
          to label %286 unwind label %295

286:                                              ; preds = %284
  invoke void @__cxa_throw(ptr %285, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #11
          to label %397 unwind label %291

287:                                              ; preds = %265
  %288 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9exception
  %289 = extractvalue { ptr, i32 } %288, 0
  store ptr %289, ptr %9, align 8
  %290 = extractvalue { ptr, i32 } %288, 1
  store i32 %290, ptr %10, align 4
  br label %355

291:                                              ; preds = %286, %268
  %292 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9exception
  %293 = extractvalue { ptr, i32 } %292, 0
  store ptr %293, ptr %9, align 8
  %294 = extractvalue { ptr, i32 } %292, 1
  store i32 %294, ptr %10, align 4
  br label %354

295:                                              ; preds = %284
  %296 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9exception
  %297 = extractvalue { ptr, i32 } %296, 0
  store ptr %297, ptr %9, align 8
  %298 = extractvalue { ptr, i32 } %296, 1
  store i32 %298, ptr %10, align 4
  call void @__cxa_free_exception(ptr %285) #10
  br label %354

299:                                              ; preds = %281
  call void @llvm.lifetime.start.p0(i64 16, ptr %34) #10
  %300 = load i64, ptr %33, align 8, !tbaa !9
  %301 = invoke { i32, ptr } @_ZN7DynexCN12WalletHelper26SendCompleteResultObserver4waitEm(ptr noundef nonnull align 8 dereferenceable(160) %31, i64 noundef %300)
          to label %302 unwind label %316

302:                                              ; preds = %299
  %303 = getelementptr inbounds { i32, ptr }, ptr %34, i32 0, i32 0
  %304 = extractvalue { i32, ptr } %301, 0
  store i32 %304, ptr %303, align 8
  %305 = getelementptr inbounds { i32, ptr }, ptr %34, i32 0, i32 1
  %306 = extractvalue { i32, ptr } %301, 1
  store ptr %306, ptr %305, align 8
  invoke void @_ZN7DynexCN12WalletHelper26IWalletRemoveObserverGuard14removeObserverEv(ptr noundef nonnull align 8 dereferenceable(17) %32)
          to label %307 unwind label %316

307:                                              ; preds = %302
  %308 = call noundef zeroext i1 @_ZNKSt10error_codecvbEv(ptr noundef nonnull align 8 dereferenceable(16) %34) #10
  br i1 %308, label %309, label %324

309:                                              ; preds = %307
  %310 = call ptr @__cxa_allocate_exception(i64 32) #10
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %35, ptr align 8 %34, i64 16, i1 false), !tbaa.struct !36
  %311 = getelementptr inbounds { i32, ptr }, ptr %35, i32 0, i32 0
  %312 = load i32, ptr %311, align 8
  %313 = getelementptr inbounds { i32, ptr }, ptr %35, i32 0, i32 1
  %314 = load ptr, ptr %313, align 8
  invoke void @_ZNSt12system_errorC2ESt10error_code(ptr noundef nonnull align 8 dereferenceable(32) %310, i32 %312, ptr %314)
          to label %315 unwind label %320

315:                                              ; preds = %309
  invoke void @__cxa_throw(ptr %310, ptr @_ZTISt12system_error, ptr @_ZNSt12system_errorD1Ev) #11
          to label %397 unwind label %316

316:                                              ; preds = %315, %302, %299
  %317 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9exception
  %318 = extractvalue { ptr, i32 } %317, 0
  store ptr %318, ptr %9, align 8
  %319 = extractvalue { ptr, i32 } %317, 1
  store i32 %319, ptr %10, align 4
  br label %353

320:                                              ; preds = %309
  %321 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9exception
  %322 = extractvalue { ptr, i32 } %321, 0
  store ptr %322, ptr %9, align 8
  %323 = extractvalue { ptr, i32 } %321, 1
  store i32 %323, ptr %10, align 4
  call void @__cxa_free_exception(ptr %310) #10
  br label %353

324:                                              ; preds = %307
  call void @llvm.lifetime.start.p0(i64 168, ptr %36) #10
  invoke void @_ZN7DynexCN23WalletLegacyTransactionC2Ev(ptr noundef nonnull align 8 dereferenceable(161) %36)
          to label %325 unwind label %339

325:                                              ; preds = %324
  %326 = getelementptr inbounds %"class.Tools::wallet_rpc_server", ptr %42, i32 0, i32 2
  %327 = load ptr, ptr %326, align 8, !tbaa !32
  %328 = load i64, ptr %33, align 8, !tbaa !9
  %329 = load ptr, ptr %327, align 8, !tbaa !33
  %330 = getelementptr inbounds ptr, ptr %329, i64 24
  %331 = load ptr, ptr %330, align 8
  %332 = invoke noundef zeroext i1 %331(ptr noundef nonnull align 8 dereferenceable(8) %327, i64 noundef %328, ptr noundef nonnull align 8 dereferenceable(161) %36)
          to label %333 unwind label %343

333:                                              ; preds = %325
  call void @llvm.lifetime.start.p0(i64 32, ptr %37) #10
  %334 = getelementptr inbounds %"struct.DynexCN::WalletLegacyTransaction", ptr %36, i32 0, i32 6
  invoke void @_ZN6Common8podToHexIN6Crypto4HashEEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKT_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %37, ptr noundef nonnull align 1 dereferenceable(32) %334)
          to label %335 unwind label %347

335:                                              ; preds = %333
  %336 = load ptr, ptr %6, align 8, !tbaa !5
  %337 = getelementptr inbounds %"struct.Tools::wallet_rpc::COMMAND_RPC_SEND_FUSION::response", ptr %336, i32 0, i32 0
  %338 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(32) %337, ptr noundef nonnull align 8 dereferenceable(32) %37) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %37) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %37) #10
  call void @_ZN7DynexCN23WalletLegacyTransactionD2Ev(ptr noundef nonnull align 8 dereferenceable(161) %36) #10
  call void @llvm.lifetime.end.p0(i64 168, ptr %36) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %34) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #10
  call void @_ZN7DynexCN12WalletHelper26IWalletRemoveObserverGuardD1Ev(ptr noundef nonnull align 8 dereferenceable(17) %32) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %32) #10
  call void @_ZN7DynexCN12WalletHelper26SendCompleteResultObserverD2Ev(ptr noundef nonnull align 8 dereferenceable(160) %31) #10
  call void @llvm.lifetime.end.p0(i64 160, ptr %31) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %30) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %30) #10
  call void @_ZNSt7__cxx1110_List_baseIN7DynexCN28TransactionOutputInformationESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %26) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %26) #10
  br label %386

339:                                              ; preds = %324
  %340 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9exception
  %341 = extractvalue { ptr, i32 } %340, 0
  store ptr %341, ptr %9, align 8
  %342 = extractvalue { ptr, i32 } %340, 1
  store i32 %342, ptr %10, align 4
  br label %352

343:                                              ; preds = %325
  %344 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9exception
  %345 = extractvalue { ptr, i32 } %344, 0
  store ptr %345, ptr %9, align 8
  %346 = extractvalue { ptr, i32 } %344, 1
  store i32 %346, ptr %10, align 4
  br label %351

347:                                              ; preds = %333
  %348 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9exception
  %349 = extractvalue { ptr, i32 } %348, 0
  store ptr %349, ptr %9, align 8
  %350 = extractvalue { ptr, i32 } %348, 1
  store i32 %350, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %37) #10
  br label %351

351:                                              ; preds = %347, %343
  call void @_ZN7DynexCN23WalletLegacyTransactionD2Ev(ptr noundef nonnull align 8 dereferenceable(161) %36) #10
  br label %352

352:                                              ; preds = %351, %339
  call void @llvm.lifetime.end.p0(i64 168, ptr %36) #10
  br label %353

353:                                              ; preds = %352, %320, %316
  call void @llvm.lifetime.end.p0(i64 16, ptr %34) #10
  br label %354

354:                                              ; preds = %353, %295, %291
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #10
  call void @_ZN7DynexCN12WalletHelper26IWalletRemoveObserverGuardD1Ev(ptr noundef nonnull align 8 dereferenceable(17) %32) #10
  br label %355

355:                                              ; preds = %354, %287
  call void @llvm.lifetime.end.p0(i64 24, ptr %32) #10
  call void @_ZN7DynexCN12WalletHelper26SendCompleteResultObserverD2Ev(ptr noundef nonnull align 8 dereferenceable(160) %31) #10
  call void @llvm.lifetime.end.p0(i64 160, ptr %31) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %30) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %30) #10
  br label %356

356:                                              ; preds = %355, %264, %244
  call void @_ZNSt7__cxx1110_List_baseIN7DynexCN28TransactionOutputInformationESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %26) #10
  br label %357

357:                                              ; preds = %356, %240
  call void @llvm.lifetime.end.p0(i64 24, ptr %26) #10
  br label %358

358:                                              ; preds = %357
  %359 = load i32, ptr %10, align 4
  %360 = call i32 @llvm.eh.typeid.for.p0(ptr @_ZTISt9exception) #10
  %361 = icmp eq i32 %359, %360
  br i1 %361, label %362, label %387

362:                                              ; preds = %358
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #10
  %363 = load ptr, ptr %9, align 8
  %364 = call ptr @__cxa_begin_catch(ptr %363) #10
  store ptr %364, ptr %38, align 8
  store i1 true, ptr %41, align 1
  %365 = call ptr @__cxa_allocate_exception(i64 48) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr %39) #10
  %366 = load ptr, ptr %38, align 8, !tbaa !5
  %367 = load ptr, ptr %366, align 8, !tbaa !33
  %368 = getelementptr inbounds ptr, ptr %367, i64 2
  %369 = load ptr, ptr %368, align 8
  %370 = call noundef ptr %369(ptr noundef nonnull align 8 dereferenceable(8) %366) #10
  call void @llvm.lifetime.start.p0(i64 1, ptr %40) #10
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %40) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %39, ptr noundef %370, ptr noundef nonnull align 1 dereferenceable(1) %40)
          to label %371 unwind label %373

371:                                              ; preds = %362
  invoke void @_ZN7DynexCN7JsonRpc12JsonRpcErrorC1EiRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(48) %365, i32 noundef -4, ptr noundef nonnull align 8 dereferenceable(32) %39)
          to label %372 unwind label %377

372:                                              ; preds = %371
  store i1 false, ptr %41, align 1
  invoke void @__cxa_throw(ptr %365, ptr @_ZTIN7DynexCN7JsonRpc12JsonRpcErrorE, ptr @_ZN7DynexCN7JsonRpc12JsonRpcErrorD2Ev) #11
          to label %397 unwind label %377

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

377:                                              ; preds = %372, %371
  %378 = landingpad { ptr, i32 }
          cleanup
  %379 = extractvalue { ptr, i32 } %378, 0
  store ptr %379, ptr %9, align 8
  %380 = extractvalue { ptr, i32 } %378, 1
  store i32 %380, ptr %10, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %39) #10
  br label %381

381:                                              ; preds = %377, %373
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %40) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %40) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %39) #10
  %382 = load i1, ptr %41, align 1
  br i1 %382, label %383, label %384

383:                                              ; preds = %381
  call void @__cxa_free_exception(ptr %365) #10
  br label %384

384:                                              ; preds = %383, %381
  invoke void @__cxa_end_catch()
          to label %385 unwind label %394

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

386:                                              ; preds = %335
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %7) #10
  ret i1 true

387:                                              ; preds = %385, %358, %210
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #10
  br label %388

388:                                              ; preds = %387, %170, %110, %88
  call void @llvm.lifetime.end.p0(i64 8, ptr %7) #10
  br label %389

389:                                              ; preds = %388
  %390 = load ptr, ptr %9, align 8
  %391 = load i32, ptr %10, align 4
  %392 = insertvalue { ptr, i32 } poison, ptr %390, 0
  %393 = insertvalue { ptr, i32 } %392, i32 %391, 1
  resume { ptr, i32 } %393

394:                                              ; preds = %384
  %395 = landingpad { ptr, i32 }
          catch ptr null
  %396 = extractvalue { ptr, i32 } %395, 0
  call void @__clang_call_terminate(ptr %396) #12
  unreachable

397:                                              ; preds = %372, %315, %286, %239, %193, %138, %74
  unreachable
}

declare ptr @__cxa_allocate_exception(i64)

declare void @__cxa_free_exception(ptr)

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

declare void @__cxa_throw(ptr, ptr, ptr)

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZNSt7__cxx119to_stringEm(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, i64 noundef) #9

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

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

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

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

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

declare void @_ZN7DynexCN12WalletHelper26IWalletRemoveObserverGuardC1ERNS_13IWalletLegacyERNS_21IWalletLegacyObserverE(ptr noundef nonnull align 8 dereferenceable(17), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) unnamed_addr #5

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

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

declare { i32, ptr } @_ZN7DynexCN12WalletHelper26SendCompleteResultObserver4waitEm(ptr noundef nonnull align 8 dereferenceable(160), i64 noundef) #5

declare void @_ZN7DynexCN12WalletHelper26IWalletRemoveObserverGuard14removeObserverEv(ptr noundef nonnull align 8 dereferenceable(17)) #5

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt12system_errorC2ESt10error_code(ptr noundef nonnull align 8 dereferenceable(32), i32, ptr) unnamed_addr #4 align 2

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN7DynexCN23WalletLegacyTransactionC2Ev(ptr noundef nonnull align 8 dereferenceable(161)) unnamed_addr #9 align 2

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

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

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

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

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

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

declare void @_ZNK7DynexCN8Currency12formatAmountB5cxx11Em(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(984), i64 noundef) #5

declare noundef i64 @_ZNK7DynexCN8Currency31getApproximateMaximumInputCountEmmm(ptr noundef nonnull align 8 dereferenceable(984), i64 noundef, i64 noundef, i64 noundef) #5

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt7__cxx1110_List_baseIN7DynexCN28TransactionOutputInformationESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #3 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 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 #8 = { nounwind memory(none) }
attributes #9 = { 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 #10 = { nounwind }
attributes #11 = { noreturn }
attributes #12 = { 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, !10, i64 0}
!10 = !{!"long", !7, i64 0}
!11 = !{!12, !10, i64 0}
!12 = !{!"_ZTSN5Tools10wallet_rpc23COMMAND_RPC_SEND_FUSION7requestE", !10, i64 0, !10, i64 8, !10, i64 16}
!13 = !{!14, !6, i64 368}
!14 = !{!"_ZTSN5Tools17wallet_rpc_serverE", !15, i64 0, !18, i64 208, !6, i64 248, !6, i64 256, !28, i64 264, !19, i64 272, !19, i64 304, !19, i64 336, !6, i64 368, !19, i64 376, !6, i64 408, !29, i64 416}
!15 = !{!"_ZTSN7DynexCN10HttpServerE", !6, i64 8, !16, i64 16, !18, i64 56, !21, i64 96, !23, i64 120, !19, i64 176}
!16 = !{!"_ZTSN6System12ContextGroupE", !6, i64 0, !17, i64 8}
!17 = !{!"_ZTSN6System18NativeContextGroupE", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!18 = !{!"_ZTSN7Logging9LoggerRefE", !6, i64 0, !19, i64 8}
!19 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !20, i64 0, !10, i64 8, !7, i64 16}
!20 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !6, i64 0}
!21 = !{!"_ZTSN6System11TcpListenerE", !6, i64 0, !22, i64 8, !6, i64 16}
!22 = !{!"int", !7, i64 0}
!23 = !{!"_ZTSSt13unordered_setIPN6System13TcpConnectionESt4hashIS2_ESt8equal_toIS2_ESaIS2_EE", !24, i64 0}
!24 = !{!"_ZTSSt10_HashtableIPN6System13TcpConnectionES2_SaIS2_ENSt8__detail9_IdentityESt8equal_toIS2_ESt4hashIS2_ENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb0ELb1ELb1EEEE", !6, i64 0, !10, i64 8, !25, i64 16, !10, i64 24, !26, i64 32, !6, i64 48}
!25 = !{!"_ZTSNSt8__detail15_Hash_node_baseE", !6, i64 0}
!26 = !{!"_ZTSNSt8__detail20_Prime_rehash_policyE", !27, i64 0, !10, i64 8}
!27 = !{!"float", !7, i64 0}
!28 = !{!"short", !7, i64 0}
!29 = !{!"_ZTSN6System5EventE", !6, i64 0, !30, i64 8, !6, i64 16, !6, i64 24}
!30 = !{!"bool", !7, i64 0}
!31 = !{!12, !10, i64 8}
!32 = !{!14, !6, i64 248}
!33 = !{!34, !34, i64 0}
!34 = !{!"vtable pointer", !8, i64 0}
!35 = !{!12, !10, i64 16}
!36 = !{i64 0, i64 4, !37, i64 8, i64 8, !5}
!37 = !{!22, !22, 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::__cxx11::list.128" = type { %"class.std::__cxx11::_List_base.129" }
%"class.std::__cxx11::_List_base.129" = type { %"struct.std::__cxx11::_List_base<DynexCN::TransactionOutputInformation, std::allocator<DynexCN::TransactionOutputInformation>>::_List_impl" }
%"struct.std::__cxx11::_List_base<DynexCN::TransactionOutputInformation, std::allocator<DynexCN::TransactionOutputInformation>>::_List_impl" = type { %"struct.std::__detail::_List_node_header" }
%"struct.std::__detail::_List_node_header" = type { %"struct.std::__detail::_List_node_base", i64 }
%"struct.std::__detail::_List_node_base" = type { ptr, ptr }
%"class.DynexCN::WalletHelper::SendCompleteResultObserver" = type { %"class.DynexCN::IWalletLegacyObserver", %"class.std::mutex", %"class.std::condition_variable", %"class.std::map.103", %"class.std::error_code" }
%"class.DynexCN::IWalletLegacyObserver" = type { ptr }
%"class.std::mutex" = type { %"class.std::__mutex_base" }
%"class.std::__mutex_base" = type { %union.pthread_mutex_t }
%union.pthread_mutex_t = type { %struct.__pthread_mutex_s }
%struct.__pthread_mutex_s = type { i32, i32, i32, i32, i32, i16, i16, %struct.__pthread_internal_list }
%struct.__pthread_internal_list = type { ptr, ptr }
%"class.std::condition_variable" = type { %"class.std::__condvar" }
%"class.std::__condvar" = type { %union.pthread_cond_t }
%union.pthread_cond_t = type { %struct.__pthread_cond_s }
%struct.__pthread_cond_s = type { %union.__atomic_wide_counter, %union.__atomic_wide_counter, [2 x i32], [2 x i32], i32, i32, [2 x i32] }
%union.__atomic_wide_counter = type { i64 }
%"class.std::map.103" = type { %"class.std::_Rb_tree.104" }
%"class.std::_Rb_tree.104" = type { %"struct.std::_Rb_tree<unsigned long, std::pair<const unsigned long, std::error_code>, std::_Select1st<std::pair<const unsigned long, std::error_code>>, std::less<unsigned long>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<unsigned long, std::pair<const unsigned long, std::error_code>, std::_Select1st<std::pair<const unsigned long, std::error_code>>, std::less<unsigned long>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"struct.std::_Rb_tree_header" = type { %"struct.std::_Rb_tree_node_base", i64 }
%"struct.std::_Rb_tree_node_base" = type { i32, ptr, ptr, ptr }
%"class.std::error_code" = type { i32, ptr }
%"class.DynexCN::WalletHelper::IWalletRemoveObserverGuard" = type <{ ptr, ptr, i8, [7 x i8] }>
%"struct.DynexCN::WalletLegacyTransaction" = type <{ i64, i64, i64, i64, i64, i64, %"struct.Crypto::Hash", %"class.boost::optional.109", i8, [2 x i8], i32, i64, %"class.std::__cxx11::basic_string", i8, [7 x i8] }>
%"struct.Crypto::Hash" = type { [32 x i8] }
%"class.boost::optional.109" = type { %"class.boost::optional_detail::optional_base.110" }
%"class.boost::optional_detail::optional_base.110" = type { i8, %"class.boost::optional_detail::aligned_storage.111" }
%"class.boost::optional_detail::aligned_storage.111" = 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.std::allocator" = type { i8 }

@_ZN7Logging7DEFAULTB5cxx11E = external global %"class.std::__cxx11::basic_string", align 8
@_ZTISt9exception = external constant ptr
@_ZTIN7DynexCN7JsonRpc12JsonRpcErrorE = external dso_local constant { ptr, ptr, ptr }, align 8
@.str.44 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.45 = external hidden unnamed_addr constant [17 x i8], align 1
@_ZTISt13runtime_error = external constant ptr
@_ZTISt12system_error = external constant ptr
@.str.74 = external hidden unnamed_addr constant [55 x i8], align 1
@.str.75 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.77 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.78 = external hidden unnamed_addr constant [67 x i8], align 1
@.str.79 = external hidden unnamed_addr constant [33 x i8], align 1

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

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

declare i32 @__gxx_personality_v0(...)

; Function Attrs: noinline noreturn nounwind uwtable
declare hidden void @__clang_call_terminate(ptr noundef) local_unnamed_addr #1

declare ptr @__cxa_begin_catch(ptr) local_unnamed_addr

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

declare void @__cxa_end_catch() local_unnamed_addr

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local noundef zeroext i1 @_ZN5Tools17wallet_rpc_server14on_send_fusionERKNS_10wallet_rpc23COMMAND_RPC_SEND_FUSION7requestERNS2_8responseE(ptr noundef nonnull align 8 dereferenceable(448) %0, ptr nocapture noundef nonnull readonly align 8 dereferenceable(24) %1, ptr noundef nonnull align 8 dereferenceable(32) %2) local_unnamed_addr #3 align 2 personality ptr @__gxx_personality_v0 {
  %4 = alloca %"class.Logging::LoggerMessage", align 8
  %5 = alloca %"class.std::__cxx11::basic_string", align 8
  %6 = alloca %"class.std::__cxx11::basic_string", align 8
  %7 = alloca %"class.std::__cxx11::basic_string", align 8
  %8 = alloca %"class.std::__cxx11::basic_string", align 8
  %9 = alloca %"class.std::__cxx11::basic_string", align 8
  %10 = alloca %"class.std::__cxx11::basic_string", align 8
  %11 = alloca %"class.std::__cxx11::basic_string", align 8
  %12 = alloca %"class.std::__cxx11::basic_string", align 8
  %13 = alloca %"class.std::__cxx11::basic_string", align 8
  %14 = alloca %"class.std::__cxx11::basic_string", align 8
  %15 = alloca %"class.std::__cxx11::basic_string", align 8
  %16 = alloca %"class.std::__cxx11::list.128", align 8
  %17 = alloca %"class.std::__cxx11::basic_string", align 8
  %18 = alloca %"class.std::__cxx11::basic_string", align 8
  %19 = alloca %"class.std::__cxx11::basic_string", align 8
  %20 = alloca %"class.DynexCN::WalletHelper::SendCompleteResultObserver", align 8
  %21 = alloca %"class.DynexCN::WalletHelper::IWalletRemoveObserverGuard", align 8
  %22 = alloca %"class.std::error_code", align 8
  %23 = alloca %"struct.DynexCN::WalletLegacyTransaction", align 8
  %24 = alloca %"class.std::__cxx11::basic_string", align 8
  %25 = alloca %"class.std::__cxx11::basic_string", align 8
  %26 = alloca %"class.std::allocator", align 1
  %27 = load i64, ptr %1, align 8, !tbaa !5
  %28 = getelementptr inbounds i8, ptr %0, i64 368
  %29 = load ptr, ptr %28, align 8, !tbaa !10
  %30 = tail call noundef i64 @_ZNK7DynexCN8Currency8minMixinEv(ptr noundef nonnull align 8 dereferenceable(984) %29)
  %31 = icmp uge i64 %27, %30
  %32 = load i64, ptr %1, align 8
  %.not = icmp eq i64 %32, 0
  %or.cond = select i1 %31, i1 true, i1 %.not
  br i1 %or.cond, label %65, label %33

33:                                               ; preds = %3
  call void @llvm.lifetime.start.p0(i64 432, ptr nonnull %4) #9
  %34 = getelementptr inbounds i8, ptr %0, i64 208
  call void @_ZNK7Logging9LoggerRefclENS_5LevelERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%"class.Logging::LoggerMessage") align 8 %4, ptr noundef nonnull align 8 dereferenceable(40) %34, i32 noundef 1, ptr noundef nonnull align 8 dereferenceable(32) @_ZN7Logging7DEFAULTB5cxx11E)
  %35 = invoke noundef nonnull align 8 dereferenceable(161) ptr @_ZStlsIN7Logging13LoggerMessageEA17_cEOT_S4_RKT0_(ptr noundef nonnull align 8 dereferenceable(161) %4, ptr noundef nonnull align 1 dereferenceable(17) @.str.45)
          to label %36 unwind label %49

36:                                               ; preds = %33
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %5) #9
  %37 = load i64, ptr %1, align 8, !tbaa !5
  invoke void @_ZNSt7__cxx119to_stringEm(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %5, i64 noundef %37)
          to label %38 unwind label %51

38:                                               ; preds = %36
  %39 = invoke noundef nonnull align 8 dereferenceable(161) ptr @_ZStlsIN7Logging13LoggerMessageENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEOT_S9_RKT0_(ptr noundef nonnull align 8 dereferenceable(161) %35, ptr noundef nonnull align 8 dereferenceable(32) %5)
          to label %40 unwind label %53

40:                                               ; preds = %38
  %41 = invoke noundef nonnull align 8 dereferenceable(161) ptr @_ZStlsIN7Logging13LoggerMessageEA12_cEOT_S4_RKT0_(ptr noundef nonnull align 8 dereferenceable(161) %39, ptr noundef nonnull align 1 dereferenceable(12) @.str.44)
          to label %42 unwind label %53

42:                                               ; preds = %40
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %5) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5) #9
  call void @_ZN7Logging13LoggerMessageD1Ev(ptr noundef nonnull align 8 dereferenceable(161) %4) #9
  call void @llvm.lifetime.end.p0(i64 432, ptr nonnull %4) #9
  %43 = call ptr @__cxa_allocate_exception(i64 48) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %6) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %7) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %8) #9
  %44 = load i64, ptr %1, align 8, !tbaa !5
  invoke void @_ZNSt7__cxx119to_stringEm(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %8, i64 noundef %44)
          to label %45 unwind label %.thread

45:                                               ; preds = %42
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_OS8_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %7, ptr noundef nonnull @.str.45, ptr noundef nonnull align 8 dereferenceable(32) %8)
          to label %46 unwind label %.thread110

46:                                               ; preds = %45
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %6, ptr noundef nonnull align 8 dereferenceable(32) %7, ptr noundef nonnull @.str.44)
          to label %47 unwind label %59

47:                                               ; preds = %46
  invoke void @_ZN7DynexCN7JsonRpc12JsonRpcErrorC1EiRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(48) %43, i32 noundef -6, ptr noundef nonnull align 8 dereferenceable(32) %6)
          to label %48 unwind label %61

48:                                               ; preds = %47
  invoke void @__cxa_throw(ptr nonnull %43, ptr nonnull @_ZTIN7DynexCN7JsonRpc12JsonRpcErrorE, ptr nonnull @_ZN7DynexCN7JsonRpc12JsonRpcErrorD2Ev) #10
          to label %226 unwind label %61

49:                                               ; preds = %33
  %50 = landingpad { ptr, i32 }
          cleanup
  br label %56

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

53:                                               ; preds = %40, %38
  %54 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %5) #9
  br label %55

55:                                               ; preds = %53, %51
  %.pn97 = phi { ptr, i32 } [ %54, %53 ], [ %52, %51 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5) #9
  br label %56

56:                                               ; preds = %55, %49
  %.pn97.pn = phi { ptr, i32 } [ %.pn97, %55 ], [ %50, %49 ]
  %.130 = extractvalue { ptr, i32 } %.pn97.pn, 0
  %.132 = extractvalue { ptr, i32 } %.pn97.pn, 1
  call void @_ZN7Logging13LoggerMessageD1Ev(ptr noundef nonnull align 8 dereferenceable(161) %4) #9
  call void @llvm.lifetime.end.p0(i64 432, ptr nonnull %4) #9
  br label %220

.thread:                                          ; preds = %42
  %57 = landingpad { ptr, i32 }
          cleanup
  %.4106 = extractvalue { ptr, i32 } %57, 0
  %.435107 = extractvalue { ptr, i32 } %57, 1
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %8) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %7) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %6) #9
  br label %64

.thread110:                                       ; preds = %45
  %58 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %8) #9
  %.4113 = extractvalue { ptr, i32 } %58, 0
  %.435114 = extractvalue { ptr, i32 } %58, 1
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %8) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %7) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %6) #9
  br label %64

59:                                               ; preds = %46
  %60 = landingpad { ptr, i32 }
          cleanup
  br label %63

61:                                               ; preds = %48, %47
  %.055 = phi i1 [ false, %48 ], [ true, %47 ]
  %62 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %6) #9
  br label %63

63:                                               ; preds = %59, %61
  %.156 = phi i1 [ %.055, %61 ], [ true, %59 ]
  %.pn100 = phi { ptr, i32 } [ %62, %61 ], [ %60, %59 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %7) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %8) #9
  %.4 = extractvalue { ptr, i32 } %.pn100, 0
  %.435 = extractvalue { ptr, i32 } %.pn100, 1
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %8) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %7) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %6) #9
  br i1 %.156, label %64, label %220

64:                                               ; preds = %.thread110, %.thread, %63
  %.435109 = phi i32 [ %.435107, %.thread ], [ %.435, %63 ], [ %.435114, %.thread110 ]
  %.4108 = phi ptr [ %.4106, %.thread ], [ %.4, %63 ], [ %.4113, %.thread110 ]
  call void @__cxa_free_exception(ptr %43) #9
  br label %220

65:                                               ; preds = %3
  %66 = getelementptr inbounds i8, ptr %1, i64 8
  %67 = load i64, ptr %66, align 8, !tbaa !29
  %68 = load ptr, ptr %28, align 8, !tbaa !10
  %69 = tail call noundef i64 @_ZNK7DynexCN8Currency20defaultDustThresholdEv(ptr noundef nonnull align 8 dereferenceable(984) %68)
  %.not73 = icmp ugt i64 %67, %69
  br i1 %.not73, label %97, label %70

70:                                               ; preds = %65
  %71 = tail call ptr @__cxa_allocate_exception(i64 48) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %9) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %10) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %11) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %12) #9
  %72 = load ptr, ptr %28, align 8, !tbaa !10
  %73 = load i64, ptr %66, align 8, !tbaa !29
  invoke void @_ZNK7DynexCN8Currency12formatAmountB5cxx11Em(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %12, ptr noundef nonnull align 8 dereferenceable(984) %72, i64 noundef %73)
          to label %74 unwind label %.thread115

74:                                               ; preds = %70
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_OS8_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %11, ptr noundef nonnull @.str.74, ptr noundef nonnull align 8 dereferenceable(32) %12)
          to label %75 unwind label %.thread122

75:                                               ; preds = %74
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %10, ptr noundef nonnull align 8 dereferenceable(32) %11, ptr noundef nonnull @.str.75)
          to label %76 unwind label %85

76:                                               ; preds = %75
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %13) #9
  %77 = load ptr, ptr %28, align 8, !tbaa !10
  %78 = call noundef i64 @_ZNK7DynexCN8Currency20defaultDustThresholdEv(ptr noundef nonnull align 8 dereferenceable(984) %77)
  %79 = add i64 %78, 1
  invoke void @_ZNK7DynexCN8Currency12formatAmountB5cxx11Em(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %13, ptr noundef nonnull align 8 dereferenceable(984) %77, i64 noundef %79)
          to label %80 unwind label %87

80:                                               ; preds = %76
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_S9_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %9, ptr noundef nonnull align 8 dereferenceable(32) %10, ptr noundef nonnull align 8 dereferenceable(32) %13)
          to label %81 unwind label %89

81:                                               ; preds = %80
  invoke void @_ZN7DynexCN7JsonRpc12JsonRpcErrorC1EiRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(48) %71, i32 noundef -1, ptr noundef nonnull align 8 dereferenceable(32) %9)
          to label %82 unwind label %91

82:                                               ; preds = %81
  invoke void @__cxa_throw(ptr nonnull %71, ptr nonnull @_ZTIN7DynexCN7JsonRpc12JsonRpcErrorE, ptr nonnull @_ZN7DynexCN7JsonRpc12JsonRpcErrorD2Ev) #10
          to label %226 unwind label %91

.thread115:                                       ; preds = %70
  %83 = landingpad { ptr, i32 }
          cleanup
  %.9118 = extractvalue { ptr, i32 } %83, 0
  %.940119 = extractvalue { ptr, i32 } %83, 1
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %12) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %11) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %10) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %9) #9
  br label %96

.thread122:                                       ; preds = %74
  %84 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #9
  %.9125 = extractvalue { ptr, i32 } %84, 0
  %.940126 = extractvalue { ptr, i32 } %84, 1
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %12) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %11) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %10) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %9) #9
  br label %96

85:                                               ; preds = %75
  %86 = landingpad { ptr, i32 }
          cleanup
  br label %95

87:                                               ; preds = %76
  %88 = landingpad { ptr, i32 }
          cleanup
  br label %94

89:                                               ; preds = %80
  %90 = landingpad { ptr, i32 }
          cleanup
  br label %93

91:                                               ; preds = %82, %81
  %.059 = phi i1 [ false, %82 ], [ true, %81 ]
  %92 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #9
  br label %93

93:                                               ; preds = %91, %89
  %.160 = phi i1 [ %.059, %91 ], [ true, %89 ]
  %.pn91 = phi { ptr, i32 } [ %92, %91 ], [ %90, %89 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #9
  br label %94

94:                                               ; preds = %93, %87
  %.261 = phi i1 [ %.160, %93 ], [ true, %87 ]
  %.pn91.pn = phi { ptr, i32 } [ %.pn91, %93 ], [ %88, %87 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %13) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #9
  br label %95

95:                                               ; preds = %85, %94
  %.362 = phi i1 [ %.261, %94 ], [ true, %85 ]
  %.pn91.pn.pn = phi { ptr, i32 } [ %.pn91.pn, %94 ], [ %86, %85 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #9
  %.9 = extractvalue { ptr, i32 } %.pn91.pn.pn, 0
  %.940 = extractvalue { ptr, i32 } %.pn91.pn.pn, 1
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %12) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %11) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %10) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %9) #9
  br i1 %.362, label %96, label %220

96:                                               ; preds = %.thread122, %.thread115, %95
  %.940121 = phi i32 [ %.940119, %.thread115 ], [ %.940, %95 ], [ %.940126, %.thread122 ]
  %.9120 = phi ptr [ %.9118, %.thread115 ], [ %.9, %95 ], [ %.9125, %.thread122 ]
  call void @__cxa_free_exception(ptr %71) #9
  br label %220

97:                                               ; preds = %65
  %98 = load ptr, ptr %28, align 8, !tbaa !10
  %99 = tail call noundef i64 @_ZNK7DynexCN8Currency15fusionTxMaxSizeEv(ptr noundef nonnull align 8 dereferenceable(984) %98)
  %100 = load i64, ptr %1, align 8, !tbaa !5
  %101 = tail call noundef i64 @_ZNK7DynexCN8Currency31getApproximateMaximumInputCountEmmm(ptr noundef nonnull align 8 dereferenceable(984) %98, i64 noundef %99, i64 noundef 4, i64 noundef %100)
  %102 = load ptr, ptr %28, align 8, !tbaa !10
  %103 = tail call noundef i64 @_ZNK7DynexCN8Currency21fusionTxMinInputCountEv(ptr noundef nonnull align 8 dereferenceable(984) %102)
  %104 = icmp ult i64 %101, %103
  br i1 %104, label %105, label %116

105:                                              ; preds = %97
  %106 = tail call ptr @__cxa_allocate_exception(i64 48) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %14) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %15) #9
  %107 = load i64, ptr %1, align 8, !tbaa !5
  invoke void @_ZNSt7__cxx119to_stringEm(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %15, i64 noundef %107)
          to label %108 unwind label %.thread127

108:                                              ; preds = %105
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_OS8_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %14, ptr noundef nonnull @.str.77, ptr noundef nonnull align 8 dereferenceable(32) %15)
          to label %109 unwind label %.thread134

109:                                              ; preds = %108
  invoke void @_ZN7DynexCN7JsonRpc12JsonRpcErrorC1EiRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(48) %106, i32 noundef -6, ptr noundef nonnull align 8 dereferenceable(32) %14)
          to label %110 unwind label %113

110:                                              ; preds = %109
  invoke void @__cxa_throw(ptr nonnull %106, ptr nonnull @_ZTIN7DynexCN7JsonRpc12JsonRpcErrorE, ptr nonnull @_ZN7DynexCN7JsonRpc12JsonRpcErrorD2Ev) #10
          to label %226 unwind label %113

.thread127:                                       ; preds = %105
  %111 = landingpad { ptr, i32 }
          cleanup
  %.11130 = extractvalue { ptr, i32 } %111, 0
  %.1142131 = extractvalue { ptr, i32 } %111, 1
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %15) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %14) #9
  br label %115

.thread134:                                       ; preds = %108
  %112 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #9
  %.11137 = extractvalue { ptr, i32 } %112, 0
  %.1142138 = extractvalue { ptr, i32 } %112, 1
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %15) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %14) #9
  br label %115

113:                                              ; preds = %109, %110
  %.065 = phi i1 [ false, %110 ], [ true, %109 ]
  %114 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %14) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #9
  %.11 = extractvalue { ptr, i32 } %114, 0
  %.1142 = extractvalue { ptr, i32 } %114, 1
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %15) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %14) #9
  br i1 %.065, label %115, label %220

115:                                              ; preds = %.thread134, %.thread127, %113
  %.1142133 = phi i32 [ %.1142131, %.thread127 ], [ %.1142, %113 ], [ %.1142138, %.thread134 ]
  %.11132 = phi ptr [ %.11130, %.thread127 ], [ %.11, %113 ], [ %.11137, %.thread134 ]
  call void @__cxa_free_exception(ptr %106) #9
  br label %220

116:                                              ; preds = %97
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %16) #9
  %117 = getelementptr inbounds i8, ptr %0, i64 248
  %118 = load ptr, ptr %117, align 8, !tbaa !30
  %119 = load i64, ptr %66, align 8, !tbaa !29
  %120 = load ptr, ptr %28, align 8, !tbaa !10
  %121 = tail call noundef i64 @_ZNK7DynexCN8Currency21fusionTxMinInputCountEv(ptr noundef nonnull align 8 dereferenceable(984) %120)
  %122 = load ptr, ptr %118, align 8, !tbaa !31
  %123 = getelementptr inbounds i8, ptr %122, i64 312
  %124 = load ptr, ptr %123, align 8
  invoke void %124(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::list.128") align 8 %16, ptr noundef nonnull align 8 dereferenceable(8) %118, i64 noundef %119, i64 noundef %121, i64 noundef %101)
          to label %125 unwind label %136

125:                                              ; preds = %116
  %126 = call noundef i64 @_ZNKSt7__cxx114listIN7DynexCN28TransactionOutputInformationESaIS2_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %16) #9
  %127 = load ptr, ptr %28, align 8, !tbaa !10
  %128 = call noundef i64 @_ZNK7DynexCN8Currency21fusionTxMinInputCountEv(ptr noundef nonnull align 8 dereferenceable(984) %127)
  %129 = icmp ult i64 %126, %128
  br i1 %129, label %130, label %143

130:                                              ; preds = %125
  %131 = call ptr @__cxa_allocate_exception(i64 48) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %17) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %18) #9
  %132 = load i64, ptr %66, align 8, !tbaa !29
  invoke void @_ZNSt7__cxx119to_stringEm(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %18, i64 noundef %132)
          to label %133 unwind label %.thread139

133:                                              ; preds = %130
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_OS8_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %17, ptr noundef nonnull @.str.78, ptr noundef nonnull align 8 dereferenceable(32) %18)
          to label %134 unwind label %.thread143

134:                                              ; preds = %133
  invoke void @_ZN7DynexCN7JsonRpc12JsonRpcErrorC1EiRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(48) %131, i32 noundef -1, ptr noundef nonnull align 8 dereferenceable(32) %17)
          to label %135 unwind label %140

135:                                              ; preds = %134
  invoke void @__cxa_throw(ptr nonnull %131, ptr nonnull @_ZTIN7DynexCN7JsonRpc12JsonRpcErrorE, ptr nonnull @_ZN7DynexCN7JsonRpc12JsonRpcErrorD2Ev) #10
          to label %226 unwind label %140

136:                                              ; preds = %116
  %137 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9exception
  br label %203

.thread139:                                       ; preds = %130
  %138 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9exception
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %18) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %17) #9
  br label %142

.thread143:                                       ; preds = %133
  %139 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9exception
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %18) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %17) #9
  br label %142

140:                                              ; preds = %134, %135
  %.068 = phi i1 [ false, %135 ], [ true, %134 ]
  %141 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9exception
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %17) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %18) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %17) #9
  br i1 %.068, label %142, label %202

142:                                              ; preds = %.thread143, %.thread139, %140
  %.pn81.pn142 = phi { ptr, i32 } [ %138, %.thread139 ], [ %141, %140 ], [ %139, %.thread143 ]
  call void @__cxa_free_exception(ptr %131) #9
  br label %202

143:                                              ; preds = %125
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %19) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #9
  call void @llvm.lifetime.start.p0(i64 160, ptr nonnull %20) #9
  call void @_ZN7DynexCN12WalletHelper26SendCompleteResultObserverC2Ev(ptr noundef nonnull align 8 dereferenceable(160) %20) #9
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %21) #9
  %144 = load ptr, ptr %117, align 8, !tbaa !30
  invoke void @_ZN7DynexCN12WalletHelper26IWalletRemoveObserverGuardC1ERNS_13IWalletLegacyERNS_21IWalletLegacyObserverE(ptr noundef nonnull align 8 dereferenceable(17) %21, ptr noundef nonnull align 8 dereferenceable(8) %144, ptr noundef nonnull align 8 dereferenceable(8) %20)
          to label %145 unwind label %159

145:                                              ; preds = %143
  %146 = load ptr, ptr %117, align 8, !tbaa !30
  %147 = load i64, ptr %1, align 8, !tbaa !5
  %148 = getelementptr inbounds i8, ptr %1, i64 16
  %149 = load i64, ptr %148, align 8, !tbaa !33
  %150 = load ptr, ptr %146, align 8, !tbaa !31
  %151 = getelementptr inbounds i8, ptr %150, i64 288
  %152 = load ptr, ptr %151, align 8
  %153 = invoke noundef i64 %152(ptr noundef nonnull align 8 dereferenceable(8) %146, ptr noundef nonnull align 8 dereferenceable(24) %16, i64 noundef 0, ptr noundef nonnull align 8 dereferenceable(32) %19, i64 noundef %147, i64 noundef %149)
          to label %154 unwind label %161

154:                                              ; preds = %145
  %155 = icmp eq i64 %153, -1
  br i1 %155, label %156, label %165

156:                                              ; preds = %154
  %157 = call ptr @__cxa_allocate_exception(i64 16) #9
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %157, ptr noundef nonnull @.str.79)
          to label %158 unwind label %163

158:                                              ; preds = %156
  invoke void @__cxa_throw(ptr nonnull %157, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #10
          to label %226 unwind label %161

159:                                              ; preds = %143
  %160 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9exception
  br label %201

161:                                              ; preds = %158, %145
  %162 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9exception
  br label %200

163:                                              ; preds = %156
  %164 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9exception
  call void @__cxa_free_exception(ptr %157) #9
  br label %200

165:                                              ; preds = %154
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %22) #9
  %166 = invoke { i32, ptr } @_ZN7DynexCN12WalletHelper26SendCompleteResultObserver4waitEm(ptr noundef nonnull align 8 dereferenceable(160) %20, i64 noundef %153)
          to label %167 unwind label %176

167:                                              ; preds = %165
  %168 = extractvalue { i32, ptr } %166, 0
  store i32 %168, ptr %22, align 8
  %169 = getelementptr inbounds i8, ptr %22, i64 8
  %170 = extractvalue { i32, ptr } %166, 1
  store ptr %170, ptr %169, align 8
  invoke void @_ZN7DynexCN12WalletHelper26IWalletRemoveObserverGuard14removeObserverEv(ptr noundef nonnull align 8 dereferenceable(17) %21)
          to label %171 unwind label %176

171:                                              ; preds = %167
  %172 = call noundef zeroext i1 @_ZNKSt10error_codecvbEv(ptr noundef nonnull align 8 dereferenceable(16) %22) #9
  br i1 %172, label %173, label %180

173:                                              ; preds = %171
  %174 = call ptr @__cxa_allocate_exception(i64 32) #9
  %.sroa.0.0.copyload = load i32, ptr %22, align 8, !tbaa !34
  %.sroa.22.0.copyload = load ptr, ptr %169, align 8, !tbaa !35
  invoke void @_ZNSt12system_errorC2ESt10error_code(ptr noundef nonnull align 8 dereferenceable(32) %174, i32 %.sroa.0.0.copyload, ptr %.sroa.22.0.copyload)
          to label %175 unwind label %178

175:                                              ; preds = %173
  invoke void @__cxa_throw(ptr nonnull %174, ptr nonnull @_ZTISt12system_error, ptr nonnull @_ZNSt12system_errorD1Ev) #10
          to label %226 unwind label %176

176:                                              ; preds = %175, %167, %165
  %177 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9exception
  br label %199

178:                                              ; preds = %173
  %179 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9exception
  call void @__cxa_free_exception(ptr %174) #9
  br label %199

180:                                              ; preds = %171
  call void @llvm.lifetime.start.p0(i64 168, ptr nonnull %23) #9
  invoke void @_ZN7DynexCN23WalletLegacyTransactionC2Ev(ptr noundef nonnull align 8 dereferenceable(161) %23)
          to label %181 unwind label %191

181:                                              ; preds = %180
  %182 = load ptr, ptr %117, align 8, !tbaa !30
  %183 = load ptr, ptr %182, align 8, !tbaa !31
  %184 = getelementptr inbounds i8, ptr %183, i64 192
  %185 = load ptr, ptr %184, align 8
  %186 = invoke noundef zeroext i1 %185(ptr noundef nonnull align 8 dereferenceable(8) %182, i64 noundef %153, ptr noundef nonnull align 8 dereferenceable(161) %23)
          to label %187 unwind label %193

187:                                              ; preds = %181
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %24) #9
  %188 = getelementptr inbounds i8, ptr %23, i64 48
  invoke void @_ZN6Common8podToHexIN6Crypto4HashEEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKT_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %24, ptr noundef nonnull align 1 dereferenceable(32) %188)
          to label %189 unwind label %195

189:                                              ; preds = %187
  %190 = 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) %24) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %24) #9
  call void @_ZN7DynexCN23WalletLegacyTransactionD2Ev(ptr noundef nonnull align 8 dereferenceable(161) %23) #9
  call void @llvm.lifetime.end.p0(i64 168, ptr nonnull %23) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %22) #9
  call void @_ZN7DynexCN12WalletHelper26IWalletRemoveObserverGuardD1Ev(ptr noundef nonnull align 8 dereferenceable(17) %21) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %21) #9
  call void @_ZN7DynexCN12WalletHelper26SendCompleteResultObserverD2Ev(ptr noundef nonnull align 8 dereferenceable(160) %20) #9
  call void @llvm.lifetime.end.p0(i64 160, ptr nonnull %20) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %19) #9
  call void @_ZNSt7__cxx1110_List_baseIN7DynexCN28TransactionOutputInformationESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %16) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %16) #9
  ret i1 true

191:                                              ; preds = %180
  %192 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9exception
  br label %198

193:                                              ; preds = %181
  %194 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9exception
  br label %197

195:                                              ; preds = %187
  %196 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9exception
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %24) #9
  br label %197

197:                                              ; preds = %195, %193
  %.pn = phi { ptr, i32 } [ %196, %195 ], [ %194, %193 ]
  call void @_ZN7DynexCN23WalletLegacyTransactionD2Ev(ptr noundef nonnull align 8 dereferenceable(161) %23) #9
  br label %198

198:                                              ; preds = %197, %191
  %.pn.pn = phi { ptr, i32 } [ %.pn, %197 ], [ %192, %191 ]
  call void @llvm.lifetime.end.p0(i64 168, ptr nonnull %23) #9
  br label %199

199:                                              ; preds = %198, %178, %176
  %.pn76 = phi { ptr, i32 } [ %177, %176 ], [ %179, %178 ], [ %.pn.pn, %198 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %22) #9
  br label %200

200:                                              ; preds = %199, %163, %161
  %.pn78 = phi { ptr, i32 } [ %162, %161 ], [ %164, %163 ], [ %.pn76, %199 ]
  call void @_ZN7DynexCN12WalletHelper26IWalletRemoveObserverGuardD1Ev(ptr noundef nonnull align 8 dereferenceable(17) %21) #9
  br label %201

201:                                              ; preds = %200, %159
  %.pn78.pn = phi { ptr, i32 } [ %.pn78, %200 ], [ %160, %159 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %21) #9
  call void @_ZN7DynexCN12WalletHelper26SendCompleteResultObserverD2Ev(ptr noundef nonnull align 8 dereferenceable(160) %20) #9
  call void @llvm.lifetime.end.p0(i64 160, ptr nonnull %20) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %19) #9
  br label %202

202:                                              ; preds = %140, %142, %201
  %.pn81.pn.pn = phi { ptr, i32 } [ %.pn81.pn142, %142 ], [ %141, %140 ], [ %.pn78.pn, %201 ]
  call void @_ZNSt7__cxx1110_List_baseIN7DynexCN28TransactionOutputInformationESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %16) #9
  br label %203

203:                                              ; preds = %202, %136
  %.pn81.pn.pn.pn = phi { ptr, i32 } [ %.pn81.pn.pn, %202 ], [ %137, %136 ]
  %.20 = extractvalue { ptr, i32 } %.pn81.pn.pn.pn, 0
  %.2051 = extractvalue { ptr, i32 } %.pn81.pn.pn.pn, 1
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %16) #9
  %204 = call i32 @llvm.eh.typeid.for.p0(ptr nonnull @_ZTISt9exception) #9
  %205 = icmp eq i32 %.2051, %204
  br i1 %205, label %206, label %220

206:                                              ; preds = %203
  %207 = call ptr @__cxa_begin_catch(ptr %.20) #9
  %208 = call ptr @__cxa_allocate_exception(i64 48) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %25) #9
  %209 = load ptr, ptr %207, align 8, !tbaa !31
  %210 = getelementptr inbounds i8, ptr %209, i64 16
  %211 = load ptr, ptr %210, align 8
  %212 = call noundef ptr %211(ptr noundef nonnull align 8 dereferenceable(8) %207) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %26) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %26) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %25, ptr noundef %212, ptr noundef nonnull align 1 dereferenceable(1) %26)
          to label %213 unwind label %.thread146

213:                                              ; preds = %206
  invoke void @_ZN7DynexCN7JsonRpc12JsonRpcErrorC1EiRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(48) %208, i32 noundef -4, ptr noundef nonnull align 8 dereferenceable(32) %25)
          to label %214 unwind label %216

214:                                              ; preds = %213
  invoke void @__cxa_throw(ptr nonnull %208, ptr nonnull @_ZTIN7DynexCN7JsonRpc12JsonRpcErrorE, ptr nonnull @_ZN7DynexCN7JsonRpc12JsonRpcErrorD2Ev) #10
          to label %226 unwind label %216

.thread146:                                       ; preds = %206
  %215 = landingpad { ptr, i32 }
          cleanup
  %.21149 = extractvalue { ptr, i32 } %215, 0
  %.2152150 = extractvalue { ptr, i32 } %215, 1
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %26) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %26) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %25) #9
  br label %218

216:                                              ; preds = %213, %214
  %.0 = phi i1 [ false, %214 ], [ true, %213 ]
  %217 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %25) #9
  %.21 = extractvalue { ptr, i32 } %217, 0
  %.2152 = extractvalue { ptr, i32 } %217, 1
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %26) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %26) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %25) #9
  br i1 %.0, label %218, label %219

218:                                              ; preds = %.thread146, %216
  %.2152154 = phi i32 [ %.2152150, %.thread146 ], [ %.2152, %216 ]
  %.21152 = phi ptr [ %.21149, %.thread146 ], [ %.21, %216 ]
  call void @__cxa_free_exception(ptr %208) #9
  br label %219

219:                                              ; preds = %218, %216
  %.2152153 = phi i32 [ %.2152154, %218 ], [ %.2152, %216 ]
  %.21151 = phi ptr [ %.21152, %218 ], [ %.21, %216 ]
  invoke void @__cxa_end_catch()
          to label %220 unwind label %223

220:                                              ; preds = %203, %115, %113, %219, %95, %96, %63, %64, %56
  %.2354 = phi i32 [ %.435109, %64 ], [ %.435, %63 ], [ %.132, %56 ], [ %.940121, %96 ], [ %.940, %95 ], [ %.1142133, %115 ], [ %.1142, %113 ], [ %.2051, %203 ], [ %.2152153, %219 ]
  %.23 = phi ptr [ %.4108, %64 ], [ %.4, %63 ], [ %.130, %56 ], [ %.9120, %96 ], [ %.9, %95 ], [ %.11132, %115 ], [ %.11, %113 ], [ %.20, %203 ], [ %.21151, %219 ]
  %221 = insertvalue { ptr, i32 } poison, ptr %.23, 0
  %222 = insertvalue { ptr, i32 } %221, i32 %.2354, 1
  resume { ptr, i32 } %222

223:                                              ; preds = %219
  %224 = landingpad { ptr, i32 }
          catch ptr null
  %225 = extractvalue { ptr, i32 } %224, 0
  call void @__clang_call_terminate(ptr %225) #11
  unreachable

226:                                              ; preds = %214, %175, %158, %135, %110, %82, %48
  unreachable
}

declare ptr @__cxa_allocate_exception(i64) local_unnamed_addr

declare void @__cxa_free_exception(ptr) local_unnamed_addr

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

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

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

declare void @_ZN7DynexCN7JsonRpc12JsonRpcErrorC1EiRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(48), i32 noundef, ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #4

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

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

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

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

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

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

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

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

declare void @_ZN7DynexCN12WalletHelper26IWalletRemoveObserverGuardC1ERNS_13IWalletLegacyERNS_21IWalletLegacyObserverE(ptr noundef nonnull align 8 dereferenceable(17), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) unnamed_addr #4

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

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

declare { i32, ptr } @_ZN7DynexCN12WalletHelper26SendCompleteResultObserver4waitEm(ptr noundef nonnull align 8 dereferenceable(160), i64 noundef) local_unnamed_addr #4

declare void @_ZN7DynexCN12WalletHelper26IWalletRemoveObserverGuard14removeObserverEv(ptr noundef nonnull align 8 dereferenceable(17)) local_unnamed_addr #4

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt12system_errorC2ESt10error_code(ptr noundef nonnull align 8 dereferenceable(32), i32, ptr) unnamed_addr #3 align 2

; Function Attrs: nounwind
declare void @_ZNSt12system_errorD1Ev(ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #5

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

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

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

; Function Attrs: nounwind
declare void @_ZN7DynexCN12WalletHelper26IWalletRemoveObserverGuardD1Ev(ptr noundef nonnull align 8 dereferenceable(17)) unnamed_addr #5

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

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

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

declare void @_ZNK7DynexCN8Currency12formatAmountB5cxx11Em(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(984), i64 noundef) local_unnamed_addr #4

declare noundef i64 @_ZNK7DynexCN8Currency31getApproximateMaximumInputCountEmmm(ptr noundef nonnull align 8 dereferenceable(984), i64 noundef, i64 noundef, i64 noundef) local_unnamed_addr #4

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

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

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

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

attributes #0 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { 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 #2 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { "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 = { nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { inlinehint mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #7 = { nofree nosync nounwind memory(none) }
attributes #8 = { 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 #9 = { nounwind }
attributes #10 = { noreturn }
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 0}
!6 = !{!"_ZTSN5Tools10wallet_rpc23COMMAND_RPC_SEND_FUSION7requestE", !7, i64 0, !7, i64 8, !7, i64 16}
!7 = !{!"long", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C++ TBAA"}
!10 = !{!11, !13, i64 368}
!11 = !{!"_ZTSN5Tools17wallet_rpc_serverE", !12, i64 0, !16, i64 208, !13, i64 248, !13, i64 256, !26, i64 264, !17, i64 272, !17, i64 304, !17, i64 336, !13, i64 368, !17, i64 376, !13, i64 408, !27, i64 416}
!12 = !{!"_ZTSN7DynexCN10HttpServerE", !13, i64 8, !14, i64 16, !16, i64 56, !19, i64 96, !21, i64 120, !17, i64 176}
!13 = !{!"any pointer", !8, i64 0}
!14 = !{!"_ZTSN6System12ContextGroupE", !13, i64 0, !15, i64 8}
!15 = !{!"_ZTSN6System18NativeContextGroupE", !13, i64 0, !13, i64 8, !13, i64 16, !13, i64 24}
!16 = !{!"_ZTSN7Logging9LoggerRefE", !13, i64 0, !17, i64 8}
!17 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !18, i64 0, !7, i64 8, !8, i64 16}
!18 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !13, i64 0}
!19 = !{!"_ZTSN6System11TcpListenerE", !13, i64 0, !20, i64 8, !13, i64 16}
!20 = !{!"int", !8, i64 0}
!21 = !{!"_ZTSSt13unordered_setIPN6System13TcpConnectionESt4hashIS2_ESt8equal_toIS2_ESaIS2_EE", !22, i64 0}
!22 = !{!"_ZTSSt10_HashtableIPN6System13TcpConnectionES2_SaIS2_ENSt8__detail9_IdentityESt8equal_toIS2_ESt4hashIS2_ENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb0ELb1ELb1EEEE", !13, i64 0, !7, i64 8, !23, i64 16, !7, i64 24, !24, i64 32, !13, i64 48}
!23 = !{!"_ZTSNSt8__detail15_Hash_node_baseE", !13, i64 0}
!24 = !{!"_ZTSNSt8__detail20_Prime_rehash_policyE", !25, i64 0, !7, i64 8}
!25 = !{!"float", !8, i64 0}
!26 = !{!"short", !8, i64 0}
!27 = !{!"_ZTSN6System5EventE", !13, i64 0, !28, i64 8, !13, i64 16, !13, i64 24}
!28 = !{!"bool", !8, i64 0}
!29 = !{!6, !7, i64 8}
!30 = !{!11, !13, i64 248}
!31 = !{!32, !32, i64 0}
!32 = !{!"vtable pointer", !9, i64 0}
!33 = !{!6, !7, i64 16}
!34 = !{!20, !20, i64 0}
!35 = !{!13, !13, i64 0}


; Effective O3 passes: EarlyCSEPass,GlobalOptPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,PostOrderFunctionAttrsPass,SROAPass,SimplifyCFGPass,TailCallElimPass