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

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

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

@_ZTISt12system_error = external constant ptr
@_ZTISt9exception = external constant ptr
@_ZN7Logging13BRIGHT_YELLOWB5cxx11E = external global %"class.std::__cxx11::basic_string", align 8
@.str.97 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.98 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.99 = external hidden unnamed_addr constant [34 x i8], align 1

declare i32 @__gxx_personality_v0(...)

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

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

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

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

declare ptr @__cxa_begin_catch(ptr)

declare void @__cxa_end_catch()

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(161) ptr @_ZStlsIN7Logging13LoggerMessageEA34_cEOT_S4_RKT0_(ptr noundef nonnull align 8 dereferenceable(161), ptr noundef nonnull align 1 dereferenceable(34)) #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)) #5

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

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN14PaymentService12_GLOBAL__N_19parseHashERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN7Logging9LoggerRefE(ptr dead_on_unwind noalias writable sret(%"struct.Crypto::Hash") align 1, ptr noundef nonnull align 8 dereferenceable(32), ptr noundef) #9

; Function Attrs: mustprogress uwtable
define dso_local { i32, ptr } @_ZN14PaymentService13WalletService14getTransactionERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERNS_18TransactionRpcInfoE(ptr noundef nonnull align 8 dereferenceable(224) %0, ptr noundef nonnull align 8 dereferenceable(32) %1, ptr noundef nonnull align 8 dereferenceable(176) %2) #9 align 2 personality ptr @__gxx_personality_v0 {
  %4 = alloca %"class.std::error_code", align 8
  %5 = alloca ptr, align 8
  %6 = alloca ptr, align 8
  %7 = alloca ptr, align 8
  %8 = alloca %"class.System::EventLock", align 8
  %9 = alloca ptr, align 8
  %10 = alloca i32, align 4
  %11 = alloca %"struct.Crypto::Hash", align 1
  %12 = alloca %"class.Logging::LoggerRef", align 8
  %13 = alloca %"struct.DynexCN::WalletTransactionWithTransfers", align 8
  %14 = alloca %"class.Logging::LoggerMessage", align 8
  %15 = alloca i32, align 4
  %16 = alloca %"struct.PaymentService::TransactionRpcInfo", align 8
  %17 = alloca ptr, align 8
  %18 = alloca %"class.Logging::LoggerMessage", align 8
  %19 = alloca ptr, align 8
  %20 = alloca ptr, align 8
  %21 = alloca %"class.Logging::LoggerMessage", align 8
  %22 = alloca ptr, align 8
  store ptr %0, ptr %5, align 8, !tbaa !5
  store ptr %1, ptr %6, align 8, !tbaa !5
  store ptr %2, ptr %7, align 8, !tbaa !5
  %23 = load ptr, ptr %5, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %8) #10
  %24 = getelementptr inbounds %"class.PaymentService::WalletService", ptr %23, i32 0, i32 9
  invoke void @_ZN6System9EventLockC1ERNS_5EventE(ptr noundef nonnull align 8 dereferenceable(8) %8, ptr noundef nonnull align 8 dereferenceable(32) %24)
          to label %25 unwind label %56

25:                                               ; preds = %3
  call void @llvm.lifetime.start.p0(i64 32, ptr %11) #10
  %26 = load ptr, ptr %6, align 8, !tbaa !5
  %27 = getelementptr inbounds %"class.PaymentService::WalletService", ptr %23, i32 0, i32 7
  invoke void @_ZN7Logging9LoggerRefC2ERKS0_(ptr noundef nonnull align 8 dereferenceable(40) %12, ptr noundef nonnull align 8 dereferenceable(40) %27)
          to label %28 unwind label %60

28:                                               ; preds = %25
  invoke void @_ZN14PaymentService12_GLOBAL__N_19parseHashERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN7Logging9LoggerRefE(ptr dead_on_unwind writable sret(%"struct.Crypto::Hash") align 1 %11, ptr noundef nonnull align 8 dereferenceable(32) %26, ptr noundef %12)
          to label %29 unwind label %64

29:                                               ; preds = %28
  call void @_ZN7Logging9LoggerRefD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %12) #10
  call void @llvm.lifetime.start.p0(i64 184, ptr %13) #10
  %30 = getelementptr inbounds %"class.PaymentService::WalletService", ptr %23, i32 0, i32 2
  %31 = load ptr, ptr %30, align 8, !tbaa !9
  %32 = load ptr, ptr %31, align 8, !tbaa !27
  %33 = getelementptr inbounds ptr, ptr %32, i64 41
  %34 = load ptr, ptr %33, align 8
  invoke void %34(ptr dead_on_unwind writable sret(%"struct.DynexCN::WalletTransactionWithTransfers") align 8 %13, ptr noundef nonnull align 8 dereferenceable(8) %31, ptr noundef nonnull align 1 dereferenceable(32) %11)
          to label %35 unwind label %68

35:                                               ; preds = %29
  %36 = getelementptr inbounds %"struct.DynexCN::WalletTransactionWithTransfers", ptr %13, i32 0, i32 0
  %37 = getelementptr inbounds %"struct.DynexCN::WalletTransaction", ptr %36, i32 0, i32 0
  %38 = load i8, ptr %37, align 8, !tbaa !29
  %39 = icmp eq i8 %38, 4
  br i1 %39, label %40, label %85

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

42:                                               ; preds = %40
  %43 = invoke noundef nonnull align 8 dereferenceable(161) ptr @_ZStlsIN7Logging13LoggerMessageEA13_cEOT_S4_RKT0_(ptr noundef nonnull align 8 dereferenceable(161) %14, ptr noundef nonnull align 1 dereferenceable(13) @.str.97)
          to label %44 unwind label %76

44:                                               ; preds = %42
  %45 = load ptr, ptr %6, align 8, !tbaa !5
  %46 = invoke noundef nonnull align 8 dereferenceable(161) ptr @_ZStlsIN7Logging13LoggerMessageENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEOT_S9_RKT0_(ptr noundef nonnull align 8 dereferenceable(161) %43, ptr noundef nonnull align 8 dereferenceable(32) %45)
          to label %47 unwind label %76

47:                                               ; preds = %44
  %48 = invoke noundef nonnull align 8 dereferenceable(161) ptr @_ZStlsIN7Logging13LoggerMessageEA12_cEOT_S4_RKT0_(ptr noundef nonnull align 8 dereferenceable(161) %46, ptr noundef nonnull align 1 dereferenceable(12) @.str.98)
          to label %49 unwind label %76

49:                                               ; preds = %47
  call void @_ZN7Logging13LoggerMessageD1Ev(ptr noundef nonnull align 8 dereferenceable(161) %14) #10
  call void @llvm.lifetime.end.p0(i64 432, ptr %14) #10
  %50 = invoke { i32, ptr } @_Z15make_error_codeN7DynexCN5error16WalletErrorCodesE(i32 noundef 23)
          to label %51 unwind label %81

51:                                               ; preds = %49
  %52 = getelementptr inbounds { i32, ptr }, ptr %4, i32 0, i32 0
  %53 = extractvalue { i32, ptr } %50, 0
  store i32 %53, ptr %52, align 8
  %54 = getelementptr inbounds { i32, ptr }, ptr %4, i32 0, i32 1
  %55 = extractvalue { i32, ptr } %50, 1
  store ptr %55, ptr %54, align 8
  store i32 1, ptr %15, align 4
  br label %110

56:                                               ; preds = %3
  %57 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt12system_error
          catch ptr @_ZTISt9exception
  %58 = extractvalue { ptr, i32 } %57, 0
  store ptr %58, ptr %9, align 8
  %59 = extractvalue { ptr, i32 } %57, 1
  store i32 %59, ptr %10, align 4
  br label %125

60:                                               ; preds = %25
  %61 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt12system_error
          catch ptr @_ZTISt9exception
  %62 = extractvalue { ptr, i32 } %61, 0
  store ptr %62, ptr %9, align 8
  %63 = extractvalue { ptr, i32 } %61, 1
  store i32 %63, ptr %10, align 4
  br label %124

64:                                               ; preds = %28
  %65 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt12system_error
          catch ptr @_ZTISt9exception
  %66 = extractvalue { ptr, i32 } %65, 0
  store ptr %66, ptr %9, align 8
  %67 = extractvalue { ptr, i32 } %65, 1
  store i32 %67, ptr %10, align 4
  call void @_ZN7Logging9LoggerRefD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %12) #10
  br label %124

68:                                               ; preds = %29
  %69 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt12system_error
          catch ptr @_ZTISt9exception
  %70 = extractvalue { ptr, i32 } %69, 0
  store ptr %70, ptr %9, align 8
  %71 = extractvalue { ptr, i32 } %69, 1
  store i32 %71, ptr %10, align 4
  br label %123

72:                                               ; preds = %40
  %73 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt12system_error
          catch ptr @_ZTISt9exception
  %74 = extractvalue { ptr, i32 } %73, 0
  store ptr %74, ptr %9, align 8
  %75 = extractvalue { ptr, i32 } %73, 1
  store i32 %75, ptr %10, align 4
  br label %80

76:                                               ; preds = %47, %44, %42
  %77 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt12system_error
          catch ptr @_ZTISt9exception
  %78 = extractvalue { ptr, i32 } %77, 0
  store ptr %78, ptr %9, align 8
  %79 = extractvalue { ptr, i32 } %77, 1
  store i32 %79, ptr %10, align 4
  call void @_ZN7Logging13LoggerMessageD1Ev(ptr noundef nonnull align 8 dereferenceable(161) %14) #10
  br label %80

80:                                               ; preds = %76, %72
  call void @llvm.lifetime.end.p0(i64 432, ptr %14) #10
  br label %122

81:                                               ; preds = %49
  %82 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt12system_error
          catch ptr @_ZTISt9exception
  %83 = extractvalue { ptr, i32 } %82, 0
  store ptr %83, ptr %9, align 8
  %84 = extractvalue { ptr, i32 } %82, 1
  store i32 %84, ptr %10, align 4
  br label %122

85:                                               ; preds = %35
  call void @llvm.lifetime.start.p0(i64 176, ptr %16) #10
  invoke void @_ZN14PaymentService12_GLOBAL__N_151convertTransactionWithTransfersToTransactionRpcInfoERKN7DynexCN30WalletTransactionWithTransfersE(ptr dead_on_unwind writable sret(%"struct.PaymentService::TransactionRpcInfo") align 8 %16, ptr noundef nonnull align 8 dereferenceable(184) %13)
          to label %86 unwind label %113

86:                                               ; preds = %85
  %87 = getelementptr inbounds %"struct.DynexCN::WalletTransactionWithTransfers", ptr %13, i32 0, i32 0
  %88 = getelementptr inbounds %"struct.DynexCN::WalletTransaction", ptr %87, i32 0, i32 3
  %89 = load i32, ptr %88, align 8, !tbaa !42
  %90 = icmp ne i32 %89, -1
  br i1 %90, label %91, label %103

91:                                               ; preds = %86
  %92 = getelementptr inbounds %"class.PaymentService::WalletService", ptr %23, i32 0, i32 2
  %93 = load ptr, ptr %92, align 8, !tbaa !9
  %94 = load ptr, ptr %93, align 8, !tbaa !27
  %95 = getelementptr inbounds ptr, ptr %94, i64 45
  %96 = load ptr, ptr %95, align 8
  %97 = invoke noundef i32 %96(ptr noundef nonnull align 8 dereferenceable(8) %93)
          to label %98 unwind label %117

98:                                               ; preds = %91
  %99 = getelementptr inbounds %"struct.DynexCN::WalletTransactionWithTransfers", ptr %13, i32 0, i32 0
  %100 = getelementptr inbounds %"struct.DynexCN::WalletTransaction", ptr %99, i32 0, i32 3
  %101 = load i32, ptr %100, align 8, !tbaa !42
  %102 = sub i32 %97, %101
  br label %104

103:                                              ; preds = %86
  br label %104

104:                                              ; preds = %103, %98
  %105 = phi i32 [ %102, %98 ], [ 0, %103 ]
  %106 = getelementptr inbounds %"struct.PaymentService::TransactionRpcInfo", ptr %16, i32 0, i32 3
  store i32 %105, ptr %106, align 4, !tbaa !43
  %107 = load ptr, ptr %7, align 8, !tbaa !5
  %108 = invoke noundef nonnull align 8 dereferenceable(176) ptr @_ZN14PaymentService18TransactionRpcInfoaSERKS0_(ptr noundef nonnull align 8 dereferenceable(176) %107, ptr noundef nonnull align 8 dereferenceable(176) %16)
          to label %109 unwind label %117

109:                                              ; preds = %104
  call void @_ZN14PaymentService18TransactionRpcInfoD2Ev(ptr noundef nonnull align 8 dereferenceable(176) %16) #10
  call void @llvm.lifetime.end.p0(i64 176, ptr %16) #10
  store i32 0, ptr %15, align 4
  br label %110

110:                                              ; preds = %109, %51
  call void @_ZN7DynexCN30WalletTransactionWithTransfersD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %13) #10
  call void @llvm.lifetime.end.p0(i64 184, ptr %13) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %11) #10
  call void @_ZN6System9EventLockD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %8) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #10
  %111 = load i32, ptr %15, align 4
  switch i32 %111, label %215 [
    i32 0, label %112
    i32 1, label %205
  ]

112:                                              ; preds = %110
  br label %204

113:                                              ; preds = %85
  %114 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt12system_error
          catch ptr @_ZTISt9exception
  %115 = extractvalue { ptr, i32 } %114, 0
  store ptr %115, ptr %9, align 8
  %116 = extractvalue { ptr, i32 } %114, 1
  store i32 %116, ptr %10, align 4
  br label %121

117:                                              ; preds = %104, %91
  %118 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt12system_error
          catch ptr @_ZTISt9exception
  %119 = extractvalue { ptr, i32 } %118, 0
  store ptr %119, ptr %9, align 8
  %120 = extractvalue { ptr, i32 } %118, 1
  store i32 %120, ptr %10, align 4
  call void @_ZN14PaymentService18TransactionRpcInfoD2Ev(ptr noundef nonnull align 8 dereferenceable(176) %16) #10
  br label %121

121:                                              ; preds = %117, %113
  call void @llvm.lifetime.end.p0(i64 176, ptr %16) #10
  br label %122

122:                                              ; preds = %121, %81, %80
  call void @_ZN7DynexCN30WalletTransactionWithTransfersD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %13) #10
  br label %123

123:                                              ; preds = %122, %68
  call void @llvm.lifetime.end.p0(i64 184, ptr %13) #10
  br label %124

124:                                              ; preds = %123, %64, %60
  call void @llvm.lifetime.end.p0(i64 32, ptr %11) #10
  call void @_ZN6System9EventLockD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %8) #10
  br label %125

125:                                              ; preds = %124, %56
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #10
  br label %126

126:                                              ; preds = %125
  %127 = load i32, ptr %10, align 4
  %128 = call i32 @llvm.eh.typeid.for.p0(ptr @_ZTISt12system_error) #10
  %129 = icmp eq i32 %127, %128
  br i1 %129, label %130, label %146

130:                                              ; preds = %126
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #10
  %131 = load ptr, ptr %9, align 8
  %132 = call ptr @__cxa_begin_catch(ptr %131) #10
  store ptr %132, ptr %20, align 8
  call void @llvm.lifetime.start.p0(i64 432, ptr %21) #10
  %133 = getelementptr inbounds %"class.PaymentService::WalletService", ptr %23, i32 0, i32 7
  invoke void @_ZNK7Logging9LoggerRefclENS_5LevelERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.Logging::LoggerMessage") align 8 %21, ptr noundef nonnull align 8 dereferenceable(40) %133, i32 noundef 2, ptr noundef nonnull align 8 dereferenceable(32) @_ZN7Logging13BRIGHT_YELLOWB5cxx11E)
          to label %134 unwind label %189

134:                                              ; preds = %130
  %135 = invoke noundef nonnull align 8 dereferenceable(161) ptr @_ZStlsIN7Logging13LoggerMessageEA34_cEOT_S4_RKT0_(ptr noundef nonnull align 8 dereferenceable(161) %21, ptr noundef nonnull align 1 dereferenceable(34) @.str.99)
          to label %136 unwind label %193

136:                                              ; preds = %134
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #10
  %137 = load ptr, ptr %20, align 8, !tbaa !5
  %138 = load ptr, ptr %137, align 8, !tbaa !27
  %139 = getelementptr inbounds ptr, ptr %138, i64 2
  %140 = load ptr, ptr %139, align 8
  %141 = call noundef ptr %140(ptr noundef nonnull align 8 dereferenceable(16) %137) #10
  store ptr %141, ptr %22, align 8, !tbaa !5
  %142 = invoke noundef nonnull align 8 dereferenceable(161) ptr @_ZStlsIN7Logging13LoggerMessageEPKcEOT_S5_RKT0_(ptr noundef nonnull align 8 dereferenceable(161) %135, ptr noundef nonnull align 8 dereferenceable(8) %22)
          to label %143 unwind label %197

143:                                              ; preds = %136
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #10
  call void @_ZN7Logging13LoggerMessageD1Ev(ptr noundef nonnull align 8 dereferenceable(161) %21) #10
  call void @llvm.lifetime.end.p0(i64 432, ptr %21) #10
  %144 = load ptr, ptr %20, align 8, !tbaa !5
  %145 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNKSt12system_error4codeEv(ptr noundef nonnull align 8 dereferenceable(32) %144) #10
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %4, ptr align 8 %145, i64 16, i1 false), !tbaa.struct !49
  store i32 1, ptr %15, align 4
  call void @__cxa_end_catch()
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #10
  br label %205

146:                                              ; preds = %126
  %147 = call i32 @llvm.eh.typeid.for.p0(ptr @_ZTISt9exception) #10
  %148 = icmp eq i32 %127, %147
  br i1 %148, label %149, label %207

149:                                              ; preds = %146
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #10
  %150 = load ptr, ptr %9, align 8
  %151 = call ptr @__cxa_begin_catch(ptr %150) #10
  store ptr %151, ptr %17, align 8
  call void @llvm.lifetime.start.p0(i64 432, ptr %18) #10
  %152 = getelementptr inbounds %"class.PaymentService::WalletService", ptr %23, i32 0, i32 7
  invoke void @_ZNK7Logging9LoggerRefclENS_5LevelERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.Logging::LoggerMessage") align 8 %18, ptr noundef nonnull align 8 dereferenceable(40) %152, i32 noundef 2, ptr noundef nonnull align 8 dereferenceable(32) @_ZN7Logging13BRIGHT_YELLOWB5cxx11E)
          to label %153 unwind label %169

153:                                              ; preds = %149
  %154 = invoke noundef nonnull align 8 dereferenceable(161) ptr @_ZStlsIN7Logging13LoggerMessageEA34_cEOT_S4_RKT0_(ptr noundef nonnull align 8 dereferenceable(161) %18, ptr noundef nonnull align 1 dereferenceable(34) @.str.99)
          to label %155 unwind label %173

155:                                              ; preds = %153
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #10
  %156 = load ptr, ptr %17, align 8, !tbaa !5
  %157 = load ptr, ptr %156, align 8, !tbaa !27
  %158 = getelementptr inbounds ptr, ptr %157, i64 2
  %159 = load ptr, ptr %158, align 8
  %160 = call noundef ptr %159(ptr noundef nonnull align 8 dereferenceable(8) %156) #10
  store ptr %160, ptr %19, align 8, !tbaa !5
  %161 = invoke noundef nonnull align 8 dereferenceable(161) ptr @_ZStlsIN7Logging13LoggerMessageEPKcEOT_S5_RKT0_(ptr noundef nonnull align 8 dereferenceable(161) %154, ptr noundef nonnull align 8 dereferenceable(8) %19)
          to label %162 unwind label %177

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

164:                                              ; preds = %162
  %165 = getelementptr inbounds { i32, ptr }, ptr %4, i32 0, i32 0
  %166 = extractvalue { i32, ptr } %163, 0
  store i32 %166, ptr %165, align 8
  %167 = getelementptr inbounds { i32, ptr }, ptr %4, i32 0, i32 1
  %168 = extractvalue { i32, ptr } %163, 1
  store ptr %168, ptr %167, align 8
  store i32 1, ptr %15, align 4
  call void @__cxa_end_catch()
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #10
  br label %205

169:                                              ; preds = %149
  %170 = landingpad { ptr, i32 }
          cleanup
  %171 = extractvalue { ptr, i32 } %170, 0
  store ptr %171, ptr %9, align 8
  %172 = extractvalue { ptr, i32 } %170, 1
  store i32 %172, ptr %10, align 4
  br label %182

173:                                              ; preds = %153
  %174 = landingpad { ptr, i32 }
          cleanup
  %175 = extractvalue { ptr, i32 } %174, 0
  store ptr %175, ptr %9, align 8
  %176 = extractvalue { ptr, i32 } %174, 1
  store i32 %176, ptr %10, align 4
  br label %181

177:                                              ; preds = %155
  %178 = landingpad { ptr, i32 }
          cleanup
  %179 = extractvalue { ptr, i32 } %178, 0
  store ptr %179, ptr %9, align 8
  %180 = extractvalue { ptr, i32 } %178, 1
  store i32 %180, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #10
  br label %181

181:                                              ; preds = %177, %173
  call void @_ZN7Logging13LoggerMessageD1Ev(ptr noundef nonnull align 8 dereferenceable(161) %18) #10
  br label %182

182:                                              ; preds = %181, %169
  call void @llvm.lifetime.end.p0(i64 432, ptr %18) #10
  br label %187

183:                                              ; preds = %162
  %184 = landingpad { ptr, i32 }
          cleanup
  %185 = extractvalue { ptr, i32 } %184, 0
  store ptr %185, ptr %9, align 8
  %186 = extractvalue { ptr, i32 } %184, 1
  store i32 %186, ptr %10, align 4
  br label %187

187:                                              ; preds = %183, %182
  invoke void @__cxa_end_catch()
          to label %188 unwind label %212

188:                                              ; preds = %187
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #10
  br label %207

189:                                              ; preds = %130
  %190 = landingpad { ptr, i32 }
          cleanup
  %191 = extractvalue { ptr, i32 } %190, 0
  store ptr %191, ptr %9, align 8
  %192 = extractvalue { ptr, i32 } %190, 1
  store i32 %192, ptr %10, align 4
  br label %202

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

197:                                              ; preds = %136
  %198 = landingpad { ptr, i32 }
          cleanup
  %199 = extractvalue { ptr, i32 } %198, 0
  store ptr %199, ptr %9, align 8
  %200 = extractvalue { ptr, i32 } %198, 1
  store i32 %200, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #10
  br label %201

201:                                              ; preds = %197, %193
  call void @_ZN7Logging13LoggerMessageD1Ev(ptr noundef nonnull align 8 dereferenceable(161) %21) #10
  br label %202

202:                                              ; preds = %201, %189
  call void @llvm.lifetime.end.p0(i64 432, ptr %21) #10
  invoke void @__cxa_end_catch()
          to label %203 unwind label %212

203:                                              ; preds = %202
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #10
  br label %207

204:                                              ; preds = %112
  call void @_ZNSt10error_codeC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %4) #10
  br label %205

205:                                              ; preds = %204, %164, %143, %110
  %206 = load { i32, ptr }, ptr %4, align 8
  ret { i32, ptr } %206

207:                                              ; preds = %203, %188, %146
  %208 = load ptr, ptr %9, align 8
  %209 = load i32, ptr %10, align 4
  %210 = insertvalue { ptr, i32 } poison, ptr %208, 0
  %211 = insertvalue { ptr, i32 } %210, i32 %209, 1
  resume { ptr, i32 } %211

212:                                              ; preds = %202, %187
  %213 = landingpad { ptr, i32 }
          catch ptr null
  %214 = extractvalue { ptr, i32 } %213, 0
  call void @__clang_call_terminate(ptr %214) #11
  unreachable

215:                                              ; preds = %110
  unreachable
}

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

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN14PaymentService12_GLOBAL__N_151convertTransactionWithTransfersToTransactionRpcInfoERKN7DynexCN30WalletTransactionWithTransfersE(ptr dead_on_unwind noalias writable sret(%"struct.PaymentService::TransactionRpcInfo") align 8, ptr noundef nonnull align 8 dereferenceable(184)) #9

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(176) ptr @_ZN14PaymentService18TransactionRpcInfoaSERKS0_(ptr noundef nonnull align 8 dereferenceable(176), ptr noundef nonnull align 8 dereferenceable(176)) #5 align 2

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !6, i64 16}
!10 = !{!"_ZTSN14PaymentService13WalletServiceE", !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !11, i64 48, !12, i64 56, !6, i64 96, !16, i64 104, !17, i64 136, !19, i64 176}
!11 = !{!"bool", !7, i64 0}
!12 = !{!"_ZTSN7Logging9LoggerRefE", !6, i64 0, !13, i64 8}
!13 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !14, i64 0, !15, i64 8, !7, i64 16}
!14 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !6, i64 0}
!15 = !{!"long", !7, i64 0}
!16 = !{!"_ZTSN6System5EventE", !6, i64 0, !11, i64 8, !6, i64 16, !6, i64 24}
!17 = !{!"_ZTSN6System12ContextGroupE", !6, i64 0, !18, i64 8}
!18 = !{!"_ZTSN6System18NativeContextGroupE", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!19 = !{!"_ZTSSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEmSt4lessIS5_ESaISt4pairIKS5_mEEE", !20, i64 0}
!20 = !{!"_ZTSSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_mESt10_Select1stIS8_ESt4lessIS5_ESaIS8_EE", !21, i64 0}
!21 = !{!"_ZTSNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_mESt10_Select1stIS8_ESt4lessIS5_ESaIS8_EE13_Rb_tree_implISC_Lb1EEE", !22, i64 0, !24, i64 8}
!22 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEE", !23, i64 0}
!23 = !{!"_ZTSSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE"}
!24 = !{!"_ZTSSt15_Rb_tree_header", !25, i64 0, !15, i64 32}
!25 = !{!"_ZTSSt18_Rb_tree_node_base", !26, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!26 = !{!"_ZTSSt14_Rb_tree_color", !7, i64 0}
!27 = !{!28, !28, i64 0}
!28 = !{!"vtable pointer", !8, i64 0}
!29 = !{!30, !32, i64 0}
!30 = !{!"_ZTSN7DynexCN30WalletTransactionWithTransfersE", !31, i64 0, !38, i64 160}
!31 = !{!"_ZTSN7DynexCN17WalletTransactionE", !32, i64 0, !15, i64 8, !33, i64 16, !34, i64 20, !35, i64 52, !15, i64 88, !15, i64 96, !15, i64 104, !15, i64 112, !13, i64 120, !11, i64 152}
!32 = !{!"_ZTSN7DynexCN22WalletTransactionStateE", !7, i64 0}
!33 = !{!"int", !7, i64 0}
!34 = !{!"_ZTSN6Crypto4HashE", !7, i64 0}
!35 = !{!"_ZTSN5boost8optionalIN6Crypto9SecretKeyEEE", !36, i64 0}
!36 = !{!"_ZTSN5boost15optional_detail13optional_baseIN6Crypto9SecretKeyEEE", !11, i64 0, !37, i64 1}
!37 = !{!"_ZTSN5boost15optional_detail15aligned_storageIN6Crypto9SecretKeyEEE", !7, i64 0}
!38 = !{!"_ZTSSt6vectorIN7DynexCN14WalletTransferESaIS1_EE", !39, i64 0}
!39 = !{!"_ZTSSt12_Vector_baseIN7DynexCN14WalletTransferESaIS1_EE", !40, i64 0}
!40 = !{!"_ZTSNSt12_Vector_baseIN7DynexCN14WalletTransferESaIS1_EE12_Vector_implE", !41, i64 0}
!41 = !{!"_ZTSNSt12_Vector_baseIN7DynexCN14WalletTransferESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!42 = !{!30, !33, i64 16}
!43 = !{!44, !33, i64 44}
!44 = !{!"_ZTSN14PaymentService18TransactionRpcInfoE", !7, i64 0, !13, i64 8, !33, i64 40, !33, i64 44, !15, i64 48, !11, i64 56, !15, i64 64, !15, i64 72, !15, i64 80, !45, i64 88, !13, i64 112, !13, i64 144}
!45 = !{!"_ZTSSt6vectorIN14PaymentService15TransferRpcInfoESaIS1_EE", !46, i64 0}
!46 = !{!"_ZTSSt12_Vector_baseIN14PaymentService15TransferRpcInfoESaIS1_EE", !47, i64 0}
!47 = !{!"_ZTSNSt12_Vector_baseIN14PaymentService15TransferRpcInfoESaIS1_EE12_Vector_implE", !48, i64 0}
!48 = !{!"_ZTSNSt12_Vector_baseIN14PaymentService15TransferRpcInfoESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!49 = !{i64 0, i64 4, !50, i64 8, i64 8, !5}
!50 = !{!33, !33, 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 }
%"struct.Crypto::Hash" = type { [32 x i8] }
%"class.std::error_code" = type { i32, ptr }
%"class.System::EventLock" = type { ptr }
%"class.Logging::LoggerRef" = type { ptr, %"class.std::__cxx11::basic_string" }
%"struct.DynexCN::WalletTransactionWithTransfers" = type { %"struct.DynexCN::WalletTransaction", %"class.std::vector.291" }
%"struct.DynexCN::WalletTransaction" = type <{ i8, [7 x i8], i64, i32, %"struct.Crypto::Hash", %"class.boost::optional", [3 x i8], i64, i64, i64, i64, %"class.std::__cxx11::basic_string", i8, [7 x i8] }>
%"class.boost::optional" = type { %"class.boost::optional_detail::optional_base" }
%"class.boost::optional_detail::optional_base" = type { i8, %"class.boost::optional_detail::aligned_storage" }
%"class.boost::optional_detail::aligned_storage" = type { %"union.boost::optional_detail::aligned_storage<Crypto::SecretKey>::dummy_u" }
%"union.boost::optional_detail::aligned_storage<Crypto::SecretKey>::dummy_u" = type { [32 x i8] }
%"class.std::vector.291" = type { %"struct.std::_Vector_base.292" }
%"struct.std::_Vector_base.292" = type { %"struct.std::_Vector_base<DynexCN::WalletTransfer, std::allocator<DynexCN::WalletTransfer>>::_Vector_impl" }
%"struct.std::_Vector_base<DynexCN::WalletTransfer, std::allocator<DynexCN::WalletTransfer>>::_Vector_impl" = type { %"struct.std::_Vector_base<DynexCN::WalletTransfer, std::allocator<DynexCN::WalletTransfer>>::_Vector_impl_data" }
%"struct.std::_Vector_base<DynexCN::WalletTransfer, std::allocator<DynexCN::WalletTransfer>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.PaymentService::TransactionRpcInfo" = type { i8, %"class.std::__cxx11::basic_string", i32, i32, i64, i8, i64, i64, i64, %"class.std::vector.286", %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string" }
%"class.std::vector.286" = type { %"struct.std::_Vector_base.287" }
%"struct.std::_Vector_base.287" = type { %"struct.std::_Vector_base<PaymentService::TransferRpcInfo, std::allocator<PaymentService::TransferRpcInfo>>::_Vector_impl" }
%"struct.std::_Vector_base<PaymentService::TransferRpcInfo, std::allocator<PaymentService::TransferRpcInfo>>::_Vector_impl" = type { %"struct.std::_Vector_base<PaymentService::TransferRpcInfo, std::allocator<PaymentService::TransferRpcInfo>>::_Vector_impl_data" }
%"struct.std::_Vector_base<PaymentService::TransferRpcInfo, std::allocator<PaymentService::TransferRpcInfo>>::_Vector_impl_data" = type { ptr, ptr, ptr }

@_ZTISt12system_error = external constant ptr
@_ZTISt9exception = external constant ptr
@_ZN7Logging13BRIGHT_YELLOWB5cxx11E = external global %"class.std::__cxx11::basic_string", align 8
@.str.97 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.98 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.99 = external hidden unnamed_addr constant [34 x i8], align 1

declare i32 @__gxx_personality_v0(...)

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

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

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

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

declare ptr @__cxa_begin_catch(ptr) local_unnamed_addr

declare void @__cxa_end_catch() local_unnamed_addr

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

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

; Function Attrs: 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 #5

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

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

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(161) ptr @_ZStlsIN7Logging13LoggerMessageEA34_cEOT_S4_RKT0_(ptr noundef nonnull align 8 dereferenceable(161), ptr noundef nonnull align 1 dereferenceable(34)) local_unnamed_addr #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)) local_unnamed_addr #5

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

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN14PaymentService12_GLOBAL__N_19parseHashERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN7Logging9LoggerRefE(ptr dead_on_unwind noalias writable sret(%"struct.Crypto::Hash") align 1, ptr noundef nonnull align 8 dereferenceable(32), ptr noundef) local_unnamed_addr #9

; Function Attrs: mustprogress uwtable
define dso_local { i32, ptr } @_ZN14PaymentService13WalletService14getTransactionERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERNS_18TransactionRpcInfoE(ptr noundef nonnull align 8 dereferenceable(224) %0, ptr noundef nonnull align 8 dereferenceable(32) %1, ptr noundef nonnull align 8 dereferenceable(176) %2) local_unnamed_addr #9 align 2 personality ptr @__gxx_personality_v0 {
  %4 = alloca %"class.std::error_code", align 8
  %5 = alloca %"class.System::EventLock", align 8
  %6 = alloca %"struct.Crypto::Hash", align 1
  %7 = alloca %"class.Logging::LoggerRef", align 8
  %8 = alloca %"struct.DynexCN::WalletTransactionWithTransfers", align 8
  %9 = alloca %"class.Logging::LoggerMessage", align 8
  %10 = alloca %"struct.PaymentService::TransactionRpcInfo", align 8
  %11 = alloca %"class.Logging::LoggerMessage", align 8
  %12 = alloca ptr, align 8
  %13 = alloca %"class.Logging::LoggerMessage", align 8
  %14 = alloca ptr, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %5) #10
  %15 = getelementptr inbounds i8, ptr %0, i64 104
  invoke void @_ZN6System9EventLockC1ERNS_5EventE(ptr noundef nonnull align 8 dereferenceable(8) %5, ptr noundef nonnull align 8 dereferenceable(32) %15)
          to label %16 unwind label %39

16:                                               ; preds = %3
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %6) #10
  %17 = getelementptr inbounds i8, ptr %0, i64 56
  invoke void @_ZN7Logging9LoggerRefC2ERKS0_(ptr noundef nonnull align 8 dereferenceable(40) %7, ptr noundef nonnull align 8 dereferenceable(40) %17)
          to label %18 unwind label %41

18:                                               ; preds = %16
  invoke void @_ZN14PaymentService12_GLOBAL__N_19parseHashERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN7Logging9LoggerRefE(ptr dead_on_unwind nonnull writable sret(%"struct.Crypto::Hash") align 1 %6, ptr noundef nonnull align 8 dereferenceable(32) %1, ptr noundef nonnull %7)
          to label %19 unwind label %43

19:                                               ; preds = %18
  call void @_ZN7Logging9LoggerRefD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %7) #10
  call void @llvm.lifetime.start.p0(i64 184, ptr nonnull %8) #10
  %20 = getelementptr inbounds i8, ptr %0, i64 16
  %21 = load ptr, ptr %20, align 8, !tbaa !5
  %22 = load ptr, ptr %21, align 8, !tbaa !26
  %23 = getelementptr inbounds i8, ptr %22, i64 328
  %24 = load ptr, ptr %23, align 8
  invoke void %24(ptr dead_on_unwind nonnull writable sret(%"struct.DynexCN::WalletTransactionWithTransfers") align 8 %8, ptr noundef nonnull align 8 dereferenceable(8) %21, ptr noundef nonnull align 1 dereferenceable(32) %6)
          to label %25 unwind label %45

25:                                               ; preds = %19
  %26 = load i8, ptr %8, align 8, !tbaa !28
  %.not37 = icmp eq i8 %26, 4
  br i1 %.not37, label %27, label %52

27:                                               ; preds = %25
  call void @llvm.lifetime.start.p0(i64 432, ptr nonnull %9) #10
  invoke void @_ZNK7Logging9LoggerRefclENS_5LevelERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%"class.Logging::LoggerMessage") align 8 %9, ptr noundef nonnull align 8 dereferenceable(40) %17, i32 noundef 2, ptr noundef nonnull align 8 dereferenceable(32) @_ZN7Logging13BRIGHT_YELLOWB5cxx11E)
          to label %28 unwind label %47

28:                                               ; preds = %27
  %29 = invoke noundef nonnull align 8 dereferenceable(161) ptr @_ZStlsIN7Logging13LoggerMessageEA13_cEOT_S4_RKT0_(ptr noundef nonnull align 8 dereferenceable(161) %9, ptr noundef nonnull align 1 dereferenceable(13) @.str.97)
          to label %30 unwind label %49

30:                                               ; preds = %28
  %31 = invoke noundef nonnull align 8 dereferenceable(161) ptr @_ZStlsIN7Logging13LoggerMessageENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEOT_S9_RKT0_(ptr noundef nonnull align 8 dereferenceable(161) %29, ptr noundef nonnull align 8 dereferenceable(32) %1)
          to label %32 unwind label %49

32:                                               ; preds = %30
  %33 = invoke noundef nonnull align 8 dereferenceable(161) ptr @_ZStlsIN7Logging13LoggerMessageEA12_cEOT_S4_RKT0_(ptr noundef nonnull align 8 dereferenceable(161) %31, ptr noundef nonnull align 1 dereferenceable(12) @.str.98)
          to label %34 unwind label %49

34:                                               ; preds = %32
  call void @_ZN7Logging13LoggerMessageD1Ev(ptr noundef nonnull align 8 dereferenceable(161) %9) #10
  call void @llvm.lifetime.end.p0(i64 432, ptr nonnull %9) #10
  %35 = call { i32, ptr } @_Z15make_error_codeN7DynexCN5error16WalletErrorCodesE(i32 noundef 23)
  %36 = extractvalue { i32, ptr } %35, 0
  store i32 %36, ptr %4, align 8
  %37 = getelementptr inbounds i8, ptr %4, i64 8
  %38 = extractvalue { i32, ptr } %35, 1
  store ptr %38, ptr %37, align 8
  br label %70

39:                                               ; preds = %3
  %40 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt12system_error
          catch ptr @_ZTISt9exception
  br label %79

41:                                               ; preds = %16
  %42 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt12system_error
          catch ptr @_ZTISt9exception
  br label %78

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

45:                                               ; preds = %19
  %46 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt12system_error
          catch ptr @_ZTISt9exception
  br label %77

47:                                               ; preds = %27
  %48 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt12system_error
          catch ptr @_ZTISt9exception
  br label %51

49:                                               ; preds = %32, %30, %28
  %50 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt12system_error
          catch ptr @_ZTISt9exception
  call void @_ZN7Logging13LoggerMessageD1Ev(ptr noundef nonnull align 8 dereferenceable(161) %9) #10
  br label %51

51:                                               ; preds = %49, %47
  %.pn25 = phi { ptr, i32 } [ %50, %49 ], [ %48, %47 ]
  call void @llvm.lifetime.end.p0(i64 432, ptr nonnull %9) #10
  br label %76

52:                                               ; preds = %25
  call void @llvm.lifetime.start.p0(i64 176, ptr nonnull %10) #10
  invoke void @_ZN14PaymentService12_GLOBAL__N_151convertTransactionWithTransfersToTransactionRpcInfoERKN7DynexCN30WalletTransactionWithTransfersE(ptr dead_on_unwind nonnull writable sret(%"struct.PaymentService::TransactionRpcInfo") align 8 %10, ptr noundef nonnull align 8 dereferenceable(184) %8)
          to label %53 unwind label %71

53:                                               ; preds = %52
  %54 = getelementptr inbounds i8, ptr %8, i64 16
  %55 = load i32, ptr %54, align 8, !tbaa !41
  %.not = icmp eq i32 %55, -1
  br i1 %.not, label %65, label %56

56:                                               ; preds = %53
  %57 = load ptr, ptr %20, align 8, !tbaa !5
  %58 = load ptr, ptr %57, align 8, !tbaa !26
  %59 = getelementptr inbounds i8, ptr %58, i64 360
  %60 = load ptr, ptr %59, align 8
  %61 = invoke noundef i32 %60(ptr noundef nonnull align 8 dereferenceable(8) %57)
          to label %62 unwind label %73

62:                                               ; preds = %56
  %63 = load i32, ptr %54, align 8, !tbaa !41
  %64 = sub i32 %61, %63
  br label %65

65:                                               ; preds = %53, %62
  %66 = phi i32 [ %64, %62 ], [ 0, %53 ]
  %67 = getelementptr inbounds i8, ptr %10, i64 44
  store i32 %66, ptr %67, align 4, !tbaa !42
  %68 = invoke noundef nonnull align 8 dereferenceable(176) ptr @_ZN14PaymentService18TransactionRpcInfoaSERKS0_(ptr noundef nonnull align 8 dereferenceable(176) %2, ptr noundef nonnull align 8 dereferenceable(176) %10)
          to label %69 unwind label %73

69:                                               ; preds = %65
  call void @_ZN14PaymentService18TransactionRpcInfoD2Ev(ptr noundef nonnull align 8 dereferenceable(176) %10) #10
  call void @llvm.lifetime.end.p0(i64 176, ptr nonnull %10) #10
  br label %70

70:                                               ; preds = %69, %34
  call void @_ZN7DynexCN30WalletTransactionWithTransfersD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %8) #10
  call void @llvm.lifetime.end.p0(i64 184, ptr nonnull %8) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %6) #10
  call void @_ZN6System9EventLockD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %5) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #10
  br i1 %.not37, label %131, label %130

71:                                               ; preds = %52
  %72 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt12system_error
          catch ptr @_ZTISt9exception
  br label %75

73:                                               ; preds = %65, %56
  %74 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt12system_error
          catch ptr @_ZTISt9exception
  call void @_ZN14PaymentService18TransactionRpcInfoD2Ev(ptr noundef nonnull align 8 dereferenceable(176) %10) #10
  br label %75

75:                                               ; preds = %73, %71
  %.pn = phi { ptr, i32 } [ %74, %73 ], [ %72, %71 ]
  call void @llvm.lifetime.end.p0(i64 176, ptr nonnull %10) #10
  br label %76

76:                                               ; preds = %75, %51
  %.pn25.pn = phi { ptr, i32 } [ %.pn25, %51 ], [ %.pn, %75 ]
  call void @_ZN7DynexCN30WalletTransactionWithTransfersD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %8) #10
  br label %77

77:                                               ; preds = %76, %45
  %.pn25.pn.pn = phi { ptr, i32 } [ %.pn25.pn, %76 ], [ %46, %45 ]
  call void @llvm.lifetime.end.p0(i64 184, ptr nonnull %8) #10
  br label %78

78:                                               ; preds = %77, %43, %41
  %.pn25.pn.pn.pn = phi { ptr, i32 } [ %.pn25.pn.pn, %77 ], [ %44, %43 ], [ %42, %41 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %6) #10
  call void @_ZN6System9EventLockD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %5) #10
  br label %79

79:                                               ; preds = %78, %39
  %.pn25.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn25.pn.pn.pn, %78 ], [ %40, %39 ]
  %.5 = extractvalue { ptr, i32 } %.pn25.pn.pn.pn.pn, 0
  %.517 = extractvalue { ptr, i32 } %.pn25.pn.pn.pn.pn, 1
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #10
  %80 = call i32 @llvm.eh.typeid.for.p0(ptr nonnull @_ZTISt12system_error) #10
  %81 = icmp eq i32 %.517, %80
  br i1 %81, label %82, label %95

82:                                               ; preds = %79
  %83 = call ptr @__cxa_begin_catch(ptr %.5) #10
  call void @llvm.lifetime.start.p0(i64 432, ptr nonnull %13) #10
  %84 = getelementptr inbounds i8, ptr %0, i64 56
  invoke void @_ZNK7Logging9LoggerRefclENS_5LevelERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%"class.Logging::LoggerMessage") align 8 %13, ptr noundef nonnull align 8 dereferenceable(40) %84, i32 noundef 2, ptr noundef nonnull align 8 dereferenceable(32) @_ZN7Logging13BRIGHT_YELLOWB5cxx11E)
          to label %85 unwind label %122

85:                                               ; preds = %82
  %86 = invoke noundef nonnull align 8 dereferenceable(161) ptr @_ZStlsIN7Logging13LoggerMessageEA34_cEOT_S4_RKT0_(ptr noundef nonnull align 8 dereferenceable(161) %13, ptr noundef nonnull align 1 dereferenceable(34) @.str.99)
          to label %87 unwind label %124

87:                                               ; preds = %85
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %14) #10
  %88 = load ptr, ptr %83, align 8, !tbaa !26
  %89 = getelementptr inbounds i8, ptr %88, i64 16
  %90 = load ptr, ptr %89, align 8
  %91 = call noundef ptr %90(ptr noundef nonnull align 8 dereferenceable(16) %83) #10
  store ptr %91, ptr %14, align 8, !tbaa !48
  %92 = invoke noundef nonnull align 8 dereferenceable(161) ptr @_ZStlsIN7Logging13LoggerMessageEPKcEOT_S5_RKT0_(ptr noundef nonnull align 8 dereferenceable(161) %86, ptr noundef nonnull align 8 dereferenceable(8) %14)
          to label %93 unwind label %126

93:                                               ; preds = %87
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #10
  call void @_ZN7Logging13LoggerMessageD1Ev(ptr noundef nonnull align 8 dereferenceable(161) %13) #10
  call void @llvm.lifetime.end.p0(i64 432, ptr nonnull %13) #10
  %94 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNKSt12system_error4codeEv(ptr noundef nonnull align 8 dereferenceable(32) %83) #10
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %4, ptr noundef nonnull align 8 dereferenceable(16) %94, i64 16, i1 false), !tbaa.struct !49
  call void @__cxa_end_catch()
  br label %131

95:                                               ; preds = %79
  %96 = call i32 @llvm.eh.typeid.for.p0(ptr nonnull @_ZTISt9exception) #10
  %97 = icmp eq i32 %.517, %96
  br i1 %97, label %98, label %132

98:                                               ; preds = %95
  %99 = call ptr @__cxa_begin_catch(ptr %.5) #10
  call void @llvm.lifetime.start.p0(i64 432, ptr nonnull %11) #10
  %100 = getelementptr inbounds i8, ptr %0, i64 56
  invoke void @_ZNK7Logging9LoggerRefclENS_5LevelERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%"class.Logging::LoggerMessage") align 8 %11, ptr noundef nonnull align 8 dereferenceable(40) %100, i32 noundef 2, ptr noundef nonnull align 8 dereferenceable(32) @_ZN7Logging13BRIGHT_YELLOWB5cxx11E)
          to label %101 unwind label %114

101:                                              ; preds = %98
  %102 = invoke noundef nonnull align 8 dereferenceable(161) ptr @_ZStlsIN7Logging13LoggerMessageEA34_cEOT_S4_RKT0_(ptr noundef nonnull align 8 dereferenceable(161) %11, ptr noundef nonnull align 1 dereferenceable(34) @.str.99)
          to label %103 unwind label %116

103:                                              ; preds = %101
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %12) #10
  %104 = load ptr, ptr %99, align 8, !tbaa !26
  %105 = getelementptr inbounds i8, ptr %104, i64 16
  %106 = load ptr, ptr %105, align 8
  %107 = call noundef ptr %106(ptr noundef nonnull align 8 dereferenceable(8) %99) #10
  store ptr %107, ptr %12, align 8, !tbaa !48
  %108 = invoke noundef nonnull align 8 dereferenceable(161) ptr @_ZStlsIN7Logging13LoggerMessageEPKcEOT_S5_RKT0_(ptr noundef nonnull align 8 dereferenceable(161) %102, ptr noundef nonnull align 8 dereferenceable(8) %12)
          to label %109 unwind label %118

109:                                              ; preds = %103
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #10
  call void @_ZN7Logging13LoggerMessageD1Ev(ptr noundef nonnull align 8 dereferenceable(161) %11) #10
  call void @llvm.lifetime.end.p0(i64 432, ptr nonnull %11) #10
  %110 = call { i32, ptr } @_Z15make_error_codeN7DynexCN5error16WalletErrorCodesE(i32 noundef 5)
  %111 = extractvalue { i32, ptr } %110, 0
  store i32 %111, ptr %4, align 8
  %112 = getelementptr inbounds i8, ptr %4, i64 8
  %113 = extractvalue { i32, ptr } %110, 1
  store ptr %113, ptr %112, align 8
  call void @__cxa_end_catch()
  br label %131

114:                                              ; preds = %98
  %115 = landingpad { ptr, i32 }
          cleanup
  br label %121

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

118:                                              ; preds = %103
  %119 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #10
  br label %120

120:                                              ; preds = %118, %116
  %.pn31 = phi { ptr, i32 } [ %119, %118 ], [ %117, %116 ]
  call void @_ZN7Logging13LoggerMessageD1Ev(ptr noundef nonnull align 8 dereferenceable(161) %11) #10
  br label %121

121:                                              ; preds = %120, %114
  %.pn31.pn = phi { ptr, i32 } [ %.pn31, %120 ], [ %115, %114 ]
  call void @llvm.lifetime.end.p0(i64 432, ptr nonnull %11) #10
  invoke void @__cxa_end_catch()
          to label %132 unwind label %133

122:                                              ; preds = %82
  %123 = landingpad { ptr, i32 }
          cleanup
  br label %129

124:                                              ; preds = %85
  %125 = landingpad { ptr, i32 }
          cleanup
  br label %128

126:                                              ; preds = %87
  %127 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #10
  br label %128

128:                                              ; preds = %126, %124
  %.pn34 = phi { ptr, i32 } [ %127, %126 ], [ %125, %124 ]
  call void @_ZN7Logging13LoggerMessageD1Ev(ptr noundef nonnull align 8 dereferenceable(161) %13) #10
  br label %129

129:                                              ; preds = %128, %122
  %.pn34.pn = phi { ptr, i32 } [ %.pn34, %128 ], [ %123, %122 ]
  call void @llvm.lifetime.end.p0(i64 432, ptr nonnull %13) #10
  invoke void @__cxa_end_catch()
          to label %132 unwind label %133

130:                                              ; preds = %70
  call void @_ZNSt10error_codeC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %4) #10
  br label %131

131:                                              ; preds = %70, %130, %109, %93
  %.fca.0.load = load i32, ptr %4, align 8
  %.fca.0.insert = insertvalue { i32, ptr } poison, i32 %.fca.0.load, 0
  %.fca.1.gep = getelementptr inbounds i8, ptr %4, i64 8
  %.fca.1.load = load ptr, ptr %.fca.1.gep, align 8
  %.fca.1.insert = insertvalue { i32, ptr } %.fca.0.insert, ptr %.fca.1.load, 1
  ret { i32, ptr } %.fca.1.insert

132:                                              ; preds = %129, %121, %95
  %.merged = phi { ptr, i32 } [ %.pn25.pn.pn.pn.pn, %95 ], [ %.pn31.pn, %121 ], [ %.pn34.pn, %129 ]
  resume { ptr, i32 } %.merged

133:                                              ; preds = %129, %121
  %134 = landingpad { ptr, i32 }
          catch ptr null
  %135 = extractvalue { ptr, i32 } %134, 0
  call void @__clang_call_terminate(ptr %135) #11
  unreachable
}

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

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN14PaymentService12_GLOBAL__N_151convertTransactionWithTransfersToTransactionRpcInfoERKN7DynexCN30WalletTransactionWithTransfersE(ptr dead_on_unwind noalias writable sret(%"struct.PaymentService::TransactionRpcInfo") align 8, ptr noundef nonnull align 8 dereferenceable(184)) local_unnamed_addr #9

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(176) ptr @_ZN14PaymentService18TransactionRpcInfoaSERKS0_(ptr noundef nonnull align 8 dereferenceable(176), ptr noundef nonnull align 8 dereferenceable(176)) local_unnamed_addr #5 align 2

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

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

attributes #0 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { noinline noreturn nounwind uwtable "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { 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 #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 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #9 = { 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 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 16}
!6 = !{!"_ZTSN14PaymentService13WalletServiceE", !7, i64 8, !7, i64 16, !7, i64 24, !7, i64 32, !7, i64 40, !10, i64 48, !11, i64 56, !7, i64 96, !15, i64 104, !16, i64 136, !18, i64 176}
!7 = !{!"any pointer", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C++ TBAA"}
!10 = !{!"bool", !8, i64 0}
!11 = !{!"_ZTSN7Logging9LoggerRefE", !7, i64 0, !12, i64 8}
!12 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !13, i64 0, !14, i64 8, !8, i64 16}
!13 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !7, i64 0}
!14 = !{!"long", !8, i64 0}
!15 = !{!"_ZTSN6System5EventE", !7, i64 0, !10, i64 8, !7, i64 16, !7, i64 24}
!16 = !{!"_ZTSN6System12ContextGroupE", !7, i64 0, !17, i64 8}
!17 = !{!"_ZTSN6System18NativeContextGroupE", !7, i64 0, !7, i64 8, !7, i64 16, !7, i64 24}
!18 = !{!"_ZTSSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEmSt4lessIS5_ESaISt4pairIKS5_mEEE", !19, i64 0}
!19 = !{!"_ZTSSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_mESt10_Select1stIS8_ESt4lessIS5_ESaIS8_EE", !20, i64 0}
!20 = !{!"_ZTSNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_mESt10_Select1stIS8_ESt4lessIS5_ESaIS8_EE13_Rb_tree_implISC_Lb1EEE", !21, i64 0, !23, i64 8}
!21 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEE", !22, i64 0}
!22 = !{!"_ZTSSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE"}
!23 = !{!"_ZTSSt15_Rb_tree_header", !24, i64 0, !14, i64 32}
!24 = !{!"_ZTSSt18_Rb_tree_node_base", !25, i64 0, !7, i64 8, !7, i64 16, !7, i64 24}
!25 = !{!"_ZTSSt14_Rb_tree_color", !8, i64 0}
!26 = !{!27, !27, i64 0}
!27 = !{!"vtable pointer", !9, i64 0}
!28 = !{!29, !31, i64 0}
!29 = !{!"_ZTSN7DynexCN30WalletTransactionWithTransfersE", !30, i64 0, !37, i64 160}
!30 = !{!"_ZTSN7DynexCN17WalletTransactionE", !31, i64 0, !14, i64 8, !32, i64 16, !33, i64 20, !34, i64 52, !14, i64 88, !14, i64 96, !14, i64 104, !14, i64 112, !12, i64 120, !10, i64 152}
!31 = !{!"_ZTSN7DynexCN22WalletTransactionStateE", !8, i64 0}
!32 = !{!"int", !8, i64 0}
!33 = !{!"_ZTSN6Crypto4HashE", !8, i64 0}
!34 = !{!"_ZTSN5boost8optionalIN6Crypto9SecretKeyEEE", !35, i64 0}
!35 = !{!"_ZTSN5boost15optional_detail13optional_baseIN6Crypto9SecretKeyEEE", !10, i64 0, !36, i64 1}
!36 = !{!"_ZTSN5boost15optional_detail15aligned_storageIN6Crypto9SecretKeyEEE", !8, i64 0}
!37 = !{!"_ZTSSt6vectorIN7DynexCN14WalletTransferESaIS1_EE", !38, i64 0}
!38 = !{!"_ZTSSt12_Vector_baseIN7DynexCN14WalletTransferESaIS1_EE", !39, i64 0}
!39 = !{!"_ZTSNSt12_Vector_baseIN7DynexCN14WalletTransferESaIS1_EE12_Vector_implE", !40, i64 0}
!40 = !{!"_ZTSNSt12_Vector_baseIN7DynexCN14WalletTransferESaIS1_EE17_Vector_impl_dataE", !7, i64 0, !7, i64 8, !7, i64 16}
!41 = !{!29, !32, i64 16}
!42 = !{!43, !32, i64 44}
!43 = !{!"_ZTSN14PaymentService18TransactionRpcInfoE", !8, i64 0, !12, i64 8, !32, i64 40, !32, i64 44, !14, i64 48, !10, i64 56, !14, i64 64, !14, i64 72, !14, i64 80, !44, i64 88, !12, i64 112, !12, i64 144}
!44 = !{!"_ZTSSt6vectorIN14PaymentService15TransferRpcInfoESaIS1_EE", !45, i64 0}
!45 = !{!"_ZTSSt12_Vector_baseIN14PaymentService15TransferRpcInfoESaIS1_EE", !46, i64 0}
!46 = !{!"_ZTSNSt12_Vector_baseIN14PaymentService15TransferRpcInfoESaIS1_EE12_Vector_implE", !47, i64 0}
!47 = !{!"_ZTSNSt12_Vector_baseIN14PaymentService15TransferRpcInfoESaIS1_EE17_Vector_impl_dataE", !7, i64 0, !7, i64 8, !7, i64 16}
!48 = !{!7, !7, i64 0}
!49 = !{i64 0, i64 4, !50, i64 8, i64 8, !48}
!50 = !{!32, !32, i64 0}


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