Wallet.smali

.class public Lorg/bitcoinj/wallet/Wallet;
.super Lorg/bitcoinj/utils/BaseTaggableObject;
.source "Wallet.java"

# interfaces
.implements Lorg/bitcoinj/core/PeerFilterProvider;
.implements Lorg/bitcoinj/core/TransactionBag;
.implements Lorg/bitcoinj/core/listeners/NewBestBlockListener;
.implements Lorg/bitcoinj/core/listeners/ReorganizeListener;
.implements Lorg/bitcoinj/core/listeners/TransactionReceivedInBlockListener;
.implements Lorg/bitcoinj/wallet/KeyBag;


# static fields
.field private static final MINIMUM_BLOOM_DATA_LENGTH:I = 0x8

.field private static final log:Lorg/slf4j/Logger;


# instance fields
.field private acceptRiskyTransactions:Z

.field private balanceFutureRequests:Ljava/util/List;
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "Ljava/util/List",
            "<",
            "Lorg/bitcoinj/wallet/Wallet$BalanceFutureRequest;",
            ">;"
        }
    .end annotation
.end field

.field private final bloomFilterGuard:Ljava/util/concurrent/atomic/AtomicInteger;

.field private final bloomOutPoints:Ljava/util/ArrayList;
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "Ljava/util/ArrayList",
            "<",
            "Lorg/bitcoinj/core/TransactionOutPoint;",
            ">;"
        }
    .end annotation
.end field

.field private final changeListeners:Ljava/util/concurrent/CopyOnWriteArrayList;
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "Ljava/util/concurrent/CopyOnWriteArrayList",
            "<",
            "Lorg/bitcoinj/utils/ListenerRegistration",
            "<",
            "Lorg/bitcoinj/wallet/listeners/WalletChangeEventListener;",
            ">;>;"
        }
    .end annotation
.end field

.field protected coinSelector:Lorg/bitcoinj/wallet/CoinSelector;

.field private final coinsReceivedListeners:Ljava/util/concurrent/CopyOnWriteArrayList;
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "Ljava/util/concurrent/CopyOnWriteArrayList",
            "<",
            "Lorg/bitcoinj/utils/ListenerRegistration",
            "<",
            "Lorg/bitcoinj/wallet/listeners/WalletCoinsReceivedEventListener;",
            ">;>;"
        }
    .end annotation
.end field

.field private final coinsSentListeners:Ljava/util/concurrent/CopyOnWriteArrayList;
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "Ljava/util/concurrent/CopyOnWriteArrayList",
            "<",
            "Lorg/bitcoinj/utils/ListenerRegistration",
            "<",
            "Lorg/bitcoinj/wallet/listeners/WalletCoinsSentEventListener;",
            ">;>;"
        }
    .end annotation
.end field

.field private confidenceChanged:Ljava/util/Map;
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "Ljava/util/Map",
            "<",
            "Lorg/bitcoinj/core/Transaction;",
            "Lorg/bitcoinj/core/TransactionConfidence$Listener$ChangeReason;",
            ">;"
        }
    .end annotation
.end field

.field protected final context:Lorg/bitcoinj/core/Context;

.field private final dead:Ljava/util/Map;
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "Ljava/util/Map",
            "<",
            "Lorg/bitcoinj/core/Sha256Hash;",
            "Lorg/bitcoinj/core/Transaction;",
            ">;"
        }
    .end annotation
.end field

.field private description:Ljava/lang/String;

.field private final extensions:Ljava/util/HashMap;
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "Ljava/util/HashMap",
            "<",
            "Ljava/lang/String;",
            "Lorg/bitcoinj/wallet/WalletExtension;",
            ">;"
        }
    .end annotation
.end field

.field private hardSaveOnNextBlock:Z

.field private ignoreNextNewBlock:Ljava/util/HashSet;
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "Ljava/util/HashSet",
            "<",
            "Lorg/bitcoinj/core/Sha256Hash;",
            ">;"
        }
    .end annotation
.end field

.field private insideReorg:Z

.field private keyChainGroup:Lorg/bitcoinj/wallet/KeyChainGroup;

.field protected final keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;

.field private lastBlockSeenHash:Lorg/bitcoinj/core/Sha256Hash;

.field private lastBlockSeenHeight:I

.field private lastBlockSeenTimeSecs:J

.field protected final lock:Ljava/util/concurrent/locks/ReentrantLock;

.field protected final myUnspents:Ljava/util/HashSet;
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "Ljava/util/HashSet",
            "<",
            "Lorg/bitcoinj/core/TransactionOutput;",
            ">;"
        }
    .end annotation
.end field

.field private onWalletChangedSuppressions:I

.field protected final params:Lorg/bitcoinj/core/NetworkParameters;

.field private final pending:Ljava/util/Map;
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "Ljava/util/Map",
            "<",
            "Lorg/bitcoinj/core/Sha256Hash;",
            "Lorg/bitcoinj/core/Transaction;",
            ">;"
        }
    .end annotation
.end field

.field private final reorganizeListeners:Ljava/util/concurrent/CopyOnWriteArrayList;
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "Ljava/util/concurrent/CopyOnWriteArrayList",
            "<",
            "Lorg/bitcoinj/utils/ListenerRegistration",
            "<",
            "Lorg/bitcoinj/wallet/listeners/WalletReorganizeEventListener;",
            ">;>;"
        }
    .end annotation
.end field

.field private riskAnalyzer:Lorg/bitcoinj/wallet/RiskAnalysis$Analyzer;

.field private final riskDropped:Ljava/util/LinkedHashMap;
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "Ljava/util/LinkedHashMap",
            "<",
            "Lorg/bitcoinj/core/Sha256Hash;",
            "Lorg/bitcoinj/core/Transaction;",
            ">;"
        }
    .end annotation
.end field

.field private final scriptChangeListeners:Ljava/util/concurrent/CopyOnWriteArrayList;
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "Ljava/util/concurrent/CopyOnWriteArrayList",
            "<",
            "Lorg/bitcoinj/utils/ListenerRegistration",
            "<",
            "Lorg/bitcoinj/wallet/listeners/ScriptsChangeEventListener;",
            ">;>;"
        }
    .end annotation
.end field

.field private signers:Ljava/util/List;
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "Ljava/util/List",
            "<",
            "Lorg/bitcoinj/signers/TransactionSigner;",
            ">;"
        }
    .end annotation
.end field

.field private final spent:Ljava/util/Map;
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "Ljava/util/Map",
            "<",
            "Lorg/bitcoinj/core/Sha256Hash;",
            "Lorg/bitcoinj/core/Transaction;",
            ">;"
        }
    .end annotation
.end field

.field private final transactionConfidenceListeners:Ljava/util/concurrent/CopyOnWriteArrayList;
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "Ljava/util/concurrent/CopyOnWriteArrayList",
            "<",
            "Lorg/bitcoinj/utils/ListenerRegistration",
            "<",
            "Lorg/bitcoinj/core/listeners/TransactionConfidenceEventListener;",
            ">;>;"
        }
    .end annotation
.end field

.field protected final transactions:Ljava/util/Map;
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "Ljava/util/Map",
            "<",
            "Lorg/bitcoinj/core/Sha256Hash;",
            "Lorg/bitcoinj/core/Transaction;",
            ">;"
        }
    .end annotation
.end field

.field private txConfidenceListener:Lorg/bitcoinj/core/TransactionConfidence$Listener;

.field private final unspent:Ljava/util/Map;
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "Ljava/util/Map",
            "<",
            "Lorg/bitcoinj/core/Sha256Hash;",
            "Lorg/bitcoinj/core/Transaction;",
            ">;"
        }
    .end annotation
.end field

.field protected volatile vFileManager:Lorg/bitcoinj/wallet/WalletFiles;

.field private volatile vKeyRotationTimestamp:J

.field protected volatile vTransactionBroadcaster:Lorg/bitcoinj/core/TransactionBroadcaster;

.field private volatile vUTXOProvider:Lorg/bitcoinj/core/UTXOProvider;

.field private version:I

.field private watchedScripts:Ljava/util/Set;
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "Ljava/util/Set",
            "<",
            "Lorg/bitcoinj/script/Script;",
            ">;"
        }
    .end annotation
.end field


# direct methods
.method static constructor <clinit>()V
    .registers 1

    .prologue
    .line 127
    const-class v0, Lorg/bitcoinj/wallet/Wallet;

    invoke-static {v0}, Lorg/slf4j/LoggerFactory;->getLogger(Ljava/lang/Class;)Lorg/slf4j/Logger;

    move-result-object v0

    sput-object v0, Lorg/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;

    return-void
.end method

.method public constructor <init>(Lorg/bitcoinj/core/Context;)V
    .registers 4

    .prologue
    .line 267
    new-instance v0, Lorg/bitcoinj/wallet/KeyChainGroup;

    invoke-virtual {p1}, Lorg/bitcoinj/core/Context;->getParams()Lorg/bitcoinj/core/NetworkParameters;

    move-result-object v1

    invoke-direct {v0, v1}, Lorg/bitcoinj/wallet/KeyChainGroup;-><init>(Lorg/bitcoinj/core/NetworkParameters;)V

    invoke-direct {p0, p1, v0}, Lorg/bitcoinj/wallet/Wallet;-><init>(Lorg/bitcoinj/core/Context;Lorg/bitcoinj/wallet/KeyChainGroup;)V

    .line 268
    return-void
.end method

.method private constructor <init>(Lorg/bitcoinj/core/Context;Lorg/bitcoinj/wallet/KeyChainGroup;)V
    .registers 5

    .prologue
    const/4 v1, 0x0

    .line 310
    invoke-direct {p0}, Lorg/bitcoinj/utils/BaseTaggableObject;-><init>()V

    .line 132
    const-string v0, "wallet"

    invoke-static {v0}, Lorg/bitcoinj/utils/Threading;->lock(Ljava/lang/String;)Ljava/util/concurrent/locks/ReentrantLock;

    move-result-object v0

    iput-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    .line 133
    const-string v0, "wallet-keychaingroup"

    invoke-static {v0}, Lorg/bitcoinj/utils/Threading;->lock(Ljava/lang/String;)Ljava/util/concurrent/locks/ReentrantLock;

    move-result-object v0

    iput-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;

    .line 6164
    new-instance v0, Ljava/util/HashSet;

    invoke-direct {v0}, Ljava/util/HashSet;-><init>()V

    .line 164
    iput-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->myUnspents:Ljava/util/HashSet;

    .line 173
    new-instance v0, Lorg/bitcoinj/wallet/Wallet$1;

    invoke-direct {v0, p0}, Lorg/bitcoinj/wallet/Wallet$1;-><init>(Lorg/bitcoinj/wallet/Wallet;)V

    iput-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->riskDropped:Ljava/util/LinkedHashMap;

    .line 194
    new-instance v0, Ljava/util/concurrent/CopyOnWriteArrayList;

    invoke-direct {v0}, Ljava/util/concurrent/CopyOnWriteArrayList;-><init>()V

    iput-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->changeListeners:Ljava/util/concurrent/CopyOnWriteArrayList;

    .line 196
    new-instance v0, Ljava/util/concurrent/CopyOnWriteArrayList;

    invoke-direct {v0}, Ljava/util/concurrent/CopyOnWriteArrayList;-><init>()V

    iput-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->coinsReceivedListeners:Ljava/util/concurrent/CopyOnWriteArrayList;

    .line 198
    new-instance v0, Ljava/util/concurrent/CopyOnWriteArrayList;

    invoke-direct {v0}, Ljava/util/concurrent/CopyOnWriteArrayList;-><init>()V

    iput-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->coinsSentListeners:Ljava/util/concurrent/CopyOnWriteArrayList;

    .line 200
    new-instance v0, Ljava/util/concurrent/CopyOnWriteArrayList;

    invoke-direct {v0}, Ljava/util/concurrent/CopyOnWriteArrayList;-><init>()V

    iput-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->reorganizeListeners:Ljava/util/concurrent/CopyOnWriteArrayList;

    .line 202
    new-instance v0, Ljava/util/concurrent/CopyOnWriteArrayList;

    invoke-direct {v0}, Ljava/util/concurrent/CopyOnWriteArrayList;-><init>()V

    iput-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->scriptChangeListeners:Ljava/util/concurrent/CopyOnWriteArrayList;

    .line 204
    new-instance v0, Ljava/util/concurrent/CopyOnWriteArrayList;

    invoke-direct {v0}, Ljava/util/concurrent/CopyOnWriteArrayList;-><init>()V

    iput-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->transactionConfidenceListeners:Ljava/util/concurrent/CopyOnWriteArrayList;

    .line 219
    sget-object v0, Lorg/bitcoinj/wallet/DefaultRiskAnalysis;->FACTORY:Lorg/bitcoinj/wallet/DefaultRiskAnalysis$Analyzer;

    iput-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->riskAnalyzer:Lorg/bitcoinj/wallet/RiskAnalysis$Analyzer;

    .line 234
    new-instance v0, Lorg/bitcoinj/wallet/DefaultCoinSelector;

    invoke-direct {v0}, Lorg/bitcoinj/wallet/DefaultCoinSelector;-><init>()V

    iput-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->coinSelector:Lorg/bitcoinj/wallet/CoinSelector;

    .line 1894
    iput-boolean v1, p0, Lorg/bitcoinj/wallet/Wallet;->hardSaveOnNextBlock:Z

    .line 6232
    new-instance v0, Ljava/util/LinkedList;

    invoke-direct {v0}, Ljava/util/LinkedList;-><init>()V

    .line 3540
    iput-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->balanceFutureRequests:Ljava/util/List;

    .line 7088
    new-instance v0, Ljava/util/ArrayList;

    invoke-direct {v0}, Ljava/util/ArrayList;-><init>()V

    .line 4553
    iput-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->bloomOutPoints:Ljava/util/ArrayList;

    .line 4555
    new-instance v0, Ljava/util/concurrent/atomic/AtomicInteger;

    invoke-direct {v0, v1}, Ljava/util/concurrent/atomic/AtomicInteger;-><init>(I)V

    iput-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->bloomFilterGuard:Ljava/util/concurrent/atomic/AtomicInteger;

    .line 311
    iput-object p1, p0, Lorg/bitcoinj/wallet/Wallet;->context:Lorg/bitcoinj/core/Context;

    .line 312
    invoke-virtual {p1}, Lorg/bitcoinj/core/Context;->getParams()Lorg/bitcoinj/core/NetworkParameters;

    move-result-object v0

    iput-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->params:Lorg/bitcoinj/core/NetworkParameters;

    .line 313
    invoke-static {p2}, Lcom/google/common/base/n;->checkNotNull(Ljava/lang/Object;)Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Lorg/bitcoinj/wallet/KeyChainGroup;

    iput-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroup:Lorg/bitcoinj/wallet/KeyChainGroup;

    .line 314
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->params:Lorg/bitcoinj/core/NetworkParameters;

    invoke-virtual {v0}, Lorg/bitcoinj/core/NetworkParameters;->getId()Ljava/lang/String;

    move-result-object v0

    const-string v1, "org.bitcoinj.unittest"

    invoke-virtual {v0, v1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z

    move-result v0

    if-eqz v0, :cond_92

    .line 315
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroup:Lorg/bitcoinj/wallet/KeyChainGroup;

    const/4 v1, 0x5

    invoke-virtual {v0, v1}, Lorg/bitcoinj/wallet/KeyChainGroup;->setLookaheadSize(I)V

    .line 319
    :cond_92
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroup:Lorg/bitcoinj/wallet/KeyChainGroup;

    invoke-virtual {v0}, Lorg/bitcoinj/wallet/KeyChainGroup;->numKeys()I

    move-result v0

    if-nez v0, :cond_9f

    .line 320
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroup:Lorg/bitcoinj/wallet/KeyChainGroup;

    invoke-virtual {v0}, Lorg/bitcoinj/wallet/KeyChainGroup;->createAndActivateNewHDChain()V

    .line 7164
    :cond_9f
    new-instance v0, Ljava/util/HashSet;

    invoke-direct {v0}, Ljava/util/HashSet;-><init>()V

    .line 321
    iput-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->watchedScripts:Ljava/util/Set;

    .line 322
    new-instance v0, Ljava/util/HashMap;

    invoke-direct {v0}, Ljava/util/HashMap;-><init>()V

    iput-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->unspent:Ljava/util/Map;

    .line 323
    new-instance v0, Ljava/util/HashMap;

    invoke-direct {v0}, Ljava/util/HashMap;-><init>()V

    iput-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->spent:Ljava/util/Map;

    .line 324
    new-instance v0, Ljava/util/HashMap;

    invoke-direct {v0}, Ljava/util/HashMap;-><init>()V

    iput-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->pending:Ljava/util/Map;

    .line 325
    new-instance v0, Ljava/util/HashMap;

    invoke-direct {v0}, Ljava/util/HashMap;-><init>()V

    iput-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->dead:Ljava/util/Map;

    .line 326
    new-instance v0, Ljava/util/HashMap;

    invoke-direct {v0}, Ljava/util/HashMap;-><init>()V

    iput-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->transactions:Ljava/util/Map;

    .line 327
    new-instance v0, Ljava/util/HashMap;

    invoke-direct {v0}, Ljava/util/HashMap;-><init>()V

    iput-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->extensions:Ljava/util/HashMap;

    .line 329
    new-instance v0, Ljava/util/LinkedHashMap;

    invoke-direct {v0}, Ljava/util/LinkedHashMap;-><init>()V

    iput-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->confidenceChanged:Ljava/util/Map;

    .line 330
    new-instance v0, Ljava/util/ArrayList;

    invoke-direct {v0}, Ljava/util/ArrayList;-><init>()V

    iput-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->signers:Ljava/util/List;

    .line 331
    new-instance v0, Lorg/bitcoinj/signers/LocalTransactionSigner;

    invoke-direct {v0}, Lorg/bitcoinj/signers/LocalTransactionSigner;-><init>()V

    invoke-virtual {p0, v0}, Lorg/bitcoinj/wallet/Wallet;->addTransactionSigner(Lorg/bitcoinj/signers/TransactionSigner;)V

    .line 332
    invoke-direct {p0}, Lorg/bitcoinj/wallet/Wallet;->createTransientState()V

    .line 333
    return-void
.end method

.method public constructor <init>(Lorg/bitcoinj/core/NetworkParameters;)V
    .registers 3

    .prologue
    .line 258
    invoke-static {p1}, Lorg/bitcoinj/core/Context;->getOrCreate(Lorg/bitcoinj/core/NetworkParameters;)Lorg/bitcoinj/core/Context;

    move-result-object v0

    invoke-direct {p0, v0}, Lorg/bitcoinj/wallet/Wallet;-><init>(Lorg/bitcoinj/core/Context;)V

    .line 259
    return-void
.end method

.method public constructor <init>(Lorg/bitcoinj/core/NetworkParameters;Lorg/bitcoinj/wallet/KeyChainGroup;)V
    .registers 4

    .prologue
    .line 307
    invoke-static {p1}, Lorg/bitcoinj/core/Context;->getOrCreate(Lorg/bitcoinj/core/NetworkParameters;)Lorg/bitcoinj/core/Context;

    move-result-object v0

    invoke-direct {p0, v0, p2}, Lorg/bitcoinj/wallet/Wallet;-><init>(Lorg/bitcoinj/core/Context;Lorg/bitcoinj/wallet/KeyChainGroup;)V

    .line 308
    return-void
.end method

.method static synthetic access$000(Lorg/bitcoinj/wallet/Wallet;Lorg/bitcoinj/core/Coin;)V
    .registers 2

    .prologue
    .line 125
    invoke-direct {p0, p1}, Lorg/bitcoinj/wallet/Wallet;->checkBalanceFuturesLocked(Lorg/bitcoinj/core/Coin;)V

    return-void
.end method

.method static synthetic access$100(Lorg/bitcoinj/wallet/Wallet;Lorg/bitcoinj/core/Transaction;)V
    .registers 2

    .prologue
    .line 125
    invoke-direct {p0, p1}, Lorg/bitcoinj/wallet/Wallet;->queueOnTransactionConfidenceChanged(Lorg/bitcoinj/core/Transaction;)V

    return-void
.end method

.method static synthetic access$400()Lorg/slf4j/Logger;
    .registers 1

    .prologue
    .line 125
    sget-object v0, Lorg/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;

    return-object v0
.end method

.method private addWalletTransaction(Lorg/bitcoinj/wallet/WalletTransaction$Pool;Lorg/bitcoinj/core/Transaction;)V
    .registers 7

    .prologue
    const/4 v0, 0x1

    const/4 v1, 0x0

    .line 2869
    iget-object v2, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v2}, Ljava/util/concurrent/locks/ReentrantLock;->isHeldByCurrentThread()Z

    move-result v2

    invoke-static {v2}, Lcom/google/common/base/n;->checkState(Z)V

    .line 2870
    iget-object v2, p0, Lorg/bitcoinj/wallet/Wallet;->transactions:Ljava/util/Map;

    invoke-virtual {p2}, Lorg/bitcoinj/core/Transaction;->getHash()Lorg/bitcoinj/core/Sha256Hash;

    move-result-object v3

    invoke-interface {v2, v3, p2}, Ljava/util/Map;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;

    .line 2871
    sget-object v2, Lorg/bitcoinj/wallet/Wallet$11;->$SwitchMap$org$bitcoinj$wallet$WalletTransaction$Pool:[I

    invoke-virtual {p1}, Lorg/bitcoinj/wallet/WalletTransaction$Pool;->ordinal()I

    move-result v3

    aget v2, v2, v3

    packed-switch v2, :pswitch_data_b6

    .line 2885
    new-instance v0, Ljava/lang/RuntimeException;

    new-instance v1, Ljava/lang/StringBuilder;

    const-string v2, "Unknown wallet transaction type "

    invoke-direct {v1, v2}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V

    invoke-virtual {v1, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;

    move-result-object v1

    invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v1

    invoke-direct {v0, v1}, Ljava/lang/RuntimeException;-><init>(Ljava/lang/String;)V

    throw v0

    .line 2873
    :pswitch_34
    iget-object v2, p0, Lorg/bitcoinj/wallet/Wallet;->unspent:Ljava/util/Map;

    invoke-virtual {p2}, Lorg/bitcoinj/core/Transaction;->getHash()Lorg/bitcoinj/core/Sha256Hash;

    move-result-object v3

    invoke-interface {v2, v3, p2}, Ljava/util/Map;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;

    move-result-object v2

    if-nez v2, :cond_71

    :goto_40
    invoke-static {v0}, Lcom/google/common/base/n;->checkState(Z)V

    .line 2887
    :goto_43
    sget-object v0, Lorg/bitcoinj/wallet/WalletTransaction$Pool;->UNSPENT:Lorg/bitcoinj/wallet/WalletTransaction$Pool;

    if-eq p1, v0, :cond_4b

    sget-object v0, Lorg/bitcoinj/wallet/WalletTransaction$Pool;->PENDING:Lorg/bitcoinj/wallet/WalletTransaction$Pool;

    if-ne p1, v0, :cond_a9

    .line 2888
    :cond_4b
    invoke-virtual {p2}, Lorg/bitcoinj/core/Transaction;->getOutputs()Ljava/util/List;

    move-result-object v0

    invoke-interface {v0}, Ljava/util/List;->iterator()Ljava/util/Iterator;

    move-result-object v1

    :cond_53
    :goto_53
    invoke-interface {v1}, Ljava/util/Iterator;->hasNext()Z

    move-result v0

    if-eqz v0, :cond_a9

    invoke-interface {v1}, Ljava/util/Iterator;->next()Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Lorg/bitcoinj/core/TransactionOutput;

    .line 2889
    invoke-virtual {v0}, Lorg/bitcoinj/core/TransactionOutput;->isAvailableForSpending()Z

    move-result v2

    if-eqz v2, :cond_53

    invoke-virtual {v0, p0}, Lorg/bitcoinj/core/TransactionOutput;->isMineOrWatched(Lorg/bitcoinj/core/TransactionBag;)Z

    move-result v2

    if-eqz v2, :cond_53

    .line 2890
    iget-object v2, p0, Lorg/bitcoinj/wallet/Wallet;->myUnspents:Ljava/util/HashSet;

    invoke-virtual {v2, v0}, Ljava/util/HashSet;->add(Ljava/lang/Object;)Z

    goto :goto_53

    :cond_71
    move v0, v1

    .line 2873
    goto :goto_40

    .line 2876
    :pswitch_73
    iget-object v2, p0, Lorg/bitcoinj/wallet/Wallet;->spent:Ljava/util/Map;

    invoke-virtual {p2}, Lorg/bitcoinj/core/Transaction;->getHash()Lorg/bitcoinj/core/Sha256Hash;

    move-result-object v3

    invoke-interface {v2, v3, p2}, Ljava/util/Map;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;

    move-result-object v2

    if-nez v2, :cond_83

    :goto_7f
    invoke-static {v0}, Lcom/google/common/base/n;->checkState(Z)V

    goto :goto_43

    :cond_83
    move v0, v1

    goto :goto_7f

    .line 2879
    :pswitch_85
    iget-object v2, p0, Lorg/bitcoinj/wallet/Wallet;->pending:Ljava/util/Map;

    invoke-virtual {p2}, Lorg/bitcoinj/core/Transaction;->getHash()Lorg/bitcoinj/core/Sha256Hash;

    move-result-object v3

    invoke-interface {v2, v3, p2}, Ljava/util/Map;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;

    move-result-object v2

    if-nez v2, :cond_95

    :goto_91
    invoke-static {v0}, Lcom/google/common/base/n;->checkState(Z)V

    goto :goto_43

    :cond_95
    move v0, v1

    goto :goto_91

    .line 2882
    :pswitch_97
    iget-object v2, p0, Lorg/bitcoinj/wallet/Wallet;->dead:Ljava/util/Map;

    invoke-virtual {p2}, Lorg/bitcoinj/core/Transaction;->getHash()Lorg/bitcoinj/core/Sha256Hash;

    move-result-object v3

    invoke-interface {v2, v3, p2}, Ljava/util/Map;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;

    move-result-object v2

    if-nez v2, :cond_a7

    :goto_a3
    invoke-static {v0}, Lcom/google/common/base/n;->checkState(Z)V

    goto :goto_43

    :cond_a7
    move v0, v1

    goto :goto_a3

    .line 2895
    :cond_a9
    invoke-virtual {p2}, Lorg/bitcoinj/core/Transaction;->getConfidence()Lorg/bitcoinj/core/TransactionConfidence;

    move-result-object v0

    sget-object v1, Lorg/bitcoinj/utils/Threading;->SAME_THREAD:Ljava/util/concurrent/Executor;

    iget-object v2, p0, Lorg/bitcoinj/wallet/Wallet;->txConfidenceListener:Lorg/bitcoinj/core/TransactionConfidence$Listener;

    invoke-virtual {v0, v1, v2}, Lorg/bitcoinj/core/TransactionConfidence;->addEventListener(Ljava/util/concurrent/Executor;Lorg/bitcoinj/core/TransactionConfidence$Listener;)V

    .line 2896
    return-void

    .line 2871
    nop

    :pswitch_data_b6
    .packed-switch 0x1
        :pswitch_34
        :pswitch_73
        :pswitch_85
        :pswitch_97
    .end packed-switch
.end method

.method private static addWalletTransactionsToSet(Ljava/util/Set;Lorg/bitcoinj/wallet/WalletTransaction$Pool;Ljava/util/Collection;)V
    .registers 6
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "(",
            "Ljava/util/Set",
            "<",
            "Lorg/bitcoinj/wallet/WalletTransaction;",
            ">;",
            "Lorg/bitcoinj/wallet/WalletTransaction$Pool;",
            "Ljava/util/Collection",
            "<",
            "Lorg/bitcoinj/core/Transaction;",
            ">;)V"
        }
    .end annotation

    .prologue
    .line 2846
    invoke-interface {p2}, Ljava/util/Collection;->iterator()Ljava/util/Iterator;

    move-result-object v1

    :goto_4
    invoke-interface {v1}, Ljava/util/Iterator;->hasNext()Z

    move-result v0

    if-eqz v0, :cond_19

    invoke-interface {v1}, Ljava/util/Iterator;->next()Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Lorg/bitcoinj/core/Transaction;

    .line 2847
    new-instance v2, Lorg/bitcoinj/wallet/WalletTransaction;

    invoke-direct {v2, p1, v0}, Lorg/bitcoinj/wallet/WalletTransaction;-><init>(Lorg/bitcoinj/wallet/WalletTransaction$Pool;Lorg/bitcoinj/core/Transaction;)V

    invoke-interface {p0, v2}, Ljava/util/Set;->add(Ljava/lang/Object;)Z

    goto :goto_4

    .line 2849
    :cond_19
    return-void
.end method

.method private adjustOutputDownwardsForFee(Lorg/bitcoinj/core/Transaction;Lorg/bitcoinj/wallet/CoinSelection;Lorg/bitcoinj/core/Coin;Z)Z
    .registers 9

    .prologue
    .line 4087
    invoke-virtual {p1}, Lorg/bitcoinj/core/Transaction;->unsafeBitcoinSerialize()[B

    move-result-object v0

    array-length v0, v0

    invoke-direct {p0, p2}, Lorg/bitcoinj/wallet/Wallet;->estimateBytesForSigning(Lorg/bitcoinj/wallet/CoinSelection;)I

    move-result v1

    add-int/2addr v0, v1

    .line 4088
    int-to-long v0, v0

    invoke-virtual {p3, v0, v1}, Lorg/bitcoinj/core/Coin;->multiply(J)Lorg/bitcoinj/core/Coin;

    move-result-object v0

    const-wide/16 v2, 0x3e8

    invoke-virtual {v0, v2, v3}, Lorg/bitcoinj/core/Coin;->divide(J)Lorg/bitcoinj/core/Coin;

    move-result-object v0

    .line 4089
    if-eqz p4, :cond_21

    sget-object v1, Lorg/bitcoinj/core/Transaction;->REFERENCE_DEFAULT_MIN_TX_FEE:Lorg/bitcoinj/core/Coin;

    invoke-virtual {v0, v1}, Lorg/bitcoinj/core/Coin;->compareTo(Lorg/bitcoinj/core/Coin;)I

    move-result v1

    if-gez v1, :cond_21

    .line 4090
    sget-object v0, Lorg/bitcoinj/core/Transaction;->REFERENCE_DEFAULT_MIN_TX_FEE:Lorg/bitcoinj/core/Coin;

    .line 4091
    :cond_21
    const-wide/16 v2, 0x0

    invoke-virtual {p1, v2, v3}, Lorg/bitcoinj/core/Transaction;->getOutput(J)Lorg/bitcoinj/core/TransactionOutput;

    move-result-object v1

    .line 4092
    invoke-virtual {v1}, Lorg/bitcoinj/core/TransactionOutput;->getValue()Lorg/bitcoinj/core/Coin;

    move-result-object v2

    invoke-virtual {v2, v0}, Lorg/bitcoinj/core/Coin;->subtract(Lorg/bitcoinj/core/Coin;)Lorg/bitcoinj/core/Coin;

    move-result-object v0

    invoke-virtual {v1, v0}, Lorg/bitcoinj/core/TransactionOutput;->setValue(Lorg/bitcoinj/core/Coin;)V

    .line 4093
    invoke-virtual {v1}, Lorg/bitcoinj/core/TransactionOutput;->isDust()Z

    move-result v0

    if-nez v0, :cond_3a

    const/4 v0, 0x1

    :goto_39
    return v0

    :cond_3a
    const/4 v0, 0x0

    goto :goto_39
.end method

.method private calcBloomOutPointsLocked()V
    .registers 5

    .prologue
    .line 4569
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->bloomOutPoints:Ljava/util/ArrayList;

    invoke-virtual {v0}, Ljava/util/ArrayList;->clear()V

    .line 4570
    new-instance v0, Ljava/util/HashSet;

    invoke-direct {v0}, Ljava/util/HashSet;-><init>()V

    .line 4571
    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->unspent:Ljava/util/Map;

    invoke-interface {v1}, Ljava/util/Map;->values()Ljava/util/Collection;

    move-result-object v1

    invoke-interface {v0, v1}, Ljava/util/Set;->addAll(Ljava/util/Collection;)Z

    .line 4572
    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->spent:Ljava/util/Map;

    invoke-interface {v1}, Ljava/util/Map;->values()Ljava/util/Collection;

    move-result-object v1

    invoke-interface {v0, v1}, Ljava/util/Set;->addAll(Ljava/util/Collection;)Z

    .line 4573
    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->pending:Ljava/util/Map;

    invoke-interface {v1}, Ljava/util/Map;->values()Ljava/util/Collection;

    move-result-object v1

    invoke-interface {v0, v1}, Ljava/util/Set;->addAll(Ljava/util/Collection;)Z

    .line 4574
    invoke-interface {v0}, Ljava/util/Set;->iterator()Ljava/util/Iterator;

    move-result-object v1

    :cond_29
    invoke-interface {v1}, Ljava/util/Iterator;->hasNext()Z

    move-result v0

    if-eqz v0, :cond_60

    invoke-interface {v1}, Ljava/util/Iterator;->next()Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Lorg/bitcoinj/core/Transaction;

    .line 4575
    invoke-virtual {v0}, Lorg/bitcoinj/core/Transaction;->getOutputs()Ljava/util/List;

    move-result-object v0

    invoke-interface {v0}, Ljava/util/List;->iterator()Ljava/util/Iterator;

    move-result-object v2

    :cond_3d
    :goto_3d
    invoke-interface {v2}, Ljava/util/Iterator;->hasNext()Z

    move-result v0

    if-eqz v0, :cond_29

    invoke-interface {v2}, Ljava/util/Iterator;->next()Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Lorg/bitcoinj/core/TransactionOutput;

    .line 4577
    :try_start_49
    invoke-direct {p0, v0}, Lorg/bitcoinj/wallet/Wallet;->isTxOutputBloomFilterable(Lorg/bitcoinj/core/TransactionOutput;)Z

    move-result v3

    if-eqz v3, :cond_3d

    .line 4578
    iget-object v3, p0, Lorg/bitcoinj/wallet/Wallet;->bloomOutPoints:Ljava/util/ArrayList;

    invoke-virtual {v0}, Lorg/bitcoinj/core/TransactionOutput;->getOutPointFor()Lorg/bitcoinj/core/TransactionOutPoint;

    move-result-object v0

    invoke-virtual {v3, v0}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
    :try_end_58
    .catch Lorg/bitcoinj/core/ScriptException; {:try_start_49 .. :try_end_58} :catch_59

    goto :goto_3d

    .line 4579
    :catch_59
    move-exception v0

    .line 4581
    new-instance v1, Ljava/lang/RuntimeException;

    invoke-direct {v1, v0}, Ljava/lang/RuntimeException;-><init>(Ljava/lang/Throwable;)V

    throw v1

    .line 4585
    :cond_60
    return-void
.end method

.method private checkBalanceFuturesLocked(Lorg/bitcoinj/core/Coin;)V
    .registers 7

    .prologue
    .line 3583
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->isHeldByCurrentThread()Z

    move-result v0

    invoke-static {v0}, Lcom/google/common/base/n;->checkState(Z)V

    .line 3584
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->balanceFutureRequests:Ljava/util/List;

    invoke-interface {v0}, Ljava/util/List;->listIterator()Ljava/util/ListIterator;

    move-result-object v1

    .line 3585
    :cond_f
    :goto_f
    invoke-interface {v1}, Ljava/util/ListIterator;->hasNext()Z

    move-result v0

    if-eqz v0, :cond_37

    .line 3586
    invoke-interface {v1}, Ljava/util/ListIterator;->next()Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Lorg/bitcoinj/wallet/Wallet$BalanceFutureRequest;

    .line 3587
    iget-object v2, v0, Lorg/bitcoinj/wallet/Wallet$BalanceFutureRequest;->type:Lorg/bitcoinj/wallet/Wallet$BalanceType;

    invoke-virtual {p0, v2}, Lorg/bitcoinj/wallet/Wallet;->getBalance(Lorg/bitcoinj/wallet/Wallet$BalanceType;)Lorg/bitcoinj/core/Coin;

    move-result-object v2

    .line 3588
    iget-object v3, v0, Lorg/bitcoinj/wallet/Wallet$BalanceFutureRequest;->value:Lorg/bitcoinj/core/Coin;

    invoke-virtual {v2, v3}, Lorg/bitcoinj/core/Coin;->compareTo(Lorg/bitcoinj/core/Coin;)I

    move-result v3

    if-ltz v3, :cond_f

    .line 3590
    invoke-interface {v1}, Ljava/util/ListIterator;->remove()V

    .line 3593
    sget-object v3, Lorg/bitcoinj/utils/Threading;->USER_THREAD:Ljava/util/concurrent/Executor;

    new-instance v4, Lorg/bitcoinj/wallet/Wallet$9;

    invoke-direct {v4, p0, v0, v2}, Lorg/bitcoinj/wallet/Wallet$9;-><init>(Lorg/bitcoinj/wallet/Wallet;Lorg/bitcoinj/wallet/Wallet$BalanceFutureRequest;Lorg/bitcoinj/core/Coin;)V

    invoke-interface {v3, v4}, Ljava/util/concurrent/Executor;->execute(Ljava/lang/Runnable;)V

    goto :goto_f

    .line 3599
    :cond_37
    return-void
.end method

.method private checkNoDeterministicKeys(Ljava/util/List;)V
    .registers 4
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "(",
            "Ljava/util/List",
            "<",
            "Lorg/bitcoinj/core/ECKey;",
            ">;)V"
        }
    .end annotation

    .prologue
    .line 711
    invoke-interface {p1}, Ljava/util/List;->iterator()Ljava/util/Iterator;

    move-result-object v1

    :cond_4
    invoke-interface {v1}, Ljava/util/Iterator;->hasNext()Z

    move-result v0

    if-eqz v0, :cond_1c

    invoke-interface {v1}, Ljava/util/Iterator;->next()Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Lorg/bitcoinj/core/ECKey;

    .line 712
    instance-of v0, v0, Lorg/bitcoinj/crypto/DeterministicKey;

    if-eqz v0, :cond_4

    .line 713
    new-instance v0, Ljava/lang/IllegalArgumentException;

    const-string v1, "Cannot import HD keys back into the wallet"

    invoke-direct {v0, v1}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V

    throw v0

    .line 714
    :cond_1c
    return-void
.end method

.method private clearTransactions()V
    .registers 2

    .prologue
    .line 3010
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->unspent:Ljava/util/Map;

    invoke-interface {v0}, Ljava/util/Map;->clear()V

    .line 3011
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->spent:Ljava/util/Map;

    invoke-interface {v0}, Ljava/util/Map;->clear()V

    .line 3012
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->pending:Ljava/util/Map;

    invoke-interface {v0}, Ljava/util/Map;->clear()V

    .line 3013
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->dead:Ljava/util/Map;

    invoke-interface {v0}, Ljava/util/Map;->clear()V

    .line 3014
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->transactions:Ljava/util/Map;

    invoke-interface {v0}, Ljava/util/Map;->clear()V

    .line 3015
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->myUnspents:Ljava/util/HashSet;

    invoke-virtual {v0}, Ljava/util/HashSet;->clear()V

    .line 3016
    return-void
.end method

.method private createTransientState()V
    .registers 2

    .prologue
    .line 336
    new-instance v0, Ljava/util/HashSet;

    invoke-direct {v0}, Ljava/util/HashSet;-><init>()V

    iput-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->ignoreNextNewBlock:Ljava/util/HashSet;

    .line 337
    new-instance v0, Lorg/bitcoinj/wallet/Wallet$2;

    invoke-direct {v0, p0}, Lorg/bitcoinj/wallet/Wallet$2;-><init>(Lorg/bitcoinj/wallet/Wallet;)V

    iput-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->txConfidenceListener:Lorg/bitcoinj/core/TransactionConfidence$Listener;

    .line 359
    const/4 v0, 0x0

    iput-boolean v0, p0, Lorg/bitcoinj/wallet/Wallet;->acceptRiskyTransactions:Z

    .line 360
    return-void
.end method

.method private estimateBytesForSigning(Lorg/bitcoinj/wallet/CoinSelection;)I
    .registers 8

    .prologue
    const/4 v2, 0x0

    .line 5000
    const/4 v0, 0x0

    .line 5001
    iget-object v1, p1, Lorg/bitcoinj/wallet/CoinSelection;->gathered:Ljava/util/Collection;

    invoke-interface {v1}, Ljava/util/Collection;->iterator()Ljava/util/Iterator;

    move-result-object v4

    move v1, v0

    :goto_9
    invoke-interface {v4}, Ljava/util/Iterator;->hasNext()Z

    move-result v0

    if-eqz v0, :cond_53

    invoke-interface {v4}, Ljava/util/Iterator;->next()Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Lorg/bitcoinj/core/TransactionOutput;

    .line 5003
    :try_start_15
    invoke-virtual {v0}, Lorg/bitcoinj/core/TransactionOutput;->getScriptPubKey()Lorg/bitcoinj/script/Script;

    move-result-object v5

    .line 5006
    invoke-virtual {v5}, Lorg/bitcoinj/script/Script;->isSentToAddress()Z

    move-result v0

    if-eqz v0, :cond_35

    .line 5007
    invoke-virtual {v5}, Lorg/bitcoinj/script/Script;->getPubKeyHash()[B

    move-result-object v0

    invoke-virtual {p0, v0}, Lorg/bitcoinj/wallet/Wallet;->findKeyFromPubHash([B)Lorg/bitcoinj/core/ECKey;

    move-result-object v0

    .line 5008
    const-string v3, "Coin selection includes unspendable outputs"

    invoke-static {v0, v3}, Lcom/google/common/base/n;->checkNotNull(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;

    move-object v3, v0

    move-object v0, v2

    .line 5013
    :goto_2e
    invoke-virtual {v5, v3, v0}, Lorg/bitcoinj/script/Script;->getNumberOfBytesRequiredToSpend(Lorg/bitcoinj/core/ECKey;Lorg/bitcoinj/script/Script;)I

    move-result v0

    add-int/2addr v0, v1

    move v1, v0

    .line 5018
    goto :goto_9

    .line 5009
    :cond_35
    invoke-virtual {v5}, Lorg/bitcoinj/script/Script;->isPayToScriptHash()Z

    move-result v0

    if-eqz v0, :cond_54

    .line 5010
    invoke-virtual {v5}, Lorg/bitcoinj/script/Script;->getPubKeyHash()[B

    move-result-object v0

    invoke-virtual {p0, v0}, Lorg/bitcoinj/wallet/Wallet;->findRedeemDataFromScriptHash([B)Lorg/bitcoinj/wallet/RedeemData;

    move-result-object v0

    iget-object v0, v0, Lorg/bitcoinj/wallet/RedeemData;->redeemScript:Lorg/bitcoinj/script/Script;

    .line 5011
    const-string v3, "Coin selection includes unspendable outputs"

    invoke-static {v0, v3}, Lcom/google/common/base/n;->checkNotNull(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
    :try_end_4a
    .catch Lorg/bitcoinj/core/ScriptException; {:try_start_15 .. :try_end_4a} :catch_4c

    move-object v3, v2

    goto :goto_2e

    .line 5014
    :catch_4c
    move-exception v0

    .line 5017
    new-instance v1, Ljava/lang/IllegalStateException;

    invoke-direct {v1, v0}, Ljava/lang/IllegalStateException;-><init>(Ljava/lang/Throwable;)V

    throw v1

    .line 5020
    :cond_53
    return v1

    :cond_54
    move-object v0, v2

    move-object v3, v2

    goto :goto_2e
.end method

.method private findDoubleSpendsAgainst(Lorg/bitcoinj/core/Transaction;Ljava/util/Map;)Ljava/util/Set;
    .registers 9
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "(",
            "Lorg/bitcoinj/core/Transaction;",
            "Ljava/util/Map",
            "<",
            "Lorg/bitcoinj/core/Sha256Hash;",
            "Lorg/bitcoinj/core/Transaction;",
            ">;)",
            "Ljava/util/Set",
            "<",
            "Lorg/bitcoinj/core/Transaction;",
            ">;"
        }
    .end annotation

    .prologue
    .line 1813
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->isHeldByCurrentThread()Z

    move-result v0

    invoke-static {v0}, Lcom/google/common/base/n;->checkState(Z)V

    .line 1814
    invoke-virtual {p1}, Lorg/bitcoinj/core/Transaction;->isCoinBase()Z

    move-result v0

    if-eqz v0, :cond_15

    .line 9164
    new-instance v0, Ljava/util/HashSet;

    invoke-direct {v0}, Ljava/util/HashSet;-><init>()V

    .line 1833
    :goto_14
    return-object v0

    .line 1816
    :cond_15
    new-instance v3, Ljava/util/HashSet;

    invoke-direct {v3}, Ljava/util/HashSet;-><init>()V

    .line 1817
    invoke-virtual {p1}, Lorg/bitcoinj/core/Transaction;->getInputs()Ljava/util/List;

    move-result-object v0

    invoke-interface {v0}, Ljava/util/List;->iterator()Ljava/util/Iterator;

    move-result-object v1

    :goto_22
    invoke-interface {v1}, Ljava/util/Iterator;->hasNext()Z

    move-result v0

    if-eqz v0, :cond_36

    invoke-interface {v1}, Ljava/util/Iterator;->next()Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Lorg/bitcoinj/core/TransactionInput;

    .line 1818
    invoke-virtual {v0}, Lorg/bitcoinj/core/TransactionInput;->getOutpoint()Lorg/bitcoinj/core/TransactionOutPoint;

    move-result-object v0

    invoke-virtual {v3, v0}, Ljava/util/HashSet;->add(Ljava/lang/Object;)Z

    goto :goto_22

    .line 10164
    :cond_36
    new-instance v2, Ljava/util/HashSet;

    invoke-direct {v2}, Ljava/util/HashSet;-><init>()V

    .line 1822
    invoke-interface {p2}, Ljava/util/Map;->values()Ljava/util/Collection;

    move-result-object v0

    invoke-interface {v0}, Ljava/util/Collection;->iterator()Ljava/util/Iterator;

    move-result-object v4

    :cond_43
    invoke-interface {v4}, Ljava/util/Iterator;->hasNext()Z

    move-result v0

    if-eqz v0, :cond_72

    invoke-interface {v4}, Ljava/util/Iterator;->next()Ljava/lang/Object;

    move-result-object v0

    move-object v1, v0

    check-cast v1, Lorg/bitcoinj/core/Transaction;

    .line 1823
    invoke-virtual {v1}, Lorg/bitcoinj/core/Transaction;->getInputs()Ljava/util/List;

    move-result-object v0

    invoke-interface {v0}, Ljava/util/List;->iterator()Ljava/util/Iterator;

    move-result-object v5

    :cond_58
    :goto_58
    invoke-interface {v5}, Ljava/util/Iterator;->hasNext()Z

    move-result v0

    if-eqz v0, :cond_43

    invoke-interface {v5}, Ljava/util/Iterator;->next()Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Lorg/bitcoinj/core/TransactionInput;

    .line 1826
    invoke-virtual {v0}, Lorg/bitcoinj/core/TransactionInput;->getOutpoint()Lorg/bitcoinj/core/TransactionOutPoint;

    move-result-object v0

    .line 1827
    invoke-virtual {v3, v0}, Ljava/util/HashSet;->contains(Ljava/lang/Object;)Z

    move-result v0

    if-eqz v0, :cond_58

    .line 1829
    invoke-interface {v2, v1}, Ljava/util/Set;->add(Ljava/lang/Object;)Z

    goto :goto_58

    :cond_72
    move-object v0, v2

    .line 1833
    goto :goto_14
.end method

.method public static fromKeys(Lorg/bitcoinj/core/NetworkParameters;Ljava/util/List;)Lorg/bitcoinj/wallet/Wallet;
    .registers 4
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "(",
            "Lorg/bitcoinj/core/NetworkParameters;",
            "Ljava/util/List",
            "<",
            "Lorg/bitcoinj/core/ECKey;",
            ">;)",
            "Lorg/bitcoinj/wallet/Wallet;"
        }
    .end annotation

    .prologue
    .line 298
    invoke-interface {p1}, Ljava/util/List;->iterator()Ljava/util/Iterator;

    move-result-object v1

    :goto_4
    invoke-interface {v1}, Ljava/util/Iterator;->hasNext()Z

    move-result v0

    if-eqz v0, :cond_1b

    invoke-interface {v1}, Ljava/util/Iterator;->next()Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Lorg/bitcoinj/core/ECKey;

    .line 299
    instance-of v0, v0, Lorg/bitcoinj/crypto/DeterministicKey;

    if-nez v0, :cond_19

    const/4 v0, 0x1

    :goto_15
    invoke-static {v0}, Lcom/google/common/base/n;->checkArgument(Z)V

    goto :goto_4

    :cond_19
    const/4 v0, 0x0

    goto :goto_15

    .line 301
    :cond_1b
    new-instance v0, Lorg/bitcoinj/wallet/KeyChainGroup;

    invoke-direct {v0, p0}, Lorg/bitcoinj/wallet/KeyChainGroup;-><init>(Lorg/bitcoinj/core/NetworkParameters;)V

    .line 302
    invoke-virtual {v0, p1}, Lorg/bitcoinj/wallet/KeyChainGroup;->importKeys(Ljava/util/List;)I

    .line 303
    new-instance v1, Lorg/bitcoinj/wallet/Wallet;

    invoke-direct {v1, p0, v0}, Lorg/bitcoinj/wallet/Wallet;-><init>(Lorg/bitcoinj/core/NetworkParameters;Lorg/bitcoinj/wallet/KeyChainGroup;)V

    return-object v1
.end method

.method public static fromSeed(Lorg/bitcoinj/core/NetworkParameters;Lorg/bitcoinj/wallet/DeterministicSeed;)Lorg/bitcoinj/wallet/Wallet;
    .registers 4

    .prologue
    .line 271
    new-instance v0, Lorg/bitcoinj/wallet/Wallet;

    new-instance v1, Lorg/bitcoinj/wallet/KeyChainGroup;

    invoke-direct {v1, p0, p1}, Lorg/bitcoinj/wallet/KeyChainGroup;-><init>(Lorg/bitcoinj/core/NetworkParameters;Lorg/bitcoinj/wallet/DeterministicSeed;)V

    invoke-direct {v0, p0, v1}, Lorg/bitcoinj/wallet/Wallet;-><init>(Lorg/bitcoinj/core/NetworkParameters;Lorg/bitcoinj/wallet/KeyChainGroup;)V

    return-object v0
.end method

.method public static fromWatchingKey(Lorg/bitcoinj/core/NetworkParameters;Lorg/bitcoinj/crypto/DeterministicKey;)Lorg/bitcoinj/wallet/Wallet;
    .registers 4

    .prologue
    .line 279
    new-instance v0, Lorg/bitcoinj/wallet/Wallet;

    new-instance v1, Lorg/bitcoinj/wallet/KeyChainGroup;

    invoke-direct {v1, p0, p1}, Lorg/bitcoinj/wallet/KeyChainGroup;-><init>(Lorg/bitcoinj/core/NetworkParameters;Lorg/bitcoinj/crypto/DeterministicKey;)V

    invoke-direct {v0, p0, v1}, Lorg/bitcoinj/wallet/Wallet;-><init>(Lorg/bitcoinj/core/NetworkParameters;Lorg/bitcoinj/wallet/KeyChainGroup;)V

    return-object v0
.end method

.method public static fromWatchingKeyB58(Lorg/bitcoinj/core/NetworkParameters;Ljava/lang/String;J)Lorg/bitcoinj/wallet/Wallet;
    .registers 6

    .prologue
    .line 289
    const/4 v0, 0x0

    invoke-static {v0, p1, p0}, Lorg/bitcoinj/crypto/DeterministicKey;->deserializeB58(Lorg/bitcoinj/crypto/DeterministicKey;Ljava/lang/String;Lorg/bitcoinj/core/NetworkParameters;)Lorg/bitcoinj/crypto/DeterministicKey;

    move-result-object v0

    .line 290
    invoke-virtual {v0, p2, p3}, Lorg/bitcoinj/crypto/DeterministicKey;->setCreationTimeSeconds(J)V

    .line 291
    invoke-static {p0, v0}, Lorg/bitcoinj/wallet/Wallet;->fromWatchingKey(Lorg/bitcoinj/core/NetworkParameters;Lorg/bitcoinj/crypto/DeterministicKey;)Lorg/bitcoinj/wallet/Wallet;

    move-result-object v0

    return-object v0
.end method

.method private informConfidenceListenersIfNotReorganizing()V
    .registers 5

    .prologue
    .line 2085
    iget-boolean v0, p0, Lorg/bitcoinj/wallet/Wallet;->insideReorg:Z

    if-eqz v0, :cond_5

    .line 2093
    :goto_4
    return-void

    .line 2087
    :cond_5
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->confidenceChanged:Ljava/util/Map;

    invoke-interface {v0}, Ljava/util/Map;->entrySet()Ljava/util/Set;

    move-result-object v0

    invoke-interface {v0}, Ljava/util/Set;->iterator()Ljava/util/Iterator;

    move-result-object v2

    :goto_f
    invoke-interface {v2}, Ljava/util/Iterator;->hasNext()Z

    move-result v0

    if-eqz v0, :cond_32

    invoke-interface {v2}, Ljava/util/Iterator;->next()Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Ljava/util/Map$Entry;

    .line 2088
    invoke-interface {v0}, Ljava/util/Map$Entry;->getKey()Ljava/lang/Object;

    move-result-object v1

    check-cast v1, Lorg/bitcoinj/core/Transaction;

    .line 2089
    invoke-virtual {v1}, Lorg/bitcoinj/core/Transaction;->getConfidence()Lorg/bitcoinj/core/TransactionConfidence;

    move-result-object v3

    invoke-interface {v0}, Ljava/util/Map$Entry;->getValue()Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Lorg/bitcoinj/core/TransactionConfidence$Listener$ChangeReason;

    invoke-virtual {v3, v0}, Lorg/bitcoinj/core/TransactionConfidence;->queueListeners(Lorg/bitcoinj/core/TransactionConfidence$Listener$ChangeReason;)V

    .line 2090
    invoke-direct {p0, v1}, Lorg/bitcoinj/wallet/Wallet;->queueOnTransactionConfidenceChanged(Lorg/bitcoinj/core/Transaction;)V

    goto :goto_f

    .line 2092
    :cond_32
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->confidenceChanged:Ljava/util/Map;

    invoke-interface {v0}, Ljava/util/Map;->clear()V

    goto :goto_4
.end method

.method private isNotSpendingTxnsInConfidenceType(Lorg/bitcoinj/core/Transaction;Lorg/bitcoinj/core/TransactionConfidence$ConfidenceType;)Z
    .registers 5

    .prologue
    .line 2039
    invoke-virtual {p1}, Lorg/bitcoinj/core/Transaction;->getInputs()Ljava/util/List;

    move-result-object v0

    invoke-interface {v0}, Ljava/util/List;->iterator()Ljava/util/Iterator;

    move-result-object v1

    :cond_8
    invoke-interface {v1}, Ljava/util/Iterator;->hasNext()Z

    move-result v0

    if-eqz v0, :cond_32

    invoke-interface {v1}, Ljava/util/Iterator;->next()Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Lorg/bitcoinj/core/TransactionInput;

    .line 2040
    invoke-virtual {v0}, Lorg/bitcoinj/core/TransactionInput;->getOutpoint()Lorg/bitcoinj/core/TransactionOutPoint;

    move-result-object v0

    invoke-virtual {v0}, Lorg/bitcoinj/core/TransactionOutPoint;->getHash()Lorg/bitcoinj/core/Sha256Hash;

    move-result-object v0

    invoke-virtual {p0, v0}, Lorg/bitcoinj/wallet/Wallet;->getTransaction(Lorg/bitcoinj/core/Sha256Hash;)Lorg/bitcoinj/core/Transaction;

    move-result-object v0

    .line 2041
    if-eqz v0, :cond_8

    invoke-virtual {v0}, Lorg/bitcoinj/core/Transaction;->getConfidence()Lorg/bitcoinj/core/TransactionConfidence;

    move-result-object v0

    invoke-virtual {v0}, Lorg/bitcoinj/core/TransactionConfidence;->getConfidenceType()Lorg/bitcoinj/core/TransactionConfidence$ConfidenceType;

    move-result-object v0

    invoke-virtual {v0, p2}, Lorg/bitcoinj/core/TransactionConfidence$ConfidenceType;->equals(Ljava/lang/Object;)Z

    move-result v0

    if-eqz v0, :cond_8

    .line 2042
    const/4 v0, 0x0

    .line 2045
    :goto_31
    return v0

    :cond_32
    const/4 v0, 0x1

    goto :goto_31
.end method

.method private isTxOutputBloomFilterable(Lorg/bitcoinj/core/TransactionOutput;)Z
    .registers 6

    .prologue
    const/4 v1, 0x1

    const/4 v0, 0x0

    .line 4681
    invoke-virtual {p1}, Lorg/bitcoinj/core/TransactionOutput;->getScriptPubKey()Lorg/bitcoinj/script/Script;

    move-result-object v3

    .line 4682
    invoke-virtual {v3}, Lorg/bitcoinj/script/Script;->isSentToRawPubKey()Z

    move-result v2

    if-nez v2, :cond_12

    invoke-virtual {v3}, Lorg/bitcoinj/script/Script;->isPayToScriptHash()Z

    move-result v2

    if-eqz v2, :cond_27

    :cond_12
    move v2, v1

    .line 4683
    :goto_13
    if-eqz v2, :cond_1d

    iget-object v2, p0, Lorg/bitcoinj/wallet/Wallet;->myUnspents:Ljava/util/HashSet;

    invoke-virtual {v2, p1}, Ljava/util/HashSet;->contains(Ljava/lang/Object;)Z

    move-result v2

    if-nez v2, :cond_25

    :cond_1d
    iget-object v2, p0, Lorg/bitcoinj/wallet/Wallet;->watchedScripts:Ljava/util/Set;

    invoke-interface {v2, v3}, Ljava/util/Set;->contains(Ljava/lang/Object;)Z

    move-result v2

    if-eqz v2, :cond_26

    :cond_25
    move v0, v1

    :cond_26
    return v0

    :cond_27
    move v2, v0

    .line 4682
    goto :goto_13
.end method

.method private killTxns(Ljava/util/Set;Lorg/bitcoinj/core/Transaction;)V
    .registers 12
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "(",
            "Ljava/util/Set",
            "<",
            "Lorg/bitcoinj/core/Transaction;",
            ">;",
            "Lorg/bitcoinj/core/Transaction;",
            ")V"
        }
    .end annotation

    .prologue
    .line 2318
    new-instance v2, Ljava/util/LinkedList;

    invoke-direct {v2, p1}, Ljava/util/LinkedList;-><init>(Ljava/util/Collection;)V

    .line 2319
    :cond_5
    invoke-virtual {v2}, Ljava/util/LinkedList;->isEmpty()Z

    move-result v0

    if-nez v0, :cond_111

    .line 2320
    invoke-virtual {v2}, Ljava/util/LinkedList;->poll()Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Lorg/bitcoinj/core/Transaction;

    .line 2321
    sget-object v3, Lorg/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;

    const-string v4, "TX {} killed{}"

    invoke-virtual {v0}, Lorg/bitcoinj/core/Transaction;->getHashAsString()Ljava/lang/String;

    move-result-object v5

    if-eqz p2, :cond_c3

    new-instance v1, Ljava/lang/StringBuilder;

    const-string v6, " by "

    invoke-direct {v1, v6}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V

    .line 2322
    invoke-virtual {p2}, Lorg/bitcoinj/core/Transaction;->getHashAsString()Ljava/lang/String;

    move-result-object v6

    invoke-virtual {v1, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v1

    invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v1

    .line 2321
    :goto_2e
    invoke-interface {v3, v4, v5, v1}, Lorg/slf4j/Logger;->warn(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V

    .line 2323
    sget-object v1, Lorg/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;

    const-string v3, "Disconnecting each input and moving connected transactions."

    invoke-interface {v1, v3}, Lorg/slf4j/Logger;->warn(Ljava/lang/String;)V

    .line 2325
    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->pending:Ljava/util/Map;

    invoke-virtual {v0}, Lorg/bitcoinj/core/Transaction;->getHash()Lorg/bitcoinj/core/Sha256Hash;

    move-result-object v3

    invoke-interface {v1, v3}, Ljava/util/Map;->remove(Ljava/lang/Object;)Ljava/lang/Object;

    .line 2326
    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->unspent:Ljava/util/Map;

    invoke-virtual {v0}, Lorg/bitcoinj/core/Transaction;->getHash()Lorg/bitcoinj/core/Sha256Hash;

    move-result-object v3

    invoke-interface {v1, v3}, Ljava/util/Map;->remove(Ljava/lang/Object;)Ljava/lang/Object;

    .line 2327
    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->spent:Ljava/util/Map;

    invoke-virtual {v0}, Lorg/bitcoinj/core/Transaction;->getHash()Lorg/bitcoinj/core/Sha256Hash;

    move-result-object v3

    invoke-interface {v1, v3}, Ljava/util/Map;->remove(Ljava/lang/Object;)Ljava/lang/Object;

    .line 2328
    sget-object v1, Lorg/bitcoinj/wallet/WalletTransaction$Pool;->DEAD:Lorg/bitcoinj/wallet/WalletTransaction$Pool;

    invoke-direct {p0, v1, v0}, Lorg/bitcoinj/wallet/Wallet;->addWalletTransaction(Lorg/bitcoinj/wallet/WalletTransaction$Pool;Lorg/bitcoinj/core/Transaction;)V

    .line 2329
    invoke-virtual {v0}, Lorg/bitcoinj/core/Transaction;->getInputs()Ljava/util/List;

    move-result-object v1

    invoke-interface {v1}, Ljava/util/List;->iterator()Ljava/util/Iterator;

    move-result-object v3

    :cond_60
    :goto_60
    invoke-interface {v3}, Ljava/util/Iterator;->hasNext()Z

    move-result v1

    if-eqz v1, :cond_c7

    invoke-interface {v3}, Ljava/util/Iterator;->next()Ljava/lang/Object;

    move-result-object v1

    check-cast v1, Lorg/bitcoinj/core/TransactionInput;

    .line 2330
    invoke-virtual {v1}, Lorg/bitcoinj/core/TransactionInput;->getConnectedTransaction()Lorg/bitcoinj/core/Transaction;

    move-result-object v4

    .line 2331
    if-eqz v4, :cond_60

    .line 2332
    invoke-virtual {v4}, Lorg/bitcoinj/core/Transaction;->getConfidence()Lorg/bitcoinj/core/TransactionConfidence;

    move-result-object v5

    invoke-virtual {v5}, Lorg/bitcoinj/core/TransactionConfidence;->getConfidenceType()Lorg/bitcoinj/core/TransactionConfidence$ConfidenceType;

    move-result-object v5

    sget-object v6, Lorg/bitcoinj/core/TransactionConfidence$ConfidenceType;->DEAD:Lorg/bitcoinj/core/TransactionConfidence$ConfidenceType;

    if-eq v5, v6, :cond_ba

    invoke-virtual {v1}, Lorg/bitcoinj/core/TransactionInput;->getConnectedOutput()Lorg/bitcoinj/core/TransactionOutput;

    move-result-object v5

    invoke-virtual {v5}, Lorg/bitcoinj/core/TransactionOutput;->getSpentBy()Lorg/bitcoinj/core/TransactionInput;

    move-result-object v5

    if-eqz v5, :cond_ba

    invoke-virtual {v1}, Lorg/bitcoinj/core/TransactionInput;->getConnectedOutput()Lorg/bitcoinj/core/TransactionOutput;

    move-result-object v5

    invoke-virtual {v5}, Lorg/bitcoinj/core/TransactionOutput;->getSpentBy()Lorg/bitcoinj/core/TransactionInput;

    move-result-object v5

    invoke-virtual {v5, v1}, Lorg/bitcoinj/core/TransactionInput;->equals(Ljava/lang/Object;)Z

    move-result v5

    if-eqz v5, :cond_ba

    .line 2333
    iget-object v5, p0, Lorg/bitcoinj/wallet/Wallet;->myUnspents:Ljava/util/HashSet;

    invoke-virtual {v1}, Lorg/bitcoinj/core/TransactionInput;->getConnectedOutput()Lorg/bitcoinj/core/TransactionOutput;

    move-result-object v6

    invoke-virtual {v5, v6}, Ljava/util/HashSet;->add(Ljava/lang/Object;)Z

    move-result v5

    invoke-static {v5}, Lcom/google/common/base/n;->checkState(Z)V

    .line 2334
    sget-object v5, Lorg/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;

    const-string v6, "Added to UNSPENTS: {} in {}"

    invoke-virtual {v1}, Lorg/bitcoinj/core/TransactionInput;->getConnectedOutput()Lorg/bitcoinj/core/TransactionOutput;

    move-result-object v7

    invoke-virtual {v1}, Lorg/bitcoinj/core/TransactionInput;->getConnectedOutput()Lorg/bitcoinj/core/TransactionOutput;

    move-result-object v8

    invoke-virtual {v8}, Lorg/bitcoinj/core/TransactionOutput;->getParentTransaction()Lorg/bitcoinj/core/Transaction;

    move-result-object v8

    invoke-virtual {v8}, Lorg/bitcoinj/core/Transaction;->getHash()Lorg/bitcoinj/core/Sha256Hash;

    move-result-object v8

    invoke-interface {v5, v6, v7, v8}, Lorg/slf4j/Logger;->info(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V

    .line 2336
    :cond_ba
    invoke-virtual {v1}, Lorg/bitcoinj/core/TransactionInput;->disconnect()Z

    .line 2337
    const-string v1, "kill"

    invoke-direct {p0, v4, v1}, Lorg/bitcoinj/wallet/Wallet;->maybeMovePool(Lorg/bitcoinj/core/Transaction;Ljava/lang/String;)V

    goto :goto_60

    .line 2322
    :cond_c3
    const-string v1, ""

    goto/16 :goto_2e

    .line 2339
    :cond_c7
    invoke-virtual {v0}, Lorg/bitcoinj/core/Transaction;->getConfidence()Lorg/bitcoinj/core/TransactionConfidence;

    move-result-object v1

    invoke-virtual {v1, p2}, Lorg/bitcoinj/core/TransactionConfidence;->setOverridingTransaction(Lorg/bitcoinj/core/Transaction;)V

    .line 2340
    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->confidenceChanged:Ljava/util/Map;

    sget-object v3, Lorg/bitcoinj/core/TransactionConfidence$Listener$ChangeReason;->TYPE:Lorg/bitcoinj/core/TransactionConfidence$Listener$ChangeReason;

    invoke-interface {v1, v0, v3}, Ljava/util/Map;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;

    .line 2342
    invoke-virtual {v0}, Lorg/bitcoinj/core/Transaction;->getOutputs()Ljava/util/List;

    move-result-object v0

    invoke-interface {v0}, Ljava/util/List;->iterator()Ljava/util/Iterator;

    move-result-object v1

    :cond_dd
    :goto_dd
    invoke-interface {v1}, Ljava/util/Iterator;->hasNext()Z

    move-result v0

    if-eqz v0, :cond_5

    invoke-interface {v1}, Ljava/util/Iterator;->next()Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Lorg/bitcoinj/core/TransactionOutput;

    .line 2343
    iget-object v3, p0, Lorg/bitcoinj/wallet/Wallet;->myUnspents:Ljava/util/HashSet;

    invoke-virtual {v3, v0}, Ljava/util/HashSet;->remove(Ljava/lang/Object;)Z

    move-result v3

    if-eqz v3, :cond_f8

    .line 2344
    sget-object v3, Lorg/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;

    const-string v4, "XX Removed from UNSPENTS: {}"

    invoke-interface {v3, v4, v0}, Lorg/slf4j/Logger;->info(Ljava/lang/String;Ljava/lang/Object;)V

    .line 2345
    :cond_f8
    invoke-virtual {v0}, Lorg/bitcoinj/core/TransactionOutput;->getSpentBy()Lorg/bitcoinj/core/TransactionInput;

    move-result-object v0

    .line 2346
    if-eqz v0, :cond_dd

    .line 2347
    invoke-virtual {v0}, Lorg/bitcoinj/core/TransactionInput;->getParentTransaction()Lorg/bitcoinj/core/Transaction;

    move-result-object v0

    .line 2348
    sget-object v3, Lorg/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;

    const-string v4, "This death invalidated dependent tx {}"

    invoke-virtual {v0}, Lorg/bitcoinj/core/Transaction;->getHash()Lorg/bitcoinj/core/Sha256Hash;

    move-result-object v5

    invoke-interface {v3, v4, v5}, Lorg/slf4j/Logger;->info(Ljava/lang/String;Ljava/lang/Object;)V

    .line 2349
    invoke-virtual {v2, v0}, Ljava/util/LinkedList;->push(Ljava/lang/Object;)V

    goto :goto_dd

    .line 2352
    :cond_111
    if-nez p2, :cond_114

    .line 2370
    :cond_113
    return-void

    .line 2354
    :cond_114
    sget-object v0, Lorg/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;

    const-string v1, "Now attempting to connect the inputs of the overriding transaction."

    invoke-interface {v0, v1}, Lorg/slf4j/Logger;->warn(Ljava/lang/String;)V

    .line 2355
    invoke-virtual {p2}, Lorg/bitcoinj/core/Transaction;->getInputs()Ljava/util/List;

    move-result-object v0

    invoke-interface {v0}, Ljava/util/List;->iterator()Ljava/util/Iterator;

    move-result-object v1

    :cond_123
    :goto_123
    invoke-interface {v1}, Ljava/util/Iterator;->hasNext()Z

    move-result v0

    if-eqz v0, :cond_113

    invoke-interface {v1}, Ljava/util/Iterator;->next()Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Lorg/bitcoinj/core/TransactionInput;

    .line 2356
    iget-object v2, p0, Lorg/bitcoinj/wallet/Wallet;->unspent:Ljava/util/Map;

    sget-object v3, Lorg/bitcoinj/core/TransactionInput$ConnectMode;->DISCONNECT_ON_CONFLICT:Lorg/bitcoinj/core/TransactionInput$ConnectMode;

    invoke-virtual {v0, v2, v3}, Lorg/bitcoinj/core/TransactionInput;->connect(Ljava/util/Map;Lorg/bitcoinj/core/TransactionInput$ConnectMode;)Lorg/bitcoinj/core/TransactionInput$ConnectionResult;

    move-result-object v2

    .line 2357
    sget-object v3, Lorg/bitcoinj/core/TransactionInput$ConnectionResult;->SUCCESS:Lorg/bitcoinj/core/TransactionInput$ConnectionResult;

    if-ne v2, v3, :cond_159

    .line 2358
    invoke-virtual {v0}, Lorg/bitcoinj/core/TransactionInput;->getConnectedTransaction()Lorg/bitcoinj/core/Transaction;

    move-result-object v2

    const-string v3, "kill"

    invoke-direct {p0, v2, v3}, Lorg/bitcoinj/wallet/Wallet;->maybeMovePool(Lorg/bitcoinj/core/Transaction;Ljava/lang/String;)V

    .line 2359
    iget-object v2, p0, Lorg/bitcoinj/wallet/Wallet;->myUnspents:Ljava/util/HashSet;

    invoke-virtual {v0}, Lorg/bitcoinj/core/TransactionInput;->getConnectedOutput()Lorg/bitcoinj/core/TransactionOutput;

    move-result-object v3

    invoke-virtual {v2, v3}, Ljava/util/HashSet;->remove(Ljava/lang/Object;)Z

    .line 2360
    sget-object v2, Lorg/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;

    const-string v3, "Removing from UNSPENTS: {}"

    invoke-virtual {v0}, Lorg/bitcoinj/core/TransactionInput;->getConnectedOutput()Lorg/bitcoinj/core/TransactionOutput;

    move-result-object v0

    invoke-interface {v2, v3, v0}, Lorg/slf4j/Logger;->info(Ljava/lang/String;Ljava/lang/Object;)V

    goto :goto_123

    .line 2362
    :cond_159
    iget-object v2, p0, Lorg/bitcoinj/wallet/Wallet;->spent:Ljava/util/Map;

    sget-object v3, Lorg/bitcoinj/core/TransactionInput$ConnectMode;->DISCONNECT_ON_CONFLICT:Lorg/bitcoinj/core/TransactionInput$ConnectMode;

    invoke-virtual {v0, v2, v3}, Lorg/bitcoinj/core/TransactionInput;->connect(Ljava/util/Map;Lorg/bitcoinj/core/TransactionInput$ConnectMode;)Lorg/bitcoinj/core/TransactionInput$ConnectionResult;

    move-result-object v2

    .line 2363
    sget-object v3, Lorg/bitcoinj/core/TransactionInput$ConnectionResult;->SUCCESS:Lorg/bitcoinj/core/TransactionInput$ConnectionResult;

    if-ne v2, v3, :cond_123

    .line 2364
    invoke-virtual {v0}, Lorg/bitcoinj/core/TransactionInput;->getConnectedTransaction()Lorg/bitcoinj/core/Transaction;

    move-result-object v2

    const-string v3, "kill"

    invoke-direct {p0, v2, v3}, Lorg/bitcoinj/wallet/Wallet;->maybeMovePool(Lorg/bitcoinj/core/Transaction;Ljava/lang/String;)V

    .line 2365
    iget-object v2, p0, Lorg/bitcoinj/wallet/Wallet;->myUnspents:Ljava/util/HashSet;

    invoke-virtual {v0}, Lorg/bitcoinj/core/TransactionInput;->getConnectedOutput()Lorg/bitcoinj/core/TransactionOutput;

    move-result-object v3

    invoke-virtual {v2, v3}, Ljava/util/HashSet;->remove(Ljava/lang/Object;)Z

    .line 2366
    sget-object v2, Lorg/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;

    const-string v3, "Removing from UNSPENTS: {}"

    invoke-virtual {v0}, Lorg/bitcoinj/core/TransactionInput;->getConnectedOutput()Lorg/bitcoinj/core/TransactionOutput;

    move-result-object v0

    invoke-interface {v2, v3, v0}, Lorg/slf4j/Logger;->info(Ljava/lang/String;Ljava/lang/Object;)V

    goto :goto_123
.end method

.method public static varargs loadFromFile(Ljava/io/File;[Lorg/bitcoinj/wallet/WalletExtension;)Lorg/bitcoinj/wallet/Wallet;
    .registers 5

    .prologue
    .line 1509
    const/4 v2, 0x0

    .line 1511
    :try_start_1
    new-instance v1, Ljava/io/FileInputStream;

    invoke-direct {v1, p0}, Ljava/io/FileInputStream;-><init>(Ljava/io/File;)V
    :try_end_6
    .catchall {:try_start_1 .. :try_end_6} :catchall_e

    .line 1512
    :try_start_6
    invoke-static {v1, p1}, Lorg/bitcoinj/wallet/Wallet;->loadFromFileStream(Ljava/io/InputStream;[Lorg/bitcoinj/wallet/WalletExtension;)Lorg/bitcoinj/wallet/Wallet;
    :try_end_9
    .catchall {:try_start_6 .. :try_end_9} :catchall_1f

    move-result-object v0

    .line 1514
    :try_start_a
    invoke-virtual {v1}, Ljava/io/FileInputStream;->close()V

    .line 1512
    return-object v0

    .line 1514
    :catchall_e
    move-exception v0

    move-object v1, v2

    :goto_10
    if-eqz v1, :cond_15

    invoke-virtual {v1}, Ljava/io/FileInputStream;->close()V

    :cond_15
    throw v0
    :try_end_16
    .catch Ljava/io/IOException; {:try_start_a .. :try_end_16} :catch_16

    .line 1516
    :catch_16
    move-exception v0

    .line 1517
    new-instance v1, Lorg/bitcoinj/wallet/UnreadableWalletException;

    const-string v2, "Could not open file"

    invoke-direct {v1, v2, v0}, Lorg/bitcoinj/wallet/UnreadableWalletException;-><init>(Ljava/lang/String;Ljava/lang/Throwable;)V

    throw v1

    .line 1514
    :catchall_1f
    move-exception v0

    goto :goto_10
.end method

.method public static varargs loadFromFileStream(Ljava/io/InputStream;[Lorg/bitcoinj/wallet/WalletExtension;)Lorg/bitcoinj/wallet/Wallet;
    .registers 5

    .prologue
    .line 1606
    new-instance v0, Lorg/bitcoinj/wallet/WalletProtobufSerializer;

    invoke-direct {v0}, Lorg/bitcoinj/wallet/WalletProtobufSerializer;-><init>()V

    invoke-virtual {v0, p0, p1}, Lorg/bitcoinj/wallet/WalletProtobufSerializer;->readWallet(Ljava/io/InputStream;[Lorg/bitcoinj/wallet/WalletExtension;)Lorg/bitcoinj/wallet/Wallet;

    move-result-object v0

    .line 1607
    invoke-virtual {v0}, Lorg/bitcoinj/wallet/Wallet;->isConsistent()Z

    move-result v1

    if-nez v1, :cond_16

    .line 1608
    sget-object v1, Lorg/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;

    const-string v2, "Loaded an inconsistent wallet"

    invoke-interface {v1, v2}, Lorg/slf4j/Logger;->error(Ljava/lang/String;)V

    .line 1610
    :cond_16
    return-object v0
.end method

.method private markKeysAsUsed(Lorg/bitcoinj/core/Transaction;)V
    .registers 6

    .prologue
    .line 1065
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V

    .line 1067
    :try_start_5
    invoke-virtual {p1}, Lorg/bitcoinj/core/Transaction;->getOutputs()Ljava/util/List;

    move-result-object v0

    invoke-interface {v0}, Ljava/util/List;->iterator()Ljava/util/Iterator;

    move-result-object v1

    :cond_d
    :goto_d
    invoke-interface {v1}, Ljava/util/Iterator;->hasNext()Z

    move-result v0

    if-eqz v0, :cond_65

    invoke-interface {v1}, Ljava/util/Iterator;->next()Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Lorg/bitcoinj/core/TransactionOutput;
    :try_end_19
    .catchall {:try_start_5 .. :try_end_19} :catchall_3a

    .line 1069
    :try_start_19
    invoke-virtual {v0}, Lorg/bitcoinj/core/TransactionOutput;->getScriptPubKey()Lorg/bitcoinj/script/Script;

    move-result-object v0

    .line 1070
    invoke-virtual {v0}, Lorg/bitcoinj/script/Script;->isSentToRawPubKey()Z

    move-result v2

    if-eqz v2, :cond_41

    .line 1071
    invoke-virtual {v0}, Lorg/bitcoinj/script/Script;->getPubKey()[B

    move-result-object v0

    .line 1072
    iget-object v2, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroup:Lorg/bitcoinj/wallet/KeyChainGroup;

    invoke-virtual {v2, v0}, Lorg/bitcoinj/wallet/KeyChainGroup;->markPubKeyAsUsed([B)V
    :try_end_2c
    .catch Lorg/bitcoinj/core/ScriptException; {:try_start_19 .. :try_end_2c} :catch_2d
    .catchall {:try_start_19 .. :try_end_2c} :catchall_3a

    goto :goto_d

    .line 1080
    :catch_2d
    move-exception v0

    .line 1082
    :try_start_2e
    sget-object v2, Lorg/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;

    const-string v3, "Could not parse tx output script: {}"

    invoke-virtual {v0}, Lorg/bitcoinj/core/ScriptException;->toString()Ljava/lang/String;

    move-result-object v0

    invoke-interface {v2, v3, v0}, Lorg/slf4j/Logger;->warn(Ljava/lang/String;Ljava/lang/Object;)V
    :try_end_39
    .catchall {:try_start_2e .. :try_end_39} :catchall_3a

    goto :goto_d

    .line 1086
    :catchall_3a
    move-exception v0

    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    throw v0

    .line 1073
    :cond_41
    :try_start_41
    invoke-virtual {v0}, Lorg/bitcoinj/script/Script;->isSentToAddress()Z

    move-result v2

    if-eqz v2, :cond_51

    .line 1074
    invoke-virtual {v0}, Lorg/bitcoinj/script/Script;->getPubKeyHash()[B

    move-result-object v0

    .line 1075
    iget-object v2, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroup:Lorg/bitcoinj/wallet/KeyChainGroup;

    invoke-virtual {v2, v0}, Lorg/bitcoinj/wallet/KeyChainGroup;->markPubKeyHashAsUsed([B)V

    goto :goto_d

    .line 1076
    :cond_51
    invoke-virtual {v0}, Lorg/bitcoinj/script/Script;->isPayToScriptHash()Z

    move-result v2

    if-eqz v2, :cond_d

    .line 1077
    invoke-virtual {p1}, Lorg/bitcoinj/core/Transaction;->getParams()Lorg/bitcoinj/core/NetworkParameters;

    move-result-object v2

    invoke-static {v2, v0}, Lorg/bitcoinj/core/Address;->fromP2SHScript(Lorg/bitcoinj/core/NetworkParameters;Lorg/bitcoinj/script/Script;)Lorg/bitcoinj/core/Address;

    move-result-object v0

    .line 1078
    iget-object v2, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroup:Lorg/bitcoinj/wallet/KeyChainGroup;

    invoke-virtual {v2, v0}, Lorg/bitcoinj/wallet/KeyChainGroup;->markP2SHAddressAsUsed(Lorg/bitcoinj/core/Address;)V
    :try_end_64
    .catch Lorg/bitcoinj/core/ScriptException; {:try_start_41 .. :try_end_64} :catch_2d
    .catchall {:try_start_41 .. :try_end_64} :catchall_3a

    goto :goto_d

    .line 1086
    :cond_65
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    .line 1087
    return-void
.end method

.method private maybeMovePool(Lorg/bitcoinj/core/Transaction;Ljava/lang/String;)V
    .registers 6

    .prologue
    .line 2377
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->isHeldByCurrentThread()Z

    move-result v0

    invoke-static {v0}, Lcom/google/common/base/n;->checkState(Z)V

    .line 2378
    invoke-virtual {p1, p0}, Lorg/bitcoinj/core/Transaction;->isEveryOwnedOutputSpent(Lorg/bitcoinj/core/TransactionBag;)Z

    move-result v0

    if-eqz v0, :cond_38

    .line 2380
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->unspent:Ljava/util/Map;

    invoke-virtual {p1}, Lorg/bitcoinj/core/Transaction;->getHash()Lorg/bitcoinj/core/Sha256Hash;

    move-result-object v1

    invoke-interface {v0, v1}, Ljava/util/Map;->remove(Ljava/lang/Object;)Ljava/lang/Object;

    move-result-object v0

    if-eqz v0, :cond_37

    .line 2381
    sget-object v0, Lorg/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;

    invoke-interface {v0}, Lorg/slf4j/Logger;->isInfoEnabled()Z

    move-result v0

    if-eqz v0, :cond_2e

    .line 2382
    sget-object v0, Lorg/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;

    const-string v1, "  {} {} <-unspent ->spent"

    invoke-virtual {p1}, Lorg/bitcoinj/core/Transaction;->getHashAsString()Ljava/lang/String;

    move-result-object v2

    invoke-interface {v0, v1, v2, p2}, Lorg/slf4j/Logger;->info(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V

    .line 2384
    :cond_2e
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->spent:Ljava/util/Map;

    invoke-virtual {p1}, Lorg/bitcoinj/core/Transaction;->getHash()Lorg/bitcoinj/core/Sha256Hash;

    move-result-object v1

    invoke-interface {v0, v1, p1}, Ljava/util/Map;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;

    .line 2394
    :cond_37
    :goto_37
    return-void

    .line 2387
    :cond_38
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->spent:Ljava/util/Map;

    invoke-virtual {p1}, Lorg/bitcoinj/core/Transaction;->getHash()Lorg/bitcoinj/core/Sha256Hash;

    move-result-object v1

    invoke-interface {v0, v1}, Ljava/util/Map;->remove(Ljava/lang/Object;)Ljava/lang/Object;

    move-result-object v0

    if-eqz v0, :cond_37

    .line 2388
    sget-object v0, Lorg/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;

    invoke-interface {v0}, Lorg/slf4j/Logger;->isInfoEnabled()Z

    move-result v0

    if-eqz v0, :cond_57

    .line 2389
    sget-object v0, Lorg/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;

    const-string v1, "  {} {} <-spent ->unspent"

    invoke-virtual {p1}, Lorg/bitcoinj/core/Transaction;->getHashAsString()Ljava/lang/String;

    move-result-object v2

    invoke-interface {v0, v1, v2, p2}, Lorg/slf4j/Logger;->info(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V

    .line 2391
    :cond_57
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->unspent:Ljava/util/Map;

    invoke-virtual {p1}, Lorg/bitcoinj/core/Transaction;->getHash()Lorg/bitcoinj/core/Sha256Hash;

    move-result-object v1

    invoke-interface {v0, v1, p1}, Ljava/util/Map;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;

    goto :goto_37
.end method

.method private maybeRotateKeys(Lorg/spongycastle/crypto/params/KeyParameter;Z)Ljava/util/List;
    .registers 11
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "(",
            "Lorg/spongycastle/crypto/params/KeyParameter;",
            "Z)",
            "Ljava/util/List",
            "<",
            "Lorg/bitcoinj/core/Transaction;",
            ">;"
        }
    .end annotation

    .prologue
    .line 5185
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->isHeldByCurrentThread()Z

    move-result v0

    invoke-static {v0}, Lcom/google/common/base/n;->checkState(Z)V

    .line 5186
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->isHeldByCurrentThread()Z

    move-result v0

    invoke-static {v0}, Lcom/google/common/base/n;->checkState(Z)V

    .line 13232
    new-instance v5, Ljava/util/LinkedList;

    invoke-direct {v5}, Ljava/util/LinkedList;-><init>()V

    .line 5189
    iget-wide v2, p0, Lorg/bitcoinj/wallet/Wallet;->vKeyRotationTimestamp:J

    .line 5190
    const-wide/16 v0, 0x0

    cmp-long v0, v2, v0

    if-nez v0, :cond_20

    .line 5225
    :cond_1f
    :goto_1f
    return-object v5

    .line 5193
    :cond_20
    const/4 v1, 0x1

    .line 5194
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroup:Lorg/bitcoinj/wallet/KeyChainGroup;

    invoke-virtual {v0}, Lorg/bitcoinj/wallet/KeyChainGroup;->getDeterministicKeyChains()Ljava/util/List;

    move-result-object v0

    invoke-interface {v0}, Ljava/util/List;->iterator()Ljava/util/Iterator;

    move-result-object v4

    :cond_2b
    invoke-interface {v4}, Ljava/util/Iterator;->hasNext()Z

    move-result v0

    if-eqz v0, :cond_9a

    invoke-interface {v4}, Ljava/util/Iterator;->next()Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Lorg/bitcoinj/wallet/DeterministicKeyChain;

    .line 5195
    invoke-virtual {v0}, Lorg/bitcoinj/wallet/DeterministicKeyChain;->getEarliestKeyCreationTime()J

    move-result-wide v6

    cmp-long v0, v6, v2

    if-ltz v0, :cond_2b

    .line 5196
    const/4 v0, 0x0

    .line 5200
    :goto_40
    if-eqz v0, :cond_5d

    .line 5202
    :try_start_42
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroup:Lorg/bitcoinj/wallet/KeyChainGroup;

    invoke-virtual {v0}, Lorg/bitcoinj/wallet/KeyChainGroup;->getImportedKeys()Ljava/util/List;

    move-result-object v0

    invoke-interface {v0}, Ljava/util/List;->isEmpty()Z

    move-result v0

    if-eqz v0, :cond_78

    .line 5203
    sget-object v0, Lorg/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;

    const-string v1, "All HD chains are currently rotating and we have no random keys, creating fresh HD chain ..."

    invoke-interface {v0, v1}, Lorg/slf4j/Logger;->info(Ljava/lang/String;)V

    .line 5204
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroup:Lorg/bitcoinj/wallet/KeyChainGroup;

    invoke-virtual {v0}, Lorg/bitcoinj/wallet/KeyChainGroup;->createAndActivateNewHDChain()V
    :try_end_5a
    .catch Lorg/bitcoinj/wallet/AllRandomKeysRotating; {:try_start_42 .. :try_end_5a} :catch_8c

    .line 5214
    :goto_5a
    invoke-virtual {p0}, Lorg/bitcoinj/wallet/Wallet;->saveNow()V

    :cond_5d
    move-object v1, p0

    move-object v4, p1

    move v6, p2

    .line 5222
    invoke-direct/range {v1 .. v6}, Lorg/bitcoinj/wallet/Wallet;->rekeyOneBatch(JLorg/spongycastle/crypto/params/KeyParameter;Ljava/util/List;Z)Lorg/bitcoinj/core/Transaction;

    move-result-object v0

    .line 5223
    if-eqz v0, :cond_69

    invoke-interface {v5, v0}, Ljava/util/List;->add(Ljava/lang/Object;)Z

    .line 5224
    :cond_69
    if-eqz v0, :cond_1f

    invoke-virtual {v0}, Lorg/bitcoinj/core/Transaction;->getInputs()Ljava/util/List;

    move-result-object v0

    invoke-interface {v0}, Ljava/util/List;->size()I

    move-result v0

    const/16 v1, 0x258

    if-eq v0, v1, :cond_5d

    goto :goto_1f

    .line 5206
    :cond_78
    :try_start_78
    sget-object v0, Lorg/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;

    const-string v1, "All HD chains are currently rotating, attempting to create a new one from the next oldest non-rotating key material ..."

    invoke-interface {v0, v1}, Lorg/slf4j/Logger;->info(Ljava/lang/String;)V

    .line 5207
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroup:Lorg/bitcoinj/wallet/KeyChainGroup;

    invoke-virtual {v0, v2, v3, p1}, Lorg/bitcoinj/wallet/KeyChainGroup;->upgradeToDeterministic(JLorg/spongycastle/crypto/params/KeyParameter;)Lorg/bitcoinj/wallet/DeterministicKeyChain;

    .line 5208
    sget-object v0, Lorg/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;

    const-string v1, " ... upgraded to HD again, based on next best oldest key."

    invoke-interface {v0, v1}, Lorg/slf4j/Logger;->info(Ljava/lang/String;)V
    :try_end_8b
    .catch Lorg/bitcoinj/wallet/AllRandomKeysRotating; {:try_start_78 .. :try_end_8b} :catch_8c

    goto :goto_5a

    .line 5211
    :catch_8c
    move-exception v0

    sget-object v0, Lorg/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;

    const-string v1, " ... no non-rotating random keys available, generating entirely new HD tree: backup required after this."

    invoke-interface {v0, v1}, Lorg/slf4j/Logger;->info(Ljava/lang/String;)V

    .line 5212
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroup:Lorg/bitcoinj/wallet/KeyChainGroup;

    invoke-virtual {v0}, Lorg/bitcoinj/wallet/KeyChainGroup;->createAndActivateNewHDChain()V

    goto :goto_5a

    :cond_9a
    move v0, v1

    goto :goto_40
.end method

.method private maybeUpgradeToHD()V
    .registers 2

    .prologue
    .line 572
    const/4 v0, 0x0

    invoke-direct {p0, v0}, Lorg/bitcoinj/wallet/Wallet;->maybeUpgradeToHD(Lorg/spongycastle/crypto/params/KeyParameter;)V

    .line 573
    return-void
.end method

.method private maybeUpgradeToHD(Lorg/spongycastle/crypto/params/KeyParameter;)V
    .registers 5

    .prologue
    .line 577
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->isHeldByCurrentThread()Z

    move-result v0

    invoke-static {v0}, Lcom/google/common/base/n;->checkState(Z)V

    .line 578
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroup:Lorg/bitcoinj/wallet/KeyChainGroup;

    invoke-virtual {v0}, Lorg/bitcoinj/wallet/KeyChainGroup;->isDeterministicUpgradeRequired()Z

    move-result v0

    if-eqz v0, :cond_1b

    .line 579
    sget-object v0, Lorg/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;

    const-string v1, "Upgrade to HD wallets is required, attempting to do so."

    invoke-interface {v0, v1}, Lorg/slf4j/Logger;->info(Ljava/lang/String;)V

    .line 581
    :try_start_18
    invoke-virtual {p0, p1}, Lorg/bitcoinj/wallet/Wallet;->upgradeToDeterministic(Lorg/spongycastle/crypto/params/KeyParameter;)V
    :try_end_1b
    .catch Lorg/bitcoinj/wallet/DeterministicUpgradeRequiresPassword; {:try_start_18 .. :try_end_1b} :catch_1c

    .line 588
    :cond_1b
    return-void

    .line 582
    :catch_1c
    move-exception v0

    .line 583
    sget-object v1, Lorg/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;

    const-string v2, "Failed to auto upgrade due to encryption. You should call wallet.upgradeToDeterministic with the users AES key to avoid this error."

    invoke-interface {v1, v2}, Lorg/slf4j/Logger;->error(Ljava/lang/String;)V

    .line 585
    throw v0
.end method

.method private processTxFromBestChain(Lorg/bitcoinj/core/Transaction;Z)V
    .registers 9

    .prologue
    const/4 v2, 0x0

    const/4 v1, 0x1

    .line 2161
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->isHeldByCurrentThread()Z

    move-result v0

    invoke-static {v0}, Lcom/google/common/base/n;->checkState(Z)V

    .line 2162
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->pending:Ljava/util/Map;

    invoke-virtual {p1}, Lorg/bitcoinj/core/Transaction;->getHash()Lorg/bitcoinj/core/Sha256Hash;

    move-result-object v3

    invoke-interface {v0, v3}, Ljava/util/Map;->containsKey(Ljava/lang/Object;)Z

    move-result v0

    if-nez v0, :cond_85

    move v0, v1

    :goto_18
    invoke-static {v0}, Lcom/google/common/base/n;->checkState(Z)V

    .line 2167
    invoke-virtual {p1}, Lorg/bitcoinj/core/Transaction;->isCoinBase()Z

    move-result v0

    if-eqz v0, :cond_87

    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->dead:Ljava/util/Map;

    invoke-virtual {p1}, Lorg/bitcoinj/core/Transaction;->getHash()Lorg/bitcoinj/core/Sha256Hash;

    move-result-object v3

    invoke-interface {v0, v3}, Ljava/util/Map;->containsKey(Ljava/lang/Object;)Z

    move-result v0

    if-eqz v0, :cond_87

    move v0, v1

    .line 2168
    :goto_2e
    if-eqz v0, :cond_50

    .line 2176
    sget-object v0, Lorg/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;

    const-string v3, "  coinbase tx <-dead: confidence {}"

    invoke-virtual {p1}, Lorg/bitcoinj/core/Transaction;->getHashAsString()Ljava/lang/String;

    move-result-object v4

    .line 2177
    invoke-virtual {p1}, Lorg/bitcoinj/core/Transaction;->getConfidence()Lorg/bitcoinj/core/TransactionConfidence;

    move-result-object v5

    invoke-virtual {v5}, Lorg/bitcoinj/core/TransactionConfidence;->getConfidenceType()Lorg/bitcoinj/core/TransactionConfidence$ConfidenceType;

    move-result-object v5

    invoke-virtual {v5}, Lorg/bitcoinj/core/TransactionConfidence$ConfidenceType;->name()Ljava/lang/String;

    move-result-object v5

    .line 2176
    invoke-interface {v0, v3, v4, v5}, Lorg/slf4j/Logger;->info(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V

    .line 2178
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->dead:Ljava/util/Map;

    invoke-virtual {p1}, Lorg/bitcoinj/core/Transaction;->getHash()Lorg/bitcoinj/core/Sha256Hash;

    move-result-object v3

    invoke-interface {v0, v3}, Ljava/util/Map;->remove(Ljava/lang/Object;)Ljava/lang/Object;

    .line 2182
    :cond_50
    invoke-direct {p0, p1, v1}, Lorg/bitcoinj/wallet/Wallet;->updateForSpends(Lorg/bitcoinj/core/Transaction;Z)V

    .line 2187
    invoke-virtual {p1, p0}, Lorg/bitcoinj/core/Transaction;->getValueSentToMe(Lorg/bitcoinj/core/TransactionBag;)Lorg/bitcoinj/core/Coin;

    move-result-object v0

    invoke-virtual {v0}, Lorg/bitcoinj/core/Coin;->signum()I

    move-result v0

    if-lez v0, :cond_89

    .line 2188
    :goto_5d
    if-eqz v1, :cond_9c

    .line 2190
    invoke-virtual {p1, p0}, Lorg/bitcoinj/core/Transaction;->isEveryOwnedOutputSpent(Lorg/bitcoinj/core/TransactionBag;)Z

    move-result v0

    if-eqz v0, :cond_8b

    .line 2191
    sget-object v0, Lorg/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;

    const-string v1, "  tx {} ->spent (by pending)"

    invoke-virtual {p1}, Lorg/bitcoinj/core/Transaction;->getHashAsString()Ljava/lang/String;

    move-result-object v2

    invoke-interface {v0, v1, v2}, Lorg/slf4j/Logger;->info(Ljava/lang/String;Ljava/lang/Object;)V

    .line 2192
    sget-object v0, Lorg/bitcoinj/wallet/WalletTransaction$Pool;->SPENT:Lorg/bitcoinj/wallet/WalletTransaction$Pool;

    invoke-direct {p0, v0, p1}, Lorg/bitcoinj/wallet/Wallet;->addWalletTransaction(Lorg/bitcoinj/wallet/WalletTransaction$Pool;Lorg/bitcoinj/core/Transaction;)V

    .line 2208
    :cond_75
    :goto_75
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->pending:Ljava/util/Map;

    invoke-direct {p0, p1, v0}, Lorg/bitcoinj/wallet/Wallet;->findDoubleSpendsAgainst(Lorg/bitcoinj/core/Transaction;Ljava/util/Map;)Ljava/util/Set;

    move-result-object v0

    .line 2209
    invoke-interface {v0}, Ljava/util/Set;->isEmpty()Z

    move-result v1

    if-nez v1, :cond_84

    .line 2211
    invoke-direct {p0, v0, p1}, Lorg/bitcoinj/wallet/Wallet;->killTxns(Ljava/util/Set;Lorg/bitcoinj/core/Transaction;)V

    .line 2213
    :cond_84
    return-void

    :cond_85
    move v0, v2

    .line 2162
    goto :goto_18

    :cond_87
    move v0, v2

    .line 2167
    goto :goto_2e

    :cond_89
    move v1, v2

    .line 2187
    goto :goto_5d

    .line 2194
    :cond_8b
    sget-object v0, Lorg/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;

    const-string v1, "  tx {} ->unspent"

    invoke-virtual {p1}, Lorg/bitcoinj/core/Transaction;->getHashAsString()Ljava/lang/String;

    move-result-object v2

    invoke-interface {v0, v1, v2}, Lorg/slf4j/Logger;->info(Ljava/lang/String;Ljava/lang/Object;)V

    .line 2195
    sget-object v0, Lorg/bitcoinj/wallet/WalletTransaction$Pool;->UNSPENT:Lorg/bitcoinj/wallet/WalletTransaction$Pool;

    invoke-direct {p0, v0, p1}, Lorg/bitcoinj/wallet/Wallet;->addWalletTransaction(Lorg/bitcoinj/wallet/WalletTransaction$Pool;Lorg/bitcoinj/core/Transaction;)V

    goto :goto_75

    .line 2197
    :cond_9c
    invoke-virtual {p1, p0}, Lorg/bitcoinj/core/Transaction;->getValueSentFromMe(Lorg/bitcoinj/core/TransactionBag;)Lorg/bitcoinj/core/Coin;

    move-result-object v0

    invoke-virtual {v0}, Lorg/bitcoinj/core/Coin;->signum()I

    move-result v0

    if-lez v0, :cond_b7

    .line 2199
    sget-object v0, Lorg/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;

    const-string v1, "  tx {} ->spent"

    invoke-virtual {p1}, Lorg/bitcoinj/core/Transaction;->getHashAsString()Ljava/lang/String;

    move-result-object v2

    invoke-interface {v0, v1, v2}, Lorg/slf4j/Logger;->info(Ljava/lang/String;Ljava/lang/Object;)V

    .line 2200
    sget-object v0, Lorg/bitcoinj/wallet/WalletTransaction$Pool;->SPENT:Lorg/bitcoinj/wallet/WalletTransaction$Pool;

    invoke-direct {p0, v0, p1}, Lorg/bitcoinj/wallet/Wallet;->addWalletTransaction(Lorg/bitcoinj/wallet/WalletTransaction$Pool;Lorg/bitcoinj/core/Transaction;)V

    goto :goto_75

    .line 2201
    :cond_b7
    if-eqz p2, :cond_75

    .line 2203
    sget-object v0, Lorg/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;

    const-string v1, "  tx {} ->spent (manually added)"

    invoke-virtual {p1}, Lorg/bitcoinj/core/Transaction;->getHashAsString()Ljava/lang/String;

    move-result-object v2

    invoke-interface {v0, v1, v2}, Lorg/slf4j/Logger;->info(Ljava/lang/String;Ljava/lang/Object;)V

    .line 2204
    sget-object v0, Lorg/bitcoinj/wallet/WalletTransaction$Pool;->SPENT:Lorg/bitcoinj/wallet/WalletTransaction$Pool;

    invoke-direct {p0, v0, p1}, Lorg/bitcoinj/wallet/Wallet;->addWalletTransaction(Lorg/bitcoinj/wallet/WalletTransaction$Pool;Lorg/bitcoinj/core/Transaction;)V

    goto :goto_75
.end method

.method private queueOnTransactionConfidenceChanged(Lorg/bitcoinj/core/Transaction;)V
    .registers 6

    .prologue
    .line 2723
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->isHeldByCurrentThread()Z

    move-result v0

    invoke-static {v0}, Lcom/google/common/base/n;->checkState(Z)V

    .line 2724
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->transactionConfidenceListeners:Ljava/util/concurrent/CopyOnWriteArrayList;

    invoke-virtual {v0}, Ljava/util/concurrent/CopyOnWriteArrayList;->iterator()Ljava/util/Iterator;

    move-result-object v1

    :goto_f
    invoke-interface {v1}, Ljava/util/Iterator;->hasNext()Z

    move-result v0

    if-eqz v0, :cond_34

    invoke-interface {v1}, Ljava/util/Iterator;->next()Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Lorg/bitcoinj/utils/ListenerRegistration;

    .line 2725
    iget-object v2, v0, Lorg/bitcoinj/utils/ListenerRegistration;->executor:Ljava/util/concurrent/Executor;

    sget-object v3, Lorg/bitcoinj/utils/Threading;->SAME_THREAD:Ljava/util/concurrent/Executor;

    if-ne v2, v3, :cond_29

    .line 2726
    iget-object v0, v0, Lorg/bitcoinj/utils/ListenerRegistration;->listener:Ljava/lang/Object;

    check-cast v0, Lorg/bitcoinj/core/listeners/TransactionConfidenceEventListener;

    invoke-interface {v0, p0, p1}, Lorg/bitcoinj/core/listeners/TransactionConfidenceEventListener;->onTransactionConfidenceChanged(Lorg/bitcoinj/wallet/Wallet;Lorg/bitcoinj/core/Transaction;)V

    goto :goto_f

    .line 2728
    :cond_29
    iget-object v2, v0, Lorg/bitcoinj/utils/ListenerRegistration;->executor:Ljava/util/concurrent/Executor;

    new-instance v3, Lorg/bitcoinj/wallet/Wallet$3;

    invoke-direct {v3, p0, v0, p1}, Lorg/bitcoinj/wallet/Wallet$3;-><init>(Lorg/bitcoinj/wallet/Wallet;Lorg/bitcoinj/utils/ListenerRegistration;Lorg/bitcoinj/core/Transaction;)V

    invoke-interface {v2, v3}, Ljava/util/concurrent/Executor;->execute(Ljava/lang/Runnable;)V

    goto :goto_f

    .line 2736
    :cond_34
    return-void
.end method

.method private receive(Lorg/bitcoinj/core/Transaction;Lorg/bitcoinj/core/StoredBlock;Lorg/bitcoinj/core/AbstractBlockChain$NewBlockType;I)V
    .registers 15

    .prologue
    .line 1899
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->isHeldByCurrentThread()Z

    move-result v0

    invoke-static {v0}, Lcom/google/common/base/n;->checkState(Z)V

    .line 1901
    invoke-virtual {p0}, Lorg/bitcoinj/wallet/Wallet;->getBalance()Lorg/bitcoinj/core/Coin;

    move-result-object v4

    .line 1902
    invoke-virtual {p1}, Lorg/bitcoinj/core/Transaction;->getHash()Lorg/bitcoinj/core/Sha256Hash;

    move-result-object v5

    .line 1903
    sget-object v0, Lorg/bitcoinj/core/AbstractBlockChain$NewBlockType;->BEST_CHAIN:Lorg/bitcoinj/core/AbstractBlockChain$NewBlockType;

    if-ne p3, v0, :cond_c5

    const/4 v0, 0x1

    move v1, v0

    .line 1904
    :goto_17
    sget-object v0, Lorg/bitcoinj/core/AbstractBlockChain$NewBlockType;->SIDE_CHAIN:Lorg/bitcoinj/core/AbstractBlockChain$NewBlockType;

    if-ne p3, v0, :cond_c9

    const/4 v0, 0x1

    move v2, v0

    .line 1906
    :goto_1d
    invoke-virtual {p1, p0}, Lorg/bitcoinj/core/Transaction;->getValueSentFromMe(Lorg/bitcoinj/core/TransactionBag;)Lorg/bitcoinj/core/Coin;

    move-result-object v0

    .line 1907
    invoke-virtual {p1, p0}, Lorg/bitcoinj/core/Transaction;->getValueSentToMe(Lorg/bitcoinj/core/TransactionBag;)Lorg/bitcoinj/core/Coin;

    move-result-object v3

    .line 1908
    invoke-virtual {v3, v0}, Lorg/bitcoinj/core/Coin;->subtract(Lorg/bitcoinj/core/Coin;)Lorg/bitcoinj/core/Coin;

    move-result-object v6

    .line 1910
    sget-object v3, Lorg/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;

    const-string v7, "Received tx{} for {}: {} [{}] in block {}"

    const/4 v0, 0x5

    new-array v8, v0, [Ljava/lang/Object;

    const/4 v9, 0x0

    if-eqz v2, :cond_cd

    const-string v0, " on a side chain"

    :goto_35
    aput-object v0, v8, v9

    const/4 v0, 0x1

    .line 1911
    invoke-virtual {v6}, Lorg/bitcoinj/core/Coin;->toFriendlyString()Ljava/lang/String;

    move-result-object v9

    aput-object v9, v8, v0

    const/4 v0, 0x2

    invoke-virtual {p1}, Lorg/bitcoinj/core/Transaction;->getHashAsString()Ljava/lang/String;

    move-result-object v9

    aput-object v9, v8, v0

    const/4 v0, 0x3

    invoke-static {p4}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;

    move-result-object v9

    aput-object v9, v8, v0

    const/4 v9, 0x4

    if-eqz p2, :cond_d1

    .line 1912
    invoke-virtual {p2}, Lorg/bitcoinj/core/StoredBlock;->getHeader()Lorg/bitcoinj/core/Block;

    move-result-object v0

    invoke-virtual {v0}, Lorg/bitcoinj/core/Block;->getHash()Lorg/bitcoinj/core/Sha256Hash;

    move-result-object v0

    :goto_57
    aput-object v0, v8, v9

    .line 1910
    invoke-interface {v3, v7, v8}, Lorg/slf4j/Logger;->info(Ljava/lang/String;[Ljava/lang/Object;)V

    .line 1916
    invoke-direct {p0, p1}, Lorg/bitcoinj/wallet/Wallet;->markKeysAsUsed(Lorg/bitcoinj/core/Transaction;)V

    .line 1918
    iget v0, p0, Lorg/bitcoinj/wallet/Wallet;->onWalletChangedSuppressions:I

    add-int/lit8 v0, v0, 0x1

    iput v0, p0, Lorg/bitcoinj/wallet/Wallet;->onWalletChangedSuppressions:I

    .line 1923
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->transactions:Ljava/util/Map;

    invoke-virtual {p1}, Lorg/bitcoinj/core/Transaction;->getHash()Lorg/bitcoinj/core/Sha256Hash;

    move-result-object v3

    invoke-interface {v0, v3}, Ljava/util/Map;->get(Ljava/lang/Object;)Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Lorg/bitcoinj/core/Transaction;

    .line 1924
    if-eqz v0, :cond_74

    move-object p1, v0

    .line 1928
    :cond_74
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->pending:Ljava/util/Map;

    invoke-interface {v0, v5}, Ljava/util/Map;->remove(Ljava/lang/Object;)Ljava/lang/Object;

    move-result-object v0

    if-eqz v0, :cond_d4

    const/4 v0, 0x1

    move v3, v0

    .line 1929
    :goto_7e
    if-eqz v3, :cond_87

    .line 1930
    sget-object v0, Lorg/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;

    const-string v7, "  <-pending"

    invoke-interface {v0, v7}, Lorg/slf4j/Logger;->info(Ljava/lang/String;)V

    .line 1932
    :cond_87
    if-eqz v1, :cond_146

    .line 1933
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->dead:Ljava/util/Map;

    invoke-interface {v0, v5}, Ljava/util/Map;->remove(Ljava/lang/Object;)Ljava/lang/Object;

    move-result-object v0

    if-eqz v0, :cond_d7

    const/4 v0, 0x1

    move v2, v0

    .line 1934
    :goto_93
    if-eqz v2, :cond_9c

    .line 1935
    sget-object v0, Lorg/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;

    const-string v7, "  <-dead"

    invoke-interface {v0, v7}, Lorg/slf4j/Logger;->info(Ljava/lang/String;)V

    .line 1936
    :cond_9c
    if-eqz v3, :cond_da

    .line 1939
    invoke-virtual {p1}, Lorg/bitcoinj/core/Transaction;->getOutputs()Ljava/util/List;

    move-result-object v0

    invoke-interface {v0}, Ljava/util/List;->iterator()Ljava/util/Iterator;

    move-result-object v7

    :cond_a6
    :goto_a6
    invoke-interface {v7}, Ljava/util/Iterator;->hasNext()Z

    move-result v0

    if-eqz v0, :cond_da

    invoke-interface {v7}, Ljava/util/Iterator;->next()Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Lorg/bitcoinj/core/TransactionOutput;

    .line 1940
    invoke-virtual {v0}, Lorg/bitcoinj/core/TransactionOutput;->getSpentBy()Lorg/bitcoinj/core/TransactionInput;

    move-result-object v8

    .line 1941
    if-eqz v8, :cond_a6

    .line 1942
    iget-object v9, p0, Lorg/bitcoinj/wallet/Wallet;->myUnspents:Ljava/util/HashSet;

    invoke-virtual {v9, v0}, Ljava/util/HashSet;->add(Ljava/lang/Object;)Z

    move-result v0

    invoke-static {v0}, Lcom/google/common/base/n;->checkState(Z)V

    .line 1943
    invoke-virtual {v8}, Lorg/bitcoinj/core/TransactionInput;->disconnect()Z

    goto :goto_a6

    .line 1903
    :cond_c5
    const/4 v0, 0x0

    move v1, v0

    goto/16 :goto_17

    .line 1904
    :cond_c9
    const/4 v0, 0x0

    move v2, v0

    goto/16 :goto_1d

    .line 1910
    :cond_cd
    const-string v0, ""

    goto/16 :goto_35

    .line 1912
    :cond_d1
    const-string v0, "(unit test)"

    goto :goto_57

    .line 1928
    :cond_d4
    const/4 v0, 0x0

    move v3, v0

    goto :goto_7e

    .line 1933
    :cond_d7
    const/4 v0, 0x0

    move v2, v0

    goto :goto_93

    .line 1947
    :cond_da
    if-nez v3, :cond_de

    if-eqz v2, :cond_144

    :cond_de
    const/4 v0, 0x1

    :goto_df
    invoke-direct {p0, p1, v0}, Lorg/bitcoinj/wallet/Wallet;->processTxFromBestChain(Lorg/bitcoinj/core/Transaction;Z)V

    .line 1969
    :cond_e2
    :goto_e2
    if-eqz p2, :cond_179

    .line 1972
    invoke-virtual {p1, p2, v1, p4}, Lorg/bitcoinj/core/Transaction;->setBlockAppearance(Lorg/bitcoinj/core/StoredBlock;ZI)V

    .line 1973
    if-eqz v1, :cond_179

    .line 1977
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->ignoreNextNewBlock:Ljava/util/HashSet;

    invoke-virtual {v0, v5}, Ljava/util/HashSet;->add(Ljava/lang/Object;)Z

    .line 1982
    const/4 v0, 0x1

    new-array v0, v0, [Lorg/bitcoinj/core/Transaction;

    const/4 v2, 0x0

    aput-object p1, v0, v2

    .line 10182
    const/4 v2, 0x1

    invoke-static {v2}, Lcom/google/common/collect/cy;->db(I)Ljava/util/HashSet;

    move-result-object v2

    .line 10183
    invoke-static {v2, v0}, Ljava/util/Collections;->addAll(Ljava/util/Collection;[Ljava/lang/Object;)Z

    .line 1983
    const/4 v0, 0x1

    invoke-virtual {p0, v0}, Lorg/bitcoinj/wallet/Wallet;->getTransactions(Z)Ljava/util/Set;

    move-result-object v0

    invoke-virtual {p0, v2, v0}, Lorg/bitcoinj/wallet/Wallet;->addTransactionsDependingOn(Ljava/util/Set;Ljava/util/Set;)V

    .line 1984
    invoke-interface {v2, p1}, Ljava/util/Set;->remove(Ljava/lang/Object;)Z

    .line 1985
    invoke-virtual {p0, v2}, Lorg/bitcoinj/wallet/Wallet;->sortTxnsByDependency(Ljava/util/Set;)Ljava/util/List;

    move-result-object v0

    .line 1986
    invoke-interface {v0}, Ljava/util/List;->iterator()Ljava/util/Iterator;

    move-result-object v2

    :cond_10f
    :goto_10f
    invoke-interface {v2}, Ljava/util/Iterator;->hasNext()Z

    move-result v0

    if-eqz v0, :cond_179

    invoke-interface {v2}, Ljava/util/Iterator;->next()Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Lorg/bitcoinj/core/Transaction;

    .line 1987
    invoke-virtual {v0}, Lorg/bitcoinj/core/Transaction;->getConfidence()Lorg/bitcoinj/core/TransactionConfidence;

    move-result-object v5

    invoke-virtual {v5}, Lorg/bitcoinj/core/TransactionConfidence;->getConfidenceType()Lorg/bitcoinj/core/TransactionConfidence$ConfidenceType;

    move-result-object v5

    sget-object v7, Lorg/bitcoinj/core/TransactionConfidence$ConfidenceType;->IN_CONFLICT:Lorg/bitcoinj/core/TransactionConfidence$ConfidenceType;

    invoke-virtual {v5, v7}, Lorg/bitcoinj/core/TransactionConfidence$ConfidenceType;->equals(Ljava/lang/Object;)Z

    move-result v5

    if-eqz v5, :cond_10f

    .line 1988
    sget-object v5, Lorg/bitcoinj/core/TransactionConfidence$ConfidenceType;->IN_CONFLICT:Lorg/bitcoinj/core/TransactionConfidence$ConfidenceType;

    invoke-direct {p0, v0, v5}, Lorg/bitcoinj/wallet/Wallet;->isNotSpendingTxnsInConfidenceType(Lorg/bitcoinj/core/Transaction;Lorg/bitcoinj/core/TransactionConfidence$ConfidenceType;)Z

    move-result v5

    if-eqz v5, :cond_10f

    .line 1989
    invoke-virtual {v0}, Lorg/bitcoinj/core/Transaction;->getConfidence()Lorg/bitcoinj/core/TransactionConfidence;

    move-result-object v5

    sget-object v7, Lorg/bitcoinj/core/TransactionConfidence$ConfidenceType;->PENDING:Lorg/bitcoinj/core/TransactionConfidence$ConfidenceType;

    invoke-virtual {v5, v7}, Lorg/bitcoinj/core/TransactionConfidence;->setConfidenceType(Lorg/bitcoinj/core/TransactionConfidence$ConfidenceType;)V

    .line 1990
    iget-object v5, p0, Lorg/bitcoinj/wallet/Wallet;->confidenceChanged:Ljava/util/Map;

    sget-object v7, Lorg/bitcoinj/core/TransactionConfidence$Listener$ChangeReason;->TYPE:Lorg/bitcoinj/core/TransactionConfidence$Listener$ChangeReason;

    invoke-interface {v5, v0, v7}, Ljava/util/Map;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;

    goto :goto_10f

    .line 1947
    :cond_144
    const/4 v0, 0x0

    goto :goto_df

    .line 1949
    :cond_146
    invoke-static {v2}, Lcom/google/common/base/n;->checkState(Z)V

    .line 1953
    if-eqz v3, :cond_158

    .line 1955
    sget-object v0, Lorg/bitcoinj/wallet/WalletTransaction$Pool;->PENDING:Lorg/bitcoinj/wallet/WalletTransaction$Pool;

    invoke-direct {p0, v0, p1}, Lorg/bitcoinj/wallet/Wallet;->addWalletTransaction(Lorg/bitcoinj/wallet/WalletTransaction$Pool;Lorg/bitcoinj/core/Transaction;)V

    .line 1956
    sget-object v0, Lorg/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;

    const-string v2, "  ->pending"

    invoke-interface {v0, v2}, Lorg/slf4j/Logger;->info(Ljava/lang/String;)V

    goto :goto_e2

    .line 1960
    :cond_158
    invoke-virtual {p1}, Lorg/bitcoinj/core/Transaction;->getHash()Lorg/bitcoinj/core/Sha256Hash;

    move-result-object v0

    .line 1961
    iget-object v2, p0, Lorg/bitcoinj/wallet/Wallet;->unspent:Ljava/util/Map;

    invoke-interface {v2, v0}, Ljava/util/Map;->containsKey(Ljava/lang/Object;)Z

    move-result v2

    if-nez v2, :cond_e2

    iget-object v2, p0, Lorg/bitcoinj/wallet/Wallet;->spent:Ljava/util/Map;

    invoke-interface {v2, v0}, Ljava/util/Map;->containsKey(Ljava/lang/Object;)Z

    move-result v2

    if-nez v2, :cond_e2

    iget-object v2, p0, Lorg/bitcoinj/wallet/Wallet;->dead:Ljava/util/Map;

    invoke-interface {v2, v0}, Ljava/util/Map;->containsKey(Ljava/lang/Object;)Z

    move-result v0

    if-nez v0, :cond_e2

    .line 1964
    invoke-virtual {p0, p1}, Lorg/bitcoinj/wallet/Wallet;->commitTx(Lorg/bitcoinj/core/Transaction;)V

    goto/16 :goto_e2

    .line 1997
    :cond_179
    iget v0, p0, Lorg/bitcoinj/wallet/Wallet;->onWalletChangedSuppressions:I

    add-int/lit8 v0, v0, -0x1

    iput v0, p0, Lorg/bitcoinj/wallet/Wallet;->onWalletChangedSuppressions:I

    .line 2000
    if-eqz v1, :cond_1c5

    .line 2002
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->confidenceChanged:Ljava/util/Map;

    sget-object v2, Lorg/bitcoinj/core/TransactionConfidence$Listener$ChangeReason;->TYPE:Lorg/bitcoinj/core/TransactionConfidence$Listener$ChangeReason;

    invoke-interface {v0, p1, v2}, Ljava/util/Map;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;

    .line 2014
    :goto_188
    iget-boolean v0, p0, Lorg/bitcoinj/wallet/Wallet;->insideReorg:Z

    if-nez v0, :cond_1b8

    if-eqz v1, :cond_1b8

    .line 2015
    invoke-virtual {p0}, Lorg/bitcoinj/wallet/Wallet;->getBalance()Lorg/bitcoinj/core/Coin;

    move-result-object v0

    .line 2016
    sget-object v1, Lorg/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;

    new-instance v2, Ljava/lang/StringBuilder;

    const-string v5, "Balance is now: "

    invoke-direct {v2, v5}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V

    invoke-virtual {v0}, Lorg/bitcoinj/core/Coin;->toFriendlyString()Ljava/lang/String;

    move-result-object v5

    invoke-virtual {v2, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v2

    invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v2

    invoke-interface {v1, v2}, Lorg/slf4j/Logger;->info(Ljava/lang/String;)V

    .line 2017
    if-nez v3, :cond_1b5

    .line 2018
    invoke-virtual {v6}, Lorg/bitcoinj/core/Coin;->signum()I

    move-result v1

    .line 2021
    if-lez v1, :cond_1c9

    .line 2022
    invoke-virtual {p0, p1, v4, v0}, Lorg/bitcoinj/wallet/Wallet;->queueOnCoinsReceived(Lorg/bitcoinj/core/Transaction;Lorg/bitcoinj/core/Coin;Lorg/bitcoinj/core/Coin;)V

    .line 2027
    :cond_1b5
    :goto_1b5
    invoke-direct {p0, v0}, Lorg/bitcoinj/wallet/Wallet;->checkBalanceFuturesLocked(Lorg/bitcoinj/core/Coin;)V

    .line 2030
    :cond_1b8
    invoke-direct {p0}, Lorg/bitcoinj/wallet/Wallet;->informConfidenceListenersIfNotReorganizing()V

    .line 2031
    invoke-virtual {p0}, Lorg/bitcoinj/wallet/Wallet;->isConsistentOrThrow()V

    .line 2033
    invoke-virtual {p0}, Lorg/bitcoinj/wallet/Wallet;->saveLater()V

    .line 2034
    const/4 v0, 0x1

    iput-boolean v0, p0, Lorg/bitcoinj/wallet/Wallet;->hardSaveOnNextBlock:Z

    .line 2035
    return-void

    .line 2004
    :cond_1c5
    invoke-virtual {p0}, Lorg/bitcoinj/wallet/Wallet;->maybeQueueOnWalletChanged()V

    goto :goto_188

    .line 2023
    :cond_1c9
    if-gez v1, :cond_1b5

    .line 2024
    invoke-virtual {p0, p1, v4, v0}, Lorg/bitcoinj/wallet/Wallet;->queueOnCoinsSent(Lorg/bitcoinj/core/Transaction;Lorg/bitcoinj/core/Coin;Lorg/bitcoinj/core/Coin;)V

    goto :goto_1b5
.end method

.method private rekeyOneBatch(JLorg/spongycastle/crypto/params/KeyParameter;Ljava/util/List;Z)Lorg/bitcoinj/core/Transaction;
    .registers 13
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "(J",
            "Lorg/spongycastle/crypto/params/KeyParameter;",
            "Ljava/util/List",
            "<",
            "Lorg/bitcoinj/core/Transaction;",
            ">;Z)",
            "Lorg/bitcoinj/core/Transaction;"
        }
    .end annotation

    .prologue
    const/4 v1, 0x0

    const/4 v3, 0x1

    .line 5230
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V

    .line 5240
    :try_start_7
    new-instance v0, Lorg/bitcoinj/wallet/KeyTimeCoinSelector;

    const/4 v2, 0x1

    invoke-direct {v0, p0, p1, p2, v2}, Lorg/bitcoinj/wallet/KeyTimeCoinSelector;-><init>(Lorg/bitcoinj/wallet/Wallet;JZ)V

    .line 5241
    new-instance v2, Lorg/bitcoinj/wallet/FilteringCoinSelector;

    invoke-direct {v2, v0}, Lorg/bitcoinj/wallet/FilteringCoinSelector;-><init>(Lorg/bitcoinj/wallet/CoinSelector;)V

    .line 5242
    invoke-interface {p4}, Ljava/util/List;->iterator()Ljava/util/Iterator;

    move-result-object v4

    :goto_16
    invoke-interface {v4}, Ljava/util/Iterator;->hasNext()Z

    move-result v0

    if-eqz v0, :cond_34

    invoke-interface {v4}, Ljava/util/Iterator;->next()Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Lorg/bitcoinj/core/Transaction;

    .line 5243
    invoke-virtual {v2, v0}, Lorg/bitcoinj/wallet/FilteringCoinSelector;->excludeOutputsSpentBy(Lorg/bitcoinj/core/Transaction;)V
    :try_end_25
    .catch Lorg/bitcoinj/core/VerificationException; {:try_start_7 .. :try_end_25} :catch_26
    .catchall {:try_start_7 .. :try_end_25} :catchall_2d

    goto :goto_16

    .line 5267
    :catch_26
    move-exception v0

    .line 5268
    :try_start_27
    new-instance v1, Ljava/lang/RuntimeException;

    invoke-direct {v1, v0}, Ljava/lang/RuntimeException;-><init>(Ljava/lang/Throwable;)V

    throw v1
    :try_end_2d
    .catchall {:try_start_27 .. :try_end_2d} :catchall_2d

    .line 5270
    :catchall_2d
    move-exception v0

    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    throw v0

    .line 5245
    :cond_34
    :try_start_34
    sget-object v0, Lorg/bitcoinj/core/Coin;->ZERO:Lorg/bitcoinj/core/Coin;

    invoke-virtual {p0}, Lorg/bitcoinj/wallet/Wallet;->calculateAllSpendCandidates()Ljava/util/List;

    move-result-object v4

    invoke-virtual {v2, v0, v4}, Lorg/bitcoinj/wallet/FilteringCoinSelector;->select(Lorg/bitcoinj/core/Coin;Ljava/util/List;)Lorg/bitcoinj/wallet/CoinSelection;

    move-result-object v4

    .line 5246
    iget-object v0, v4, Lorg/bitcoinj/wallet/CoinSelection;->valueGathered:Lorg/bitcoinj/core/Coin;

    sget-object v2, Lorg/bitcoinj/core/Coin;->ZERO:Lorg/bitcoinj/core/Coin;

    invoke-virtual {v0, v2}, Lorg/bitcoinj/core/Coin;->equals(Ljava/lang/Object;)Z
    :try_end_45
    .catch Lorg/bitcoinj/core/VerificationException; {:try_start_34 .. :try_end_45} :catch_26
    .catchall {:try_start_34 .. :try_end_45} :catchall_2d

    move-result v0

    if-eqz v0, :cond_4f

    .line 5270
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    move-object v0, v1

    .line 5266
    :goto_4e
    return-object v0

    .line 5247
    :cond_4f
    :try_start_4f
    invoke-direct {p0, p3}, Lorg/bitcoinj/wallet/Wallet;->maybeUpgradeToHD(Lorg/spongycastle/crypto/params/KeyParameter;)V

    .line 5248
    new-instance v2, Lorg/bitcoinj/core/Transaction;

    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->params:Lorg/bitcoinj/core/NetworkParameters;

    invoke-direct {v2, v0}, Lorg/bitcoinj/core/Transaction;-><init>(Lorg/bitcoinj/core/NetworkParameters;)V

    .line 5249
    iget-object v0, v4, Lorg/bitcoinj/wallet/CoinSelection;->gathered:Ljava/util/Collection;

    invoke-interface {v0}, Ljava/util/Collection;->iterator()Ljava/util/Iterator;

    move-result-object v5

    :goto_5f
    invoke-interface {v5}, Ljava/util/Iterator;->hasNext()Z

    move-result v0

    if-eqz v0, :cond_6f

    invoke-interface {v5}, Ljava/util/Iterator;->next()Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Lorg/bitcoinj/core/TransactionOutput;

    .line 5250
    invoke-virtual {v2, v0}, Lorg/bitcoinj/core/Transaction;->addInput(Lorg/bitcoinj/core/TransactionOutput;)Lorg/bitcoinj/core/TransactionInput;

    goto :goto_5f

    .line 5253
    :cond_6f
    iget-object v5, v4, Lorg/bitcoinj/wallet/CoinSelection;->valueGathered:Lorg/bitcoinj/core/Coin;

    if-eqz p5, :cond_91

    invoke-virtual {p0}, Lorg/bitcoinj/wallet/Wallet;->freshReceiveAddress()Lorg/bitcoinj/core/Address;

    move-result-object v0

    :goto_77
    invoke-virtual {v2, v5, v0}, Lorg/bitcoinj/core/Transaction;->addOutput(Lorg/bitcoinj/core/Coin;Lorg/bitcoinj/core/Address;)Lorg/bitcoinj/core/TransactionOutput;

    .line 5254
    sget-object v0, Lorg/bitcoinj/core/Transaction;->DEFAULT_TX_FEE:Lorg/bitcoinj/core/Coin;

    const/4 v5, 0x1

    invoke-direct {p0, v2, v4, v0, v5}, Lorg/bitcoinj/wallet/Wallet;->adjustOutputDownwardsForFee(Lorg/bitcoinj/core/Transaction;Lorg/bitcoinj/wallet/CoinSelection;Lorg/bitcoinj/core/Coin;Z)Z

    move-result v0

    if-nez v0, :cond_96

    .line 5255
    sget-object v0, Lorg/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;

    const-string v2, "Failed to adjust rekey tx for fees."

    invoke-interface {v0, v2}, Lorg/slf4j/Logger;->error(Ljava/lang/String;)V
    :try_end_8a
    .catch Lorg/bitcoinj/core/VerificationException; {:try_start_4f .. :try_end_8a} :catch_26
    .catchall {:try_start_4f .. :try_end_8a} :catchall_2d

    .line 5270
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    move-object v0, v1

    .line 5256
    goto :goto_4e

    .line 5253
    :cond_91
    :try_start_91
    invoke-virtual {p0}, Lorg/bitcoinj/wallet/Wallet;->currentReceiveAddress()Lorg/bitcoinj/core/Address;

    move-result-object v0

    goto :goto_77

    .line 5258
    :cond_96
    invoke-virtual {v2}, Lorg/bitcoinj/core/Transaction;->getConfidence()Lorg/bitcoinj/core/TransactionConfidence;

    move-result-object v0

    sget-object v1, Lorg/bitcoinj/core/TransactionConfidence$Source;->SELF:Lorg/bitcoinj/core/TransactionConfidence$Source;

    invoke-virtual {v0, v1}, Lorg/bitcoinj/core/TransactionConfidence;->setSource(Lorg/bitcoinj/core/TransactionConfidence$Source;)V

    .line 5259
    sget-object v0, Lorg/bitcoinj/core/Transaction$Purpose;->KEY_ROTATION:Lorg/bitcoinj/core/Transaction$Purpose;

    invoke-virtual {v2, v0}, Lorg/bitcoinj/core/Transaction;->setPurpose(Lorg/bitcoinj/core/Transaction$Purpose;)V

    .line 5260
    invoke-static {v2}, Lorg/bitcoinj/wallet/SendRequest;->forTx(Lorg/bitcoinj/core/Transaction;)Lorg/bitcoinj/wallet/SendRequest;

    move-result-object v0

    .line 5261
    iput-object p3, v0, Lorg/bitcoinj/wallet/SendRequest;->aesKey:Lorg/spongycastle/crypto/params/KeyParameter;

    .line 5262
    if-eqz p5, :cond_af

    .line 5263
    invoke-virtual {p0, v0}, Lorg/bitcoinj/wallet/Wallet;->signTransaction(Lorg/bitcoinj/wallet/SendRequest;)V

    .line 5265
    :cond_af
    invoke-virtual {v2}, Lorg/bitcoinj/core/Transaction;->unsafeBitcoinSerialize()[B

    move-result-object v0

    array-length v0, v0

    const v1, 0x186a0

    if-ge v0, v1, :cond_c4

    move v0, v3

    :goto_ba
    invoke-static {v0}, Lcom/google/common/base/n;->checkState(Z)V
    :try_end_bd
    .catch Lorg/bitcoinj/core/VerificationException; {:try_start_91 .. :try_end_bd} :catch_26
    .catchall {:try_start_91 .. :try_end_bd} :catchall_2d

    .line 5270
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    move-object v0, v2

    .line 5266
    goto :goto_4e

    .line 5265
    :cond_c4
    const/4 v0, 0x0

    goto :goto_ba
.end method

.method private resetTxInputs(Lorg/bitcoinj/wallet/SendRequest;Ljava/util/List;)V
    .registers 6
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "(",
            "Lorg/bitcoinj/wallet/SendRequest;",
            "Ljava/util/List",
            "<",
            "Lorg/bitcoinj/core/TransactionInput;",
            ">;)V"
        }
    .end annotation

    .prologue
    .line 4994
    iget-object v0, p1, Lorg/bitcoinj/wallet/SendRequest;->tx:Lorg/bitcoinj/core/Transaction;

    invoke-virtual {v0}, Lorg/bitcoinj/core/Transaction;->clearInputs()V

    .line 4995
    invoke-interface {p2}, Ljava/util/List;->iterator()Ljava/util/Iterator;

    move-result-object v1

    :goto_9
    invoke-interface {v1}, Ljava/util/Iterator;->hasNext()Z

    move-result v0

    if-eqz v0, :cond_1b

    invoke-interface {v1}, Ljava/util/Iterator;->next()Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Lorg/bitcoinj/core/TransactionInput;

    .line 4996
    iget-object v2, p1, Lorg/bitcoinj/wallet/SendRequest;->tx:Lorg/bitcoinj/core/Transaction;

    invoke-virtual {v2, v0}, Lorg/bitcoinj/core/Transaction;->addInput(Lorg/bitcoinj/core/TransactionInput;)Lorg/bitcoinj/core/TransactionInput;

    goto :goto_9

    .line 4997
    :cond_1b
    return-void
.end method

.method private subtractDepth(ILjava/util/Collection;)V
    .registers 7
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "(I",
            "Ljava/util/Collection",
            "<",
            "Lorg/bitcoinj/core/Transaction;",
            ">;)V"
        }
    .end annotation

    .prologue
    .line 4539
    invoke-interface {p2}, Ljava/util/Collection;->iterator()Ljava/util/Iterator;

    move-result-object v1

    :cond_4
    :goto_4
    invoke-interface {v1}, Ljava/util/Iterator;->hasNext()Z

    move-result v0

    if-eqz v0, :cond_34

    invoke-interface {v1}, Ljava/util/Iterator;->next()Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Lorg/bitcoinj/core/Transaction;

    .line 4540
    invoke-virtual {v0}, Lorg/bitcoinj/core/Transaction;->getConfidence()Lorg/bitcoinj/core/TransactionConfidence;

    move-result-object v2

    invoke-virtual {v2}, Lorg/bitcoinj/core/TransactionConfidence;->getConfidenceType()Lorg/bitcoinj/core/TransactionConfidence$ConfidenceType;

    move-result-object v2

    sget-object v3, Lorg/bitcoinj/core/TransactionConfidence$ConfidenceType;->BUILDING:Lorg/bitcoinj/core/TransactionConfidence$ConfidenceType;

    if-ne v2, v3, :cond_4

    .line 4541
    invoke-virtual {v0}, Lorg/bitcoinj/core/Transaction;->getConfidence()Lorg/bitcoinj/core/TransactionConfidence;

    move-result-object v2

    invoke-virtual {v0}, Lorg/bitcoinj/core/Transaction;->getConfidence()Lorg/bitcoinj/core/TransactionConfidence;

    move-result-object v3

    invoke-virtual {v3}, Lorg/bitcoinj/core/TransactionConfidence;->getDepthInBlocks()I

    move-result v3

    sub-int/2addr v3, p1

    invoke-virtual {v2, v3}, Lorg/bitcoinj/core/TransactionConfidence;->setDepthInBlocks(I)V

    .line 4542
    iget-object v2, p0, Lorg/bitcoinj/wallet/Wallet;->confidenceChanged:Ljava/util/Map;

    sget-object v3, Lorg/bitcoinj/core/TransactionConfidence$Listener$ChangeReason;->DEPTH:Lorg/bitcoinj/core/TransactionConfidence$Listener$ChangeReason;

    invoke-interface {v2, v0, v3}, Ljava/util/Map;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;

    goto :goto_4

    .line 4545
    :cond_34
    return-void
.end method

.method private toStringHelper(Ljava/lang/StringBuilder;Ljava/util/Map;Lorg/bitcoinj/core/AbstractBlockChain;Ljava/util/Comparator;)V
    .registers 9
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "(",
            "Ljava/lang/StringBuilder;",
            "Ljava/util/Map",
            "<",
            "Lorg/bitcoinj/core/Sha256Hash;",
            "Lorg/bitcoinj/core/Transaction;",
            ">;",
            "Lorg/bitcoinj/core/AbstractBlockChain;",
            "Ljava/util/Comparator",
            "<",
            "Lorg/bitcoinj/core/Transaction;",
            ">;)V"
        }
    .end annotation

    .prologue
    .line 3255
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->isHeldByCurrentThread()Z

    move-result v0

    invoke-static {v0}, Lcom/google/common/base/n;->checkState(Z)V

    .line 3258
    if-eqz p4, :cond_78

    .line 3259
    new-instance v0, Ljava/util/TreeSet;

    invoke-direct {v0, p4}, Ljava/util/TreeSet;-><init>(Ljava/util/Comparator;)V

    .line 3260
    invoke-interface {p2}, Ljava/util/Map;->values()Ljava/util/Collection;

    move-result-object v1

    invoke-interface {v0, v1}, Ljava/util/Collection;->addAll(Ljava/util/Collection;)Z

    .line 3265
    :goto_17
    invoke-interface {v0}, Ljava/util/Collection;->iterator()Ljava/util/Iterator;

    move-result-object v1

    :goto_1b
    invoke-interface {v1}, Ljava/util/Iterator;->hasNext()Z

    move-result v0

    if-eqz v0, :cond_7d

    invoke-interface {v1}, Ljava/util/Iterator;->next()Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Lorg/bitcoinj/core/Transaction;

    .line 3267
    :try_start_27
    invoke-virtual {v0, p0}, Lorg/bitcoinj/core/Transaction;->getValue(Lorg/bitcoinj/core/TransactionBag;)Lorg/bitcoinj/core/Coin;

    move-result-object v2

    invoke-virtual {v2}, Lorg/bitcoinj/core/Coin;->toFriendlyString()Ljava/lang/String;

    move-result-object v2

    invoke-virtual {p1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    .line 3268
    const-string v2, " total value (sends "

    invoke-virtual {p1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    .line 3269
    invoke-virtual {v0, p0}, Lorg/bitcoinj/core/Transaction;->getValueSentFromMe(Lorg/bitcoinj/core/TransactionBag;)Lorg/bitcoinj/core/Coin;

    move-result-object v2

    invoke-virtual {v2}, Lorg/bitcoinj/core/Coin;->toFriendlyString()Ljava/lang/String;

    move-result-object v2

    invoke-virtual {p1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    .line 3270
    const-string v2, " and receives "

    invoke-virtual {p1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    .line 3271
    invoke-virtual {v0, p0}, Lorg/bitcoinj/core/Transaction;->getValueSentToMe(Lorg/bitcoinj/core/TransactionBag;)Lorg/bitcoinj/core/Coin;

    move-result-object v2

    invoke-virtual {v2}, Lorg/bitcoinj/core/Coin;->toFriendlyString()Ljava/lang/String;

    move-result-object v2

    invoke-virtual {p1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    .line 3272
    const-string v2, ")\n"

    invoke-virtual {p1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
    :try_end_57
    .catch Lorg/bitcoinj/core/ScriptException; {:try_start_27 .. :try_end_57} :catch_7e

    .line 3276
    :goto_57
    invoke-virtual {v0}, Lorg/bitcoinj/core/Transaction;->hasConfidence()Z

    move-result v2

    if-eqz v2, :cond_70

    .line 3277
    const-string v2, "  confidence: "

    invoke-virtual {p1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v2

    invoke-virtual {v0}, Lorg/bitcoinj/core/Transaction;->getConfidence()Lorg/bitcoinj/core/TransactionConfidence;

    move-result-object v3

    invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;

    move-result-object v2

    const/16 v3, 0xa

    invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(C)Ljava/lang/StringBuilder;

    .line 3278
    :cond_70
    invoke-virtual {v0, p3}, Lorg/bitcoinj/core/Transaction;->toString(Lorg/bitcoinj/core/AbstractBlockChain;)Ljava/lang/String;

    move-result-object v0

    invoke-virtual {p1, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    goto :goto_1b

    .line 3262
    :cond_78
    invoke-interface {p2}, Ljava/util/Map;->values()Ljava/util/Collection;

    move-result-object v0

    goto :goto_17

    .line 3280
    :cond_7d
    return-void

    :catch_7e
    move-exception v2

    goto :goto_57
.end method

.method private updateForSpends(Lorg/bitcoinj/core/Transaction;Z)V
    .registers 13

    .prologue
    const/4 v3, 0x1

    const/4 v4, 0x0

    .line 2234
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->isHeldByCurrentThread()Z

    move-result v0

    invoke-static {v0}, Lcom/google/common/base/n;->checkState(Z)V

    .line 2235
    if-eqz p2, :cond_1d

    .line 2236
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->pending:Ljava/util/Map;

    invoke-virtual {p1}, Lorg/bitcoinj/core/Transaction;->getHash()Lorg/bitcoinj/core/Sha256Hash;

    move-result-object v1

    invoke-interface {v0, v1}, Ljava/util/Map;->containsKey(Ljava/lang/Object;)Z

    move-result v0

    if-nez v0, :cond_b4

    move v0, v3

    :goto_1a
    invoke-static {v0}, Lcom/google/common/base/n;->checkState(Z)V

    .line 2237
    :cond_1d
    invoke-virtual {p1}, Lorg/bitcoinj/core/Transaction;->getInputs()Ljava/util/List;

    move-result-object v0

    invoke-interface {v0}, Ljava/util/List;->iterator()Ljava/util/Iterator;

    move-result-object v5

    :cond_25
    :goto_25
    invoke-interface {v5}, Ljava/util/Iterator;->hasNext()Z

    move-result v0

    if-eqz v0, :cond_ea

    invoke-interface {v5}, Ljava/util/Iterator;->next()Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Lorg/bitcoinj/core/TransactionInput;

    .line 2238
    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->unspent:Ljava/util/Map;

    sget-object v2, Lorg/bitcoinj/core/TransactionInput$ConnectMode;->ABORT_ON_CONFLICT:Lorg/bitcoinj/core/TransactionInput$ConnectMode;

    invoke-virtual {v0, v1, v2}, Lorg/bitcoinj/core/TransactionInput;->connect(Ljava/util/Map;Lorg/bitcoinj/core/TransactionInput$ConnectMode;)Lorg/bitcoinj/core/TransactionInput$ConnectionResult;

    move-result-object v1

    .line 2239
    sget-object v2, Lorg/bitcoinj/core/TransactionInput$ConnectionResult;->NO_SUCH_TX:Lorg/bitcoinj/core/TransactionInput$ConnectionResult;

    if-ne v1, v2, :cond_55

    .line 2241
    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->spent:Ljava/util/Map;

    sget-object v2, Lorg/bitcoinj/core/TransactionInput$ConnectMode;->ABORT_ON_CONFLICT:Lorg/bitcoinj/core/TransactionInput$ConnectMode;

    invoke-virtual {v0, v1, v2}, Lorg/bitcoinj/core/TransactionInput;->connect(Ljava/util/Map;Lorg/bitcoinj/core/TransactionInput$ConnectMode;)Lorg/bitcoinj/core/TransactionInput$ConnectionResult;

    move-result-object v1

    .line 2242
    sget-object v2, Lorg/bitcoinj/core/TransactionInput$ConnectionResult;->NO_SUCH_TX:Lorg/bitcoinj/core/TransactionInput$ConnectionResult;

    if-ne v1, v2, :cond_55

    .line 2244
    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->pending:Ljava/util/Map;

    sget-object v2, Lorg/bitcoinj/core/TransactionInput$ConnectMode;->ABORT_ON_CONFLICT:Lorg/bitcoinj/core/TransactionInput$ConnectMode;

    invoke-virtual {v0, v1, v2}, Lorg/bitcoinj/core/TransactionInput;->connect(Ljava/util/Map;Lorg/bitcoinj/core/TransactionInput$ConnectMode;)Lorg/bitcoinj/core/TransactionInput$ConnectionResult;

    move-result-object v1

    .line 2245
    sget-object v2, Lorg/bitcoinj/core/TransactionInput$ConnectionResult;->NO_SUCH_TX:Lorg/bitcoinj/core/TransactionInput$ConnectionResult;

    if-eq v1, v2, :cond_25

    :cond_55
    move-object v2, v1

    .line 2252
    invoke-virtual {v0}, Lorg/bitcoinj/core/TransactionInput;->getConnectedOutput()Lorg/bitcoinj/core/TransactionOutput;

    move-result-object v1

    invoke-static {v1}, Lcom/google/common/base/n;->checkNotNull(Ljava/lang/Object;)Ljava/lang/Object;

    move-result-object v1

    check-cast v1, Lorg/bitcoinj/core/TransactionOutput;

    .line 2253
    sget-object v6, Lorg/bitcoinj/core/TransactionInput$ConnectionResult;->ALREADY_SPENT:Lorg/bitcoinj/core/TransactionInput$ConnectionResult;

    if-ne v2, v6, :cond_b7

    .line 2254
    if-nez p2, :cond_25

    .line 2265
    sget-object v2, Lorg/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;

    const-string v6, "Saw two pending transactions double spend each other"

    invoke-interface {v2, v6}, Lorg/slf4j/Logger;->warn(Ljava/lang/String;)V

    .line 2266
    sget-object v2, Lorg/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;

    const-string v6, "  offending input is input {}"

    invoke-virtual {p1}, Lorg/bitcoinj/core/Transaction;->getInputs()Ljava/util/List;

    move-result-object v7

    invoke-interface {v7, v0}, Ljava/util/List;->indexOf(Ljava/lang/Object;)I

    move-result v0

    invoke-static {v0}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;

    move-result-object v0

    invoke-interface {v2, v6, v0}, Lorg/slf4j/Logger;->warn(Ljava/lang/String;Ljava/lang/Object;)V

    .line 2267
    sget-object v0, Lorg/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;

    const-string v2, "{}: {}"

    invoke-virtual {p1}, Lorg/bitcoinj/core/Transaction;->getHash()Lorg/bitcoinj/core/Sha256Hash;

    move-result-object v6

    sget-object v7, Lorg/bitcoinj/core/Utils;->HEX:Lcom/google/common/io/BaseEncoding;

    invoke-virtual {p1}, Lorg/bitcoinj/core/Transaction;->unsafeBitcoinSerialize()[B

    move-result-object v8

    invoke-virtual {v7, v8}, Lcom/google/common/io/BaseEncoding;->encode([B)Ljava/lang/String;

    move-result-object v7

    invoke-interface {v0, v2, v6, v7}, Lorg/slf4j/Logger;->warn(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V

    .line 2268
    invoke-virtual {v1}, Lorg/bitcoinj/core/TransactionOutput;->getSpentBy()Lorg/bitcoinj/core/TransactionInput;

    move-result-object v0

    invoke-virtual {v0}, Lorg/bitcoinj/core/TransactionInput;->getParentTransaction()Lorg/bitcoinj/core/Transaction;

    move-result-object v0

    .line 2269
    sget-object v1, Lorg/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;

    const-string v2, "{}: {}"

    invoke-virtual {v0}, Lorg/bitcoinj/core/Transaction;->getHash()Lorg/bitcoinj/core/Sha256Hash;

    move-result-object v6

    sget-object v7, Lorg/bitcoinj/core/Utils;->HEX:Lcom/google/common/io/BaseEncoding;

    invoke-virtual {v0}, Lorg/bitcoinj/core/Transaction;->unsafeBitcoinSerialize()[B

    move-result-object v0

    invoke-virtual {v7, v0}, Lcom/google/common/io/BaseEncoding;->encode([B)Ljava/lang/String;

    move-result-object v0

    invoke-interface {v1, v2, v6, v0}, Lorg/slf4j/Logger;->warn(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V

    goto/16 :goto_25

    :cond_b4
    move v0, v4

    .line 2236
    goto/16 :goto_1a

    .line 2271
    :cond_b7
    sget-object v6, Lorg/bitcoinj/core/TransactionInput$ConnectionResult;->SUCCESS:Lorg/bitcoinj/core/TransactionInput$ConnectionResult;

    if-ne v2, v6, :cond_25

    .line 2275
    invoke-virtual {v0}, Lorg/bitcoinj/core/TransactionInput;->getConnectedTransaction()Lorg/bitcoinj/core/Transaction;

    move-result-object v2

    invoke-static {v2}, Lcom/google/common/base/n;->checkNotNull(Ljava/lang/Object;)Ljava/lang/Object;

    move-result-object v2

    check-cast v2, Lorg/bitcoinj/core/Transaction;

    .line 2276
    sget-object v6, Lorg/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;

    const-string v7, "  marked {} as spent by {}"

    invoke-virtual {v0}, Lorg/bitcoinj/core/TransactionInput;->getOutpoint()Lorg/bitcoinj/core/TransactionOutPoint;

    move-result-object v0

    invoke-virtual {p1}, Lorg/bitcoinj/core/Transaction;->getHashAsString()Ljava/lang/String;

    move-result-object v8

    invoke-interface {v6, v7, v0, v8}, Lorg/slf4j/Logger;->info(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V

    .line 2277
    const-string v0, "prevtx"

    invoke-direct {p0, v2, v0}, Lorg/bitcoinj/wallet/Wallet;->maybeMovePool(Lorg/bitcoinj/core/Transaction;Ljava/lang/String;)V

    .line 2279
    invoke-virtual {v1, p0}, Lorg/bitcoinj/core/TransactionOutput;->isMineOrWatched(Lorg/bitcoinj/core/TransactionBag;)Z

    move-result v0

    if-eqz v0, :cond_25

    .line 2280
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->myUnspents:Ljava/util/HashSet;

    invoke-virtual {v0, v1}, Ljava/util/HashSet;->remove(Ljava/lang/Object;)Z

    move-result v0

    invoke-static {v0}, Lcom/google/common/base/n;->checkState(Z)V

    goto/16 :goto_25

    .line 2290
    :cond_ea
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->pending:Ljava/util/Map;

    invoke-interface {v0}, Ljava/util/Map;->values()Ljava/util/Collection;

    move-result-object v0

    invoke-interface {v0}, Ljava/util/Collection;->iterator()Ljava/util/Iterator;

    move-result-object v5

    :cond_f4
    invoke-interface {v5}, Ljava/util/Iterator;->hasNext()Z

    move-result v0

    if-eqz v0, :cond_159

    invoke-interface {v5}, Ljava/util/Iterator;->next()Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Lorg/bitcoinj/core/Transaction;

    .line 2291
    invoke-virtual {v0}, Lorg/bitcoinj/core/Transaction;->getInputs()Ljava/util/List;

    move-result-object v1

    invoke-interface {v1}, Ljava/util/List;->iterator()Ljava/util/Iterator;

    move-result-object v6

    :cond_108
    :goto_108
    invoke-interface {v6}, Ljava/util/Iterator;->hasNext()Z

    move-result v1

    if-eqz v1, :cond_f4

    invoke-interface {v6}, Ljava/util/Iterator;->next()Ljava/lang/Object;

    move-result-object v1

    check-cast v1, Lorg/bitcoinj/core/TransactionInput;

    .line 2292
    sget-object v2, Lorg/bitcoinj/core/TransactionInput$ConnectMode;->ABORT_ON_CONFLICT:Lorg/bitcoinj/core/TransactionInput$ConnectMode;

    invoke-virtual {v1, p1, v2}, Lorg/bitcoinj/core/TransactionInput;->connect(Lorg/bitcoinj/core/Transaction;Lorg/bitcoinj/core/TransactionInput$ConnectMode;)Lorg/bitcoinj/core/TransactionInput$ConnectionResult;

    move-result-object v7

    .line 2293
    if-eqz p2, :cond_124

    .line 2296
    sget-object v2, Lorg/bitcoinj/core/TransactionInput$ConnectionResult;->ALREADY_SPENT:Lorg/bitcoinj/core/TransactionInput$ConnectionResult;

    if-eq v7, v2, :cond_157

    move v2, v3

    :goto_121
    invoke-static {v2}, Lcom/google/common/base/n;->checkState(Z)V

    .line 2298
    :cond_124
    sget-object v2, Lorg/bitcoinj/core/TransactionInput$ConnectionResult;->SUCCESS:Lorg/bitcoinj/core/TransactionInput$ConnectionResult;

    if-ne v7, v2, :cond_108

    .line 2299
    sget-object v2, Lorg/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;

    const-string v7, "Connected pending tx input {}:{}"

    .line 2300
    invoke-virtual {v0}, Lorg/bitcoinj/core/Transaction;->getHashAsString()Ljava/lang/String;

    move-result-object v8

    invoke-virtual {v0}, Lorg/bitcoinj/core/Transaction;->getInputs()Ljava/util/List;

    move-result-object v9

    invoke-interface {v9, v1}, Ljava/util/List;->indexOf(Ljava/lang/Object;)I

    move-result v9

    invoke-static {v9}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;

    move-result-object v9

    .line 2299
    invoke-interface {v2, v7, v8, v9}, Lorg/slf4j/Logger;->info(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V

    .line 2303
    iget-object v2, p0, Lorg/bitcoinj/wallet/Wallet;->myUnspents:Ljava/util/HashSet;

    invoke-virtual {v1}, Lorg/bitcoinj/core/TransactionInput;->getConnectedOutput()Lorg/bitcoinj/core/TransactionOutput;

    move-result-object v7

    invoke-virtual {v2, v7}, Ljava/util/HashSet;->remove(Ljava/lang/Object;)Z

    move-result v2

    if-eqz v2, :cond_108

    .line 2304
    sget-object v2, Lorg/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;

    const-string v7, "Removed from UNSPENTS: {}"

    invoke-virtual {v1}, Lorg/bitcoinj/core/TransactionInput;->getConnectedOutput()Lorg/bitcoinj/core/TransactionOutput;

    move-result-object v1

    invoke-interface {v2, v7, v1}, Lorg/slf4j/Logger;->info(Ljava/lang/String;Ljava/lang/Object;)V

    goto :goto_108

    :cond_157
    move v2, v4

    .line 2296
    goto :goto_121

    .line 2308
    :cond_159
    if-nez p2, :cond_160

    .line 2309
    const-string v0, "pendingtx"

    invoke-direct {p0, p1, v0}, Lorg/bitcoinj/wallet/Wallet;->maybeMovePool(Lorg/bitcoinj/core/Transaction;Ljava/lang/String;)V

    .line 2314
    :cond_160
    return-void
.end method


# virtual methods
.method public addAndActivateHDChain(Lorg/bitcoinj/wallet/DeterministicKeyChain;)V
    .registers 4

    .prologue
    .line 750
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V

    .line 752
    :try_start_5
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroup:Lorg/bitcoinj/wallet/KeyChainGroup;

    invoke-virtual {v0, p1}, Lorg/bitcoinj/wallet/KeyChainGroup;->addAndActivateHDChain(Lorg/bitcoinj/wallet/DeterministicKeyChain;)V
    :try_end_a
    .catchall {:try_start_5 .. :try_end_a} :catchall_10

    .line 754
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    .line 755
    return-void

    .line 754
    :catchall_10
    move-exception v0

    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    throw v0
.end method

.method public addChangeEventListener(Ljava/util/concurrent/Executor;Lorg/bitcoinj/wallet/listeners/WalletChangeEventListener;)V
    .registers 5

    .prologue
    .line 2547
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->changeListeners:Ljava/util/concurrent/CopyOnWriteArrayList;

    new-instance v1, Lorg/bitcoinj/utils/ListenerRegistration;

    invoke-direct {v1, p2, p1}, Lorg/bitcoinj/utils/ListenerRegistration;-><init>(Ljava/lang/Object;Ljava/util/concurrent/Executor;)V

    invoke-virtual {v0, v1}, Ljava/util/concurrent/CopyOnWriteArrayList;->add(Ljava/lang/Object;)Z

    .line 2548
    return-void
.end method

.method public addChangeEventListener(Lorg/bitcoinj/wallet/listeners/WalletChangeEventListener;)V
    .registers 3

    .prologue
    .line 2538
    sget-object v0, Lorg/bitcoinj/utils/Threading;->USER_THREAD:Ljava/util/concurrent/Executor;

    invoke-virtual {p0, v0, p1}, Lorg/bitcoinj/wallet/Wallet;->addChangeEventListener(Ljava/util/concurrent/Executor;Lorg/bitcoinj/wallet/listeners/WalletChangeEventListener;)V

    .line 2539
    return-void
.end method

.method public addCoinsReceivedEventListener(Ljava/util/concurrent/Executor;Lorg/bitcoinj/wallet/listeners/WalletCoinsReceivedEventListener;)V
    .registers 5

    .prologue
    .line 2564
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->coinsReceivedListeners:Ljava/util/concurrent/CopyOnWriteArrayList;

    new-instance v1, Lorg/bitcoinj/utils/ListenerRegistration;

    invoke-direct {v1, p2, p1}, Lorg/bitcoinj/utils/ListenerRegistration;-><init>(Ljava/lang/Object;Ljava/util/concurrent/Executor;)V

    invoke-virtual {v0, v1}, Ljava/util/concurrent/CopyOnWriteArrayList;->add(Ljava/lang/Object;)Z

    .line 2565
    return-void
.end method

.method public addCoinsReceivedEventListener(Lorg/bitcoinj/wallet/listeners/WalletCoinsReceivedEventListener;)V
    .registers 3

    .prologue
    .line 2555
    sget-object v0, Lorg/bitcoinj/utils/Threading;->USER_THREAD:Ljava/util/concurrent/Executor;

    invoke-virtual {p0, v0, p1}, Lorg/bitcoinj/wallet/Wallet;->addCoinsReceivedEventListener(Ljava/util/concurrent/Executor;Lorg/bitcoinj/wallet/listeners/WalletCoinsReceivedEventListener;)V

    .line 2556
    return-void
.end method

.method public addCoinsSentEventListener(Ljava/util/concurrent/Executor;Lorg/bitcoinj/wallet/listeners/WalletCoinsSentEventListener;)V
    .registers 5

    .prologue
    .line 2581
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->coinsSentListeners:Ljava/util/concurrent/CopyOnWriteArrayList;

    new-instance v1, Lorg/bitcoinj/utils/ListenerRegistration;

    invoke-direct {v1, p2, p1}, Lorg/bitcoinj/utils/ListenerRegistration;-><init>(Ljava/lang/Object;Ljava/util/concurrent/Executor;)V

    invoke-virtual {v0, v1}, Ljava/util/concurrent/CopyOnWriteArrayList;->add(Ljava/lang/Object;)Z

    .line 2582
    return-void
.end method

.method public addCoinsSentEventListener(Lorg/bitcoinj/wallet/listeners/WalletCoinsSentEventListener;)V
    .registers 3

    .prologue
    .line 2572
    sget-object v0, Lorg/bitcoinj/utils/Threading;->USER_THREAD:Ljava/util/concurrent/Executor;

    invoke-virtual {p0, v0, p1}, Lorg/bitcoinj/wallet/Wallet;->addCoinsSentEventListener(Ljava/util/concurrent/Executor;Lorg/bitcoinj/wallet/listeners/WalletCoinsSentEventListener;)V

    .line 2573
    return-void
.end method

.method public addEventListener(Lorg/bitcoinj/wallet/listeners/WalletEventListener;)V
    .registers 3

    .prologue
    .line 2512
    sget-object v0, Lorg/bitcoinj/utils/Threading;->USER_THREAD:Ljava/util/concurrent/Executor;

    invoke-virtual {p0, v0, p1}, Lorg/bitcoinj/wallet/Wallet;->addChangeEventListener(Ljava/util/concurrent/Executor;Lorg/bitcoinj/wallet/listeners/WalletChangeEventListener;)V

    .line 2513
    sget-object v0, Lorg/bitcoinj/utils/Threading;->USER_THREAD:Ljava/util/concurrent/Executor;

    invoke-virtual {p0, v0, p1}, Lorg/bitcoinj/wallet/Wallet;->addCoinsReceivedEventListener(Ljava/util/concurrent/Executor;Lorg/bitcoinj/wallet/listeners/WalletCoinsReceivedEventListener;)V

    .line 2514
    sget-object v0, Lorg/bitcoinj/utils/Threading;->USER_THREAD:Ljava/util/concurrent/Executor;

    invoke-virtual {p0, v0, p1}, Lorg/bitcoinj/wallet/Wallet;->addCoinsSentEventListener(Ljava/util/concurrent/Executor;Lorg/bitcoinj/wallet/listeners/WalletCoinsSentEventListener;)V

    .line 2515
    sget-object v0, Lorg/bitcoinj/utils/Threading;->USER_THREAD:Ljava/util/concurrent/Executor;

    invoke-virtual {p0, v0, p1}, Lorg/bitcoinj/wallet/Wallet;->addKeyChainEventListener(Ljava/util/concurrent/Executor;Lorg/bitcoinj/wallet/listeners/KeyChainEventListener;)V

    .line 2516
    sget-object v0, Lorg/bitcoinj/utils/Threading;->USER_THREAD:Ljava/util/concurrent/Executor;

    invoke-virtual {p0, v0, p1}, Lorg/bitcoinj/wallet/Wallet;->addReorganizeEventListener(Ljava/util/concurrent/Executor;Lorg/bitcoinj/wallet/listeners/WalletReorganizeEventListener;)V

    .line 2517
    sget-object v0, Lorg/bitcoinj/utils/Threading;->USER_THREAD:Ljava/util/concurrent/Executor;

    invoke-virtual {p0, v0, p1}, Lorg/bitcoinj/wallet/Wallet;->addScriptChangeEventListener(Ljava/util/concurrent/Executor;Lorg/bitcoinj/wallet/listeners/ScriptsChangeEventListener;)V

    .line 2518
    sget-object v0, Lorg/bitcoinj/utils/Threading;->USER_THREAD:Ljava/util/concurrent/Executor;

    invoke-virtual {p0, v0, p1}, Lorg/bitcoinj/wallet/Wallet;->addTransactionConfidenceEventListener(Ljava/util/concurrent/Executor;Lorg/bitcoinj/core/listeners/TransactionConfidenceEventListener;)V

    .line 2519
    return-void
.end method

.method public addEventListener(Lorg/bitcoinj/wallet/listeners/WalletEventListener;Ljava/util/concurrent/Executor;)V
    .registers 3
    .annotation runtime Ljava/lang/Deprecated;
    .end annotation

    .prologue
    .line 2524
    invoke-virtual {p0, p2, p1}, Lorg/bitcoinj/wallet/Wallet;->addCoinsReceivedEventListener(Ljava/util/concurrent/Executor;Lorg/bitcoinj/wallet/listeners/WalletCoinsReceivedEventListener;)V

    .line 2525
    invoke-virtual {p0, p2, p1}, Lorg/bitcoinj/wallet/Wallet;->addCoinsSentEventListener(Ljava/util/concurrent/Executor;Lorg/bitcoinj/wallet/listeners/WalletCoinsSentEventListener;)V

    .line 2526
    invoke-virtual {p0, p2, p1}, Lorg/bitcoinj/wallet/Wallet;->addChangeEventListener(Ljava/util/concurrent/Executor;Lorg/bitcoinj/wallet/listeners/WalletChangeEventListener;)V

    .line 2527
    invoke-virtual {p0, p2, p1}, Lorg/bitcoinj/wallet/Wallet;->addKeyChainEventListener(Ljava/util/concurrent/Executor;Lorg/bitcoinj/wallet/listeners/KeyChainEventListener;)V

    .line 2528
    invoke-virtual {p0, p2, p1}, Lorg/bitcoinj/wallet/Wallet;->addReorganizeEventListener(Ljava/util/concurrent/Executor;Lorg/bitcoinj/wallet/listeners/WalletReorganizeEventListener;)V

    .line 2529
    invoke-virtual {p0, p2, p1}, Lorg/bitcoinj/wallet/Wallet;->addScriptChangeEventListener(Ljava/util/concurrent/Executor;Lorg/bitcoinj/wallet/listeners/ScriptsChangeEventListener;)V

    .line 2530
    invoke-virtual {p0, p2, p1}, Lorg/bitcoinj/wallet/Wallet;->addTransactionConfidenceEventListener(Ljava/util/concurrent/Executor;Lorg/bitcoinj/core/listeners/TransactionConfidenceEventListener;)V

    .line 2531
    return-void
.end method

.method public addExtension(Lorg/bitcoinj/wallet/WalletExtension;)V
    .registers 6

    .prologue
    .line 4721
    invoke-static {p1}, Lcom/google/common/base/n;->checkNotNull(Ljava/lang/Object;)Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Lorg/bitcoinj/wallet/WalletExtension;

    invoke-interface {v0}, Lorg/bitcoinj/wallet/WalletExtension;->getWalletExtensionID()Ljava/lang/String;

    move-result-object v0

    .line 4722
    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V

    .line 4724
    :try_start_f
    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->extensions:Ljava/util/HashMap;

    invoke-virtual {v1, v0}, Ljava/util/HashMap;->containsKey(Ljava/lang/Object;)Z

    move-result v1

    if-eqz v1, :cond_33

    .line 4725
    new-instance v1, Ljava/lang/IllegalStateException;

    new-instance v2, Ljava/lang/StringBuilder;

    const-string v3, "Cannot add two extensions with the same ID: "

    invoke-direct {v2, v3}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V

    invoke-virtual {v2, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v0

    invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v0

    invoke-direct {v1, v0}, Ljava/lang/IllegalStateException;-><init>(Ljava/lang/String;)V

    throw v1
    :try_end_2c
    .catchall {:try_start_f .. :try_end_2c} :catchall_2c

    .line 4729
    :catchall_2c
    move-exception v0

    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    throw v0

    .line 4726
    :cond_33
    :try_start_33
    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->extensions:Ljava/util/HashMap;

    invoke-virtual {v1, v0, p1}, Ljava/util/HashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;

    .line 4727
    invoke-virtual {p0}, Lorg/bitcoinj/wallet/Wallet;->saveNow()V
    :try_end_3b
    .catchall {:try_start_33 .. :try_end_3b} :catchall_2c

    .line 4729
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    .line 4730
    return-void
.end method

.method public addKey(Lorg/bitcoinj/core/ECKey;)Z
    .registers 3
    .annotation runtime Ljava/lang/Deprecated;
    .end annotation

    .prologue
    .line 669
    invoke-virtual {p0, p1}, Lorg/bitcoinj/wallet/Wallet;->importKey(Lorg/bitcoinj/core/ECKey;)Z

    move-result v0

    return v0
.end method

.method public addKeyChainEventListener(Ljava/util/concurrent/Executor;Lorg/bitcoinj/wallet/listeners/KeyChainEventListener;)V
    .registers 4

    .prologue
    .line 2597
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroup:Lorg/bitcoinj/wallet/KeyChainGroup;

    invoke-virtual {v0, p2, p1}, Lorg/bitcoinj/wallet/KeyChainGroup;->addEventListener(Lorg/bitcoinj/wallet/listeners/KeyChainEventListener;Ljava/util/concurrent/Executor;)V

    .line 2598
    return-void
.end method

.method public addKeyChainEventListener(Lorg/bitcoinj/wallet/listeners/KeyChainEventListener;)V
    .registers 4

    .prologue
    .line 2589
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroup:Lorg/bitcoinj/wallet/KeyChainGroup;

    sget-object v1, Lorg/bitcoinj/utils/Threading;->USER_THREAD:Ljava/util/concurrent/Executor;

    invoke-virtual {v0, p1, v1}, Lorg/bitcoinj/wallet/KeyChainGroup;->addEventListener(Lorg/bitcoinj/wallet/listeners/KeyChainEventListener;Ljava/util/concurrent/Executor;)V

    .line 2590
    return-void
.end method

.method public addKeys(Ljava/util/List;)I
    .registers 3
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "(",
            "Ljava/util/List",
            "<",
            "Lorg/bitcoinj/core/ECKey;",
            ">;)I"
        }
    .end annotation

    .annotation runtime Ljava/lang/Deprecated;
    .end annotation

    .prologue
    .line 685
    invoke-virtual {p0, p1}, Lorg/bitcoinj/wallet/Wallet;->importKeys(Ljava/util/List;)I

    move-result v0

    return v0
.end method

.method public addOrGetExistingExtension(Lorg/bitcoinj/wallet/WalletExtension;)Lorg/bitcoinj/wallet/WalletExtension;
    .registers 4

    .prologue
    .line 4737
    invoke-static {p1}, Lcom/google/common/base/n;->checkNotNull(Ljava/lang/Object;)Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Lorg/bitcoinj/wallet/WalletExtension;

    invoke-interface {v0}, Lorg/bitcoinj/wallet/WalletExtension;->getWalletExtensionID()Ljava/lang/String;

    move-result-object v1

    .line 4738
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V

    .line 4740
    :try_start_f
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->extensions:Ljava/util/HashMap;

    invoke-virtual {v0, v1}, Ljava/util/HashMap;->get(Ljava/lang/Object;)Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Lorg/bitcoinj/wallet/WalletExtension;
    :try_end_17
    .catchall {:try_start_f .. :try_end_17} :catchall_2e

    .line 4741
    if-eqz v0, :cond_1f

    .line 4747
    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    .line 4745
    :goto_1e
    return-object v0

    .line 4743
    :cond_1f
    :try_start_1f
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->extensions:Ljava/util/HashMap;

    invoke-virtual {v0, v1, p1}, Ljava/util/HashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;

    .line 4744
    invoke-virtual {p0}, Lorg/bitcoinj/wallet/Wallet;->saveNow()V
    :try_end_27
    .catchall {:try_start_1f .. :try_end_27} :catchall_2e

    .line 4747
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    move-object v0, p1

    .line 4745
    goto :goto_1e

    .line 4747
    :catchall_2e
    move-exception v0

    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    throw v0
.end method

.method public addOrUpdateExtension(Lorg/bitcoinj/wallet/WalletExtension;)V
    .registers 4

    .prologue
    .line 4757
    invoke-static {p1}, Lcom/google/common/base/n;->checkNotNull(Ljava/lang/Object;)Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Lorg/bitcoinj/wallet/WalletExtension;

    invoke-interface {v0}, Lorg/bitcoinj/wallet/WalletExtension;->getWalletExtensionID()Ljava/lang/String;

    move-result-object v0

    .line 4758
    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V

    .line 4760
    :try_start_f
    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->extensions:Ljava/util/HashMap;

    invoke-virtual {v1, v0, p1}, Ljava/util/HashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;

    .line 4761
    invoke-virtual {p0}, Lorg/bitcoinj/wallet/Wallet;->saveNow()V
    :try_end_17
    .catchall {:try_start_f .. :try_end_17} :catchall_1d

    .line 4763
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    .line 4764
    return-void

    .line 4763
    :catchall_1d
    move-exception v0

    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    throw v0
.end method

.method public addReorganizeEventListener(Ljava/util/concurrent/Executor;Lorg/bitcoinj/wallet/listeners/WalletReorganizeEventListener;)V
    .registers 5

    .prologue
    .line 2614
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->reorganizeListeners:Ljava/util/concurrent/CopyOnWriteArrayList;

    new-instance v1, Lorg/bitcoinj/utils/ListenerRegistration;

    invoke-direct {v1, p2, p1}, Lorg/bitcoinj/utils/ListenerRegistration;-><init>(Ljava/lang/Object;Ljava/util/concurrent/Executor;)V

    invoke-virtual {v0, v1}, Ljava/util/concurrent/CopyOnWriteArrayList;->add(Ljava/lang/Object;)Z

    .line 2615
    return-void
.end method

.method public addReorganizeEventListener(Lorg/bitcoinj/wallet/listeners/WalletReorganizeEventListener;)V
    .registers 3

    .prologue
    .line 2605
    sget-object v0, Lorg/bitcoinj/utils/Threading;->USER_THREAD:Ljava/util/concurrent/Executor;

    invoke-virtual {p0, v0, p1}, Lorg/bitcoinj/wallet/Wallet;->addReorganizeEventListener(Ljava/util/concurrent/Executor;Lorg/bitcoinj/wallet/listeners/WalletReorganizeEventListener;)V

    .line 2606
    return-void
.end method

.method public addScriptChangeEventListener(Ljava/util/concurrent/Executor;Lorg/bitcoinj/wallet/listeners/ScriptsChangeEventListener;)V
    .registers 5

    .prologue
    .line 2631
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->scriptChangeListeners:Ljava/util/concurrent/CopyOnWriteArrayList;

    new-instance v1, Lorg/bitcoinj/utils/ListenerRegistration;

    invoke-direct {v1, p2, p1}, Lorg/bitcoinj/utils/ListenerRegistration;-><init>(Ljava/lang/Object;Ljava/util/concurrent/Executor;)V

    invoke-virtual {v0, v1}, Ljava/util/concurrent/CopyOnWriteArrayList;->add(Ljava/lang/Object;)Z

    .line 2632
    return-void
.end method

.method public addScriptsChangeEventListener(Lorg/bitcoinj/wallet/listeners/ScriptsChangeEventListener;)V
    .registers 3

    .prologue
    .line 2622
    sget-object v0, Lorg/bitcoinj/utils/Threading;->USER_THREAD:Ljava/util/concurrent/Executor;

    invoke-virtual {p0, v0, p1}, Lorg/bitcoinj/wallet/Wallet;->addScriptChangeEventListener(Ljava/util/concurrent/Executor;Lorg/bitcoinj/wallet/listeners/ScriptsChangeEventListener;)V

    .line 2623
    return-void
.end method

.method public addTransactionConfidenceEventListener(Ljava/util/concurrent/Executor;Lorg/bitcoinj/core/listeners/TransactionConfidenceEventListener;)V
    .registers 5

    .prologue
    .line 2648
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->transactionConfidenceListeners:Ljava/util/concurrent/CopyOnWriteArrayList;

    new-instance v1, Lorg/bitcoinj/utils/ListenerRegistration;

    invoke-direct {v1, p2, p1}, Lorg/bitcoinj/utils/ListenerRegistration;-><init>(Ljava/lang/Object;Ljava/util/concurrent/Executor;)V

    invoke-virtual {v0, v1}, Ljava/util/concurrent/CopyOnWriteArrayList;->add(Ljava/lang/Object;)Z

    .line 2649
    return-void
.end method

.method public addTransactionConfidenceEventListener(Lorg/bitcoinj/core/listeners/TransactionConfidenceEventListener;)V
    .registers 3

    .prologue
    .line 2639
    sget-object v0, Lorg/bitcoinj/utils/Threading;->USER_THREAD:Ljava/util/concurrent/Executor;

    invoke-virtual {p0, v0, p1}, Lorg/bitcoinj/wallet/Wallet;->addTransactionConfidenceEventListener(Ljava/util/concurrent/Executor;Lorg/bitcoinj/core/listeners/TransactionConfidenceEventListener;)V

    .line 2640
    return-void
.end method

.method public final addTransactionSigner(Lorg/bitcoinj/signers/TransactionSigner;)V
    .registers 5

    .prologue
    .line 380
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V

    .line 382
    :try_start_5
    invoke-interface {p1}, Lorg/bitcoinj/signers/TransactionSigner;->isReady()Z

    move-result v0

    if-eqz v0, :cond_16

    .line 383
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->signers:Ljava/util/List;

    invoke-interface {v0, p1}, Ljava/util/List;->add(Ljava/lang/Object;)Z
    :try_end_10
    .catchall {:try_start_5 .. :try_end_10} :catchall_2f

    .line 387
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    .line 388
    return-void

    .line 385
    :cond_16
    :try_start_16
    new-instance v0, Ljava/lang/IllegalStateException;

    new-instance v1, Ljava/lang/StringBuilder;

    const-string v2, "Signer instance is not ready to be added into Wallet: "

    invoke-direct {v1, v2}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V

    invoke-virtual {p1}, Ljava/lang/Object;->getClass()Ljava/lang/Class;

    move-result-object v2

    invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;

    move-result-object v1

    invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v1

    invoke-direct {v0, v1}, Ljava/lang/IllegalStateException;-><init>(Ljava/lang/String;)V

    throw v0
    :try_end_2f
    .catchall {:try_start_16 .. :try_end_2f} :catchall_2f

    .line 387
    :catchall_2f
    move-exception v0

    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    throw v0
.end method

.method addTransactionsDependingOn(Ljava/util/Set;Ljava/util/Set;)V
    .registers 10
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "(",
            "Ljava/util/Set",
            "<",
            "Lorg/bitcoinj/core/Transaction;",
            ">;",
            "Ljava/util/Set",
            "<",
            "Lorg/bitcoinj/core/Transaction;",
            ">;)V"
        }
    .end annotation

    .prologue
    .line 1841
    new-instance v3, Ljava/util/LinkedHashMap;

    invoke-direct {v3}, Ljava/util/LinkedHashMap;-><init>()V

    .line 1842
    invoke-interface {p1}, Ljava/util/Set;->iterator()Ljava/util/Iterator;

    move-result-object v1

    :goto_9
    invoke-interface {v1}, Ljava/util/Iterator;->hasNext()Z

    move-result v0

    if-eqz v0, :cond_1d

    invoke-interface {v1}, Ljava/util/Iterator;->next()Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Lorg/bitcoinj/core/Transaction;

    .line 1843
    invoke-virtual {v0}, Lorg/bitcoinj/core/Transaction;->getHash()Lorg/bitcoinj/core/Sha256Hash;

    move-result-object v2

    invoke-interface {v3, v2, v0}, Ljava/util/Map;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;

    goto :goto_9

    .line 1845
    :cond_1d
    invoke-interface {v3}, Ljava/util/Map;->isEmpty()Z

    move-result v0

    if-nez v0, :cond_87

    .line 1846
    invoke-interface {v3}, Ljava/util/Map;->keySet()Ljava/util/Set;

    move-result-object v0

    invoke-interface {v0}, Ljava/util/Set;->iterator()Ljava/util/Iterator;

    move-result-object v0

    invoke-interface {v0}, Ljava/util/Iterator;->next()Ljava/lang/Object;

    move-result-object v0

    invoke-interface {v3, v0}, Ljava/util/Map;->remove(Ljava/lang/Object;)Ljava/lang/Object;

    move-result-object v0

    move-object v2, v0

    check-cast v2, Lorg/bitcoinj/core/Transaction;

    .line 1847
    invoke-interface {p2}, Ljava/util/Set;->iterator()Ljava/util/Iterator;

    move-result-object v4

    :cond_3a
    invoke-interface {v4}, Ljava/util/Iterator;->hasNext()Z

    move-result v0

    if-eqz v0, :cond_1d

    invoke-interface {v4}, Ljava/util/Iterator;->next()Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Lorg/bitcoinj/core/Transaction;

    .line 1848
    invoke-virtual {v0, v2}, Lorg/bitcoinj/core/Transaction;->equals(Ljava/lang/Object;)Z

    move-result v1

    if-nez v1, :cond_3a

    .line 1849
    invoke-virtual {v0}, Lorg/bitcoinj/core/Transaction;->getInputs()Ljava/util/List;

    move-result-object v1

    invoke-interface {v1}, Ljava/util/List;->iterator()Ljava/util/Iterator;

    move-result-object v5

    :cond_54
    :goto_54
    invoke-interface {v5}, Ljava/util/Iterator;->hasNext()Z

    move-result v1

    if-eqz v1, :cond_3a

    invoke-interface {v5}, Ljava/util/Iterator;->next()Ljava/lang/Object;

    move-result-object v1

    check-cast v1, Lorg/bitcoinj/core/TransactionInput;

    .line 1850
    invoke-virtual {v1}, Lorg/bitcoinj/core/TransactionInput;->getOutpoint()Lorg/bitcoinj/core/TransactionOutPoint;

    move-result-object v1

    invoke-virtual {v1}, Lorg/bitcoinj/core/TransactionOutPoint;->getHash()Lorg/bitcoinj/core/Sha256Hash;

    move-result-object v1

    invoke-virtual {v2}, Lorg/bitcoinj/core/Transaction;->getHash()Lorg/bitcoinj/core/Sha256Hash;

    move-result-object v6

    invoke-virtual {v1, v6}, Lorg/bitcoinj/core/Sha256Hash;->equals(Ljava/lang/Object;)Z

    move-result v1

    if-eqz v1, :cond_54

    .line 1851
    invoke-virtual {v0}, Lorg/bitcoinj/core/Transaction;->getHash()Lorg/bitcoinj/core/Sha256Hash;

    move-result-object v1

    invoke-interface {v3, v1}, Ljava/util/Map;->get(Ljava/lang/Object;)Ljava/lang/Object;

    move-result-object v1

    if-nez v1, :cond_54

    .line 1852
    invoke-virtual {v0}, Lorg/bitcoinj/core/Transaction;->getHash()Lorg/bitcoinj/core/Sha256Hash;

    move-result-object v1

    invoke-interface {v3, v1, v0}, Ljava/util/Map;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;

    .line 1853
    invoke-interface {p1, v0}, Ljava/util/Set;->add(Ljava/lang/Object;)Z

    goto :goto_54

    .line 1859
    :cond_87
    return-void
.end method

.method public addWalletTransaction(Lorg/bitcoinj/wallet/WalletTransaction;)V
    .registers 4

    .prologue
    .line 2857
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V

    .line 2859
    :try_start_5
    invoke-virtual {p1}, Lorg/bitcoinj/wallet/WalletTransaction;->getPool()Lorg/bitcoinj/wallet/WalletTransaction$Pool;

    move-result-object v0

    invoke-virtual {p1}, Lorg/bitcoinj/wallet/WalletTransaction;->getTransaction()Lorg/bitcoinj/core/Transaction;

    move-result-object v1

    invoke-direct {p0, v0, v1}, Lorg/bitcoinj/wallet/Wallet;->addWalletTransaction(Lorg/bitcoinj/wallet/WalletTransaction$Pool;Lorg/bitcoinj/core/Transaction;)V
    :try_end_10
    .catchall {:try_start_5 .. :try_end_10} :catchall_16

    .line 2861
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    .line 2862
    return-void

    .line 2861
    :catchall_16
    move-exception v0

    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    throw v0
.end method

.method public addWatchedAddress(Lorg/bitcoinj/core/Address;)Z
    .registers 8

    .prologue
    const/4 v1, 0x0

    const/4 v0, 0x1

    .line 845
    invoke-static {}, Lorg/bitcoinj/core/Utils;->currentTimeMillis()J

    move-result-wide v2

    const-wide/16 v4, 0x3e8

    div-long/2addr v2, v4

    .line 846
    new-array v4, v0, [Lorg/bitcoinj/core/Address;

    aput-object p1, v4, v1

    invoke-static {v4}, Lcom/google/common/collect/Lists;->newArrayList([Ljava/lang/Object;)Ljava/util/ArrayList;

    move-result-object v4

    invoke-virtual {p0, v4, v2, v3}, Lorg/bitcoinj/wallet/Wallet;->addWatchedAddresses(Ljava/util/List;J)I

    move-result v2

    if-ne v2, v0, :cond_18

    :goto_17
    return v0

    :cond_18
    move v0, v1

    goto :goto_17
.end method

.method public addWatchedAddress(Lorg/bitcoinj/core/Address;J)Z
    .registers 8

    .prologue
    const/4 v1, 0x0

    const/4 v0, 0x1

    .line 856
    new-array v2, v0, [Lorg/bitcoinj/core/Address;

    aput-object p1, v2, v1

    invoke-static {v2}, Lcom/google/common/collect/Lists;->newArrayList([Ljava/lang/Object;)Ljava/util/ArrayList;

    move-result-object v2

    invoke-virtual {p0, v2, p2, p3}, Lorg/bitcoinj/wallet/Wallet;->addWatchedAddresses(Ljava/util/List;J)I

    move-result v2

    if-ne v2, v0, :cond_11

    :goto_10
    return v0

    :cond_11
    move v0, v1

    goto :goto_10
.end method

.method public addWatchedAddresses(Ljava/util/List;J)I
    .registers 8
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "(",
            "Ljava/util/List",
            "<",
            "Lorg/bitcoinj/core/Address;",
            ">;J)I"
        }
    .end annotation

    .prologue
    .line 8088
    new-instance v1, Ljava/util/ArrayList;

    invoke-direct {v1}, Ljava/util/ArrayList;-><init>()V

    .line 868
    invoke-interface {p1}, Ljava/util/List;->iterator()Ljava/util/Iterator;

    move-result-object v2

    :goto_9
    invoke-interface {v2}, Ljava/util/Iterator;->hasNext()Z

    move-result v0

    if-eqz v0, :cond_20

    invoke-interface {v2}, Ljava/util/Iterator;->next()Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Lorg/bitcoinj/core/Address;

    .line 869
    invoke-static {v0}, Lorg/bitcoinj/script/ScriptBuilder;->createOutputScript(Lorg/bitcoinj/core/Address;)Lorg/bitcoinj/script/Script;

    move-result-object v0

    .line 870
    invoke-virtual {v0, p2, p3}, Lorg/bitcoinj/script/Script;->setCreationTimeSeconds(J)V

    .line 871
    invoke-interface {v1, v0}, Ljava/util/List;->add(Ljava/lang/Object;)Z

    goto :goto_9

    .line 874
    :cond_20
    invoke-virtual {p0, v1}, Lorg/bitcoinj/wallet/Wallet;->addWatchedScripts(Ljava/util/List;)I

    move-result v0

    return v0
.end method

.method public addWatchedScripts(Ljava/util/List;)I
    .registers 10
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "(",
            "Ljava/util/List",
            "<",
            "Lorg/bitcoinj/script/Script;",
            ">;)I"
        }
    .end annotation

    .prologue
    .line 887
    const/4 v0, 0x0

    .line 888
    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V

    .line 890
    :try_start_6
    invoke-interface {p1}, Ljava/util/List;->iterator()Ljava/util/Iterator;

    move-result-object v2

    move v1, v0

    :goto_b
    invoke-interface {v2}, Ljava/util/Iterator;->hasNext()Z

    move-result v0

    if-eqz v0, :cond_3e

    invoke-interface {v2}, Ljava/util/Iterator;->next()Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Lorg/bitcoinj/script/Script;

    .line 893
    iget-object v3, p0, Lorg/bitcoinj/wallet/Wallet;->watchedScripts:Ljava/util/Set;

    invoke-interface {v3, v0}, Ljava/util/Set;->contains(Ljava/lang/Object;)Z

    move-result v3

    if-eqz v3, :cond_24

    .line 894
    iget-object v3, p0, Lorg/bitcoinj/wallet/Wallet;->watchedScripts:Ljava/util/Set;

    invoke-interface {v3, v0}, Ljava/util/Set;->remove(Ljava/lang/Object;)Z

    .line 895
    :cond_24
    invoke-virtual {v0}, Lorg/bitcoinj/script/Script;->getCreationTimeSeconds()J

    move-result-wide v4

    const-wide/16 v6, 0x0

    cmp-long v3, v4, v6

    if-nez v3, :cond_35

    .line 896
    sget-object v3, Lorg/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;

    const-string v4, "Adding a script to the wallet with a creation time of zero, this will disable the checkpointing optimization!    {}"

    invoke-interface {v3, v4, v0}, Lorg/slf4j/Logger;->warn(Ljava/lang/String;Ljava/lang/Object;)V

    .line 897
    :cond_35
    iget-object v3, p0, Lorg/bitcoinj/wallet/Wallet;->watchedScripts:Ljava/util/Set;

    invoke-interface {v3, v0}, Ljava/util/Set;->add(Ljava/lang/Object;)Z
    :try_end_3a
    .catchall {:try_start_6 .. :try_end_3a} :catchall_4d

    .line 898
    add-int/lit8 v0, v1, 0x1

    move v1, v0

    .line 899
    goto :goto_b

    .line 901
    :cond_3e
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    .line 903
    if-lez v1, :cond_4c

    .line 904
    const/4 v0, 0x1

    invoke-virtual {p0, p1, v0}, Lorg/bitcoinj/wallet/Wallet;->queueOnScriptsChanged(Ljava/util/List;Z)V

    .line 905
    invoke-virtual {p0}, Lorg/bitcoinj/wallet/Wallet;->saveNow()V

    .line 907
    :cond_4c
    return v1

    .line 901
    :catchall_4d
    move-exception v0

    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    throw v0
.end method

.method public allowSpendingUnconfirmedTransactions()V
    .registers 2

    .prologue
    .line 4269
    invoke-static {}, Lorg/bitcoinj/wallet/AllowUnconfirmedCoinSelector;->get()Lorg/bitcoinj/wallet/AllowUnconfirmedCoinSelector;

    move-result-object v0

    invoke-virtual {p0, v0}, Lorg/bitcoinj/wallet/Wallet;->setCoinSelector(Lorg/bitcoinj/wallet/CoinSelector;)V

    .line 4270
    return-void
.end method

.method public autosaveToFile(Ljava/io/File;JLjava/util/concurrent/TimeUnit;Lorg/bitcoinj/wallet/WalletFiles$Listener;)Lorg/bitcoinj/wallet/WalletFiles;
    .registers 14

    .prologue
    .line 1422
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V

    .line 1424
    :try_start_5
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->vFileManager:Lorg/bitcoinj/wallet/WalletFiles;

    if-nez v0, :cond_25

    const/4 v0, 0x1

    :goto_a
    const-string v1, "Already auto saving this wallet."

    invoke-static {v0, v1}, Lcom/google/common/base/n;->checkState(ZLjava/lang/Object;)V

    .line 1425
    new-instance v1, Lorg/bitcoinj/wallet/WalletFiles;

    move-object v2, p0

    move-object v3, p1

    move-wide v4, p2

    move-object v6, p4

    invoke-direct/range {v1 .. v6}, Lorg/bitcoinj/wallet/WalletFiles;-><init>(Lorg/bitcoinj/wallet/Wallet;Ljava/io/File;JLjava/util/concurrent/TimeUnit;)V

    .line 1426
    if-eqz p5, :cond_1d

    .line 1427
    invoke-virtual {v1, p5}, Lorg/bitcoinj/wallet/WalletFiles;->setListener(Lorg/bitcoinj/wallet/WalletFiles$Listener;)V

    .line 1428
    :cond_1d
    iput-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->vFileManager:Lorg/bitcoinj/wallet/WalletFiles;
    :try_end_1f
    .catchall {:try_start_5 .. :try_end_1f} :catchall_27

    .line 1431
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    .line 1429
    return-object v1

    .line 1424
    :cond_25
    const/4 v0, 0x0

    goto :goto_a

    .line 1431
    :catchall_27
    move-exception v0

    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    throw v0
.end method

.method public beginBloomFilterCalculation()V
    .registers 3

    .prologue
    .line 4559
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->bloomFilterGuard:Ljava/util/concurrent/atomic/AtomicInteger;

    invoke-virtual {v0}, Ljava/util/concurrent/atomic/AtomicInteger;->incrementAndGet()I

    move-result v0

    const/4 v1, 0x1

    if-le v0, v1, :cond_a

    .line 4565
    :goto_9
    return-void

    .line 4561
    :cond_a
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V

    .line 4562
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V

    .line 4564
    invoke-direct {p0}, Lorg/bitcoinj/wallet/Wallet;->calcBloomOutPointsLocked()V

    goto :goto_9
.end method

.method public calculateAllSpendCandidates()Ljava/util/List;
    .registers 2
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "()",
            "Ljava/util/List",
            "<",
            "Lorg/bitcoinj/core/TransactionOutput;",
            ">;"
        }
    .end annotation

    .prologue
    const/4 v0, 0x1

    .line 4101
    invoke-virtual {p0, v0, v0}, Lorg/bitcoinj/wallet/Wallet;->calculateAllSpendCandidates(ZZ)Ljava/util/List;

    move-result-object v0

    return-object v0
.end method

.method public calculateAllSpendCandidates(Z)Ljava/util/List;
    .registers 3
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "(Z)",
            "Ljava/util/List",
            "<",
            "Lorg/bitcoinj/core/TransactionOutput;",
            ">;"
        }
    .end annotation

    .annotation runtime Ljava/lang/Deprecated;
    .end annotation

    .prologue
    .line 4107
    const/4 v0, 0x1

    invoke-virtual {p0, p1, v0}, Lorg/bitcoinj/wallet/Wallet;->calculateAllSpendCandidates(ZZ)Ljava/util/List;

    move-result-object v0

    return-object v0
.end method

.method public calculateAllSpendCandidates(ZZ)Ljava/util/List;
    .registers 7
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "(ZZ)",
            "Ljava/util/List",
            "<",
            "Lorg/bitcoinj/core/TransactionOutput;",
            ">;"
        }
    .end annotation

    .prologue
    .line 4119
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V

    .line 4122
    :try_start_5
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->vUTXOProvider:Lorg/bitcoinj/core/UTXOProvider;

    if-nez v0, :cond_56

    .line 4123
    new-instance v2, Ljava/util/ArrayList;

    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->myUnspents:Ljava/util/HashSet;

    invoke-virtual {v0}, Ljava/util/HashSet;->size()I

    move-result v0

    invoke-direct {v2, v0}, Ljava/util/ArrayList;-><init>(I)V

    .line 4124
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->myUnspents:Ljava/util/HashSet;

    invoke-virtual {v0}, Ljava/util/HashSet;->iterator()Ljava/util/Iterator;

    move-result-object v3

    :cond_1a
    :goto_1a
    invoke-interface {v3}, Ljava/util/Iterator;->hasNext()Z

    move-result v0

    if-eqz v0, :cond_4f

    invoke-interface {v3}, Ljava/util/Iterator;->next()Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Lorg/bitcoinj/core/TransactionOutput;

    .line 4125
    if-eqz p2, :cond_32

    invoke-virtual {v0}, Lorg/bitcoinj/core/TransactionOutput;->getScriptPubKey()Lorg/bitcoinj/script/Script;

    move-result-object v1

    invoke-virtual {p0, v1}, Lorg/bitcoinj/wallet/Wallet;->canSignFor(Lorg/bitcoinj/script/Script;)Z

    move-result v1

    if-eqz v1, :cond_1a

    .line 4126
    :cond_32
    invoke-virtual {v0}, Lorg/bitcoinj/core/TransactionOutput;->getParentTransaction()Lorg/bitcoinj/core/Transaction;

    move-result-object v1

    invoke-static {v1}, Lcom/google/common/base/n;->checkNotNull(Ljava/lang/Object;)Ljava/lang/Object;

    move-result-object v1

    check-cast v1, Lorg/bitcoinj/core/Transaction;

    .line 4127
    if-eqz p1, :cond_44

    invoke-virtual {v1}, Lorg/bitcoinj/core/Transaction;->isMature()Z

    move-result v1

    if-eqz v1, :cond_1a

    .line 4129
    :cond_44
    invoke-interface {v2, v0}, Ljava/util/List;->add(Ljava/lang/Object;)Z
    :try_end_47
    .catchall {:try_start_5 .. :try_end_47} :catchall_48

    goto :goto_1a

    .line 4136
    :catchall_48
    move-exception v0

    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    throw v0

    :cond_4f
    move-object v0, v2

    :goto_50
    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    .line 4134
    return-object v0

    .line 4132
    :cond_56
    :try_start_56
    invoke-virtual {p0, p1}, Lorg/bitcoinj/wallet/Wallet;->calculateAllSpendCandidatesFromUTXOProvider(Z)Ljava/util/LinkedList;
    :try_end_59
    .catchall {:try_start_56 .. :try_end_59} :catchall_48

    move-result-object v0

    goto :goto_50
.end method

.method protected calculateAllSpendCandidatesFromUTXOProvider(Z)Ljava/util/LinkedList;
    .registers 8
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "(Z)",
            "Ljava/util/LinkedList",
            "<",
            "Lorg/bitcoinj/core/TransactionOutput;",
            ">;"
        }
    .end annotation

    .prologue
    .line 4183
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->isHeldByCurrentThread()Z

    move-result v0

    invoke-static {v0}, Lcom/google/common/base/n;->checkState(Z)V

    .line 4184
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->vUTXOProvider:Lorg/bitcoinj/core/UTXOProvider;

    const-string v1, "No UTXO provider has been set"

    invoke-static {v0, v1}, Lcom/google/common/base/n;->checkNotNull(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Lorg/bitcoinj/core/UTXOProvider;

    .line 11232
    new-instance v2, Ljava/util/LinkedList;

    invoke-direct {v2}, Ljava/util/LinkedList;-><init>()V

    .line 4187
    :try_start_18
    invoke-interface {v0}, Lorg/bitcoinj/core/UTXOProvider;->getChainHeadHeight()I

    move-result v1

    .line 4188
    invoke-virtual {p0}, Lorg/bitcoinj/wallet/Wallet;->getStoredOutputsFromUTXOProvider()Ljava/util/List;

    move-result-object v0

    invoke-interface {v0}, Ljava/util/List;->iterator()Ljava/util/Iterator;

    move-result-object v3

    :cond_24
    :goto_24
    invoke-interface {v3}, Ljava/util/Iterator;->hasNext()Z

    move-result v0

    if-eqz v0, :cond_5c

    invoke-interface {v3}, Ljava/util/Iterator;->next()Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Lorg/bitcoinj/core/UTXO;

    .line 4189
    invoke-virtual {v0}, Lorg/bitcoinj/core/UTXO;->isCoinbase()Z

    move-result v4

    .line 4190
    invoke-virtual {v0}, Lorg/bitcoinj/core/UTXO;->getHeight()I

    move-result v5

    sub-int v5, v1, v5

    add-int/lit8 v5, v5, 0x1

    .line 4192
    if-eqz p1, :cond_48

    if-eqz v4, :cond_48

    iget-object v4, p0, Lorg/bitcoinj/wallet/Wallet;->params:Lorg/bitcoinj/core/NetworkParameters;

    invoke-virtual {v4}, Lorg/bitcoinj/core/NetworkParameters;->getSpendableCoinbaseDepth()I

    move-result v4

    if-lt v5, v4, :cond_24

    .line 4193
    :cond_48
    new-instance v4, Lorg/bitcoinj/wallet/Wallet$FreeStandingTransactionOutput;

    iget-object v5, p0, Lorg/bitcoinj/wallet/Wallet;->params:Lorg/bitcoinj/core/NetworkParameters;

    invoke-direct {v4, p0, v5, v0, v1}, Lorg/bitcoinj/wallet/Wallet$FreeStandingTransactionOutput;-><init>(Lorg/bitcoinj/wallet/Wallet;Lorg/bitcoinj/core/NetworkParameters;Lorg/bitcoinj/core/UTXO;I)V

    invoke-virtual {v2, v4}, Ljava/util/LinkedList;->add(Ljava/lang/Object;)Z
    :try_end_52
    .catch Lorg/bitcoinj/core/UTXOProviderException; {:try_start_18 .. :try_end_52} :catch_53

    goto :goto_24

    .line 4196
    :catch_53
    move-exception v0

    .line 4197
    new-instance v1, Ljava/lang/RuntimeException;

    const-string v2, "UTXO provider error"

    invoke-direct {v1, v2, v0}, Ljava/lang/RuntimeException;-><init>(Ljava/lang/String;Ljava/lang/Throwable;)V

    throw v1

    .line 4200
    :cond_5c
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->pending:Ljava/util/Map;

    invoke-interface {v0}, Ljava/util/Map;->values()Ljava/util/Collection;

    move-result-object v0

    invoke-interface {v0}, Ljava/util/Collection;->iterator()Ljava/util/Iterator;

    move-result-object v3

    :cond_66
    invoke-interface {v3}, Ljava/util/Iterator;->hasNext()Z

    move-result v0

    if-eqz v0, :cond_c5

    invoke-interface {v3}, Ljava/util/Iterator;->next()Ljava/lang/Object;

    move-result-object v0

    move-object v1, v0

    check-cast v1, Lorg/bitcoinj/core/Transaction;

    .line 4202
    invoke-virtual {v1}, Lorg/bitcoinj/core/Transaction;->getInputs()Ljava/util/List;

    move-result-object v0

    invoke-interface {v0}, Ljava/util/List;->iterator()Ljava/util/Iterator;

    move-result-object v4

    :cond_7b
    :goto_7b
    invoke-interface {v4}, Ljava/util/Iterator;->hasNext()Z

    move-result v0

    if-eqz v0, :cond_99

    invoke-interface {v4}, Ljava/util/Iterator;->next()Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Lorg/bitcoinj/core/TransactionInput;

    .line 4203
    invoke-virtual {v0}, Lorg/bitcoinj/core/TransactionInput;->getConnectedOutput()Lorg/bitcoinj/core/TransactionOutput;

    move-result-object v5

    invoke-virtual {v5, p0}, Lorg/bitcoinj/core/TransactionOutput;->isMine(Lorg/bitcoinj/core/TransactionBag;)Z

    move-result v5

    if-eqz v5, :cond_7b

    .line 4204
    invoke-virtual {v0}, Lorg/bitcoinj/core/TransactionInput;->getConnectedOutput()Lorg/bitcoinj/core/TransactionOutput;

    move-result-object v0

    invoke-virtual {v2, v0}, Ljava/util/LinkedList;->remove(Ljava/lang/Object;)Z

    goto :goto_7b

    .line 4208
    :cond_99
    if-eqz p1, :cond_a1

    invoke-virtual {v1}, Lorg/bitcoinj/core/Transaction;->isMature()Z

    move-result v0

    if-eqz v0, :cond_66

    .line 4209
    :cond_a1
    invoke-virtual {v1}, Lorg/bitcoinj/core/Transaction;->getOutputs()Ljava/util/List;

    move-result-object v0

    invoke-interface {v0}, Ljava/util/List;->iterator()Ljava/util/Iterator;

    move-result-object v1

    :cond_a9
    :goto_a9
    invoke-interface {v1}, Ljava/util/Iterator;->hasNext()Z

    move-result v0

    if-eqz v0, :cond_66

    invoke-interface {v1}, Ljava/util/Iterator;->next()Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Lorg/bitcoinj/core/TransactionOutput;

    .line 4210
    invoke-virtual {v0}, Lorg/bitcoinj/core/TransactionOutput;->isAvailableForSpending()Z

    move-result v4

    if-eqz v4, :cond_a9

    invoke-virtual {v0, p0}, Lorg/bitcoinj/core/TransactionOutput;->isMine(Lorg/bitcoinj/core/TransactionBag;)Z

    move-result v4

    if-eqz v4, :cond_a9

    .line 4211
    invoke-virtual {v2, v0}, Ljava/util/LinkedList;->add(Ljava/lang/Object;)Z

    goto :goto_a9

    .line 4216
    :cond_c5
    return-object v2
.end method

.method public calculateFee(Lorg/bitcoinj/wallet/SendRequest;Lorg/bitcoinj/core/Coin;Ljava/util/List;ZLjava/util/List;)Lorg/bitcoinj/wallet/Wallet$FeeCalculation;
    .registers 29
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "(",
            "Lorg/bitcoinj/wallet/SendRequest;",
            "Lorg/bitcoinj/core/Coin;",
            "Ljava/util/List",
            "<",
            "Lorg/bitcoinj/core/TransactionInput;",
            ">;Z",
            "Ljava/util/List",
            "<",
            "Lorg/bitcoinj/core/TransactionOutput;",
            ">;)",
            "Lorg/bitcoinj/wallet/Wallet$FeeCalculation;"
        }
    .end annotation

    .prologue
    .line 4818
    move-object/from16 v0, p0

    iget-object v4, v0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v4}, Ljava/util/concurrent/locks/ReentrantLock;->isHeldByCurrentThread()Z

    move-result v4

    invoke-static {v4}, Lcom/google/common/base/n;->checkState(Z)V

    .line 4826
    const/4 v10, 0x0

    .line 4827
    const/4 v9, 0x0

    .line 4828
    const/4 v8, 0x0

    .line 4829
    const/4 v7, 0x0

    .line 4830
    const/4 v6, 0x0

    .line 4831
    const/4 v5, 0x0

    .line 4834
    const/4 v4, 0x0

    .line 4835
    const/16 v18, 0x0

    move-object v11, v10

    move-object v10, v9

    move-object v9, v8

    move-object v8, v7

    move-object v7, v6

    move-object v6, v5

    move v5, v4

    .line 4837
    :goto_1b
    move-object/from16 v0, p0

    move-object/from16 v1, p1

    move-object/from16 v2, p3

    invoke-direct {v0, v1, v2}, Lorg/bitcoinj/wallet/Wallet;->resetTxInputs(Lorg/bitcoinj/wallet/SendRequest;Ljava/util/List;)V

    .line 4839
    move-object/from16 v0, p1

    iget-object v4, v0, Lorg/bitcoinj/wallet/SendRequest;->feePerKb:Lorg/bitcoinj/core/Coin;

    int-to-long v12, v5

    invoke-virtual {v4, v12, v13}, Lorg/bitcoinj/core/Coin;->multiply(J)Lorg/bitcoinj/core/Coin;

    move-result-object v4

    const-wide/16 v12, 0x3e8

    invoke-virtual {v4, v12, v13}, Lorg/bitcoinj/core/Coin;->divide(J)Lorg/bitcoinj/core/Coin;

    move-result-object v4

    .line 4840
    if-eqz p4, :cond_3f

    sget-object v12, Lorg/bitcoinj/core/Transaction;->REFERENCE_DEFAULT_MIN_TX_FEE:Lorg/bitcoinj/core/Coin;

    invoke-virtual {v4, v12}, Lorg/bitcoinj/core/Coin;->compareTo(Lorg/bitcoinj/core/Coin;)I

    move-result v12

    if-gez v12, :cond_3f

    .line 4841
    sget-object v4, Lorg/bitcoinj/core/Transaction;->REFERENCE_DEFAULT_MIN_TX_FEE:Lorg/bitcoinj/core/Coin;

    .line 4843
    :cond_3f
    move-object/from16 v0, p2

    invoke-virtual {v0, v4}, Lorg/bitcoinj/core/Coin;->add(Lorg/bitcoinj/core/Coin;)Lorg/bitcoinj/core/Coin;

    move-result-object v12

    .line 4844
    if-eqz v11, :cond_4b

    .line 4845
    invoke-virtual {v12, v11}, Lorg/bitcoinj/core/Coin;->add(Lorg/bitcoinj/core/Coin;)Lorg/bitcoinj/core/Coin;

    move-result-object v12

    .line 4849
    :cond_4b
    move-object/from16 v0, p1

    iget-object v13, v0, Lorg/bitcoinj/wallet/SendRequest;->coinSelector:Lorg/bitcoinj/wallet/CoinSelector;

    if-nez v13, :cond_95

    move-object/from16 v0, p0

    iget-object v13, v0, Lorg/bitcoinj/wallet/Wallet;->coinSelector:Lorg/bitcoinj/wallet/CoinSelector;

    .line 4851
    :goto_55
    new-instance v14, Ljava/util/LinkedList;

    move-object/from16 v0, p5

    invoke-direct {v14, v0}, Ljava/util/LinkedList;-><init>(Ljava/util/Collection;)V

    invoke-interface {v13, v12, v14}, Lorg/bitcoinj/wallet/CoinSelector;->select(Lorg/bitcoinj/core/Coin;Ljava/util/List;)Lorg/bitcoinj/wallet/CoinSelection;

    move-result-object v19

    .line 4853
    move-object/from16 v0, v19

    iget-object v13, v0, Lorg/bitcoinj/wallet/CoinSelection;->valueGathered:Lorg/bitcoinj/core/Coin;

    invoke-virtual {v13, v12}, Lorg/bitcoinj/core/Coin;->compareTo(Lorg/bitcoinj/core/Coin;)I

    move-result v13

    if-gez v13, :cond_9a

    .line 4854
    move-object/from16 v0, v19

    iget-object v4, v0, Lorg/bitcoinj/wallet/CoinSelection;->valueGathered:Lorg/bitcoinj/core/Coin;

    invoke-virtual {v12, v4}, Lorg/bitcoinj/core/Coin;->subtract(Lorg/bitcoinj/core/Coin;)Lorg/bitcoinj/core/Coin;

    move-result-object v4

    .line 4956
    :goto_72
    move-object/from16 v0, p0

    move-object/from16 v1, p1

    move-object/from16 v2, p3

    invoke-direct {v0, v1, v2}, Lorg/bitcoinj/wallet/Wallet;->resetTxInputs(Lorg/bitcoinj/wallet/SendRequest;Ljava/util/List;)V

    .line 4958
    if-nez v10, :cond_233

    if-nez v9, :cond_233

    if-nez v7, :cond_233

    .line 4959
    invoke-static {v4}, Lcom/google/common/base/n;->checkNotNull(Ljava/lang/Object;)Ljava/lang/Object;

    .line 4960
    sget-object v5, Lorg/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;

    const-string v6, "Insufficient value in wallet for send: needed {} more"

    invoke-virtual {v4}, Lorg/bitcoinj/core/Coin;->toFriendlyString()Ljava/lang/String;

    move-result-object v7

    invoke-interface {v5, v6, v7}, Lorg/slf4j/Logger;->warn(Ljava/lang/String;Ljava/lang/Object;)V

    .line 4961
    new-instance v5, Lorg/bitcoinj/core/InsufficientMoneyException;

    invoke-direct {v5, v4}, Lorg/bitcoinj/core/InsufficientMoneyException;-><init>(Lorg/bitcoinj/core/Coin;)V

    throw v5

    .line 4849
    :cond_95
    move-object/from16 v0, p1

    iget-object v13, v0, Lorg/bitcoinj/wallet/SendRequest;->coinSelector:Lorg/bitcoinj/wallet/CoinSelector;

    goto :goto_55

    .line 4857
    :cond_9a
    move-object/from16 v0, v19

    iget-object v13, v0, Lorg/bitcoinj/wallet/CoinSelection;->gathered:Ljava/util/Collection;

    invoke-interface {v13}, Ljava/util/Collection;->size()I

    move-result v13

    if-gtz v13, :cond_aa

    invoke-interface/range {p3 .. p3}, Ljava/util/List;->size()I

    move-result v13

    if-lez v13, :cond_162

    :cond_aa
    const/4 v13, 0x1

    :goto_ab
    invoke-static {v13}, Lcom/google/common/base/n;->checkState(Z)V

    .line 4865
    const/4 v13, 0x0

    .line 4866
    const/16 v16, 0x0

    .line 4868
    move-object/from16 v0, v19

    iget-object v14, v0, Lorg/bitcoinj/wallet/CoinSelection;->valueGathered:Lorg/bitcoinj/core/Coin;

    invoke-virtual {v14, v12}, Lorg/bitcoinj/core/Coin;->subtract(Lorg/bitcoinj/core/Coin;)Lorg/bitcoinj/core/Coin;

    move-result-object v12

    .line 4869
    if-eqz v11, :cond_bf

    .line 4870
    invoke-virtual {v12, v11}, Lorg/bitcoinj/core/Coin;->add(Lorg/bitcoinj/core/Coin;)Lorg/bitcoinj/core/Coin;

    move-result-object v12

    .line 4873
    :cond_bf
    move-object/from16 v0, p1

    iget-boolean v14, v0, Lorg/bitcoinj/wallet/SendRequest;->ensureMinRequiredFee:Z

    if-eqz v14, :cond_2a1

    sget-object v14, Lorg/bitcoinj/core/Coin;->ZERO:Lorg/bitcoinj/core/Coin;

    invoke-virtual {v12, v14}, Lorg/bitcoinj/core/Coin;->equals(Ljava/lang/Object;)Z

    move-result v14

    if-nez v14, :cond_2a1

    sget-object v14, Lorg/bitcoinj/core/Coin;->CENT:Lorg/bitcoinj/core/Coin;

    .line 4874
    invoke-virtual {v12, v14}, Lorg/bitcoinj/core/Coin;->compareTo(Lorg/bitcoinj/core/Coin;)I

    move-result v14

    if-gez v14, :cond_2a1

    sget-object v14, Lorg/bitcoinj/core/Transaction;->REFERENCE_DEFAULT_MIN_TX_FEE:Lorg/bitcoinj/core/Coin;

    invoke-virtual {v4, v14}, Lorg/bitcoinj/core/Coin;->compareTo(Lorg/bitcoinj/core/Coin;)I

    move-result v14

    if-gez v14, :cond_2a1

    .line 4876
    const/4 v13, 0x1

    .line 4877
    sget-object v14, Lorg/bitcoinj/core/Coin;->CENT:Lorg/bitcoinj/core/Coin;

    .line 4879
    sget-object v15, Lorg/bitcoinj/core/Transaction;->REFERENCE_DEFAULT_MIN_TX_FEE:Lorg/bitcoinj/core/Coin;

    invoke-virtual {v15, v4}, Lorg/bitcoinj/core/Coin;->subtract(Lorg/bitcoinj/core/Coin;)Lorg/bitcoinj/core/Coin;

    move-result-object v4

    invoke-virtual {v12, v4}, Lorg/bitcoinj/core/Coin;->subtract(Lorg/bitcoinj/core/Coin;)Lorg/bitcoinj/core/Coin;

    move-result-object v12

    move-object v4, v14

    .line 4882
    :goto_eb
    const/16 v17, 0x0

    .line 4883
    const/4 v14, 0x0

    .line 4884
    invoke-virtual {v12}, Lorg/bitcoinj/core/Coin;->signum()I

    move-result v15

    if-lez v15, :cond_1a0

    .line 4888
    move-object/from16 v0, p1

    iget-object v14, v0, Lorg/bitcoinj/wallet/SendRequest;->changeAddress:Lorg/bitcoinj/core/Address;

    .line 4889
    if-nez v14, :cond_fe

    .line 4890
    invoke-virtual/range {p0 .. p0}, Lorg/bitcoinj/wallet/Wallet;->currentChangeAddress()Lorg/bitcoinj/core/Address;

    move-result-object v14

    .line 4891
    :cond_fe
    new-instance v15, Lorg/bitcoinj/core/TransactionOutput;

    move-object/from16 v0, p0

    iget-object v0, v0, Lorg/bitcoinj/wallet/Wallet;->params:Lorg/bitcoinj/core/NetworkParameters;

    move-object/from16 v20, v0

    move-object/from16 v0, p1

    iget-object v0, v0, Lorg/bitcoinj/wallet/SendRequest;->tx:Lorg/bitcoinj/core/Transaction;

    move-object/from16 v21, v0

    move-object/from16 v0, v20

    move-object/from16 v1, v21

    invoke-direct {v15, v0, v1, v12, v14}, Lorg/bitcoinj/core/TransactionOutput;-><init>(Lorg/bitcoinj/core/NetworkParameters;Lorg/bitcoinj/core/Transaction;Lorg/bitcoinj/core/Coin;Lorg/bitcoinj/core/Address;)V

    .line 4893
    move-object/from16 v0, p1

    iget-boolean v12, v0, Lorg/bitcoinj/wallet/SendRequest;->ensureMinRequiredFee:Z

    if-eqz v12, :cond_165

    invoke-virtual {v15}, Lorg/bitcoinj/core/TransactionOutput;->isDust()Z

    move-result v12

    if-eqz v12, :cond_165

    .line 4895
    const/4 v4, 0x1

    .line 4896
    sget-object v12, Lorg/bitcoinj/core/Transaction;->REFERENCE_DEFAULT_MIN_TX_FEE:Lorg/bitcoinj/core/Coin;

    .line 4897
    invoke-virtual {v15}, Lorg/bitcoinj/core/TransactionOutput;->getMinNonDustValue()Lorg/bitcoinj/core/Coin;

    move-result-object v14

    sget-object v16, Lorg/bitcoinj/core/Coin;->SATOSHI:Lorg/bitcoinj/core/Coin;

    move-object/from16 v0, v16

    invoke-virtual {v14, v0}, Lorg/bitcoinj/core/Coin;->add(Lorg/bitcoinj/core/Coin;)Lorg/bitcoinj/core/Coin;

    move-result-object v14

    .line 4896
    invoke-virtual {v12, v14}, Lorg/bitcoinj/core/Coin;->add(Lorg/bitcoinj/core/Coin;)Lorg/bitcoinj/core/Coin;

    move-result-object v12

    move-object v14, v15

    move/from16 v16, v17

    move v15, v4

    .line 4913
    :goto_136
    move-object/from16 v0, v19

    iget-object v4, v0, Lorg/bitcoinj/wallet/CoinSelection;->gathered:Ljava/util/Collection;

    invoke-interface {v4}, Ljava/util/Collection;->iterator()Ljava/util/Iterator;

    move-result-object v17

    :goto_13e
    invoke-interface/range {v17 .. v17}, Ljava/util/Iterator;->hasNext()Z

    move-result v4

    if-eqz v4, :cond_1b1

    invoke-interface/range {v17 .. v17}, Ljava/util/Iterator;->next()Ljava/lang/Object;

    move-result-object v4

    check-cast v4, Lorg/bitcoinj/core/TransactionOutput;

    .line 4914
    move-object/from16 v0, p1

    iget-object v0, v0, Lorg/bitcoinj/wallet/SendRequest;->tx:Lorg/bitcoinj/core/Transaction;

    move-object/from16 v20, v0

    move-object/from16 v0, v20

    invoke-virtual {v0, v4}, Lorg/bitcoinj/core/Transaction;->addInput(Lorg/bitcoinj/core/TransactionOutput;)Lorg/bitcoinj/core/TransactionInput;

    move-result-object v4

    .line 4916
    invoke-virtual {v4}, Lorg/bitcoinj/core/TransactionInput;->getScriptBytes()[B

    move-result-object v4

    array-length v4, v4

    if-nez v4, :cond_1af

    const/4 v4, 0x1

    :goto_15e
    invoke-static {v4}, Lcom/google/common/base/n;->checkState(Z)V

    goto :goto_13e

    .line 4857
    :cond_162
    const/4 v13, 0x0

    goto/16 :goto_ab

    .line 4899
    :cond_165
    invoke-virtual {v15}, Lorg/bitcoinj/core/TransactionOutput;->unsafeBitcoinSerialize()[B

    move-result-object v12

    array-length v12, v12

    move-object/from16 v0, p1

    iget-object v14, v0, Lorg/bitcoinj/wallet/SendRequest;->tx:Lorg/bitcoinj/core/Transaction;

    invoke-virtual {v14}, Lorg/bitcoinj/core/Transaction;->getOutputs()Ljava/util/List;

    move-result-object v14

    invoke-interface {v14}, Ljava/util/List;->size()I

    move-result v14

    int-to-long v0, v14

    move-wide/from16 v20, v0

    invoke-static/range {v20 .. v21}, Lorg/bitcoinj/core/VarInt;->sizeOf(J)I

    move-result v14

    add-int/2addr v12, v14

    move-object/from16 v0, p1

    iget-object v14, v0, Lorg/bitcoinj/wallet/SendRequest;->tx:Lorg/bitcoinj/core/Transaction;

    invoke-virtual {v14}, Lorg/bitcoinj/core/Transaction;->getOutputs()Ljava/util/List;

    move-result-object v14

    invoke-interface {v14}, Ljava/util/List;->size()I

    move-result v14

    add-int/lit8 v14, v14, -0x1

    int-to-long v0, v14

    move-wide/from16 v20, v0

    invoke-static/range {v20 .. v21}, Lorg/bitcoinj/core/VarInt;->sizeOf(J)I

    move-result v14

    sub-int/2addr v12, v14

    add-int/lit8 v12, v12, 0x0

    .line 4901
    if-nez v13, :cond_199

    .line 4902
    const/4 v4, 0x0

    :cond_199
    move-object v14, v15

    move/from16 v15, v16

    move/from16 v16, v12

    move-object v12, v4

    .line 4904
    goto :goto_136

    .line 4905
    :cond_1a0
    if-eqz v13, :cond_29a

    .line 4907
    const/4 v4, 0x1

    .line 4908
    sget-object v12, Lorg/bitcoinj/core/Transaction;->REFERENCE_DEFAULT_MIN_TX_FEE:Lorg/bitcoinj/core/Coin;

    sget-object v15, Lorg/bitcoinj/core/Coin;->SATOSHI:Lorg/bitcoinj/core/Coin;

    invoke-virtual {v12, v15}, Lorg/bitcoinj/core/Coin;->add(Lorg/bitcoinj/core/Coin;)Lorg/bitcoinj/core/Coin;

    move-result-object v12

    move v15, v4

    move/from16 v16, v17

    goto :goto_136

    .line 4916
    :cond_1af
    const/4 v4, 0x0

    goto :goto_15e

    .line 4921
    :cond_1b1
    move-object/from16 v0, p1

    iget-object v4, v0, Lorg/bitcoinj/wallet/SendRequest;->tx:Lorg/bitcoinj/core/Transaction;

    invoke-virtual {v4}, Lorg/bitcoinj/core/Transaction;->unsafeBitcoinSerialize()[B

    move-result-object v4

    array-length v4, v4

    add-int v4, v4, v16

    .line 4922
    move-object/from16 v0, p0

    move-object/from16 v1, v19

    invoke-direct {v0, v1}, Lorg/bitcoinj/wallet/Wallet;->estimateBytesForSigning(Lorg/bitcoinj/wallet/CoinSelection;)I

    move-result v16

    add-int v4, v4, v16

    .line 4923
    if-le v4, v5, :cond_1d7

    move-object/from16 v0, p1

    iget-object v0, v0, Lorg/bitcoinj/wallet/SendRequest;->feePerKb:Lorg/bitcoinj/core/Coin;

    move-object/from16 v16, v0

    invoke-virtual/range {v16 .. v16}, Lorg/bitcoinj/core/Coin;->signum()I

    move-result v16

    if-lez v16, :cond_1d7

    move v5, v4

    .line 4927
    goto/16 :goto_1b

    .line 4930
    :cond_1d7
    if-eqz v15, :cond_1f7

    .line 4931
    if-nez v10, :cond_293

    move-object v4, v6

    move-object v6, v7

    move-object v7, v8

    move-object v8, v9

    move-object/from16 v9, v19

    .line 4948
    :goto_1e1
    if-eqz v12, :cond_28a

    .line 4949
    if-eqz v11, :cond_282

    .line 4950
    invoke-virtual {v12, v11}, Lorg/bitcoinj/core/Coin;->compareTo(Lorg/bitcoinj/core/Coin;)I

    move-result v10

    if-lez v10, :cond_231

    const/4 v10, 0x1

    :goto_1ec
    invoke-static {v10}, Lcom/google/common/base/n;->checkState(Z)V

    move-object v10, v9

    move-object v11, v12

    move-object v9, v8

    move-object v8, v7

    move-object v7, v6

    move-object v6, v4

    goto/16 :goto_1b

    .line 4933
    :cond_1f7
    if-eqz v13, :cond_21a

    .line 4936
    if-nez v9, :cond_218

    const/4 v4, 0x1

    :goto_1fc
    invoke-static {v4}, Lcom/google/common/base/n;->checkState(Z)V

    .line 4937
    sget-object v4, Lorg/bitcoinj/core/Coin;->CENT:Lorg/bitcoinj/core/Coin;

    invoke-virtual {v12, v4}, Lorg/bitcoinj/core/Coin;->equals(Ljava/lang/Object;)Z

    move-result v4

    invoke-static {v4}, Lcom/google/common/base/n;->checkState(Z)V

    .line 4939
    invoke-static {v14}, Lcom/google/common/base/n;->checkNotNull(Ljava/lang/Object;)Ljava/lang/Object;

    move-result-object v4

    check-cast v4, Lorg/bitcoinj/core/TransactionOutput;

    move-object/from16 v8, v19

    move-object v9, v10

    move-object/from16 v22, v4

    move-object v4, v6

    move-object v6, v7

    move-object/from16 v7, v22

    goto :goto_1e1

    .line 4936
    :cond_218
    const/4 v4, 0x0

    goto :goto_1fc

    .line 4942
    :cond_21a
    if-nez v7, :cond_22d

    const/4 v4, 0x1

    :goto_21d
    invoke-static {v4}, Lcom/google/common/base/n;->checkState(Z)V

    .line 4943
    if-nez v12, :cond_22f

    const/4 v4, 0x1

    :goto_223
    invoke-static {v4}, Lcom/google/common/base/n;->checkState(Z)V

    move-object v4, v14

    move-object/from16 v6, v19

    move-object v7, v8

    move-object v8, v9

    move-object v9, v10

    .line 4945
    goto :goto_1e1

    .line 4942
    :cond_22d
    const/4 v4, 0x0

    goto :goto_21d

    .line 4943
    :cond_22f
    const/4 v4, 0x0

    goto :goto_223

    .line 4950
    :cond_231
    const/4 v10, 0x0

    goto :goto_1ec

    .line 4964
    :cond_233
    const/4 v5, 0x0

    .line 4965
    new-instance v11, Lorg/bitcoinj/wallet/Wallet$FeeCalculation;

    const/4 v4, 0x0

    invoke-direct {v11, v4}, Lorg/bitcoinj/wallet/Wallet$FeeCalculation;-><init>(Lorg/bitcoinj/wallet/Wallet$1;)V

    .line 4966
    if-eqz v7, :cond_24d

    .line 4967
    if-eqz v6, :cond_27d

    .line 4968
    iget-object v4, v7, Lorg/bitcoinj/wallet/CoinSelection;->valueGathered:Lorg/bitcoinj/core/Coin;

    invoke-virtual {v6}, Lorg/bitcoinj/core/TransactionOutput;->getValue()Lorg/bitcoinj/core/Coin;

    move-result-object v5

    invoke-virtual {v4, v5}, Lorg/bitcoinj/core/Coin;->subtract(Lorg/bitcoinj/core/Coin;)Lorg/bitcoinj/core/Coin;

    move-result-object v4

    .line 4971
    :goto_248
    iput-object v7, v11, Lorg/bitcoinj/wallet/Wallet$FeeCalculation;->bestCoinSelection:Lorg/bitcoinj/wallet/CoinSelection;

    .line 4972
    iput-object v6, v11, Lorg/bitcoinj/wallet/Wallet$FeeCalculation;->bestChangeOutput:Lorg/bitcoinj/core/TransactionOutput;

    move-object v5, v4

    .line 4975
    :cond_24d
    if-eqz v9, :cond_280

    .line 4976
    iget-object v6, v9, Lorg/bitcoinj/wallet/CoinSelection;->valueGathered:Lorg/bitcoinj/core/Coin;

    invoke-static {v8}, Lcom/google/common/base/n;->checkNotNull(Ljava/lang/Object;)Ljava/lang/Object;

    move-result-object v4

    check-cast v4, Lorg/bitcoinj/core/TransactionOutput;

    invoke-virtual {v4}, Lorg/bitcoinj/core/TransactionOutput;->getValue()Lorg/bitcoinj/core/Coin;

    move-result-object v4

    invoke-virtual {v6, v4}, Lorg/bitcoinj/core/Coin;->subtract(Lorg/bitcoinj/core/Coin;)Lorg/bitcoinj/core/Coin;

    move-result-object v4

    .line 4977
    if-eqz v5, :cond_267

    invoke-virtual {v4, v5}, Lorg/bitcoinj/core/Coin;->compareTo(Lorg/bitcoinj/core/Coin;)I

    move-result v6

    if-gez v6, :cond_280

    .line 4979
    :cond_267
    iput-object v9, v11, Lorg/bitcoinj/wallet/Wallet$FeeCalculation;->bestCoinSelection:Lorg/bitcoinj/wallet/CoinSelection;

    .line 4980
    iput-object v8, v11, Lorg/bitcoinj/wallet/Wallet$FeeCalculation;->bestChangeOutput:Lorg/bitcoinj/core/TransactionOutput;

    .line 4984
    :goto_26b
    if-eqz v10, :cond_27c

    .line 4985
    if-eqz v4, :cond_277

    iget-object v5, v10, Lorg/bitcoinj/wallet/CoinSelection;->valueGathered:Lorg/bitcoinj/core/Coin;

    invoke-virtual {v5, v4}, Lorg/bitcoinj/core/Coin;->compareTo(Lorg/bitcoinj/core/Coin;)I

    move-result v4

    if-gez v4, :cond_27c

    .line 4986
    :cond_277
    iput-object v10, v11, Lorg/bitcoinj/wallet/Wallet$FeeCalculation;->bestCoinSelection:Lorg/bitcoinj/wallet/CoinSelection;

    .line 4987
    const/4 v4, 0x0

    iput-object v4, v11, Lorg/bitcoinj/wallet/Wallet$FeeCalculation;->bestChangeOutput:Lorg/bitcoinj/core/TransactionOutput;

    .line 4990
    :cond_27c
    return-object v11

    .line 4970
    :cond_27d
    iget-object v4, v7, Lorg/bitcoinj/wallet/CoinSelection;->valueGathered:Lorg/bitcoinj/core/Coin;

    goto :goto_248

    :cond_280
    move-object v4, v5

    goto :goto_26b

    :cond_282
    move-object v10, v9

    move-object v11, v12

    move-object v9, v8

    move-object v8, v7

    move-object v7, v6

    move-object v6, v4

    goto/16 :goto_1b

    :cond_28a
    move-object v10, v9

    move-object v9, v8

    move-object v8, v7

    move-object v7, v6

    move-object v6, v4

    move-object/from16 v4, v18

    goto/16 :goto_72

    :cond_293
    move-object v4, v6

    move-object v6, v7

    move-object v7, v8

    move-object v8, v9

    move-object v9, v10

    goto/16 :goto_1e1

    :cond_29a
    move/from16 v15, v16

    move-object v12, v4

    move/from16 v16, v17

    goto/16 :goto_136

    :cond_2a1
    move-object v4, v11

    goto/16 :goto_eb
.end method

.method public canSignFor(Lorg/bitcoinj/script/Script;)Z
    .registers 7

    .prologue
    const/4 v2, 0x0

    const/4 v1, 0x1

    .line 4145
    invoke-virtual {p1}, Lorg/bitcoinj/script/Script;->isSentToRawPubKey()Z

    move-result v0

    if-eqz v0, :cond_22

    .line 4146
    invoke-virtual {p1}, Lorg/bitcoinj/script/Script;->getPubKey()[B

    move-result-object v0

    .line 4147
    invoke-virtual {p0, v0}, Lorg/bitcoinj/wallet/Wallet;->findKeyFromPubKey([B)Lorg/bitcoinj/core/ECKey;

    move-result-object v0

    .line 4148
    if-eqz v0, :cond_20

    invoke-virtual {v0}, Lorg/bitcoinj/core/ECKey;->isEncrypted()Z

    move-result v3

    if-nez v3, :cond_1e

    invoke-virtual {v0}, Lorg/bitcoinj/core/ECKey;->hasPrivKey()Z

    move-result v0

    if-eqz v0, :cond_20

    :cond_1e
    move v0, v1

    .line 4175
    :goto_1f
    return v0

    :cond_20
    move v0, v2

    .line 4148
    goto :goto_1f

    .line 4149
    :cond_22
    invoke-virtual {p1}, Lorg/bitcoinj/script/Script;->isPayToScriptHash()Z

    move-result v0

    if-eqz v0, :cond_3e

    .line 4150
    invoke-virtual {p1}, Lorg/bitcoinj/script/Script;->getPubKeyHash()[B

    move-result-object v0

    invoke-virtual {p0, v0}, Lorg/bitcoinj/wallet/Wallet;->findRedeemDataFromScriptHash([B)Lorg/bitcoinj/wallet/RedeemData;

    move-result-object v0

    .line 4151
    if-eqz v0, :cond_3c

    iget-object v0, v0, Lorg/bitcoinj/wallet/RedeemData;->redeemScript:Lorg/bitcoinj/script/Script;

    invoke-virtual {p0, v0}, Lorg/bitcoinj/wallet/Wallet;->canSignFor(Lorg/bitcoinj/script/Script;)Z

    move-result v0

    if-eqz v0, :cond_3c

    move v0, v1

    goto :goto_1f

    :cond_3c
    move v0, v2

    goto :goto_1f

    .line 4152
    :cond_3e
    invoke-virtual {p1}, Lorg/bitcoinj/script/Script;->isSentToAddress()Z

    move-result v0

    if-eqz v0, :cond_5e

    .line 4153
    invoke-virtual {p1}, Lorg/bitcoinj/script/Script;->getPubKeyHash()[B

    move-result-object v0

    invoke-virtual {p0, v0}, Lorg/bitcoinj/wallet/Wallet;->findKeyFromPubHash([B)Lorg/bitcoinj/core/ECKey;

    move-result-object v0

    .line 4154
    if-eqz v0, :cond_5c

    invoke-virtual {v0}, Lorg/bitcoinj/core/ECKey;->isEncrypted()Z

    move-result v3

    if-nez v3, :cond_5a

    invoke-virtual {v0}, Lorg/bitcoinj/core/ECKey;->hasPrivKey()Z

    move-result v0

    if-eqz v0, :cond_5c

    :cond_5a
    move v0, v1

    goto :goto_1f

    :cond_5c
    move v0, v2

    goto :goto_1f

    .line 4155
    :cond_5e
    invoke-virtual {p1}, Lorg/bitcoinj/script/Script;->isSentToMultiSig()Z

    move-result v0

    if-eqz v0, :cond_90

    .line 4156
    invoke-virtual {p1}, Lorg/bitcoinj/script/Script;->getPubKeys()Ljava/util/List;

    move-result-object v0

    invoke-interface {v0}, Ljava/util/List;->iterator()Ljava/util/Iterator;

    move-result-object v3

    :cond_6c
    invoke-interface {v3}, Ljava/util/Iterator;->hasNext()Z

    move-result v0

    if-eqz v0, :cond_ca

    invoke-interface {v3}, Ljava/util/Iterator;->next()Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Lorg/bitcoinj/core/ECKey;

    .line 4157
    invoke-virtual {v0}, Lorg/bitcoinj/core/ECKey;->getPubKey()[B

    move-result-object v0

    invoke-virtual {p0, v0}, Lorg/bitcoinj/wallet/Wallet;->findKeyFromPubKey([B)Lorg/bitcoinj/core/ECKey;

    move-result-object v0

    .line 4158
    if-eqz v0, :cond_6c

    invoke-virtual {v0}, Lorg/bitcoinj/core/ECKey;->isEncrypted()Z

    move-result v4

    if-nez v4, :cond_8e

    invoke-virtual {v0}, Lorg/bitcoinj/core/ECKey;->hasPrivKey()Z

    move-result v0

    if-eqz v0, :cond_6c

    :cond_8e
    move v0, v1

    .line 4159
    goto :goto_1f

    .line 4161
    :cond_90
    invoke-virtual {p1}, Lorg/bitcoinj/script/Script;->isSentToCLTVPaymentChannel()Z

    move-result v0

    if-eqz v0, :cond_ca

    .line 4163
    invoke-virtual {p1}, Lorg/bitcoinj/script/Script;->getCLTVPaymentChannelSenderPubKey()[B

    move-result-object v0

    .line 4164
    invoke-virtual {p0, v0}, Lorg/bitcoinj/wallet/Wallet;->findKeyFromPubKey([B)Lorg/bitcoinj/core/ECKey;

    move-result-object v3

    .line 4165
    if-eqz v3, :cond_af

    invoke-virtual {v3}, Lorg/bitcoinj/core/ECKey;->isEncrypted()Z

    move-result v4

    if-nez v4, :cond_ac

    invoke-virtual {v3}, Lorg/bitcoinj/core/ECKey;->hasPrivKey()Z

    move-result v3

    if-eqz v3, :cond_af

    :cond_ac
    move v0, v1

    .line 4166
    goto/16 :goto_1f

    .line 4168
    :cond_af
    invoke-virtual {p1}, Lorg/bitcoinj/script/Script;->getCLTVPaymentChannelRecipientPubKey()[B

    .line 4169
    invoke-virtual {p0, v0}, Lorg/bitcoinj/wallet/Wallet;->findKeyFromPubKey([B)Lorg/bitcoinj/core/ECKey;

    move-result-object v0

    .line 4170
    if-eqz v0, :cond_c7

    invoke-virtual {v0}, Lorg/bitcoinj/core/ECKey;->isEncrypted()Z

    move-result v3

    if-nez v3, :cond_c4

    invoke-virtual {v0}, Lorg/bitcoinj/core/ECKey;->hasPrivKey()Z

    move-result v0

    if-eqz v0, :cond_c7

    :cond_c4
    move v0, v1

    .line 4171
    goto/16 :goto_1f

    :cond_c7
    move v0, v2

    .line 4173
    goto/16 :goto_1f

    :cond_ca
    move v0, v2

    .line 4175
    goto/16 :goto_1f
.end method

.method public changeEncryptionKey(Lorg/bitcoinj/crypto/KeyCrypter;Lorg/spongycastle/crypto/params/KeyParameter;Lorg/spongycastle/crypto/params/KeyParameter;)V
    .registers 6

    .prologue
    .line 1266
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V

    .line 1268
    :try_start_5
    invoke-virtual {p0, p2}, Lorg/bitcoinj/wallet/Wallet;->decrypt(Lorg/spongycastle/crypto/params/KeyParameter;)V

    .line 1269
    invoke-virtual {p0, p1, p3}, Lorg/bitcoinj/wallet/Wallet;->encrypt(Lorg/bitcoinj/crypto/KeyCrypter;Lorg/spongycastle/crypto/params/KeyParameter;)V
    :try_end_b
    .catchall {:try_start_5 .. :try_end_b} :catchall_11

    .line 1271
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    .line 1272
    return-void

    .line 1271
    :catchall_11
    move-exception v0

    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    throw v0
.end method

.method public changeEncryptionPassword(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)V
    .registers 5

    .prologue
    .line 1255
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V

    .line 1257
    :try_start_5
    invoke-virtual {p0, p1}, Lorg/bitcoinj/wallet/Wallet;->decrypt(Ljava/lang/CharSequence;)V

    .line 1258
    invoke-virtual {p0, p2}, Lorg/bitcoinj/wallet/Wallet;->encrypt(Ljava/lang/CharSequence;)V
    :try_end_b
    .catchall {:try_start_5 .. :try_end_b} :catchall_11

    .line 1260
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    .line 1261
    return-void

    .line 1260
    :catchall_11
    move-exception v0

    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    throw v0
.end method

.method public checkAESKey(Lorg/spongycastle/crypto/params/KeyParameter;)Z
    .registers 4

    .prologue
    .line 1208
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V

    .line 1210
    :try_start_5
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroup:Lorg/bitcoinj/wallet/KeyChainGroup;

    invoke-virtual {v0, p1}, Lorg/bitcoinj/wallet/KeyChainGroup;->checkAESKey(Lorg/spongycastle/crypto/params/KeyParameter;)Z
    :try_end_a
    .catchall {:try_start_5 .. :try_end_a} :catchall_11

    move-result v0

    .line 1212
    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    .line 1210
    return v0

    .line 1212
    :catchall_11
    move-exception v0

    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    throw v0
.end method

.method public checkForFilterExhaustion(Lorg/bitcoinj/core/FilteredBlock;)Z
    .registers 7

    .prologue
    const/4 v1, 0x1

    const/4 v2, 0x0

    .line 4692
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V

    .line 4694
    :try_start_7
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroup:Lorg/bitcoinj/wallet/KeyChainGroup;

    invoke-virtual {v0}, Lorg/bitcoinj/wallet/KeyChainGroup;->getCombinedKeyLookaheadEpochs()I

    move-result v3

    .line 4695
    invoke-virtual {p1}, Lorg/bitcoinj/core/FilteredBlock;->getAssociatedTransactions()Ljava/util/Map;

    move-result-object v0

    invoke-interface {v0}, Ljava/util/Map;->values()Ljava/util/Collection;

    move-result-object v0

    invoke-interface {v0}, Ljava/util/Collection;->iterator()Ljava/util/Iterator;

    move-result-object v4

    :goto_19
    invoke-interface {v4}, Ljava/util/Iterator;->hasNext()Z

    move-result v0

    if-eqz v0, :cond_30

    invoke-interface {v4}, Ljava/util/Iterator;->next()Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Lorg/bitcoinj/core/Transaction;

    .line 4696
    invoke-direct {p0, v0}, Lorg/bitcoinj/wallet/Wallet;->markKeysAsUsed(Lorg/bitcoinj/core/Transaction;)V
    :try_end_28
    .catchall {:try_start_7 .. :try_end_28} :catchall_29

    goto :goto_19

    .line 4705
    :catchall_29
    move-exception v0

    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    throw v0

    .line 4698
    :cond_30
    :try_start_30
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroup:Lorg/bitcoinj/wallet/KeyChainGroup;

    invoke-virtual {v0}, Lorg/bitcoinj/wallet/KeyChainGroup;->getCombinedKeyLookaheadEpochs()I

    move-result v4

    .line 4699
    if-lt v4, v3, :cond_45

    move v0, v1

    :goto_39
    invoke-static {v0}, Lcom/google/common/base/n;->checkState(Z)V
    :try_end_3c
    .catchall {:try_start_30 .. :try_end_3c} :catchall_29

    .line 4703
    if-le v4, v3, :cond_47

    move v0, v1

    .line 4705
    :goto_3f
    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    .line 4703
    return v0

    :cond_45
    move v0, v2

    .line 4699
    goto :goto_39

    :cond_47
    move v0, v2

    .line 4703
    goto :goto_3f
.end method

.method public checkPassword(Ljava/lang/CharSequence;)Z
    .registers 4

    .prologue
    .line 1194
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V

    .line 1196
    :try_start_5
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroup:Lorg/bitcoinj/wallet/KeyChainGroup;

    invoke-virtual {v0, p1}, Lorg/bitcoinj/wallet/KeyChainGroup;->checkPassword(Ljava/lang/CharSequence;)Z
    :try_end_a
    .catchall {:try_start_5 .. :try_end_a} :catchall_11

    move-result v0

    .line 1198
    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    .line 1196
    return v0

    .line 1198
    :catchall_11
    move-exception v0

    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    throw v0
.end method

.method public cleanup()V
    .registers 7

    .prologue
    .line 3053
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V

    .line 3055
    const/4 v0, 0x0

    .line 3056
    :try_start_6
    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->pending:Ljava/util/Map;

    invoke-interface {v1}, Ljava/util/Map;->values()Ljava/util/Collection;

    move-result-object v1

    invoke-interface {v1}, Ljava/util/Collection;->iterator()Ljava/util/Iterator;

    move-result-object v2

    move v1, v0

    :cond_11
    :goto_11
    invoke-interface {v2}, Ljava/util/Iterator;->hasNext()Z

    move-result v0

    if-eqz v0, :cond_ae

    .line 3057
    invoke-interface {v2}, Ljava/util/Iterator;->next()Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Lorg/bitcoinj/core/Transaction;

    .line 3058
    const/4 v3, 0x0

    invoke-virtual {p0, v0, v3}, Lorg/bitcoinj/wallet/Wallet;->isTransactionRisky(Lorg/bitcoinj/core/Transaction;Ljava/util/List;)Z

    move-result v3

    if-eqz v3, :cond_11

    iget-boolean v3, p0, Lorg/bitcoinj/wallet/Wallet;->acceptRiskyTransactions:Z

    if-nez v3, :cond_11

    .line 3059
    sget-object v3, Lorg/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;

    const-string v4, "Found risky transaction {} in wallet during cleanup."

    invoke-virtual {v0}, Lorg/bitcoinj/core/Transaction;->getHashAsString()Ljava/lang/String;

    move-result-object v5

    invoke-interface {v3, v4, v5}, Lorg/slf4j/Logger;->debug(Ljava/lang/String;Ljava/lang/Object;)V

    .line 3060
    invoke-virtual {v0}, Lorg/bitcoinj/core/Transaction;->isAnyOutputSpent()Z

    move-result v3

    if-nez v3, :cond_a1

    .line 3062
    invoke-virtual {v0}, Lorg/bitcoinj/core/Transaction;->getInputs()Ljava/util/List;

    move-result-object v1

    invoke-interface {v1}, Ljava/util/List;->iterator()Ljava/util/Iterator;

    move-result-object v3

    :cond_41
    :goto_41
    invoke-interface {v3}, Ljava/util/Iterator;->hasNext()Z

    move-result v1

    if-eqz v1, :cond_6d

    invoke-interface {v3}, Ljava/util/Iterator;->next()Ljava/lang/Object;

    move-result-object v1

    check-cast v1, Lorg/bitcoinj/core/TransactionInput;

    .line 3063
    invoke-virtual {v1}, Lorg/bitcoinj/core/TransactionInput;->getConnectedOutput()Lorg/bitcoinj/core/TransactionOutput;

    move-result-object v4

    .line 3064
    if-eqz v4, :cond_41

    .line 3065
    invoke-virtual {v4, p0}, Lorg/bitcoinj/core/TransactionOutput;->isMineOrWatched(Lorg/bitcoinj/core/TransactionBag;)Z

    move-result v5

    if-eqz v5, :cond_62

    .line 3066
    iget-object v5, p0, Lorg/bitcoinj/wallet/Wallet;->myUnspents:Ljava/util/HashSet;

    invoke-virtual {v5, v4}, Ljava/util/HashSet;->add(Ljava/lang/Object;)Z

    move-result v4

    invoke-static {v4}, Lcom/google/common/base/n;->checkState(Z)V

    .line 3067
    :cond_62
    invoke-virtual {v1}, Lorg/bitcoinj/core/TransactionInput;->disconnect()Z
    :try_end_65
    .catchall {:try_start_6 .. :try_end_65} :catchall_66

    goto :goto_41

    .line 3090
    :catchall_66
    move-exception v0

    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    throw v0

    .line 3069
    :cond_6d
    :try_start_6d
    invoke-virtual {v0}, Lorg/bitcoinj/core/Transaction;->getOutputs()Ljava/util/List;

    move-result-object v1

    invoke-interface {v1}, Ljava/util/List;->iterator()Ljava/util/Iterator;

    move-result-object v3

    :goto_75
    invoke-interface {v3}, Ljava/util/Iterator;->hasNext()Z

    move-result v1

    if-eqz v1, :cond_87

    invoke-interface {v3}, Ljava/util/Iterator;->next()Ljava/lang/Object;

    move-result-object v1

    check-cast v1, Lorg/bitcoinj/core/TransactionOutput;

    .line 3070
    iget-object v4, p0, Lorg/bitcoinj/wallet/Wallet;->myUnspents:Ljava/util/HashSet;

    invoke-virtual {v4, v1}, Ljava/util/HashSet;->remove(Ljava/lang/Object;)Z

    goto :goto_75

    .line 3072
    :cond_87
    invoke-interface {v2}, Ljava/util/Iterator;->remove()V

    .line 3073
    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->transactions:Ljava/util/Map;

    invoke-virtual {v0}, Lorg/bitcoinj/core/Transaction;->getHash()Lorg/bitcoinj/core/Sha256Hash;

    move-result-object v3

    invoke-interface {v1, v3}, Ljava/util/Map;->remove(Ljava/lang/Object;)Ljava/lang/Object;

    .line 3074
    const/4 v1, 0x1

    .line 3075
    sget-object v3, Lorg/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;

    const-string v4, "Removed transaction {} from pending pool during cleanup."

    invoke-virtual {v0}, Lorg/bitcoinj/core/Transaction;->getHashAsString()Ljava/lang/String;

    move-result-object v0

    invoke-interface {v3, v4, v0}, Lorg/slf4j/Logger;->info(Ljava/lang/String;Ljava/lang/Object;)V

    goto/16 :goto_11

    .line 3077
    :cond_a1
    sget-object v3, Lorg/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;

    const-string v4, "Cannot remove transaction {} from pending pool during cleanup, as it\'s already spent partially."

    .line 3079
    invoke-virtual {v0}, Lorg/bitcoinj/core/Transaction;->getHashAsString()Ljava/lang/String;

    move-result-object v0

    .line 3077
    invoke-interface {v3, v4, v0}, Lorg/slf4j/Logger;->info(Ljava/lang/String;Ljava/lang/Object;)V

    goto/16 :goto_11

    .line 3083
    :cond_ae
    if-eqz v1, :cond_cf

    .line 3084
    invoke-virtual {p0}, Lorg/bitcoinj/wallet/Wallet;->isConsistentOrThrow()V

    .line 3085
    invoke-virtual {p0}, Lorg/bitcoinj/wallet/Wallet;->saveLater()V

    .line 3086
    sget-object v0, Lorg/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;

    invoke-interface {v0}, Lorg/slf4j/Logger;->isInfoEnabled()Z

    move-result v0

    if-eqz v0, :cond_cf

    .line 3087
    sget-object v0, Lorg/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;

    const-string v1, "Estimated balance is now: {}"

    sget-object v2, Lorg/bitcoinj/wallet/Wallet$BalanceType;->ESTIMATED:Lorg/bitcoinj/wallet/Wallet$BalanceType;

    invoke-virtual {p0, v2}, Lorg/bitcoinj/wallet/Wallet;->getBalance(Lorg/bitcoinj/wallet/Wallet$BalanceType;)Lorg/bitcoinj/core/Coin;

    move-result-object v2

    invoke-virtual {v2}, Lorg/bitcoinj/core/Coin;->toFriendlyString()Ljava/lang/String;

    move-result-object v2

    invoke-interface {v0, v1, v2}, Lorg/slf4j/Logger;->info(Ljava/lang/String;Ljava/lang/Object;)V
    :try_end_cf
    .catchall {:try_start_6d .. :try_end_cf} :catchall_66

    .line 3090
    :cond_cf
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    .line 3091
    return-void
.end method

.method public clearTransactions(I)V
    .registers 4

    .prologue
    .line 2996
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V

    .line 2998
    if-nez p1, :cond_13

    .line 2999
    :try_start_7
    invoke-direct {p0}, Lorg/bitcoinj/wallet/Wallet;->clearTransactions()V

    .line 3000
    invoke-virtual {p0}, Lorg/bitcoinj/wallet/Wallet;->saveLater()V
    :try_end_d
    .catchall {:try_start_7 .. :try_end_d} :catchall_19

    .line 3005
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    .line 3006
    return-void

    .line 3002
    :cond_13
    :try_start_13
    new-instance v0, Ljava/lang/UnsupportedOperationException;

    invoke-direct {v0}, Ljava/lang/UnsupportedOperationException;-><init>()V

    throw v0
    :try_end_19
    .catchall {:try_start_13 .. :try_end_19} :catchall_19

    .line 3005
    :catchall_19
    move-exception v0

    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    throw v0
.end method

.method public commitTx(Lorg/bitcoinj/core/Transaction;)V
    .registers 4

    .prologue
    .line 2498
    invoke-virtual {p0, p1}, Lorg/bitcoinj/wallet/Wallet;->maybeCommitTx(Lorg/bitcoinj/core/Transaction;)Z

    move-result v0

    const-string v1, "commitTx called on the same transaction twice"

    invoke-static {v0, v1}, Lcom/google/common/base/n;->checkArgument(ZLjava/lang/Object;)V

    .line 2499
    return-void
.end method

.method public completeTx(Lorg/bitcoinj/wallet/SendRequest;)V
    .registers 10

    .prologue
    const/4 v6, 0x0

    const/4 v4, 0x1

    .line 3923
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V

    .line 3925
    :try_start_7
    iget-boolean v0, p1, Lorg/bitcoinj/wallet/SendRequest;->completed:Z

    if-nez v0, :cond_34

    move v0, v4

    :goto_c
    const-string v1, "Given SendRequest has already been completed."

    invoke-static {v0, v1}, Lcom/google/common/base/n;->checkArgument(ZLjava/lang/Object;)V

    .line 3927
    sget-object v0, Lorg/bitcoinj/core/Coin;->ZERO:Lorg/bitcoinj/core/Coin;

    .line 3928
    iget-object v1, p1, Lorg/bitcoinj/wallet/SendRequest;->tx:Lorg/bitcoinj/core/Transaction;

    invoke-virtual {v1}, Lorg/bitcoinj/core/Transaction;->getOutputs()Ljava/util/List;

    move-result-object v1

    invoke-interface {v1}, Ljava/util/List;->iterator()Ljava/util/Iterator;

    move-result-object v1

    move-object v2, v0

    :goto_1e
    invoke-interface {v1}, Ljava/util/Iterator;->hasNext()Z

    move-result v0

    if-eqz v0, :cond_36

    invoke-interface {v1}, Ljava/util/Iterator;->next()Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Lorg/bitcoinj/core/TransactionOutput;

    .line 3929
    invoke-virtual {v0}, Lorg/bitcoinj/core/TransactionOutput;->getValue()Lorg/bitcoinj/core/Coin;

    move-result-object v0

    invoke-virtual {v2, v0}, Lorg/bitcoinj/core/Coin;->add(Lorg/bitcoinj/core/Coin;)Lorg/bitcoinj/core/Coin;

    move-result-object v0

    move-object v2, v0

    .line 3930
    goto :goto_1e

    :cond_34
    move v0, v6

    .line 3925
    goto :goto_c

    .line 3932
    :cond_36
    sget-object v0, Lorg/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;

    const-string v1, "Completing send tx with {} outputs totalling {} and a fee of {}/kB"

    const/4 v3, 0x3

    new-array v3, v3, [Ljava/lang/Object;

    const/4 v5, 0x0

    iget-object v7, p1, Lorg/bitcoinj/wallet/SendRequest;->tx:Lorg/bitcoinj/core/Transaction;

    invoke-virtual {v7}, Lorg/bitcoinj/core/Transaction;->getOutputs()Ljava/util/List;

    move-result-object v7

    invoke-interface {v7}, Ljava/util/List;->size()I

    move-result v7

    invoke-static {v7}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;

    move-result-object v7

    aput-object v7, v3, v5

    const/4 v5, 0x1

    .line 3933
    invoke-virtual {v2}, Lorg/bitcoinj/core/Coin;->toFriendlyString()Ljava/lang/String;

    move-result-object v7

    aput-object v7, v3, v5

    const/4 v5, 0x2

    iget-object v7, p1, Lorg/bitcoinj/wallet/SendRequest;->feePerKb:Lorg/bitcoinj/core/Coin;

    invoke-virtual {v7}, Lorg/bitcoinj/core/Coin;->toFriendlyString()Ljava/lang/String;

    move-result-object v7

    aput-object v7, v3, v5

    .line 3932
    invoke-interface {v0, v1, v3}, Lorg/slf4j/Logger;->info(Ljava/lang/String;[Ljava/lang/Object;)V

    .line 3936
    sget-object v0, Lorg/bitcoinj/core/Coin;->ZERO:Lorg/bitcoinj/core/Coin;

    .line 3937
    iget-object v1, p1, Lorg/bitcoinj/wallet/SendRequest;->tx:Lorg/bitcoinj/core/Transaction;

    invoke-virtual {v1}, Lorg/bitcoinj/core/Transaction;->getInputs()Ljava/util/List;

    move-result-object v1

    invoke-interface {v1}, Ljava/util/List;->iterator()Ljava/util/Iterator;

    move-result-object v3

    move-object v1, v0

    :goto_6e
    invoke-interface {v3}, Ljava/util/Iterator;->hasNext()Z

    move-result v0

    if-eqz v0, :cond_9d

    invoke-interface {v3}, Ljava/util/Iterator;->next()Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Lorg/bitcoinj/core/TransactionInput;

    .line 3938
    invoke-virtual {v0}, Lorg/bitcoinj/core/TransactionInput;->getConnectedOutput()Lorg/bitcoinj/core/TransactionOutput;

    move-result-object v5

    if-eqz v5, :cond_8e

    .line 3939
    invoke-virtual {v0}, Lorg/bitcoinj/core/TransactionInput;->getConnectedOutput()Lorg/bitcoinj/core/TransactionOutput;

    move-result-object v0

    invoke-virtual {v0}, Lorg/bitcoinj/core/TransactionOutput;->getValue()Lorg/bitcoinj/core/Coin;

    move-result-object v0

    invoke-virtual {v1, v0}, Lorg/bitcoinj/core/Coin;->add(Lorg/bitcoinj/core/Coin;)Lorg/bitcoinj/core/Coin;

    move-result-object v0

    move-object v1, v0

    goto :goto_6e

    .line 3941
    :cond_8e
    sget-object v0, Lorg/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;

    const-string v5, "SendRequest transaction already has inputs but we don\'t know how much they are worth - they will be added to fee."

    invoke-interface {v0, v5}, Lorg/slf4j/Logger;->warn(Ljava/lang/String;)V
    :try_end_95
    .catchall {:try_start_7 .. :try_end_95} :catchall_96

    goto :goto_6e

    .line 4024
    :catchall_96
    move-exception v0

    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    throw v0

    .line 3942
    :cond_9d
    :try_start_9d
    invoke-virtual {v2, v1}, Lorg/bitcoinj/core/Coin;->subtract(Lorg/bitcoinj/core/Coin;)Lorg/bitcoinj/core/Coin;

    move-result-object v2

    .line 3944
    new-instance v3, Ljava/util/ArrayList;

    iget-object v0, p1, Lorg/bitcoinj/wallet/SendRequest;->tx:Lorg/bitcoinj/core/Transaction;

    invoke-virtual {v0}, Lorg/bitcoinj/core/Transaction;->getInputs()Ljava/util/List;

    move-result-object v0

    invoke-direct {v3, v0}, Ljava/util/ArrayList;-><init>(Ljava/util/Collection;)V

    .line 3947
    iget-boolean v0, p1, Lorg/bitcoinj/wallet/SendRequest;->ensureMinRequiredFee:Z

    if-eqz v0, :cond_ed

    iget-boolean v0, p1, Lorg/bitcoinj/wallet/SendRequest;->emptyWallet:Z

    if-nez v0, :cond_ed

    .line 3949
    iget-object v0, p1, Lorg/bitcoinj/wallet/SendRequest;->tx:Lorg/bitcoinj/core/Transaction;

    invoke-virtual {v0}, Lorg/bitcoinj/core/Transaction;->getOutputs()Ljava/util/List;

    move-result-object v0

    invoke-interface {v0}, Ljava/util/List;->iterator()Ljava/util/Iterator;

    move-result-object v5

    move v1, v6

    :goto_bf
    invoke-interface {v5}, Ljava/util/Iterator;->hasNext()Z

    move-result v0

    if-eqz v0, :cond_e5

    invoke-interface {v5}, Ljava/util/Iterator;->next()Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Lorg/bitcoinj/core/TransactionOutput;

    .line 3950
    invoke-virtual {v0}, Lorg/bitcoinj/core/TransactionOutput;->isDust()Z

    move-result v7

    if-eqz v7, :cond_d7

    .line 3951
    new-instance v0, Lorg/bitcoinj/wallet/Wallet$DustySendRequested;

    invoke-direct {v0}, Lorg/bitcoinj/wallet/Wallet$DustySendRequested;-><init>()V

    throw v0

    .line 3952
    :cond_d7
    invoke-virtual {v0}, Lorg/bitcoinj/core/TransactionOutput;->getScriptPubKey()Lorg/bitcoinj/script/Script;

    move-result-object v0

    invoke-virtual {v0}, Lorg/bitcoinj/script/Script;->isOpReturn()Z

    move-result v0

    if-eqz v0, :cond_1f1

    .line 3953
    add-int/lit8 v0, v1, 0x1

    :goto_e3
    move v1, v0

    .line 3954
    goto :goto_bf

    .line 3955
    :cond_e5
    if-le v1, v4, :cond_ed

    .line 3956
    new-instance v0, Lorg/bitcoinj/wallet/Wallet$MultipleOpReturnRequested;

    invoke-direct {v0}, Lorg/bitcoinj/wallet/Wallet$MultipleOpReturnRequested;-><init>()V

    throw v0

    .line 3963
    :cond_ed
    const/4 v1, 0x1

    iget-object v0, p1, Lorg/bitcoinj/wallet/SendRequest;->missingSigsMode:Lorg/bitcoinj/wallet/Wallet$MissingSigsMode;

    sget-object v5, Lorg/bitcoinj/wallet/Wallet$MissingSigsMode;->THROW:Lorg/bitcoinj/wallet/Wallet$MissingSigsMode;

    if-ne v0, v5, :cond_124

    move v0, v4

    :goto_f5
    invoke-virtual {p0, v1, v0}, Lorg/bitcoinj/wallet/Wallet;->calculateAllSpendCandidates(ZZ)Ljava/util/List;

    move-result-object v5

    .line 3966
    const/4 v0, 0x0

    .line 3967
    iget-boolean v1, p1, Lorg/bitcoinj/wallet/SendRequest;->emptyWallet:Z

    if-nez v1, :cond_126

    .line 3969
    iget-boolean v4, p1, Lorg/bitcoinj/wallet/SendRequest;->ensureMinRequiredFee:Z

    move-object v0, p0

    move-object v1, p1

    invoke-virtual/range {v0 .. v5}, Lorg/bitcoinj/wallet/Wallet;->calculateFee(Lorg/bitcoinj/wallet/SendRequest;Lorg/bitcoinj/core/Coin;Ljava/util/List;ZLjava/util/List;)Lorg/bitcoinj/wallet/Wallet$FeeCalculation;

    move-result-object v0

    .line 3970
    iget-object v1, v0, Lorg/bitcoinj/wallet/Wallet$FeeCalculation;->bestCoinSelection:Lorg/bitcoinj/wallet/CoinSelection;

    .line 3971
    iget-object v0, v0, Lorg/bitcoinj/wallet/Wallet$FeeCalculation;->bestChangeOutput:Lorg/bitcoinj/core/TransactionOutput;

    move-object v2, v1

    move-object v1, v0

    .line 3983
    :goto_10c
    iget-object v0, v2, Lorg/bitcoinj/wallet/CoinSelection;->gathered:Ljava/util/Collection;

    invoke-interface {v0}, Ljava/util/Collection;->iterator()Ljava/util/Iterator;

    move-result-object v3

    :goto_112
    invoke-interface {v3}, Ljava/util/Iterator;->hasNext()Z

    move-result v0

    if-eqz v0, :cond_16a

    invoke-interface {v3}, Ljava/util/Iterator;->next()Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Lorg/bitcoinj/core/TransactionOutput;

    .line 3984
    iget-object v4, p1, Lorg/bitcoinj/wallet/SendRequest;->tx:Lorg/bitcoinj/core/Transaction;

    invoke-virtual {v4, v0}, Lorg/bitcoinj/core/Transaction;->addInput(Lorg/bitcoinj/core/TransactionOutput;)Lorg/bitcoinj/core/TransactionInput;

    goto :goto_112

    :cond_124
    move v0, v6

    .line 3963
    goto :goto_f5

    .line 3975
    :cond_126
    iget-object v1, p1, Lorg/bitcoinj/wallet/SendRequest;->tx:Lorg/bitcoinj/core/Transaction;

    invoke-virtual {v1}, Lorg/bitcoinj/core/Transaction;->getOutputs()Ljava/util/List;

    move-result-object v1

    invoke-interface {v1}, Ljava/util/List;->size()I

    move-result v1

    if-ne v1, v4, :cond_165

    move v1, v4

    :goto_133
    const-string v2, "Empty wallet TX must have a single output only."

    invoke-static {v1, v2}, Lcom/google/common/base/n;->checkState(ZLjava/lang/Object;)V

    .line 3976
    iget-object v1, p1, Lorg/bitcoinj/wallet/SendRequest;->coinSelector:Lorg/bitcoinj/wallet/CoinSelector;

    if-nez v1, :cond_167

    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->coinSelector:Lorg/bitcoinj/wallet/CoinSelector;

    .line 3977
    :goto_13e
    iget-object v2, p0, Lorg/bitcoinj/wallet/Wallet;->params:Lorg/bitcoinj/core/NetworkParameters;

    invoke-virtual {v2}, Lorg/bitcoinj/core/NetworkParameters;->getMaxMoney()Lorg/bitcoinj/core/Coin;

    move-result-object v2

    invoke-interface {v1, v2, v5}, Lorg/bitcoinj/wallet/CoinSelector;->select(Lorg/bitcoinj/core/Coin;Ljava/util/List;)Lorg/bitcoinj/wallet/CoinSelection;

    move-result-object v1

    .line 3979
    iget-object v2, p1, Lorg/bitcoinj/wallet/SendRequest;->tx:Lorg/bitcoinj/core/Transaction;

    const-wide/16 v4, 0x0

    invoke-virtual {v2, v4, v5}, Lorg/bitcoinj/core/Transaction;->getOutput(J)Lorg/bitcoinj/core/TransactionOutput;

    move-result-object v2

    iget-object v3, v1, Lorg/bitcoinj/wallet/CoinSelection;->valueGathered:Lorg/bitcoinj/core/Coin;

    invoke-virtual {v2, v3}, Lorg/bitcoinj/core/TransactionOutput;->setValue(Lorg/bitcoinj/core/Coin;)V

    .line 3980
    sget-object v2, Lorg/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;

    const-string v3, "  emptying {}"

    iget-object v4, v1, Lorg/bitcoinj/wallet/CoinSelection;->valueGathered:Lorg/bitcoinj/core/Coin;

    invoke-virtual {v4}, Lorg/bitcoinj/core/Coin;->toFriendlyString()Ljava/lang/String;

    move-result-object v4

    invoke-interface {v2, v3, v4}, Lorg/slf4j/Logger;->info(Ljava/lang/String;Ljava/lang/Object;)V

    move-object v2, v1

    move-object v1, v0

    goto :goto_10c

    :cond_165
    move v1, v6

    .line 3975
    goto :goto_133

    .line 3976
    :cond_167
    iget-object v1, p1, Lorg/bitcoinj/wallet/SendRequest;->coinSelector:Lorg/bitcoinj/wallet/CoinSelector;

    goto :goto_13e

    .line 3986
    :cond_16a
    iget-boolean v0, p1, Lorg/bitcoinj/wallet/SendRequest;->emptyWallet:Z

    if-eqz v0, :cond_187

    .line 3987
    iget-object v0, p1, Lorg/bitcoinj/wallet/SendRequest;->feePerKb:Lorg/bitcoinj/core/Coin;

    if-nez v0, :cond_184

    sget-object v0, Lorg/bitcoinj/core/Coin;->ZERO:Lorg/bitcoinj/core/Coin;

    .line 3988
    :goto_174
    iget-object v3, p1, Lorg/bitcoinj/wallet/SendRequest;->tx:Lorg/bitcoinj/core/Transaction;

    iget-boolean v4, p1, Lorg/bitcoinj/wallet/SendRequest;->ensureMinRequiredFee:Z

    invoke-direct {p0, v3, v2, v0, v4}, Lorg/bitcoinj/wallet/Wallet;->adjustOutputDownwardsForFee(Lorg/bitcoinj/core/Transaction;Lorg/bitcoinj/wallet/CoinSelection;Lorg/bitcoinj/core/Coin;Z)Z

    move-result v0

    if-nez v0, :cond_187

    .line 3989
    new-instance v0, Lorg/bitcoinj/wallet/Wallet$CouldNotAdjustDownwards;

    invoke-direct {v0}, Lorg/bitcoinj/wallet/Wallet$CouldNotAdjustDownwards;-><init>()V

    throw v0

    .line 3987
    :cond_184
    iget-object v0, p1, Lorg/bitcoinj/wallet/SendRequest;->feePerKb:Lorg/bitcoinj/core/Coin;

    goto :goto_174

    .line 3992
    :cond_187
    if-eqz v1, :cond_19d

    .line 3993
    iget-object v0, p1, Lorg/bitcoinj/wallet/SendRequest;->tx:Lorg/bitcoinj/core/Transaction;

    invoke-virtual {v0, v1}, Lorg/bitcoinj/core/Transaction;->addOutput(Lorg/bitcoinj/core/TransactionOutput;)Lorg/bitcoinj/core/TransactionOutput;

    .line 3994
    sget-object v0, Lorg/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;

    const-string v2, "  with {} change"

    invoke-virtual {v1}, Lorg/bitcoinj/core/TransactionOutput;->getValue()Lorg/bitcoinj/core/Coin;

    move-result-object v1

    invoke-virtual {v1}, Lorg/bitcoinj/core/Coin;->toFriendlyString()Ljava/lang/String;

    move-result-object v1

    invoke-interface {v0, v2, v1}, Lorg/slf4j/Logger;->info(Ljava/lang/String;Ljava/lang/Object;)V

    .line 3998
    :cond_19d
    iget-boolean v0, p1, Lorg/bitcoinj/wallet/SendRequest;->shuffleOutputs:Z

    if-eqz v0, :cond_1a6

    .line 3999
    iget-object v0, p1, Lorg/bitcoinj/wallet/SendRequest;->tx:Lorg/bitcoinj/core/Transaction;

    invoke-virtual {v0}, Lorg/bitcoinj/core/Transaction;->shuffleOutputs()V

    .line 4002
    :cond_1a6
    iget-boolean v0, p1, Lorg/bitcoinj/wallet/SendRequest;->signInputs:Z

    if-eqz v0, :cond_1ad

    .line 4003
    invoke-virtual {p0, p1}, Lorg/bitcoinj/wallet/Wallet;->signTransaction(Lorg/bitcoinj/wallet/SendRequest;)V

    .line 4006
    :cond_1ad
    iget-object v0, p1, Lorg/bitcoinj/wallet/SendRequest;->tx:Lorg/bitcoinj/core/Transaction;

    invoke-virtual {v0}, Lorg/bitcoinj/core/Transaction;->unsafeBitcoinSerialize()[B

    move-result-object v0

    array-length v0, v0

    .line 4007
    const v1, 0x186a0

    if-le v0, v1, :cond_1bf

    .line 4008
    new-instance v0, Lorg/bitcoinj/wallet/Wallet$ExceededMaxTransactionSize;

    invoke-direct {v0}, Lorg/bitcoinj/wallet/Wallet$ExceededMaxTransactionSize;-><init>()V

    throw v0

    .line 4013
    :cond_1bf
    iget-object v0, p1, Lorg/bitcoinj/wallet/SendRequest;->tx:Lorg/bitcoinj/core/Transaction;

    invoke-virtual {v0}, Lorg/bitcoinj/core/Transaction;->getConfidence()Lorg/bitcoinj/core/TransactionConfidence;

    move-result-object v0

    sget-object v1, Lorg/bitcoinj/core/TransactionConfidence$Source;->SELF:Lorg/bitcoinj/core/TransactionConfidence$Source;

    invoke-virtual {v0, v1}, Lorg/bitcoinj/core/TransactionConfidence;->setSource(Lorg/bitcoinj/core/TransactionConfidence$Source;)V

    .line 4017
    iget-object v0, p1, Lorg/bitcoinj/wallet/SendRequest;->tx:Lorg/bitcoinj/core/Transaction;

    sget-object v1, Lorg/bitcoinj/core/Transaction$Purpose;->USER_PAYMENT:Lorg/bitcoinj/core/Transaction$Purpose;

    invoke-virtual {v0, v1}, Lorg/bitcoinj/core/Transaction;->setPurpose(Lorg/bitcoinj/core/Transaction$Purpose;)V

    .line 4019
    iget-object v0, p1, Lorg/bitcoinj/wallet/SendRequest;->tx:Lorg/bitcoinj/core/Transaction;

    iget-object v1, p1, Lorg/bitcoinj/wallet/SendRequest;->exchangeRate:Lorg/bitcoinj/utils/ExchangeRate;

    invoke-virtual {v0, v1}, Lorg/bitcoinj/core/Transaction;->setExchangeRate(Lorg/bitcoinj/utils/ExchangeRate;)V

    .line 4020
    iget-object v0, p1, Lorg/bitcoinj/wallet/SendRequest;->tx:Lorg/bitcoinj/core/Transaction;

    iget-object v1, p1, Lorg/bitcoinj/wallet/SendRequest;->memo:Ljava/lang/String;

    invoke-virtual {v0, v1}, Lorg/bitcoinj/core/Transaction;->setMemo(Ljava/lang/String;)V

    .line 4021
    const/4 v0, 0x1

    iput-boolean v0, p1, Lorg/bitcoinj/wallet/SendRequest;->completed:Z

    .line 4022
    sget-object v0, Lorg/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;

    const-string v1, "  completed: {}"

    iget-object v2, p1, Lorg/bitcoinj/wallet/SendRequest;->tx:Lorg/bitcoinj/core/Transaction;

    invoke-interface {v0, v1, v2}, Lorg/slf4j/Logger;->info(Ljava/lang/String;Ljava/lang/Object;)V
    :try_end_1eb
    .catchall {:try_start_9d .. :try_end_1eb} :catchall_96

    .line 4024
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    .line 4025
    return-void

    :cond_1f1
    move v0, v1

    goto/16 :goto_e3
.end method

.method public createSend(Lorg/bitcoinj/core/Address;Lorg/bitcoinj/core/Coin;)Lorg/bitcoinj/core/Transaction;
    .registers 6

    .prologue
    .line 3743
    invoke-static {p1, p2}, Lorg/bitcoinj/wallet/SendRequest;->to(Lorg/bitcoinj/core/Address;Lorg/bitcoinj/core/Coin;)Lorg/bitcoinj/wallet/SendRequest;

    move-result-object v0

    .line 3744
    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->params:Lorg/bitcoinj/core/NetworkParameters;

    invoke-virtual {v1}, Lorg/bitcoinj/core/NetworkParameters;->getId()Ljava/lang/String;

    move-result-object v1

    const-string v2, "org.bitcoinj.unittest"

    invoke-virtual {v1, v2}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z

    move-result v1

    if-eqz v1, :cond_15

    .line 3745
    const/4 v1, 0x0

    iput-boolean v1, v0, Lorg/bitcoinj/wallet/SendRequest;->shuffleOutputs:Z

    .line 3746
    :cond_15
    invoke-virtual {p0, v0}, Lorg/bitcoinj/wallet/Wallet;->completeTx(Lorg/bitcoinj/wallet/SendRequest;)V

    .line 3747
    iget-object v0, v0, Lorg/bitcoinj/wallet/SendRequest;->tx:Lorg/bitcoinj/core/Transaction;

    return-object v0
.end method

.method public currentAddress(Lorg/bitcoinj/wallet/KeyChain$KeyPurpose;)Lorg/bitcoinj/core/Address;
    .registers 4

    .prologue
    .line 433
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V

    .line 435
    :try_start_5
    invoke-direct {p0}, Lorg/bitcoinj/wallet/Wallet;->maybeUpgradeToHD()V

    .line 436
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroup:Lorg/bitcoinj/wallet/KeyChainGroup;

    invoke-virtual {v0, p1}, Lorg/bitcoinj/wallet/KeyChainGroup;->currentAddress(Lorg/bitcoinj/wallet/KeyChain$KeyPurpose;)Lorg/bitcoinj/core/Address;
    :try_end_d
    .catchall {:try_start_5 .. :try_end_d} :catchall_14

    move-result-object v0

    .line 438
    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    .line 436
    return-object v0

    .line 438
    :catchall_14
    move-exception v0

    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    throw v0
.end method

.method public currentChangeAddress()Lorg/bitcoinj/core/Address;
    .registers 2

    .prologue
    .line 652
    sget-object v0, Lorg/bitcoinj/wallet/KeyChain$KeyPurpose;->CHANGE:Lorg/bitcoinj/wallet/KeyChain$KeyPurpose;

    invoke-virtual {p0, v0}, Lorg/bitcoinj/wallet/Wallet;->currentAddress(Lorg/bitcoinj/wallet/KeyChain$KeyPurpose;)Lorg/bitcoinj/core/Address;

    move-result-object v0

    return-object v0
.end method

.method public currentKey(Lorg/bitcoinj/wallet/KeyChain$KeyPurpose;)Lorg/bitcoinj/crypto/DeterministicKey;
    .registers 4

    .prologue
    .line 412
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V

    .line 414
    :try_start_5
    invoke-direct {p0}, Lorg/bitcoinj/wallet/Wallet;->maybeUpgradeToHD()V

    .line 415
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroup:Lorg/bitcoinj/wallet/KeyChainGroup;

    invoke-virtual {v0, p1}, Lorg/bitcoinj/wallet/KeyChainGroup;->currentKey(Lorg/bitcoinj/wallet/KeyChain$KeyPurpose;)Lorg/bitcoinj/crypto/DeterministicKey;
    :try_end_d
    .catchall {:try_start_5 .. :try_end_d} :catchall_14

    move-result-object v0

    .line 417
    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    .line 415
    return-object v0

    .line 417
    :catchall_14
    move-exception v0

    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    throw v0
.end method

.method public currentReceiveAddress()Lorg/bitcoinj/core/Address;
    .registers 2

    .prologue
    .line 447
    sget-object v0, Lorg/bitcoinj/wallet/KeyChain$KeyPurpose;->RECEIVE_FUNDS:Lorg/bitcoinj/wallet/KeyChain$KeyPurpose;

    invoke-virtual {p0, v0}, Lorg/bitcoinj/wallet/Wallet;->currentAddress(Lorg/bitcoinj/wallet/KeyChain$KeyPurpose;)Lorg/bitcoinj/core/Address;

    move-result-object v0

    return-object v0
.end method

.method public currentReceiveKey()Lorg/bitcoinj/crypto/DeterministicKey;
    .registers 2

    .prologue
    .line 426
    sget-object v0, Lorg/bitcoinj/wallet/KeyChain$KeyPurpose;->RECEIVE_FUNDS:Lorg/bitcoinj/wallet/KeyChain$KeyPurpose;

    invoke-virtual {p0, v0}, Lorg/bitcoinj/wallet/Wallet;->currentKey(Lorg/bitcoinj/wallet/KeyChain$KeyPurpose;)Lorg/bitcoinj/crypto/DeterministicKey;

    move-result-object v0

    return-object v0
.end method

.method public decrypt(Ljava/lang/CharSequence;)V
    .registers 5

    .prologue
    .line 1159
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V

    .line 1161
    :try_start_5
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroup:Lorg/bitcoinj/wallet/KeyChainGroup;

    invoke-virtual {v0}, Lorg/bitcoinj/wallet/KeyChainGroup;->getKeyCrypter()Lorg/bitcoinj/crypto/KeyCrypter;

    move-result-object v1

    .line 1162
    if-eqz v1, :cond_25

    const/4 v0, 0x1

    :goto_e
    const-string v2, "Not encrypted"

    invoke-static {v0, v2}, Lcom/google/common/base/n;->checkState(ZLjava/lang/Object;)V

    .line 1163
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroup:Lorg/bitcoinj/wallet/KeyChainGroup;

    invoke-interface {v1, p1}, Lorg/bitcoinj/crypto/KeyCrypter;->deriveKey(Ljava/lang/CharSequence;)Lorg/spongycastle/crypto/params/KeyParameter;

    move-result-object v1

    invoke-virtual {v0, v1}, Lorg/bitcoinj/wallet/KeyChainGroup;->decrypt(Lorg/spongycastle/crypto/params/KeyParameter;)V
    :try_end_1c
    .catchall {:try_start_5 .. :try_end_1c} :catchall_27

    .line 1165
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    .line 1167
    invoke-virtual {p0}, Lorg/bitcoinj/wallet/Wallet;->saveNow()V

    .line 1168
    return-void

    .line 1162
    :cond_25
    const/4 v0, 0x0

    goto :goto_e

    .line 1165
    :catchall_27
    move-exception v0

    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    throw v0
.end method

.method public decrypt(Lorg/spongycastle/crypto/params/KeyParameter;)V
    .registers 4

    .prologue
    .line 1177
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V

    .line 1179
    :try_start_5
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroup:Lorg/bitcoinj/wallet/KeyChainGroup;

    invoke-virtual {v0, p1}, Lorg/bitcoinj/wallet/KeyChainGroup;->decrypt(Lorg/spongycastle/crypto/params/KeyParameter;)V
    :try_end_a
    .catchall {:try_start_5 .. :try_end_a} :catchall_13

    .line 1181
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    .line 1183
    invoke-virtual {p0}, Lorg/bitcoinj/wallet/Wallet;->saveNow()V

    .line 1184
    return-void

    .line 1181
    :catchall_13
    move-exception v0

    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    throw v0
.end method

.method public deserializeExtension(Lorg/bitcoinj/wallet/WalletExtension;[B)V
    .registers 6

    .prologue
    .line 4783
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V

    .line 4784
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V

    .line 4787
    :try_start_a
    invoke-interface {p1, p0, p2}, Lorg/bitcoinj/wallet/WalletExtension;->deserializeWalletExtension(Lorg/bitcoinj/wallet/Wallet;[B)V

    .line 4788
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->extensions:Ljava/util/HashMap;

    invoke-interface {p1}, Lorg/bitcoinj/wallet/WalletExtension;->getWalletExtensionID()Ljava/lang/String;

    move-result-object v1

    invoke-virtual {v0, v1, p1}, Ljava/util/HashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
    :try_end_16
    .catch Ljava/lang/Throwable; {:try_start_a .. :try_end_16} :catch_21
    .catchall {:try_start_a .. :try_end_16} :catchall_40

    .line 4794
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    .line 4795
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    .line 4796
    :goto_20
    return-void

    .line 4789
    :catch_21
    move-exception v0

    .line 4790
    :try_start_22
    sget-object v1, Lorg/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;

    const-string v2, "Error during extension deserialization"

    invoke-interface {v1, v2, v0}, Lorg/slf4j/Logger;->error(Ljava/lang/String;Ljava/lang/Throwable;)V

    .line 4791
    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->extensions:Ljava/util/HashMap;

    invoke-interface {p1}, Lorg/bitcoinj/wallet/WalletExtension;->getWalletExtensionID()Ljava/lang/String;

    move-result-object v2

    invoke-virtual {v1, v2}, Ljava/util/HashMap;->remove(Ljava/lang/Object;)Ljava/lang/Object;

    .line 4792
    invoke-static {v0}, Lcom/google/common/base/v;->c(Ljava/lang/Throwable;)Ljava/lang/RuntimeException;
    :try_end_35
    .catchall {:try_start_22 .. :try_end_35} :catchall_40

    .line 4794
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    .line 4795
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    goto :goto_20

    .line 4794
    :catchall_40
    move-exception v0

    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    .line 4795
    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    throw v0
.end method

.method public doMaintenance(Lorg/spongycastle/crypto/params/KeyParameter;Z)Lcom/google/common/util/concurrent/y;
    .registers 9
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "(",
            "Lorg/spongycastle/crypto/params/KeyParameter;",
            "Z)",
            "Lcom/google/common/util/concurrent/y",
            "<",
            "Ljava/util/List",
            "<",
            "Lorg/bitcoinj/core/Transaction;",
            ">;>;"
        }
    .end annotation

    .prologue
    .line 5147
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V

    .line 5148
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V

    .line 5150
    :try_start_a
    invoke-direct {p0, p1, p2}, Lorg/bitcoinj/wallet/Wallet;->maybeRotateKeys(Lorg/spongycastle/crypto/params/KeyParameter;Z)Ljava/util/List;

    move-result-object v1

    .line 5151
    if-nez p2, :cond_1f

    .line 5152
    invoke-static {v1}, Lcom/google/common/util/concurrent/r;->ag(Ljava/lang/Object;)Lcom/google/common/util/concurrent/y;
    :try_end_13
    .catchall {:try_start_a .. :try_end_13} :catchall_6d

    move-result-object v0

    .line 5154
    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    .line 5155
    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    .line 5179
    :goto_1e
    return-object v0

    .line 5154
    :cond_1f
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    .line 5155
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    .line 5157
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->isHeldByCurrentThread()Z

    move-result v0

    if-nez v0, :cond_79

    const/4 v0, 0x1

    :goto_32
    invoke-static {v0}, Lcom/google/common/base/n;->checkState(Z)V

    .line 5158
    new-instance v2, Ljava/util/ArrayList;

    invoke-interface {v1}, Ljava/util/List;->size()I

    move-result v0

    invoke-direct {v2, v0}, Ljava/util/ArrayList;-><init>(I)V

    .line 5159
    iget-object v3, p0, Lorg/bitcoinj/wallet/Wallet;->vTransactionBroadcaster:Lorg/bitcoinj/core/TransactionBroadcaster;

    .line 5160
    invoke-interface {v1}, Ljava/util/List;->iterator()Ljava/util/Iterator;

    move-result-object v1

    :goto_44
    invoke-interface {v1}, Ljava/util/Iterator;->hasNext()Z

    move-result v0

    if-eqz v0, :cond_7b

    invoke-interface {v1}, Ljava/util/Iterator;->next()Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Lorg/bitcoinj/core/Transaction;

    .line 5162
    :try_start_50
    invoke-interface {v3, v0}, Lorg/bitcoinj/core/TransactionBroadcaster;->broadcastTransaction(Lorg/bitcoinj/core/Transaction;)Lorg/bitcoinj/core/TransactionBroadcast;

    move-result-object v0

    invoke-virtual {v0}, Lorg/bitcoinj/core/TransactionBroadcast;->future()Lcom/google/common/util/concurrent/y;

    move-result-object v0

    .line 5163
    invoke-virtual {v2, v0}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z

    .line 5164
    new-instance v4, Lorg/bitcoinj/wallet/Wallet$10;

    invoke-direct {v4, p0}, Lorg/bitcoinj/wallet/Wallet$10;-><init>(Lorg/bitcoinj/wallet/Wallet;)V

    invoke-static {v0, v4}, Lcom/google/common/util/concurrent/r;->a(Lcom/google/common/util/concurrent/y;Lcom/google/common/util/concurrent/q;)V
    :try_end_63
    .catch Ljava/lang/Exception; {:try_start_50 .. :try_end_63} :catch_64

    goto :goto_44

    .line 5175
    :catch_64
    move-exception v0

    .line 5176
    sget-object v4, Lorg/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;

    const-string v5, "Failed to broadcast rekey tx"

    invoke-interface {v4, v5, v0}, Lorg/slf4j/Logger;->error(Ljava/lang/String;Ljava/lang/Throwable;)V

    goto :goto_44

    .line 5154
    :catchall_6d
    move-exception v0

    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    .line 5155
    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    throw v0

    .line 5157
    :cond_79
    const/4 v0, 0x0

    goto :goto_32

    .line 5179
    :cond_7b
    invoke-static {v2}, Lcom/google/common/util/concurrent/r;->k(Ljava/lang/Iterable;)Lcom/google/common/util/concurrent/y;

    move-result-object v0

    goto :goto_1e
.end method

.method public encrypt(Ljava/lang/CharSequence;)V
    .registers 5

    .prologue
    .line 1126
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V

    .line 1128
    :try_start_5
    new-instance v0, Lorg/bitcoinj/crypto/KeyCrypterScrypt;

    invoke-direct {v0}, Lorg/bitcoinj/crypto/KeyCrypterScrypt;-><init>()V

    .line 1129
    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroup:Lorg/bitcoinj/wallet/KeyChainGroup;

    invoke-virtual {v0, p1}, Lorg/bitcoinj/crypto/KeyCrypterScrypt;->deriveKey(Ljava/lang/CharSequence;)Lorg/spongycastle/crypto/params/KeyParameter;

    move-result-object v2

    invoke-virtual {v1, v0, v2}, Lorg/bitcoinj/wallet/KeyChainGroup;->encrypt(Lorg/bitcoinj/crypto/KeyCrypter;Lorg/spongycastle/crypto/params/KeyParameter;)V
    :try_end_13
    .catchall {:try_start_5 .. :try_end_13} :catchall_1c

    .line 1131
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    .line 1133
    invoke-virtual {p0}, Lorg/bitcoinj/wallet/Wallet;->saveNow()V

    .line 1134
    return-void

    .line 1131
    :catchall_1c
    move-exception v0

    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    throw v0
.end method

.method public encrypt(Lorg/bitcoinj/crypto/KeyCrypter;Lorg/spongycastle/crypto/params/KeyParameter;)V
    .registers 5

    .prologue
    .line 1145
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V

    .line 1147
    :try_start_5
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroup:Lorg/bitcoinj/wallet/KeyChainGroup;

    invoke-virtual {v0, p1, p2}, Lorg/bitcoinj/wallet/KeyChainGroup;->encrypt(Lorg/bitcoinj/crypto/KeyCrypter;Lorg/spongycastle/crypto/params/KeyParameter;)V
    :try_end_a
    .catchall {:try_start_5 .. :try_end_a} :catchall_13

    .line 1149
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    .line 1151
    invoke-virtual {p0}, Lorg/bitcoinj/wallet/Wallet;->saveNow()V

    .line 1152
    return-void

    .line 1149
    :catchall_13
    move-exception v0

    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    throw v0
.end method

.method public endBloomFilterCalculation()V
    .registers 2

    .prologue
    .line 4589
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->bloomFilterGuard:Ljava/util/concurrent/atomic/AtomicInteger;

    invoke-virtual {v0}, Ljava/util/concurrent/atomic/AtomicInteger;->decrementAndGet()I

    move-result v0

    if-lez v0, :cond_9

    .line 4594
    :goto_8
    return-void

    .line 4591
    :cond_9
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->bloomOutPoints:Ljava/util/ArrayList;

    invoke-virtual {v0}, Ljava/util/ArrayList;->clear()V

    .line 4592
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    .line 4593
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    goto :goto_8
.end method

.method public findKeyFromPubHash([B)Lorg/bitcoinj/core/ECKey;
    .registers 4

    .prologue
    .line 983
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V

    .line 985
    :try_start_5
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroup:Lorg/bitcoinj/wallet/KeyChainGroup;

    invoke-virtual {v0, p1}, Lorg/bitcoinj/wallet/KeyChainGroup;->findKeyFromPubHash([B)Lorg/bitcoinj/core/ECKey;
    :try_end_a
    .catchall {:try_start_5 .. :try_end_a} :catchall_11

    move-result-object v0

    .line 987
    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    .line 985
    return-object v0

    .line 987
    :catchall_11
    move-exception v0

    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    throw v0
.end method

.method public findKeyFromPubKey([B)Lorg/bitcoinj/core/ECKey;
    .registers 4

    .prologue
    .line 1025
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V

    .line 1027
    :try_start_5
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroup:Lorg/bitcoinj/wallet/KeyChainGroup;

    invoke-virtual {v0, p1}, Lorg/bitcoinj/wallet/KeyChainGroup;->findKeyFromPubKey([B)Lorg/bitcoinj/core/ECKey;
    :try_end_a
    .catchall {:try_start_5 .. :try_end_a} :catchall_11

    move-result-object v0

    .line 1029
    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    .line 1027
    return-object v0

    .line 1029
    :catchall_11
    move-exception v0

    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    throw v0
.end method

.method public findRedeemDataFromScriptHash([B)Lorg/bitcoinj/wallet/RedeemData;
    .registers 4

    .prologue
    .line 1046
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V

    .line 1048
    :try_start_5
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroup:Lorg/bitcoinj/wallet/KeyChainGroup;

    invoke-virtual {v0, p1}, Lorg/bitcoinj/wallet/KeyChainGroup;->findRedeemDataFromScriptHash([B)Lorg/bitcoinj/wallet/RedeemData;
    :try_end_a
    .catchall {:try_start_5 .. :try_end_a} :catchall_11

    move-result-object v0

    .line 1050
    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    .line 1048
    return-object v0

    .line 1050
    :catchall_11
    move-exception v0

    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    throw v0
.end method

.method public freshAddress(Lorg/bitcoinj/wallet/KeyChain$KeyPurpose;)Lorg/bitcoinj/core/Address;
    .registers 4

    .prologue
    .line 498
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V

    .line 500
    :try_start_5
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroup:Lorg/bitcoinj/wallet/KeyChainGroup;

    invoke-virtual {v0, p1}, Lorg/bitcoinj/wallet/KeyChainGroup;->freshAddress(Lorg/bitcoinj/wallet/KeyChain$KeyPurpose;)Lorg/bitcoinj/core/Address;
    :try_end_a
    .catchall {:try_start_5 .. :try_end_a} :catchall_14

    move-result-object v0

    .line 502
    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    .line 504
    invoke-virtual {p0}, Lorg/bitcoinj/wallet/Wallet;->saveNow()V

    .line 505
    return-object v0

    .line 502
    :catchall_14
    move-exception v0

    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    throw v0
.end method

.method public freshKey(Lorg/bitcoinj/wallet/KeyChain$KeyPurpose;)Lorg/bitcoinj/crypto/DeterministicKey;
    .registers 4

    .prologue
    .line 459
    const/4 v0, 0x1

    invoke-virtual {p0, p1, v0}, Lorg/bitcoinj/wallet/Wallet;->freshKeys(Lorg/bitcoinj/wallet/KeyChain$KeyPurpose;I)Ljava/util/List;

    move-result-object v0

    const/4 v1, 0x0

    invoke-interface {v0, v1}, Ljava/util/List;->get(I)Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Lorg/bitcoinj/crypto/DeterministicKey;

    return-object v0
.end method

.method public freshKeys(Lorg/bitcoinj/wallet/KeyChain$KeyPurpose;I)Ljava/util/List;
    .registers 5
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "(",
            "Lorg/bitcoinj/wallet/KeyChain$KeyPurpose;",
            "I)",
            "Ljava/util/List",
            "<",
            "Lorg/bitcoinj/crypto/DeterministicKey;",
            ">;"
        }
    .end annotation

    .prologue
    .line 472
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V

    .line 474
    :try_start_5
    invoke-direct {p0}, Lorg/bitcoinj/wallet/Wallet;->maybeUpgradeToHD()V

    .line 475
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroup:Lorg/bitcoinj/wallet/KeyChainGroup;

    invoke-virtual {v0, p1, p2}, Lorg/bitcoinj/wallet/KeyChainGroup;->freshKeys(Lorg/bitcoinj/wallet/KeyChain$KeyPurpose;I)Ljava/util/List;
    :try_end_d
    .catchall {:try_start_5 .. :try_end_d} :catchall_17

    move-result-object v0

    .line 477
    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    .line 481
    invoke-virtual {p0}, Lorg/bitcoinj/wallet/Wallet;->saveNow()V

    .line 482
    return-object v0

    .line 477
    :catchall_17
    move-exception v0

    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    throw v0
.end method

.method public freshReceiveAddress()Lorg/bitcoinj/core/Address;
    .registers 2

    .prologue
    .line 513
    sget-object v0, Lorg/bitcoinj/wallet/KeyChain$KeyPurpose;->RECEIVE_FUNDS:Lorg/bitcoinj/wallet/KeyChain$KeyPurpose;

    invoke-virtual {p0, v0}, Lorg/bitcoinj/wallet/Wallet;->freshAddress(Lorg/bitcoinj/wallet/KeyChain$KeyPurpose;)Lorg/bitcoinj/core/Address;

    move-result-object v0

    return-object v0
.end method

.method public freshReceiveKey()Lorg/bitcoinj/crypto/DeterministicKey;
    .registers 2

    .prologue
    .line 490
    sget-object v0, Lorg/bitcoinj/wallet/KeyChain$KeyPurpose;->RECEIVE_FUNDS:Lorg/bitcoinj/wallet/KeyChain$KeyPurpose;

    invoke-virtual {p0, v0}, Lorg/bitcoinj/wallet/Wallet;->freshKey(Lorg/bitcoinj/wallet/KeyChain$KeyPurpose;)Lorg/bitcoinj/crypto/DeterministicKey;

    move-result-object v0

    return-object v0
.end method

.method public getActiveKeyChain()Lorg/bitcoinj/wallet/DeterministicKeyChain;
    .registers 2

    .prologue
    .line 370
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroup:Lorg/bitcoinj/wallet/KeyChainGroup;

    invoke-virtual {v0}, Lorg/bitcoinj/wallet/KeyChainGroup;->getActiveKeyChain()Lorg/bitcoinj/wallet/DeterministicKeyChain;

    move-result-object v0

    return-object v0
.end method

.method public getBalance()Lorg/bitcoinj/core/Coin;
    .registers 2

    .prologue
    .line 3492
    sget-object v0, Lorg/bitcoinj/wallet/Wallet$BalanceType;->AVAILABLE:Lorg/bitcoinj/wallet/Wallet$BalanceType;

    invoke-virtual {p0, v0}, Lorg/bitcoinj/wallet/Wallet;->getBalance(Lorg/bitcoinj/wallet/Wallet$BalanceType;)Lorg/bitcoinj/core/Coin;

    move-result-object v0

    return-object v0
.end method

.method public getBalance(Lorg/bitcoinj/wallet/CoinSelector;)Lorg/bitcoinj/core/Coin;
    .registers 4

    .prologue
    .line 3524
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V

    .line 3526
    :try_start_5
    invoke-static {p1}, Lcom/google/common/base/n;->checkNotNull(Ljava/lang/Object;)Ljava/lang/Object;

    .line 3527
    const/4 v0, 0x1

    const/4 v1, 0x0

    invoke-virtual {p0, v0, v1}, Lorg/bitcoinj/wallet/Wallet;->calculateAllSpendCandidates(ZZ)Ljava/util/List;

    move-result-object v0

    .line 3528
    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->params:Lorg/bitcoinj/core/NetworkParameters;

    invoke-virtual {v1}, Lorg/bitcoinj/core/NetworkParameters;->getMaxMoney()Lorg/bitcoinj/core/Coin;

    move-result-object v1

    invoke-interface {p1, v1, v0}, Lorg/bitcoinj/wallet/CoinSelector;->select(Lorg/bitcoinj/core/Coin;Ljava/util/List;)Lorg/bitcoinj/wallet/CoinSelection;

    move-result-object v0

    .line 3529
    iget-object v0, v0, Lorg/bitcoinj/wallet/CoinSelection;->valueGathered:Lorg/bitcoinj/core/Coin;
    :try_end_1a
    .catchall {:try_start_5 .. :try_end_1a} :catchall_20

    .line 3531
    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    .line 3529
    return-object v0

    .line 3531
    :catchall_20
    move-exception v0

    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    throw v0
.end method

.method public getBalance(Lorg/bitcoinj/wallet/Wallet$BalanceType;)Lorg/bitcoinj/core/Coin;
    .registers 6

    .prologue
    const/4 v0, 0x1

    const/4 v1, 0x0

    .line 3499
    iget-object v2, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v2}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V

    .line 3501
    :try_start_7
    sget-object v2, Lorg/bitcoinj/wallet/Wallet$BalanceType;->AVAILABLE:Lorg/bitcoinj/wallet/Wallet$BalanceType;

    if-eq p1, v2, :cond_f

    sget-object v2, Lorg/bitcoinj/wallet/Wallet$BalanceType;->AVAILABLE_SPENDABLE:Lorg/bitcoinj/wallet/Wallet$BalanceType;

    if-ne p1, v2, :cond_2a

    .line 3502
    :cond_f
    const/4 v2, 0x1

    sget-object v3, Lorg/bitcoinj/wallet/Wallet$BalanceType;->AVAILABLE_SPENDABLE:Lorg/bitcoinj/wallet/Wallet$BalanceType;

    if-ne p1, v3, :cond_28

    :goto_14
    invoke-virtual {p0, v2, v0}, Lorg/bitcoinj/wallet/Wallet;->calculateAllSpendCandidates(ZZ)Ljava/util/List;

    move-result-object v0

    .line 3503
    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->coinSelector:Lorg/bitcoinj/wallet/CoinSelector;

    sget-object v2, Lorg/bitcoinj/core/NetworkParameters;->MAX_MONEY:Lorg/bitcoinj/core/Coin;

    invoke-interface {v1, v2, v0}, Lorg/bitcoinj/wallet/CoinSelector;->select(Lorg/bitcoinj/core/Coin;Ljava/util/List;)Lorg/bitcoinj/wallet/CoinSelection;

    move-result-object v0

    .line 3504
    iget-object v0, v0, Lorg/bitcoinj/wallet/CoinSelection;->valueGathered:Lorg/bitcoinj/core/Coin;
    :try_end_22
    .catchall {:try_start_7 .. :try_end_22} :catchall_67

    .line 3514
    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    .line 3509
    :goto_27
    return-object v0

    :cond_28
    move v0, v1

    .line 3502
    goto :goto_14

    .line 3505
    :cond_2a
    :try_start_2a
    sget-object v2, Lorg/bitcoinj/wallet/Wallet$BalanceType;->ESTIMATED:Lorg/bitcoinj/wallet/Wallet$BalanceType;

    if-eq p1, v2, :cond_32

    sget-object v2, Lorg/bitcoinj/wallet/Wallet$BalanceType;->ESTIMATED_SPENDABLE:Lorg/bitcoinj/wallet/Wallet$BalanceType;

    if-ne p1, v2, :cond_5f

    .line 3506
    :cond_32
    const/4 v2, 0x0

    sget-object v3, Lorg/bitcoinj/wallet/Wallet$BalanceType;->ESTIMATED_SPENDABLE:Lorg/bitcoinj/wallet/Wallet$BalanceType;

    if-ne p1, v3, :cond_56

    :goto_37
    invoke-virtual {p0, v2, v0}, Lorg/bitcoinj/wallet/Wallet;->calculateAllSpendCandidates(ZZ)Ljava/util/List;

    move-result-object v0

    .line 3507
    sget-object v1, Lorg/bitcoinj/core/Coin;->ZERO:Lorg/bitcoinj/core/Coin;

    .line 3508
    invoke-interface {v0}, Ljava/util/List;->iterator()Ljava/util/Iterator;

    move-result-object v2

    :goto_41
    invoke-interface {v2}, Ljava/util/Iterator;->hasNext()Z

    move-result v0

    if-eqz v0, :cond_58

    invoke-interface {v2}, Ljava/util/Iterator;->next()Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Lorg/bitcoinj/core/TransactionOutput;

    invoke-virtual {v0}, Lorg/bitcoinj/core/TransactionOutput;->getValue()Lorg/bitcoinj/core/Coin;

    move-result-object v0

    invoke-virtual {v1, v0}, Lorg/bitcoinj/core/Coin;->add(Lorg/bitcoinj/core/Coin;)Lorg/bitcoinj/core/Coin;
    :try_end_54
    .catchall {:try_start_2a .. :try_end_54} :catchall_67

    move-result-object v1

    goto :goto_41

    :cond_56
    move v0, v1

    .line 3506
    goto :goto_37

    .line 3514
    :cond_58
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    move-object v0, v1

    .line 3509
    goto :goto_27

    .line 3511
    :cond_5f
    :try_start_5f
    new-instance v0, Ljava/lang/AssertionError;

    const-string v1, "Unknown balance type"

    invoke-direct {v0, v1}, Ljava/lang/AssertionError;-><init>(Ljava/lang/Object;)V

    throw v0
    :try_end_67
    .catchall {:try_start_5f .. :try_end_67} :catchall_67

    .line 3514
    :catchall_67
    move-exception v0

    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    throw v0
.end method

.method public getBalanceFuture(Lorg/bitcoinj/core/Coin;Lorg/bitcoinj/wallet/Wallet$BalanceType;)Lcom/google/common/util/concurrent/y;
    .registers 6
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "(",
            "Lorg/bitcoinj/core/Coin;",
            "Lorg/bitcoinj/wallet/Wallet$BalanceType;",
            ")",
            "Lcom/google/common/util/concurrent/y",
            "<",
            "Lorg/bitcoinj/core/Coin;",
            ">;"
        }
    .end annotation

    .prologue
    .line 3557
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V

    .line 3559
    :try_start_5
    invoke-static {}, Lcom/google/common/util/concurrent/ao;->yj()Lcom/google/common/util/concurrent/ao;

    move-result-object v0

    .line 3560
    invoke-virtual {p0, p2}, Lorg/bitcoinj/wallet/Wallet;->getBalance(Lorg/bitcoinj/wallet/Wallet$BalanceType;)Lorg/bitcoinj/core/Coin;

    move-result-object v1

    .line 3561
    invoke-virtual {v1, p1}, Lorg/bitcoinj/core/Coin;->compareTo(Lorg/bitcoinj/core/Coin;)I

    move-result v2

    if-ltz v2, :cond_1c

    .line 3563
    invoke-virtual {v0, v1}, Lcom/google/common/util/concurrent/ao;->set(Ljava/lang/Object;)Z
    :try_end_16
    .catchall {:try_start_5 .. :try_end_16} :catchall_2e

    .line 3576
    :goto_16
    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    .line 3574
    return-object v0

    .line 3568
    :cond_1c
    :try_start_1c
    new-instance v1, Lorg/bitcoinj/wallet/Wallet$BalanceFutureRequest;

    const/4 v2, 0x0

    invoke-direct {v1, v2}, Lorg/bitcoinj/wallet/Wallet$BalanceFutureRequest;-><init>(Lorg/bitcoinj/wallet/Wallet$1;)V

    .line 3569
    iput-object v0, v1, Lorg/bitcoinj/wallet/Wallet$BalanceFutureRequest;->future:Lcom/google/common/util/concurrent/ao;

    .line 3570
    iput-object p1, v1, Lorg/bitcoinj/wallet/Wallet$BalanceFutureRequest;->value:Lorg/bitcoinj/core/Coin;

    .line 3571
    iput-object p2, v1, Lorg/bitcoinj/wallet/Wallet$BalanceFutureRequest;->type:Lorg/bitcoinj/wallet/Wallet$BalanceType;

    .line 3572
    iget-object v2, p0, Lorg/bitcoinj/wallet/Wallet;->balanceFutureRequests:Ljava/util/List;

    invoke-interface {v2, v1}, Ljava/util/List;->add(Ljava/lang/Object;)Z
    :try_end_2d
    .catchall {:try_start_1c .. :try_end_2d} :catchall_2e

    goto :goto_16

    .line 3576
    :catchall_2e
    move-exception v0

    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    throw v0
.end method

.method public getBloomFilter(D)Lorg/bitcoinj/core/BloomFilter;
    .registers 10

    .prologue
    .line 4637
    invoke-virtual {p0}, Lorg/bitcoinj/wallet/Wallet;->beginBloomFilterCalculation()V

    .line 4639
    :try_start_3
    invoke-virtual {p0}, Lorg/bitcoinj/wallet/Wallet;->getBloomFilterElementCount()I

    move-result v1

    invoke-static {}, Ljava/lang/Math;->random()D

    move-result-wide v2

    const-wide/high16 v4, 0x43e0000000000000L    # 9.223372036854776E18

    mul-double/2addr v2, v4

    double-to-long v4, v2

    move-object v0, p0

    move-wide v2, p1

    invoke-virtual/range {v0 .. v5}, Lorg/bitcoinj/wallet/Wallet;->getBloomFilter(IDJ)Lorg/bitcoinj/core/BloomFilter;
    :try_end_14
    .catchall {:try_start_3 .. :try_end_14} :catchall_19

    move-result-object v0

    .line 4641
    invoke-virtual {p0}, Lorg/bitcoinj/wallet/Wallet;->endBloomFilterCalculation()V

    .line 4639
    return-object v0

    .line 4641
    :catchall_19
    move-exception v0

    invoke-virtual {p0}, Lorg/bitcoinj/wallet/Wallet;->endBloomFilterCalculation()V

    throw v0
.end method

.method public getBloomFilter(IDJ)Lorg/bitcoinj/core/BloomFilter;
    .registers 12

    .prologue
    .line 4658
    invoke-virtual {p0}, Lorg/bitcoinj/wallet/Wallet;->beginBloomFilterCalculation()V

    .line 4660
    :try_start_3
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroup:Lorg/bitcoinj/wallet/KeyChainGroup;

    move v1, p1

    move-wide v2, p2

    move-wide v4, p4

    invoke-virtual/range {v0 .. v5}, Lorg/bitcoinj/wallet/KeyChainGroup;->getBloomFilter(IDJ)Lorg/bitcoinj/core/BloomFilter;

    move-result-object v1

    .line 4661
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->watchedScripts:Ljava/util/Set;

    invoke-interface {v0}, Ljava/util/Set;->iterator()Ljava/util/Iterator;

    move-result-object v2

    :cond_12
    invoke-interface {v2}, Ljava/util/Iterator;->hasNext()Z

    move-result v0

    if-eqz v0, :cond_4a

    invoke-interface {v2}, Ljava/util/Iterator;->next()Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Lorg/bitcoinj/script/Script;

    .line 4662
    invoke-virtual {v0}, Lorg/bitcoinj/script/Script;->getChunks()Ljava/util/List;

    move-result-object v0

    invoke-interface {v0}, Ljava/util/List;->iterator()Ljava/util/Iterator;

    move-result-object v3

    :cond_26
    :goto_26
    invoke-interface {v3}, Ljava/util/Iterator;->hasNext()Z

    move-result v0

    if-eqz v0, :cond_12

    invoke-interface {v3}, Ljava/util/Iterator;->next()Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Lorg/bitcoinj/script/ScriptChunk;

    .line 4666
    invoke-virtual {v0}, Lorg/bitcoinj/script/ScriptChunk;->isOpCode()Z

    move-result v4

    if-nez v4, :cond_26

    iget-object v4, v0, Lorg/bitcoinj/script/ScriptChunk;->data:[B

    array-length v4, v4

    const/16 v5, 0x8

    if-lt v4, v5, :cond_26

    .line 4667
    iget-object v0, v0, Lorg/bitcoinj/script/ScriptChunk;->data:[B

    invoke-virtual {v1, v0}, Lorg/bitcoinj/core/BloomFilter;->insert([B)V
    :try_end_44
    .catchall {:try_start_3 .. :try_end_44} :catchall_45

    goto :goto_26

    .line 4675
    :catchall_45
    move-exception v0

    invoke-virtual {p0}, Lorg/bitcoinj/wallet/Wallet;->endBloomFilterCalculation()V

    throw v0

    .line 4671
    :cond_4a
    :try_start_4a
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->bloomOutPoints:Ljava/util/ArrayList;

    invoke-virtual {v0}, Ljava/util/ArrayList;->iterator()Ljava/util/Iterator;

    move-result-object v2

    :goto_50
    invoke-interface {v2}, Ljava/util/Iterator;->hasNext()Z

    move-result v0

    if-eqz v0, :cond_64

    invoke-interface {v2}, Ljava/util/Iterator;->next()Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Lorg/bitcoinj/core/TransactionOutPoint;

    .line 4672
    invoke-virtual {v0}, Lorg/bitcoinj/core/TransactionOutPoint;->unsafeBitcoinSerialize()[B

    move-result-object v0

    invoke-virtual {v1, v0}, Lorg/bitcoinj/core/BloomFilter;->insert([B)V
    :try_end_63
    .catchall {:try_start_4a .. :try_end_63} :catchall_45

    goto :goto_50

    .line 4675
    :cond_64
    invoke-virtual {p0}, Lorg/bitcoinj/wallet/Wallet;->endBloomFilterCalculation()V

    .line 4673
    return-object v1
.end method

.method public getBloomFilterElementCount()I
    .registers 3

    .prologue
    .line 4602
    invoke-virtual {p0}, Lorg/bitcoinj/wallet/Wallet;->beginBloomFilterCalculation()V

    .line 4604
    :try_start_3
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->bloomOutPoints:Ljava/util/ArrayList;

    invoke-virtual {v0}, Ljava/util/ArrayList;->size()I

    move-result v0

    .line 4605
    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroup:Lorg/bitcoinj/wallet/KeyChainGroup;

    invoke-virtual {v1}, Lorg/bitcoinj/wallet/KeyChainGroup;->getBloomFilterElementCount()I

    move-result v1

    add-int/2addr v0, v1

    .line 4608
    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->watchedScripts:Ljava/util/Set;

    invoke-interface {v1}, Ljava/util/Set;->size()I
    :try_end_15
    .catchall {:try_start_3 .. :try_end_15} :catchall_1b

    move-result v1

    add-int/2addr v0, v1

    .line 4611
    invoke-virtual {p0}, Lorg/bitcoinj/wallet/Wallet;->endBloomFilterCalculation()V

    .line 4609
    return v0

    .line 4611
    :catchall_1b
    move-exception v0

    invoke-virtual {p0}, Lorg/bitcoinj/wallet/Wallet;->endBloomFilterCalculation()V

    throw v0
.end method

.method public getChangeAddress()Lorg/bitcoinj/core/Address;
    .registers 2

    .prologue
    .line 658
    invoke-virtual {p0}, Lorg/bitcoinj/wallet/Wallet;->currentChangeAddress()Lorg/bitcoinj/core/Address;

    move-result-object v0

    return-object v0
.end method

.method public getCoinSelector()Lorg/bitcoinj/wallet/CoinSelector;
    .registers 3

    .prologue
    .line 4240
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V

    .line 4242
    :try_start_5
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->coinSelector:Lorg/bitcoinj/wallet/CoinSelector;
    :try_end_7
    .catchall {:try_start_5 .. :try_end_7} :catchall_d

    .line 4244
    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    .line 4242
    return-object v0

    .line 4244
    :catchall_d
    move-exception v0

    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    throw v0
.end method

.method getContainingPools(Lorg/bitcoinj/core/Transaction;)Ljava/util/EnumSet;
    .registers 5
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "(",
            "Lorg/bitcoinj/core/Transaction;",
            ")",
            "Ljava/util/EnumSet",
            "<",
            "Lorg/bitcoinj/wallet/WalletTransaction$Pool;",
            ">;"
        }
    .end annotation

    .prologue
    .line 3095
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V

    .line 3097
    :try_start_5
    const-class v0, Lorg/bitcoinj/wallet/WalletTransaction$Pool;

    invoke-static {v0}, Ljava/util/EnumSet;->noneOf(Ljava/lang/Class;)Ljava/util/EnumSet;

    move-result-object v0

    .line 3098
    invoke-virtual {p1}, Lorg/bitcoinj/core/Transaction;->getHash()Lorg/bitcoinj/core/Sha256Hash;

    move-result-object v1

    .line 3099
    iget-object v2, p0, Lorg/bitcoinj/wallet/Wallet;->unspent:Ljava/util/Map;

    invoke-interface {v2, v1}, Ljava/util/Map;->containsKey(Ljava/lang/Object;)Z

    move-result v2

    if-eqz v2, :cond_1c

    .line 3100
    sget-object v2, Lorg/bitcoinj/wallet/WalletTransaction$Pool;->UNSPENT:Lorg/bitcoinj/wallet/WalletTransaction$Pool;

    invoke-virtual {v0, v2}, Ljava/util/EnumSet;->add(Ljava/lang/Object;)Z

    .line 3102
    :cond_1c
    iget-object v2, p0, Lorg/bitcoinj/wallet/Wallet;->spent:Ljava/util/Map;

    invoke-interface {v2, v1}, Ljava/util/Map;->containsKey(Ljava/lang/Object;)Z

    move-result v2

    if-eqz v2, :cond_29

    .line 3103
    sget-object v2, Lorg/bitcoinj/wallet/WalletTransaction$Pool;->SPENT:Lorg/bitcoinj/wallet/WalletTransaction$Pool;

    invoke-virtual {v0, v2}, Ljava/util/EnumSet;->add(Ljava/lang/Object;)Z

    .line 3105
    :cond_29
    iget-object v2, p0, Lorg/bitcoinj/wallet/Wallet;->pending:Ljava/util/Map;

    invoke-interface {v2, v1}, Ljava/util/Map;->containsKey(Ljava/lang/Object;)Z

    move-result v2

    if-eqz v2, :cond_36

    .line 3106
    sget-object v2, Lorg/bitcoinj/wallet/WalletTransaction$Pool;->PENDING:Lorg/bitcoinj/wallet/WalletTransaction$Pool;

    invoke-virtual {v0, v2}, Ljava/util/EnumSet;->add(Ljava/lang/Object;)Z

    .line 3108
    :cond_36
    iget-object v2, p0, Lorg/bitcoinj/wallet/Wallet;->dead:Ljava/util/Map;

    invoke-interface {v2, v1}, Ljava/util/Map;->containsKey(Ljava/lang/Object;)Z

    move-result v1

    if-eqz v1, :cond_43

    .line 3109
    sget-object v1, Lorg/bitcoinj/wallet/WalletTransaction$Pool;->DEAD:Lorg/bitcoinj/wallet/WalletTransaction$Pool;

    invoke-virtual {v0, v1}, Ljava/util/EnumSet;->add(Ljava/lang/Object;)Z
    :try_end_43
    .catchall {:try_start_5 .. :try_end_43} :catchall_49

    .line 3113
    :cond_43
    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    .line 3111
    return-object v0

    .line 3113
    :catchall_49
    move-exception v0

    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    throw v0
.end method

.method public getContext()Lorg/bitcoinj/core/Context;
    .registers 2

    .prologue
    .line 1497
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->context:Lorg/bitcoinj/core/Context;

    return-object v0
.end method

.method public getDescription()Ljava/lang/String;
    .registers 2

    .prologue
    .line 3432
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->description:Ljava/lang/String;

    return-object v0
.end method

.method public getEarliestKeyCreationTime()J
    .registers 7

    .prologue
    .line 3308
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V

    .line 3310
    :try_start_5
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroup:Lorg/bitcoinj/wallet/KeyChainGroup;

    invoke-virtual {v0}, Lorg/bitcoinj/wallet/KeyChainGroup;->getEarliestKeyCreationTime()J

    move-result-wide v2

    .line 3311
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->watchedScripts:Ljava/util/Set;

    invoke-interface {v0}, Ljava/util/Set;->iterator()Ljava/util/Iterator;

    move-result-object v1

    :goto_11
    invoke-interface {v1}, Ljava/util/Iterator;->hasNext()Z

    move-result v0

    if-eqz v0, :cond_26

    invoke-interface {v1}, Ljava/util/Iterator;->next()Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Lorg/bitcoinj/script/Script;

    .line 3312
    invoke-virtual {v0}, Lorg/bitcoinj/script/Script;->getCreationTimeSeconds()J

    move-result-wide v4

    invoke-static {v4, v5, v2, v3}, Ljava/lang/Math;->min(JJ)J

    move-result-wide v2

    goto :goto_11

    .line 3313
    :cond_26
    const-wide v0, 0x7fffffffffffffffL

    cmp-long v0, v2, v0

    if-nez v0, :cond_39

    .line 3314
    invoke-static {}, Lorg/bitcoinj/core/Utils;->currentTimeSeconds()J
    :try_end_32
    .catchall {:try_start_5 .. :try_end_32} :catchall_40

    move-result-wide v0

    .line 3317
    iget-object v2, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v2}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    .line 3315
    :goto_38
    return-wide v0

    .line 3317
    :cond_39
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    move-wide v0, v2

    .line 3315
    goto :goto_38

    .line 3317
    :catchall_40
    move-exception v0

    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    throw v0
.end method

.method public getEncryptionType()Lorg/bitcoinj/wallet/Protos$Wallet$EncryptionType;
    .registers 3

    .prologue
    .line 1236
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V

    .line 1238
    :try_start_5
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroup:Lorg/bitcoinj/wallet/KeyChainGroup;

    invoke-virtual {v0}, Lorg/bitcoinj/wallet/KeyChainGroup;->getKeyCrypter()Lorg/bitcoinj/crypto/KeyCrypter;

    move-result-object v0

    .line 1239
    if-eqz v0, :cond_17

    .line 1240
    invoke-interface {v0}, Lorg/bitcoinj/crypto/KeyCrypter;->getUnderstoodEncryptionType()Lorg/bitcoinj/wallet/Protos$Wallet$EncryptionType;
    :try_end_10
    .catchall {:try_start_5 .. :try_end_10} :catchall_1f

    move-result-object v0

    .line 1244
    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    .line 1242
    :goto_16
    return-object v0

    :cond_17
    :try_start_17
    sget-object v0, Lorg/bitcoinj/wallet/Protos$Wallet$EncryptionType;->UNENCRYPTED:Lorg/bitcoinj/wallet/Protos$Wallet$EncryptionType;
    :try_end_19
    .catchall {:try_start_17 .. :try_end_19} :catchall_1f

    .line 1244
    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    goto :goto_16

    :catchall_1f
    move-exception v0

    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    throw v0
.end method

.method public getExtensions()Ljava/util/Map;
    .registers 3
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "()",
            "Ljava/util/Map",
            "<",
            "Ljava/lang/String;",
            "Lorg/bitcoinj/wallet/WalletExtension;",
            ">;"
        }
    .end annotation

    .prologue
    .line 4769
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V

    .line 4771
    :try_start_5
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->extensions:Ljava/util/HashMap;

    invoke-static {v0}, Lcom/google/common/collect/ImmutableMap;->copyOf(Ljava/util/Map;)Lcom/google/common/collect/ImmutableMap;
    :try_end_a
    .catchall {:try_start_5 .. :try_end_a} :catchall_11

    move-result-object v0

    .line 4773
    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    .line 4771
    return-object v0

    .line 4773
    :catchall_11
    move-exception v0

    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    throw v0
.end method

.method public getImportedKeys()Ljava/util/List;
    .registers 3
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "()",
            "Ljava/util/List",
            "<",
            "Lorg/bitcoinj/core/ECKey;",
            ">;"
        }
    .end annotation

    .prologue
    .line 642
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V

    .line 644
    :try_start_5
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroup:Lorg/bitcoinj/wallet/KeyChainGroup;

    invoke-virtual {v0}, Lorg/bitcoinj/wallet/KeyChainGroup;->getImportedKeys()Ljava/util/List;
    :try_end_a
    .catchall {:try_start_5 .. :try_end_a} :catchall_11

    move-result-object v0

    .line 646
    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    .line 644
    return-object v0

    .line 646
    :catchall_11
    move-exception v0

    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    throw v0
.end method

.method public getIssuedReceiveAddresses()Ljava/util/List;
    .registers 5
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "()",
            "Ljava/util/List",
            "<",
            "Lorg/bitcoinj/core/Address;",
            ">;"
        }
    .end annotation

    .prologue
    .line 534
    invoke-virtual {p0}, Lorg/bitcoinj/wallet/Wallet;->getIssuedReceiveKeys()Ljava/util/List;

    move-result-object v0

    .line 535
    new-instance v1, Ljava/util/ArrayList;

    invoke-interface {v0}, Ljava/util/List;->size()I

    move-result v2

    invoke-direct {v1, v2}, Ljava/util/ArrayList;-><init>(I)V

    .line 536
    invoke-interface {v0}, Ljava/util/List;->iterator()Ljava/util/Iterator;

    move-result-object v2

    :goto_11
    invoke-interface {v2}, Ljava/util/Iterator;->hasNext()Z

    move-result v0

    if-eqz v0, :cond_29

    invoke-interface {v2}, Ljava/util/Iterator;->next()Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Lorg/bitcoinj/core/ECKey;

    .line 537
    invoke-virtual {p0}, Lorg/bitcoinj/wallet/Wallet;->getParams()Lorg/bitcoinj/core/NetworkParameters;

    move-result-object v3

    invoke-virtual {v0, v3}, Lorg/bitcoinj/core/ECKey;->toAddress(Lorg/bitcoinj/core/NetworkParameters;)Lorg/bitcoinj/core/Address;

    move-result-object v0

    invoke-interface {v1, v0}, Ljava/util/List;->add(Ljava/lang/Object;)Z

    goto :goto_11

    .line 538
    :cond_29
    return-object v1
.end method

.method public getIssuedReceiveKeys()Ljava/util/List;
    .registers 3
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "()",
            "Ljava/util/List",
            "<",
            "Lorg/bitcoinj/core/ECKey;",
            ">;"
        }
    .end annotation

    .prologue
    .line 521
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V

    .line 523
    :try_start_5
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroup:Lorg/bitcoinj/wallet/KeyChainGroup;

    invoke-virtual {v0}, Lorg/bitcoinj/wallet/KeyChainGroup;->getActiveKeyChain()Lorg/bitcoinj/wallet/DeterministicKeyChain;

    move-result-object v0

    invoke-virtual {v0}, Lorg/bitcoinj/wallet/DeterministicKeyChain;->getIssuedReceiveKeys()Ljava/util/List;
    :try_end_e
    .catchall {:try_start_5 .. :try_end_e} :catchall_15

    move-result-object v0

    .line 525
    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    .line 523
    return-object v0

    .line 525
    :catchall_15
    move-exception v0

    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    throw v0
.end method

.method public getKeyByPath(Ljava/util/List;)Lorg/bitcoinj/crypto/DeterministicKey;
    .registers 4
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "(",
            "Ljava/util/List",
            "<",
            "Lorg/bitcoinj/crypto/ChildNumber;",
            ">;)",
            "Lorg/bitcoinj/crypto/DeterministicKey;"
        }
    .end annotation

    .prologue
    .line 1111
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V

    .line 1113
    :try_start_5
    invoke-direct {p0}, Lorg/bitcoinj/wallet/Wallet;->maybeUpgradeToHD()V

    .line 1114
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroup:Lorg/bitcoinj/wallet/KeyChainGroup;

    invoke-virtual {v0}, Lorg/bitcoinj/wallet/KeyChainGroup;->getActiveKeyChain()Lorg/bitcoinj/wallet/DeterministicKeyChain;

    move-result-object v0

    const/4 v1, 0x0

    invoke-virtual {v0, p1, v1}, Lorg/bitcoinj/wallet/DeterministicKeyChain;->getKeyByPath(Ljava/util/List;Z)Lorg/bitcoinj/crypto/DeterministicKey;
    :try_end_12
    .catchall {:try_start_5 .. :try_end_12} :catchall_19

    move-result-object v0

    .line 1116
    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    .line 1114
    return-object v0

    .line 1116
    :catchall_19
    move-exception v0

    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    throw v0
.end method

.method public getKeyChainGroupCombinedKeyLookaheadEpochs()I
    .registers 3

    .prologue
    .line 630
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V

    .line 632
    :try_start_5
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroup:Lorg/bitcoinj/wallet/KeyChainGroup;

    invoke-virtual {v0}, Lorg/bitcoinj/wallet/KeyChainGroup;->getCombinedKeyLookaheadEpochs()I
    :try_end_a
    .catchall {:try_start_5 .. :try_end_a} :catchall_11

    move-result v0

    .line 634
    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    .line 632
    return v0

    .line 634
    :catchall_11
    move-exception v0

    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    throw v0
.end method

.method public getKeyChainGroupLookaheadSize()I
    .registers 3

    .prologue
    .line 770
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V

    .line 772
    :try_start_5
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroup:Lorg/bitcoinj/wallet/KeyChainGroup;

    invoke-virtual {v0}, Lorg/bitcoinj/wallet/KeyChainGroup;->getLookaheadSize()I
    :try_end_a
    .catchall {:try_start_5 .. :try_end_a} :catchall_11

    move-result v0

    .line 774
    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    .line 772
    return v0

    .line 774
    :catchall_11
    move-exception v0

    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    throw v0
.end method

.method public getKeyChainGroupLookaheadThreshold()I
    .registers 3

    .prologue
    .line 791
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V

    .line 793
    :try_start_5
    invoke-direct {p0}, Lorg/bitcoinj/wallet/Wallet;->maybeUpgradeToHD()V

    .line 794
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroup:Lorg/bitcoinj/wallet/KeyChainGroup;

    invoke-virtual {v0}, Lorg/bitcoinj/wallet/KeyChainGroup;->getLookaheadThreshold()I
    :try_end_d
    .catchall {:try_start_5 .. :try_end_d} :catchall_14

    move-result v0

    .line 796
    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    .line 794
    return v0

    .line 796
    :catchall_14
    move-exception v0

    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    throw v0
.end method

.method public getKeyChainGroupSize()I
    .registers 3

    .prologue
    .line 620
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V

    .line 622
    :try_start_5
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroup:Lorg/bitcoinj/wallet/KeyChainGroup;

    invoke-virtual {v0}, Lorg/bitcoinj/wallet/KeyChainGroup;->numKeys()I
    :try_end_a
    .catchall {:try_start_5 .. :try_end_a} :catchall_11

    move-result v0

    .line 624
    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    .line 622
    return v0

    .line 624
    :catchall_11
    move-exception v0

    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    throw v0
.end method

.method public getKeyChainSeed()Lorg/bitcoinj/wallet/DeterministicSeed;
    .registers 3

    .prologue
    .line 1095
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V

    .line 1097
    :try_start_5
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroup:Lorg/bitcoinj/wallet/KeyChainGroup;

    invoke-virtual {v0}, Lorg/bitcoinj/wallet/KeyChainGroup;->getActiveKeyChain()Lorg/bitcoinj/wallet/DeterministicKeyChain;

    move-result-object v0

    invoke-virtual {v0}, Lorg/bitcoinj/wallet/DeterministicKeyChain;->getSeed()Lorg/bitcoinj/wallet/DeterministicSeed;

    move-result-object v0

    .line 1098
    if-nez v0, :cond_1e

    .line 1099
    new-instance v0, Lorg/bitcoinj/core/ECKey$MissingPrivateKeyException;

    invoke-direct {v0}, Lorg/bitcoinj/core/ECKey$MissingPrivateKeyException;-><init>()V

    throw v0
    :try_end_17
    .catchall {:try_start_5 .. :try_end_17} :catchall_17

    .line 1102
    :catchall_17
    move-exception v0

    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    throw v0

    :cond_1e
    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    .line 1100
    return-object v0
.end method

.method public getKeyCrypter()Lorg/bitcoinj/crypto/KeyCrypter;
    .registers 3

    .prologue
    .line 1222
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V

    .line 1224
    :try_start_5
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroup:Lorg/bitcoinj/wallet/KeyChainGroup;

    invoke-virtual {v0}, Lorg/bitcoinj/wallet/KeyChainGroup;->getKeyCrypter()Lorg/bitcoinj/crypto/KeyCrypter;
    :try_end_a
    .catchall {:try_start_5 .. :try_end_a} :catchall_11

    move-result-object v0

    .line 1226
    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    .line 1224
    return-object v0

    .line 1226
    :catchall_11
    move-exception v0

    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    throw v0
.end method

.method public getKeyRotationTime()Ljava/util/Date;
    .registers 7

    .prologue
    .line 5095
    iget-wide v2, p0, Lorg/bitcoinj/wallet/Wallet;->vKeyRotationTimestamp:J

    .line 5096
    const-wide/16 v0, 0x0

    cmp-long v0, v2, v0

    if-eqz v0, :cond_11

    .line 5097
    new-instance v0, Ljava/util/Date;

    const-wide/16 v4, 0x3e8

    mul-long/2addr v2, v4

    invoke-direct {v0, v2, v3}, Ljava/util/Date;-><init>(J)V

    .line 5099
    :goto_10
    return-object v0

    :cond_11
    const/4 v0, 0x0

    goto :goto_10
.end method

.method public getLastBlockSeenHash()Lorg/bitcoinj/core/Sha256Hash;
    .registers 3

    .prologue
    .line 3324
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V

    .line 3326
    :try_start_5
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lastBlockSeenHash:Lorg/bitcoinj/core/Sha256Hash;
    :try_end_7
    .catchall {:try_start_5 .. :try_end_7} :catchall_d

    .line 3328
    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    .line 3326
    return-object v0

    .line 3328
    :catchall_d
    move-exception v0

    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    throw v0
.end method

.method public getLastBlockSeenHeight()I
    .registers 3

    .prologue
    .line 3396
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V

    .line 3398
    :try_start_5
    iget v0, p0, Lorg/bitcoinj/wallet/Wallet;->lastBlockSeenHeight:I
    :try_end_7
    .catchall {:try_start_5 .. :try_end_7} :catchall_d

    .line 3400
    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    .line 3398
    return v0

    .line 3400
    :catchall_d
    move-exception v0

    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    throw v0
.end method

.method public getLastBlockSeenTime()Ljava/util/Date;
    .registers 7

    .prologue
    .line 3384
    invoke-virtual {p0}, Lorg/bitcoinj/wallet/Wallet;->getLastBlockSeenTimeSecs()J

    move-result-wide v2

    .line 3385
    const-wide/16 v0, 0x0

    cmp-long v0, v2, v0

    if-nez v0, :cond_c

    .line 3386
    const/4 v0, 0x0

    .line 3388
    :goto_b
    return-object v0

    :cond_c
    new-instance v0, Ljava/util/Date;

    const-wide/16 v4, 0x3e8

    mul-long/2addr v2, v4

    invoke-direct {v0, v2, v3}, Ljava/util/Date;-><init>(J)V

    goto :goto_b
.end method

.method public getLastBlockSeenTimeSecs()J
    .registers 4

    .prologue
    .line 3367
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V

    .line 3369
    :try_start_5
    iget-wide v0, p0, Lorg/bitcoinj/wallet/Wallet;->lastBlockSeenTimeSecs:J
    :try_end_7
    .catchall {:try_start_5 .. :try_end_7} :catchall_d

    .line 3371
    iget-object v2, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v2}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    .line 3369
    return-wide v0

    .line 3371
    :catchall_d
    move-exception v0

    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    throw v0
.end method

.method public getNetworkParameters()Lorg/bitcoinj/core/NetworkParameters;
    .registers 2

    .prologue
    .line 363
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->params:Lorg/bitcoinj/core/NetworkParameters;

    return-object v0
.end method

.method public getParams()Lorg/bitcoinj/core/NetworkParameters;
    .registers 2

    .prologue
    .line 1492
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->params:Lorg/bitcoinj/core/NetworkParameters;

    return-object v0
.end method

.method public getPendingTransactions()Ljava/util/Collection;
    .registers 3
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "()",
            "Ljava/util/Collection",
            "<",
            "Lorg/bitcoinj/core/Transaction;",
            ">;"
        }
    .end annotation

    .prologue
    .line 3286
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V

    .line 3288
    :try_start_5
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->pending:Ljava/util/Map;

    invoke-interface {v0}, Ljava/util/Map;->values()Ljava/util/Collection;

    move-result-object v0

    invoke-static {v0}, Ljava/util/Collections;->unmodifiableCollection(Ljava/util/Collection;)Ljava/util/Collection;
    :try_end_e
    .catchall {:try_start_5 .. :try_end_e} :catchall_15

    move-result-object v0

    .line 3290
    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    .line 3288
    return-object v0

    .line 3290
    :catchall_15
    move-exception v0

    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    throw v0
.end method

.method public getPoolSize(Lorg/bitcoinj/wallet/WalletTransaction$Pool;)I
    .registers 4

    .prologue
    .line 3119
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V

    .line 3121
    :try_start_5
    sget-object v0, Lorg/bitcoinj/wallet/Wallet$11;->$SwitchMap$org$bitcoinj$wallet$WalletTransaction$Pool:[I

    invoke-virtual {p1}, Lorg/bitcoinj/wallet/WalletTransaction$Pool;->ordinal()I

    move-result v1

    aget v0, v0, v1

    packed-switch v0, :pswitch_data_50

    .line 3131
    new-instance v0, Ljava/lang/RuntimeException;

    const-string v1, "Unreachable"

    invoke-direct {v0, v1}, Ljava/lang/RuntimeException;-><init>(Ljava/lang/String;)V

    throw v0
    :try_end_18
    .catchall {:try_start_5 .. :try_end_18} :catchall_18

    .line 3133
    :catchall_18
    move-exception v0

    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    throw v0

    .line 3123
    :pswitch_1f
    :try_start_1f
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->unspent:Ljava/util/Map;

    invoke-interface {v0}, Ljava/util/Map;->size()I
    :try_end_24
    .catchall {:try_start_1f .. :try_end_24} :catchall_18

    move-result v0

    .line 3133
    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    .line 3129
    :goto_2a
    return v0

    .line 3125
    :pswitch_2b
    :try_start_2b
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->spent:Ljava/util/Map;

    invoke-interface {v0}, Ljava/util/Map;->size()I
    :try_end_30
    .catchall {:try_start_2b .. :try_end_30} :catchall_18

    move-result v0

    .line 3133
    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    goto :goto_2a

    .line 3127
    :pswitch_37
    :try_start_37
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->pending:Ljava/util/Map;

    invoke-interface {v0}, Ljava/util/Map;->size()I
    :try_end_3c
    .catchall {:try_start_37 .. :try_end_3c} :catchall_18

    move-result v0

    .line 3133
    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    goto :goto_2a

    .line 3129
    :pswitch_43
    :try_start_43
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->dead:Ljava/util/Map;

    invoke-interface {v0}, Ljava/util/Map;->size()I
    :try_end_48
    .catchall {:try_start_43 .. :try_end_48} :catchall_18

    move-result v0

    .line 3133
    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    goto :goto_2a

    .line 3121
    nop

    :pswitch_data_50
    .packed-switch 0x1
        :pswitch_1f
        :pswitch_2b
        :pswitch_37
        :pswitch_43
    .end packed-switch
.end method

.method public getRecentTransactions(IZ)Ljava/util/List;
    .registers 5
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "(IZ)",
            "Ljava/util/List",
            "<",
            "Lorg/bitcoinj/core/Transaction;",
            ">;"
        }
    .end annotation

    .prologue
    .line 2914
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V

    .line 2916
    if-ltz p1, :cond_3e

    const/4 v0, 0x1

    :goto_8
    :try_start_8
    invoke-static {v0}, Lcom/google/common/base/n;->checkArgument(Z)V

    .line 2918
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->unspent:Ljava/util/Map;

    invoke-interface {v0}, Ljava/util/Map;->size()I

    move-result v0

    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->spent:Ljava/util/Map;

    invoke-interface {v1}, Ljava/util/Map;->size()I

    move-result v1

    add-int/2addr v0, v1

    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->pending:Ljava/util/Map;

    invoke-interface {v1}, Ljava/util/Map;->size()I

    move-result v1

    add-int/2addr v0, v1

    .line 2919
    if-gt p1, v0, :cond_23

    if-nez p1, :cond_24

    :cond_23
    move p1, v0

    .line 2922
    :cond_24
    new-instance v0, Ljava/util/ArrayList;

    invoke-virtual {p0, p2}, Lorg/bitcoinj/wallet/Wallet;->getTransactions(Z)Ljava/util/Set;

    move-result-object v1

    invoke-direct {v0, v1}, Ljava/util/ArrayList;-><init>(Ljava/util/Collection;)V

    .line 2924
    sget-object v1, Lorg/bitcoinj/core/Transaction;->SORT_TX_BY_UPDATE_TIME:Ljava/util/Comparator;

    invoke-static {v0, v1}, Ljava/util/Collections;->sort(Ljava/util/List;Ljava/util/Comparator;)V

    .line 2925
    invoke-virtual {v0}, Ljava/util/ArrayList;->size()I
    :try_end_35
    .catchall {:try_start_8 .. :try_end_35} :catchall_51

    move-result v1

    if-ne p1, v1, :cond_40

    .line 2932
    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    .line 2929
    :goto_3d
    return-object v0

    .line 2916
    :cond_3e
    const/4 v0, 0x0

    goto :goto_8

    .line 2928
    :cond_40
    :try_start_40
    invoke-virtual {v0}, Ljava/util/ArrayList;->size()I

    move-result v1

    invoke-virtual {v0, p1, v1}, Ljava/util/ArrayList;->subList(II)Ljava/util/List;

    move-result-object v1

    invoke-interface {v1}, Ljava/util/List;->clear()V
    :try_end_4b
    .catchall {:try_start_40 .. :try_end_4b} :catchall_51

    .line 2932
    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    goto :goto_3d

    :catchall_51
    move-exception v0

    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    throw v0
.end method

.method public getRiskAnalyzer()Lorg/bitcoinj/wallet/RiskAnalysis$Analyzer;
    .registers 3

    .prologue
    .line 1390
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V

    .line 1392
    :try_start_5
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->riskAnalyzer:Lorg/bitcoinj/wallet/RiskAnalysis$Analyzer;
    :try_end_7
    .catchall {:try_start_5 .. :try_end_7} :catchall_d

    .line 1394
    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    .line 1392
    return-object v0

    .line 1394
    :catchall_d
    move-exception v0

    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    throw v0
.end method

.method protected getStoredOutputsFromUTXOProvider()Ljava/util/List;
    .registers 8
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "()",
            "Ljava/util/List",
            "<",
            "Lorg/bitcoinj/core/UTXO;",
            ">;"
        }
    .end annotation

    .prologue
    .line 4225
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->vUTXOProvider:Lorg/bitcoinj/core/UTXOProvider;

    const-string v1, "No UTXO provider has been set"

    invoke-static {v0, v1}, Lcom/google/common/base/n;->checkNotNull(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Lorg/bitcoinj/core/UTXOProvider;

    .line 4226
    new-instance v2, Ljava/util/ArrayList;

    invoke-direct {v2}, Ljava/util/ArrayList;-><init>()V

    .line 4227
    invoke-virtual {p0}, Lorg/bitcoinj/wallet/Wallet;->getImportedKeys()Ljava/util/List;

    move-result-object v1

    .line 4228
    invoke-virtual {p0}, Lorg/bitcoinj/wallet/Wallet;->getActiveKeyChain()Lorg/bitcoinj/wallet/DeterministicKeyChain;

    move-result-object v3

    invoke-virtual {v3}, Lorg/bitcoinj/wallet/DeterministicKeyChain;->getLeafKeys()Ljava/util/List;

    move-result-object v3

    invoke-interface {v1, v3}, Ljava/util/List;->addAll(Ljava/util/Collection;)Z

    .line 4229
    new-instance v3, Ljava/util/ArrayList;

    invoke-direct {v3}, Ljava/util/ArrayList;-><init>()V

    .line 4230
    invoke-interface {v1}, Ljava/util/List;->iterator()Ljava/util/Iterator;

    move-result-object v4

    :goto_27
    invoke-interface {v4}, Ljava/util/Iterator;->hasNext()Z

    move-result v1

    if-eqz v1, :cond_42

    invoke-interface {v4}, Ljava/util/Iterator;->next()Ljava/lang/Object;

    move-result-object v1

    check-cast v1, Lorg/bitcoinj/core/ECKey;

    .line 4231
    new-instance v5, Lorg/bitcoinj/core/Address;

    iget-object v6, p0, Lorg/bitcoinj/wallet/Wallet;->params:Lorg/bitcoinj/core/NetworkParameters;

    invoke-virtual {v1}, Lorg/bitcoinj/core/ECKey;->getPubKeyHash()[B

    move-result-object v1

    invoke-direct {v5, v6, v1}, Lorg/bitcoinj/core/Address;-><init>(Lorg/bitcoinj/core/NetworkParameters;[B)V

    .line 4232
    invoke-interface {v3, v5}, Ljava/util/List;->add(Ljava/lang/Object;)Z

    goto :goto_27

    .line 4234
    :cond_42
    invoke-interface {v0, v3}, Lorg/bitcoinj/core/UTXOProvider;->getOpenTransactionOutputs(Ljava/util/List;)Ljava/util/List;

    move-result-object v0

    invoke-interface {v2, v0}, Ljava/util/List;->addAll(Ljava/util/Collection;)Z

    .line 4235
    return-object v2
.end method

.method public getTotalReceived()Lorg/bitcoinj/core/Coin;
    .registers 8

    .prologue
    .line 3608
    sget-object v0, Lorg/bitcoinj/core/Coin;->ZERO:Lorg/bitcoinj/core/Coin;

    .line 3612
    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->transactions:Ljava/util/Map;

    invoke-interface {v1}, Ljava/util/Map;->values()Ljava/util/Collection;

    move-result-object v1

    invoke-interface {v1}, Ljava/util/Collection;->iterator()Ljava/util/Iterator;

    move-result-object v4

    move-object v2, v0

    :goto_d
    invoke-interface {v4}, Ljava/util/Iterator;->hasNext()Z

    move-result v0

    if-eqz v0, :cond_77

    invoke-interface {v4}, Ljava/util/Iterator;->next()Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Lorg/bitcoinj/core/Transaction;

    .line 3613
    sget-object v1, Lorg/bitcoinj/core/Coin;->ZERO:Lorg/bitcoinj/core/Coin;

    .line 3614
    invoke-virtual {v0}, Lorg/bitcoinj/core/Transaction;->getOutputs()Ljava/util/List;

    move-result-object v3

    invoke-interface {v3}, Ljava/util/List;->iterator()Ljava/util/Iterator;

    move-result-object v5

    move-object v3, v1

    :goto_24
    invoke-interface {v5}, Ljava/util/Iterator;->hasNext()Z

    move-result v1

    if-eqz v1, :cond_40

    invoke-interface {v5}, Ljava/util/Iterator;->next()Ljava/lang/Object;

    move-result-object v1

    check-cast v1, Lorg/bitcoinj/core/TransactionOutput;

    .line 3615
    invoke-virtual {v1, p0}, Lorg/bitcoinj/core/TransactionOutput;->isMine(Lorg/bitcoinj/core/TransactionBag;)Z

    move-result v6

    if-eqz v6, :cond_7c

    .line 3616
    invoke-virtual {v1}, Lorg/bitcoinj/core/TransactionOutput;->getValue()Lorg/bitcoinj/core/Coin;

    move-result-object v1

    invoke-virtual {v3, v1}, Lorg/bitcoinj/core/Coin;->add(Lorg/bitcoinj/core/Coin;)Lorg/bitcoinj/core/Coin;

    move-result-object v1

    :goto_3e
    move-object v3, v1

    .line 3618
    goto :goto_24

    .line 3619
    :cond_40
    invoke-virtual {v0}, Lorg/bitcoinj/core/Transaction;->getInputs()Ljava/util/List;

    move-result-object v0

    invoke-interface {v0}, Ljava/util/List;->iterator()Ljava/util/Iterator;

    move-result-object v5

    move-object v1, v3

    :goto_49
    invoke-interface {v5}, Ljava/util/Iterator;->hasNext()Z

    move-result v0

    if-eqz v0, :cond_6b

    invoke-interface {v5}, Ljava/util/Iterator;->next()Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Lorg/bitcoinj/core/TransactionInput;

    .line 3620
    invoke-virtual {v0}, Lorg/bitcoinj/core/TransactionInput;->getConnectedOutput()Lorg/bitcoinj/core/TransactionOutput;

    move-result-object v0

    .line 3621
    if-eqz v0, :cond_7a

    invoke-virtual {v0, p0}, Lorg/bitcoinj/core/TransactionOutput;->isMine(Lorg/bitcoinj/core/TransactionBag;)Z

    move-result v3

    if-eqz v3, :cond_7a

    .line 3622
    invoke-virtual {v0}, Lorg/bitcoinj/core/TransactionOutput;->getValue()Lorg/bitcoinj/core/Coin;

    move-result-object v0

    invoke-virtual {v1, v0}, Lorg/bitcoinj/core/Coin;->subtract(Lorg/bitcoinj/core/Coin;)Lorg/bitcoinj/core/Coin;

    move-result-object v0

    :goto_69
    move-object v1, v0

    .line 3624
    goto :goto_49

    .line 3625
    :cond_6b
    invoke-virtual {v1}, Lorg/bitcoinj/core/Coin;->isPositive()Z

    move-result v0

    if-eqz v0, :cond_78

    .line 3626
    invoke-virtual {v2, v1}, Lorg/bitcoinj/core/Coin;->add(Lorg/bitcoinj/core/Coin;)Lorg/bitcoinj/core/Coin;

    move-result-object v0

    :goto_75
    move-object v2, v0

    .line 3628
    goto :goto_d

    .line 3629
    :cond_77
    return-object v2

    :cond_78
    move-object v0, v2

    goto :goto_75

    :cond_7a
    move-object v0, v1

    goto :goto_69

    :cond_7c
    move-object v1, v3

    goto :goto_3e
.end method

.method public getTotalSent()Lorg/bitcoinj/core/Coin;
    .registers 9

    .prologue
    .line 3641
    sget-object v0, Lorg/bitcoinj/core/Coin;->ZERO:Lorg/bitcoinj/core/Coin;

    .line 3643
    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->transactions:Ljava/util/Map;

    invoke-interface {v1}, Ljava/util/Map;->values()Ljava/util/Collection;

    move-result-object v1

    invoke-interface {v1}, Ljava/util/Collection;->iterator()Ljava/util/Iterator;

    move-result-object v5

    move-object v2, v0

    :goto_d
    invoke-interface {v5}, Ljava/util/Iterator;->hasNext()Z

    move-result v0

    if-eqz v0, :cond_a6

    invoke-interface {v5}, Ljava/util/Iterator;->next()Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Lorg/bitcoinj/core/Transaction;

    .line 3645
    sget-object v1, Lorg/bitcoinj/core/Coin;->ZERO:Lorg/bitcoinj/core/Coin;

    .line 3646
    invoke-virtual {v0}, Lorg/bitcoinj/core/Transaction;->getOutputs()Ljava/util/List;

    move-result-object v3

    invoke-interface {v3}, Ljava/util/List;->iterator()Ljava/util/Iterator;

    move-result-object v4

    move-object v3, v1

    :goto_24
    invoke-interface {v4}, Ljava/util/Iterator;->hasNext()Z

    move-result v1

    if-eqz v1, :cond_40

    invoke-interface {v4}, Ljava/util/Iterator;->next()Ljava/lang/Object;

    move-result-object v1

    check-cast v1, Lorg/bitcoinj/core/TransactionOutput;

    .line 3647
    invoke-virtual {v1, p0}, Lorg/bitcoinj/core/TransactionOutput;->isMine(Lorg/bitcoinj/core/TransactionBag;)Z

    move-result v6

    if-nez v6, :cond_a9

    .line 3648
    invoke-virtual {v1}, Lorg/bitcoinj/core/TransactionOutput;->getValue()Lorg/bitcoinj/core/Coin;

    move-result-object v1

    invoke-virtual {v3, v1}, Lorg/bitcoinj/core/Coin;->add(Lorg/bitcoinj/core/Coin;)Lorg/bitcoinj/core/Coin;

    move-result-object v1

    :goto_3e
    move-object v3, v1

    .line 3650
    goto :goto_24

    .line 3653
    :cond_40
    sget-object v1, Lorg/bitcoinj/core/Coin;->ZERO:Lorg/bitcoinj/core/Coin;

    .line 3654
    invoke-virtual {v0}, Lorg/bitcoinj/core/Transaction;->getInputs()Ljava/util/List;

    move-result-object v4

    invoke-interface {v4}, Ljava/util/List;->iterator()Ljava/util/Iterator;

    move-result-object v6

    move-object v4, v1

    :goto_4b
    invoke-interface {v6}, Ljava/util/Iterator;->hasNext()Z

    move-result v1

    if-eqz v1, :cond_6e

    invoke-interface {v6}, Ljava/util/Iterator;->next()Ljava/lang/Object;

    move-result-object v1

    check-cast v1, Lorg/bitcoinj/core/TransactionInput;

    .line 3655
    invoke-virtual {v1}, Lorg/bitcoinj/core/TransactionInput;->getConnectedOutput()Lorg/bitcoinj/core/TransactionOutput;

    move-result-object v1

    .line 3656
    if-eqz v1, :cond_a7

    invoke-virtual {v1, p0}, Lorg/bitcoinj/core/TransactionOutput;->isMine(Lorg/bitcoinj/core/TransactionBag;)Z

    move-result v7

    if-eqz v7, :cond_a7

    .line 3657
    invoke-virtual {v1}, Lorg/bitcoinj/core/TransactionOutput;->getValue()Lorg/bitcoinj/core/Coin;

    move-result-object v1

    invoke-virtual {v4, v1}, Lorg/bitcoinj/core/Coin;->add(Lorg/bitcoinj/core/Coin;)Lorg/bitcoinj/core/Coin;

    move-result-object v4

    move-object v1, v4

    :goto_6c
    move-object v4, v1

    .line 3659
    goto :goto_4b

    .line 3662
    :cond_6e
    invoke-virtual {v0}, Lorg/bitcoinj/core/Transaction;->getInputSum()Lorg/bitcoinj/core/Coin;

    move-result-object v0

    .line 3663
    if-eq v4, v0, :cond_9f

    .line 3666
    new-instance v1, Ljava/math/BigInteger;

    invoke-virtual {v3}, Lorg/bitcoinj/core/Coin;->toString()Ljava/lang/String;

    move-result-object v3

    invoke-direct {v1, v3}, Ljava/math/BigInteger;-><init>(Ljava/lang/String;)V

    .line 3667
    new-instance v3, Ljava/math/BigInteger;

    invoke-virtual {v4}, Lorg/bitcoinj/core/Coin;->toString()Ljava/lang/String;

    move-result-object v4

    invoke-direct {v3, v4}, Ljava/math/BigInteger;-><init>(Ljava/lang/String;)V

    invoke-virtual {v1, v3}, Ljava/math/BigInteger;->multiply(Ljava/math/BigInteger;)Ljava/math/BigInteger;

    move-result-object v1

    .line 3668
    new-instance v3, Ljava/math/BigInteger;

    invoke-virtual {v0}, Lorg/bitcoinj/core/Coin;->toString()Ljava/lang/String;

    move-result-object v0

    invoke-direct {v3, v0}, Ljava/math/BigInteger;-><init>(Ljava/lang/String;)V

    invoke-virtual {v1, v3}, Ljava/math/BigInteger;->divide(Ljava/math/BigInteger;)Ljava/math/BigInteger;

    move-result-object v0

    .line 3669
    invoke-virtual {v0}, Ljava/math/BigInteger;->longValue()J

    move-result-wide v0

    invoke-static {v0, v1}, Lorg/bitcoinj/core/Coin;->valueOf(J)Lorg/bitcoinj/core/Coin;

    move-result-object v3

    .line 3671
    :cond_9f
    invoke-virtual {v2, v3}, Lorg/bitcoinj/core/Coin;->add(Lorg/bitcoinj/core/Coin;)Lorg/bitcoinj/core/Coin;

    move-result-object v0

    move-object v2, v0

    .line 3673
    goto/16 :goto_d

    .line 3674
    :cond_a6
    return-object v2

    :cond_a7
    move-object v1, v4

    goto :goto_6c

    :cond_a9
    move-object v1, v3

    goto :goto_3e
.end method

.method public getTransaction(Lorg/bitcoinj/core/Sha256Hash;)Lorg/bitcoinj/core/Transaction;
    .registers 4

    .prologue
    .line 2941
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V

    .line 2943
    :try_start_5
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->transactions:Ljava/util/Map;

    invoke-interface {v0, p1}, Ljava/util/Map;->get(Ljava/lang/Object;)Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Lorg/bitcoinj/core/Transaction;
    :try_end_d
    .catchall {:try_start_5 .. :try_end_d} :catchall_13

    .line 2945
    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    .line 2943
    return-object v0

    .line 2945
    :catchall_13
    move-exception v0

    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    throw v0
.end method

.method public getTransactionPool(Lorg/bitcoinj/wallet/WalletTransaction$Pool;)Ljava/util/Map;
    .registers 5
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "(",
            "Lorg/bitcoinj/wallet/WalletTransaction$Pool;",
            ")",
            "Ljava/util/Map",
            "<",
            "Lorg/bitcoinj/core/Sha256Hash;",
            "Lorg/bitcoinj/core/Transaction;",
            ">;"
        }
    .end annotation

    .prologue
    .line 2952
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V

    .line 2954
    :try_start_5
    sget-object v0, Lorg/bitcoinj/wallet/Wallet$11;->$SwitchMap$org$bitcoinj$wallet$WalletTransaction$Pool:[I

    invoke-virtual {p1}, Lorg/bitcoinj/wallet/WalletTransaction$Pool;->ordinal()I

    move-result v1

    aget v0, v0, v1

    packed-switch v0, :pswitch_data_4c

    .line 2964
    new-instance v0, Ljava/lang/RuntimeException;

    new-instance v1, Ljava/lang/StringBuilder;

    const-string v2, "Unknown wallet transaction type "

    invoke-direct {v1, v2}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V

    invoke-virtual {v1, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;

    move-result-object v1

    invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v1

    invoke-direct {v0, v1}, Ljava/lang/RuntimeException;-><init>(Ljava/lang/String;)V

    throw v0
    :try_end_25
    .catchall {:try_start_5 .. :try_end_25} :catchall_25

    .line 2967
    :catchall_25
    move-exception v0

    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    throw v0

    .line 2956
    :pswitch_2c
    :try_start_2c
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->unspent:Ljava/util/Map;
    :try_end_2e
    .catchall {:try_start_2c .. :try_end_2e} :catchall_25

    .line 2967
    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    .line 2962
    :goto_33
    return-object v0

    .line 2958
    :pswitch_34
    :try_start_34
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->spent:Ljava/util/Map;
    :try_end_36
    .catchall {:try_start_34 .. :try_end_36} :catchall_25

    .line 2967
    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    goto :goto_33

    .line 2960
    :pswitch_3c
    :try_start_3c
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->pending:Ljava/util/Map;
    :try_end_3e
    .catchall {:try_start_3c .. :try_end_3e} :catchall_25

    .line 2967
    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    goto :goto_33

    .line 2962
    :pswitch_44
    :try_start_44
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->dead:Ljava/util/Map;
    :try_end_46
    .catchall {:try_start_44 .. :try_end_46} :catchall_25

    .line 2967
    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    goto :goto_33

    .line 2954
    :pswitch_data_4c
    .packed-switch 0x1
        :pswitch_2c
        :pswitch_34
        :pswitch_3c
        :pswitch_44
    .end packed-switch
.end method

.method public getTransactionSigners()Ljava/util/List;
    .registers 3
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "()",
            "Ljava/util/List",
            "<",
            "Lorg/bitcoinj/signers/TransactionSigner;",
            ">;"
        }
    .end annotation

    .prologue
    .line 392
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V

    .line 394
    :try_start_5
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->signers:Ljava/util/List;

    invoke-static {v0}, Lcom/google/common/collect/ImmutableList;->copyOf(Ljava/util/Collection;)Lcom/google/common/collect/ImmutableList;
    :try_end_a
    .catchall {:try_start_5 .. :try_end_a} :catchall_11

    move-result-object v0

    .line 396
    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    .line 394
    return-object v0

    .line 396
    :catchall_11
    move-exception v0

    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    throw v0
.end method

.method public getTransactions(Z)Ljava/util/Set;
    .registers 4
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "(Z)",
            "Ljava/util/Set",
            "<",
            "Lorg/bitcoinj/core/Transaction;",
            ">;"
        }
    .end annotation

    .prologue
    .line 2813
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V

    .line 2815
    :try_start_5
    new-instance v0, Ljava/util/HashSet;

    invoke-direct {v0}, Ljava/util/HashSet;-><init>()V

    .line 2816
    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->unspent:Ljava/util/Map;

    invoke-interface {v1}, Ljava/util/Map;->values()Ljava/util/Collection;

    move-result-object v1

    invoke-interface {v0, v1}, Ljava/util/Set;->addAll(Ljava/util/Collection;)Z

    .line 2817
    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->spent:Ljava/util/Map;

    invoke-interface {v1}, Ljava/util/Map;->values()Ljava/util/Collection;

    move-result-object v1

    invoke-interface {v0, v1}, Ljava/util/Set;->addAll(Ljava/util/Collection;)Z

    .line 2818
    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->pending:Ljava/util/Map;

    invoke-interface {v1}, Ljava/util/Map;->values()Ljava/util/Collection;

    move-result-object v1

    invoke-interface {v0, v1}, Ljava/util/Set;->addAll(Ljava/util/Collection;)Z

    .line 2819
    if-eqz p1, :cond_30

    .line 2820
    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->dead:Ljava/util/Map;

    invoke-interface {v1}, Ljava/util/Map;->values()Ljava/util/Collection;

    move-result-object v1

    invoke-interface {v0, v1}, Ljava/util/Set;->addAll(Ljava/util/Collection;)Z
    :try_end_30
    .catchall {:try_start_5 .. :try_end_30} :catchall_36

    .line 2823
    :cond_30
    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    .line 2821
    return-object v0

    .line 2823
    :catchall_36
    move-exception v0

    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    throw v0
.end method

.method public getTransactionsByTime()Ljava/util/List;
    .registers 2
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "()",
            "Ljava/util/List",
            "<",
            "Lorg/bitcoinj/core/Transaction;",
            ">;"
        }
    .end annotation

    .prologue
    const/4 v0, 0x0

    .line 2902
    invoke-virtual {p0, v0, v0}, Lorg/bitcoinj/wallet/Wallet;->getRecentTransactions(IZ)Ljava/util/List;

    move-result-object v0

    return-object v0
.end method

.method public getUTXOProvider()Lorg/bitcoinj/core/UTXOProvider;
    .registers 3

    .prologue
    .line 4277
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V

    .line 4279
    :try_start_5
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->vUTXOProvider:Lorg/bitcoinj/core/UTXOProvider;
    :try_end_7
    .catchall {:try_start_5 .. :try_end_7} :catchall_d

    .line 4281
    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    .line 4279
    return-object v0

    .line 4281
    :catchall_d
    move-exception v0

    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    throw v0
.end method

.method public getUnspents()Ljava/util/List;
    .registers 3
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "()",
            "Ljava/util/List",
            "<",
            "Lorg/bitcoinj/core/TransactionOutput;",
            ">;"
        }
    .end annotation

    .prologue
    .line 3159
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V

    .line 3161
    :try_start_5
    new-instance v0, Ljava/util/ArrayList;

    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->myUnspents:Ljava/util/HashSet;

    invoke-direct {v0, v1}, Ljava/util/ArrayList;-><init>(Ljava/util/Collection;)V
    :try_end_c
    .catchall {:try_start_5 .. :try_end_c} :catchall_12

    .line 3163
    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    .line 3161
    return-object v0

    .line 3163
    :catchall_12
    move-exception v0

    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    throw v0
.end method

.method public getVersion()I
    .registers 2

    .prologue
    .line 3410
    iget v0, p0, Lorg/bitcoinj/wallet/Wallet;->version:I

    return v0
.end method

.method public getWalletTransactions()Ljava/lang/Iterable;
    .registers 4
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "()",
            "Ljava/lang/Iterable",
            "<",
            "Lorg/bitcoinj/wallet/WalletTransaction;",
            ">;"
        }
    .end annotation

    .prologue
    .line 2831
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V

    .line 2833
    :try_start_5
    new-instance v0, Ljava/util/HashSet;

    invoke-direct {v0}, Ljava/util/HashSet;-><init>()V

    .line 2834
    sget-object v1, Lorg/bitcoinj/wallet/WalletTransaction$Pool;->UNSPENT:Lorg/bitcoinj/wallet/WalletTransaction$Pool;

    iget-object v2, p0, Lorg/bitcoinj/wallet/Wallet;->unspent:Ljava/util/Map;

    invoke-interface {v2}, Ljava/util/Map;->values()Ljava/util/Collection;

    move-result-object v2

    invoke-static {v0, v1, v2}, Lorg/bitcoinj/wallet/Wallet;->addWalletTransactionsToSet(Ljava/util/Set;Lorg/bitcoinj/wallet/WalletTransaction$Pool;Ljava/util/Collection;)V

    .line 2835
    sget-object v1, Lorg/bitcoinj/wallet/WalletTransaction$Pool;->SPENT:Lorg/bitcoinj/wallet/WalletTransaction$Pool;

    iget-object v2, p0, Lorg/bitcoinj/wallet/Wallet;->spent:Ljava/util/Map;

    invoke-interface {v2}, Ljava/util/Map;->values()Ljava/util/Collection;

    move-result-object v2

    invoke-static {v0, v1, v2}, Lorg/bitcoinj/wallet/Wallet;->addWalletTransactionsToSet(Ljava/util/Set;Lorg/bitcoinj/wallet/WalletTransaction$Pool;Ljava/util/Collection;)V

    .line 2836
    sget-object v1, Lorg/bitcoinj/wallet/WalletTransaction$Pool;->DEAD:Lorg/bitcoinj/wallet/WalletTransaction$Pool;

    iget-object v2, p0, Lorg/bitcoinj/wallet/Wallet;->dead:Ljava/util/Map;

    invoke-interface {v2}, Ljava/util/Map;->values()Ljava/util/Collection;

    move-result-object v2

    invoke-static {v0, v1, v2}, Lorg/bitcoinj/wallet/Wallet;->addWalletTransactionsToSet(Ljava/util/Set;Lorg/bitcoinj/wallet/WalletTransaction$Pool;Ljava/util/Collection;)V

    .line 2837
    sget-object v1, Lorg/bitcoinj/wallet/WalletTransaction$Pool;->PENDING:Lorg/bitcoinj/wallet/WalletTransaction$Pool;

    iget-object v2, p0, Lorg/bitcoinj/wallet/Wallet;->pending:Ljava/util/Map;

    invoke-interface {v2}, Ljava/util/Map;->values()Ljava/util/Collection;

    move-result-object v2

    invoke-static {v0, v1, v2}, Lorg/bitcoinj/wallet/Wallet;->addWalletTransactionsToSet(Ljava/util/Set;Lorg/bitcoinj/wallet/WalletTransaction$Pool;Ljava/util/Collection;)V
    :try_end_36
    .catchall {:try_start_5 .. :try_end_36} :catchall_3c

    .line 2840
    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    .line 2838
    return-object v0

    .line 2840
    :catchall_3c
    move-exception v0

    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    throw v0
.end method

.method public getWatchedAddresses()Ljava/util/List;
    .registers 5
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "()",
            "Ljava/util/List",
            "<",
            "Lorg/bitcoinj/core/Address;",
            ">;"
        }
    .end annotation

    .prologue
    .line 962
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V

    .line 964
    :try_start_5
    new-instance v1, Ljava/util/LinkedList;

    invoke-direct {v1}, Ljava/util/LinkedList;-><init>()V

    .line 965
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->watchedScripts:Ljava/util/Set;

    invoke-interface {v0}, Ljava/util/Set;->iterator()Ljava/util/Iterator;

    move-result-object v2

    :cond_10
    :goto_10
    invoke-interface {v2}, Ljava/util/Iterator;->hasNext()Z

    move-result v0

    if-eqz v0, :cond_33

    invoke-interface {v2}, Ljava/util/Iterator;->next()Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Lorg/bitcoinj/script/Script;

    .line 966
    invoke-virtual {v0}, Lorg/bitcoinj/script/Script;->isSentToAddress()Z

    move-result v3

    if-eqz v3, :cond_10

    .line 967
    iget-object v3, p0, Lorg/bitcoinj/wallet/Wallet;->params:Lorg/bitcoinj/core/NetworkParameters;

    invoke-virtual {v0, v3}, Lorg/bitcoinj/script/Script;->getToAddress(Lorg/bitcoinj/core/NetworkParameters;)Lorg/bitcoinj/core/Address;

    move-result-object v0

    invoke-interface {v1, v0}, Ljava/util/List;->add(Ljava/lang/Object;)Z
    :try_end_2b
    .catchall {:try_start_5 .. :try_end_2b} :catchall_2c

    goto :goto_10

    .line 970
    :catchall_2c
    move-exception v0

    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    throw v0

    :cond_33
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    .line 968
    return-object v1
.end method

.method public getWatchedBalance()Lorg/bitcoinj/core/Coin;
    .registers 2
    .annotation runtime Ljava/lang/Deprecated;
    .end annotation

    .prologue
    .line 3478
    invoke-virtual {p0}, Lorg/bitcoinj/wallet/Wallet;->getBalance()Lorg/bitcoinj/core/Coin;

    move-result-object v0

    return-object v0
.end method

.method public getWatchedBalance(Lorg/bitcoinj/wallet/CoinSelector;)Lorg/bitcoinj/core/Coin;
    .registers 3
    .annotation runtime Ljava/lang/Deprecated;
    .end annotation

    .prologue
    .line 3484
    invoke-virtual {p0, p1}, Lorg/bitcoinj/wallet/Wallet;->getBalance(Lorg/bitcoinj/wallet/CoinSelector;)Lorg/bitcoinj/core/Coin;

    move-result-object v0

    return-object v0
.end method

.method public getWatchedOutputs(Z)Ljava/util/List;
    .registers 8
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "(Z)",
            "Ljava/util/List",
            "<",
            "Lorg/bitcoinj/core/TransactionOutput;",
            ">;"
        }
    .end annotation

    .prologue
    .line 3024
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V

    .line 3025
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V

    .line 10232
    :try_start_a
    new-instance v1, Ljava/util/LinkedList;

    invoke-direct {v1}, Ljava/util/LinkedList;-><init>()V

    .line 3028
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->unspent:Ljava/util/Map;

    invoke-interface {v0}, Ljava/util/Map;->values()Ljava/util/Collection;

    move-result-object v0

    iget-object v2, p0, Lorg/bitcoinj/wallet/Wallet;->pending:Ljava/util/Map;

    invoke-interface {v2}, Ljava/util/Map;->values()Ljava/util/Collection;

    move-result-object v2

    invoke-static {v0, v2}, Lcom/google/common/collect/ay;->a(Ljava/lang/Iterable;Ljava/lang/Iterable;)Ljava/lang/Iterable;

    move-result-object v0

    invoke-interface {v0}, Ljava/lang/Iterable;->iterator()Ljava/util/Iterator;

    move-result-object v2

    :cond_23
    invoke-interface {v2}, Ljava/util/Iterator;->hasNext()Z

    move-result v0

    if-eqz v0, :cond_63

    invoke-interface {v2}, Ljava/util/Iterator;->next()Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Lorg/bitcoinj/core/Transaction;

    .line 3029
    if-eqz p1, :cond_37

    invoke-virtual {v0}, Lorg/bitcoinj/core/Transaction;->isMature()Z

    move-result v3

    if-eqz v3, :cond_23

    .line 3030
    :cond_37
    invoke-virtual {v0}, Lorg/bitcoinj/core/Transaction;->getOutputs()Ljava/util/List;

    move-result-object v0

    invoke-interface {v0}, Ljava/util/List;->iterator()Ljava/util/Iterator;

    move-result-object v3

    :cond_3f
    :goto_3f
    invoke-interface {v3}, Ljava/util/Iterator;->hasNext()Z

    move-result v0

    if-eqz v0, :cond_23

    invoke-interface {v3}, Ljava/util/Iterator;->next()Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Lorg/bitcoinj/core/TransactionOutput;

    .line 3031
    invoke-virtual {v0}, Lorg/bitcoinj/core/TransactionOutput;->isAvailableForSpending()Z
    :try_end_4e
    .catchall {:try_start_a .. :try_end_4e} :catchall_6e

    move-result v4

    if-eqz v4, :cond_3f

    .line 3033
    :try_start_51
    invoke-virtual {v0}, Lorg/bitcoinj/core/TransactionOutput;->getScriptPubKey()Lorg/bitcoinj/script/Script;

    move-result-object v4

    .line 3034
    iget-object v5, p0, Lorg/bitcoinj/wallet/Wallet;->watchedScripts:Ljava/util/Set;

    invoke-interface {v5, v4}, Ljava/util/Set;->contains(Ljava/lang/Object;)Z

    move-result v4

    if-eqz v4, :cond_3f

    .line 3035
    invoke-virtual {v1, v0}, Ljava/util/LinkedList;->add(Ljava/lang/Object;)Z
    :try_end_60
    .catch Lorg/bitcoinj/core/ScriptException; {:try_start_51 .. :try_end_60} :catch_61
    .catchall {:try_start_51 .. :try_end_60} :catchall_6e

    goto :goto_3f

    .line 3039
    :catch_61
    move-exception v0

    goto :goto_3f

    .line 3043
    :cond_63
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    .line 3044
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    .line 3041
    return-object v1

    .line 3043
    :catchall_6e
    move-exception v0

    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    .line 3044
    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    throw v0
.end method

.method public getWatchedScripts()Ljava/util/List;
    .registers 3
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "()",
            "Ljava/util/List",
            "<",
            "Lorg/bitcoinj/script/Script;",
            ">;"
        }
    .end annotation

    .prologue
    .line 594
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V

    .line 596
    :try_start_5
    new-instance v0, Ljava/util/ArrayList;

    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->watchedScripts:Ljava/util/Set;

    invoke-direct {v0, v1}, Ljava/util/ArrayList;-><init>(Ljava/util/Collection;)V
    :try_end_c
    .catchall {:try_start_5 .. :try_end_c} :catchall_12

    .line 598
    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    .line 596
    return-object v0

    .line 598
    :catchall_12
    move-exception v0

    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    throw v0
.end method

.method public getWatchingKey()Lorg/bitcoinj/crypto/DeterministicKey;
    .registers 3

    .prologue
    .line 807
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V

    .line 809
    :try_start_5
    invoke-direct {p0}, Lorg/bitcoinj/wallet/Wallet;->maybeUpgradeToHD()V

    .line 810
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroup:Lorg/bitcoinj/wallet/KeyChainGroup;

    invoke-virtual {v0}, Lorg/bitcoinj/wallet/KeyChainGroup;->getActiveKeyChain()Lorg/bitcoinj/wallet/DeterministicKeyChain;

    move-result-object v0

    invoke-virtual {v0}, Lorg/bitcoinj/wallet/DeterministicKeyChain;->getWatchingKey()Lorg/bitcoinj/crypto/DeterministicKey;
    :try_end_11
    .catchall {:try_start_5 .. :try_end_11} :catchall_18

    move-result-object v0

    .line 812
    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    .line 810
    return-object v0

    .line 812
    :catchall_18
    move-exception v0

    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    throw v0
.end method

.method public hasKey(Lorg/bitcoinj/core/ECKey;)Z
    .registers 4

    .prologue
    .line 993
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V

    .line 995
    :try_start_5
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroup:Lorg/bitcoinj/wallet/KeyChainGroup;

    invoke-virtual {v0, p1}, Lorg/bitcoinj/wallet/KeyChainGroup;->hasKey(Lorg/bitcoinj/core/ECKey;)Z
    :try_end_a
    .catchall {:try_start_5 .. :try_end_a} :catchall_11

    move-result v0

    .line 997
    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    .line 995
    return v0

    .line 997
    :catchall_11
    move-exception v0

    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    throw v0
.end method

.method public importKey(Lorg/bitcoinj/core/ECKey;)Z
    .registers 5

    .prologue
    const/4 v1, 0x0

    const/4 v0, 0x1

    .line 679
    new-array v2, v0, [Lorg/bitcoinj/core/ECKey;

    aput-object p1, v2, v1

    invoke-static {v2}, Lcom/google/common/collect/Lists;->newArrayList([Ljava/lang/Object;)Ljava/util/ArrayList;

    move-result-object v2

    invoke-virtual {p0, v2}, Lorg/bitcoinj/wallet/Wallet;->importKeys(Ljava/util/List;)I

    move-result v2

    if-ne v2, v0, :cond_11

    :goto_10
    return v0

    :cond_11
    move v0, v1

    goto :goto_10
.end method

.method public importKeys(Ljava/util/List;)I
    .registers 4
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "(",
            "Ljava/util/List",
            "<",
            "Lorg/bitcoinj/core/ECKey;",
            ">;)I"
        }
    .end annotation

    .prologue
    .line 697
    invoke-direct {p0, p1}, Lorg/bitcoinj/wallet/Wallet;->checkNoDeterministicKeys(Ljava/util/List;)V

    .line 699
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V

    .line 701
    :try_start_8
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroup:Lorg/bitcoinj/wallet/KeyChainGroup;

    invoke-virtual {v0, p1}, Lorg/bitcoinj/wallet/KeyChainGroup;->importKeys(Ljava/util/List;)I
    :try_end_d
    .catchall {:try_start_8 .. :try_end_d} :catchall_17

    move-result v0

    .line 703
    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    .line 705
    invoke-virtual {p0}, Lorg/bitcoinj/wallet/Wallet;->saveNow()V

    .line 706
    return v0

    .line 703
    :catchall_17
    move-exception v0

    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    throw v0
.end method

.method public importKeysAndEncrypt(Ljava/util/List;Ljava/lang/CharSequence;)I
    .registers 5
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "(",
            "Ljava/util/List",
            "<",
            "Lorg/bitcoinj/core/ECKey;",
            ">;",
            "Ljava/lang/CharSequence;",
            ")I"
        }
    .end annotation

    .prologue
    .line 718
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V

    .line 720
    :try_start_5
    invoke-virtual {p0}, Lorg/bitcoinj/wallet/Wallet;->getKeyCrypter()Lorg/bitcoinj/crypto/KeyCrypter;

    move-result-object v0

    const-string v1, "Wallet is not encrypted"

    invoke-static {v0, v1}, Lcom/google/common/base/n;->checkNotNull(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;

    .line 721
    invoke-virtual {p0}, Lorg/bitcoinj/wallet/Wallet;->getKeyCrypter()Lorg/bitcoinj/crypto/KeyCrypter;

    move-result-object v0

    invoke-interface {v0, p2}, Lorg/bitcoinj/crypto/KeyCrypter;->deriveKey(Ljava/lang/CharSequence;)Lorg/spongycastle/crypto/params/KeyParameter;

    move-result-object v0

    invoke-virtual {p0, p1, v0}, Lorg/bitcoinj/wallet/Wallet;->importKeysAndEncrypt(Ljava/util/List;Lorg/spongycastle/crypto/params/KeyParameter;)I
    :try_end_19
    .catchall {:try_start_5 .. :try_end_19} :catchall_20

    move-result v0

    .line 723
    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    .line 721
    return v0

    .line 723
    :catchall_20
    move-exception v0

    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    throw v0
.end method

.method public importKeysAndEncrypt(Ljava/util/List;Lorg/spongycastle/crypto/params/KeyParameter;)I
    .registers 5
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "(",
            "Ljava/util/List",
            "<",
            "Lorg/bitcoinj/core/ECKey;",
            ">;",
            "Lorg/spongycastle/crypto/params/KeyParameter;",
            ")I"
        }
    .end annotation

    .prologue
    .line 729
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V

    .line 731
    :try_start_5
    invoke-direct {p0, p1}, Lorg/bitcoinj/wallet/Wallet;->checkNoDeterministicKeys(Ljava/util/List;)V

    .line 732
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroup:Lorg/bitcoinj/wallet/KeyChainGroup;

    invoke-virtual {v0, p1, p2}, Lorg/bitcoinj/wallet/KeyChainGroup;->importKeysAndEncrypt(Ljava/util/List;Lorg/spongycastle/crypto/params/KeyParameter;)I
    :try_end_d
    .catchall {:try_start_5 .. :try_end_d} :catchall_14

    move-result v0

    .line 734
    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    .line 732
    return v0

    .line 734
    :catchall_14
    move-exception v0

    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    throw v0
.end method

.method public isAcceptRiskyTransactions()Z
    .registers 3

    .prologue
    .line 1364
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V

    .line 1366
    :try_start_5
    iget-boolean v0, p0, Lorg/bitcoinj/wallet/Wallet;->acceptRiskyTransactions:Z
    :try_end_7
    .catchall {:try_start_5 .. :try_end_7} :catchall_d

    .line 1368
    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    .line 1366
    return v0

    .line 1368
    :catchall_d
    move-exception v0

    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    throw v0
.end method

.method public isAddressWatched(Lorg/bitcoinj/core/Address;)Z
    .registers 3

    .prologue
    .line 837
    invoke-static {p1}, Lorg/bitcoinj/script/ScriptBuilder;->createOutputScript(Lorg/bitcoinj/core/Address;)Lorg/bitcoinj/script/Script;

    move-result-object v0

    .line 838
    invoke-virtual {p0, v0}, Lorg/bitcoinj/wallet/Wallet;->isWatchedScript(Lorg/bitcoinj/script/Script;)Z

    move-result v0

    return v0
.end method

.method public isConsistent()Z
    .registers 4

    .prologue
    .line 1527
    :try_start_0
    invoke-virtual {p0}, Lorg/bitcoinj/wallet/Wallet;->isConsistentOrThrow()V
    :try_end_3
    .catch Ljava/lang/IllegalStateException; {:try_start_0 .. :try_end_3} :catch_5

    .line 1528
    const/4 v0, 0x1

    .line 1536
    :goto_4
    return v0

    .line 1529
    :catch_5
    move-exception v0

    .line 1530
    sget-object v1, Lorg/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;

    invoke-virtual {v0}, Ljava/lang/IllegalStateException;->getMessage()Ljava/lang/String;

    move-result-object v0

    invoke-interface {v1, v0}, Lorg/slf4j/Logger;->error(Ljava/lang/String;)V

    .line 1532
    :try_start_f
    sget-object v0, Lorg/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;

    invoke-virtual {p0}, Lorg/bitcoinj/wallet/Wallet;->toString()Ljava/lang/String;

    move-result-object v1

    invoke-interface {v0, v1}, Lorg/slf4j/Logger;->error(Ljava/lang/String;)V
    :try_end_18
    .catch Ljava/lang/RuntimeException; {:try_start_f .. :try_end_18} :catch_1a

    .line 1536
    :goto_18
    const/4 v0, 0x0

    goto :goto_4

    .line 1533
    :catch_1a
    move-exception v0

    .line 1534
    sget-object v1, Lorg/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;

    const-string v2, "Printing inconsistent wallet failed"

    invoke-interface {v1, v2, v0}, Lorg/slf4j/Logger;->error(Ljava/lang/String;Ljava/lang/Throwable;)V

    goto :goto_18
.end method

.method public isConsistentOrThrow()V
    .registers 6

    .prologue
    .line 1545
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V

    .line 1547
    const/4 v0, 0x1

    :try_start_6
    invoke-virtual {p0, v0}, Lorg/bitcoinj/wallet/Wallet;->getTransactions(Z)Ljava/util/Set;

    move-result-object v1

    .line 1549
    new-instance v2, Ljava/util/HashSet;

    invoke-direct {v2}, Ljava/util/HashSet;-><init>()V

    .line 1550
    invoke-interface {v1}, Ljava/util/Set;->iterator()Ljava/util/Iterator;

    move-result-object v3

    :goto_13
    invoke-interface {v3}, Ljava/util/Iterator;->hasNext()Z

    move-result v0

    if-eqz v0, :cond_2e

    invoke-interface {v3}, Ljava/util/Iterator;->next()Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Lorg/bitcoinj/core/Transaction;

    .line 1551
    invoke-virtual {v0}, Lorg/bitcoinj/core/Transaction;->getHash()Lorg/bitcoinj/core/Sha256Hash;

    move-result-object v0

    invoke-interface {v2, v0}, Ljava/util/Set;->add(Ljava/lang/Object;)Z
    :try_end_26
    .catchall {:try_start_6 .. :try_end_26} :catchall_27

    goto :goto_13

    .line 1576
    :catchall_27
    move-exception v0

    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    throw v0

    .line 1554
    :cond_2e
    :try_start_2e
    invoke-interface {v1}, Ljava/util/Set;->size()I

    move-result v0

    .line 1555
    invoke-interface {v2}, Ljava/util/Set;->size()I

    move-result v1

    if-eq v0, v1, :cond_40

    .line 1556
    new-instance v0, Ljava/lang/IllegalStateException;

    const-string v1, "Two transactions with same hash"

    invoke-direct {v0, v1}, Ljava/lang/IllegalStateException;-><init>(Ljava/lang/String;)V

    throw v0

    .line 1559
    :cond_40
    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->unspent:Ljava/util/Map;

    invoke-interface {v1}, Ljava/util/Map;->size()I

    move-result v1

    iget-object v2, p0, Lorg/bitcoinj/wallet/Wallet;->spent:Ljava/util/Map;

    invoke-interface {v2}, Ljava/util/Map;->size()I

    move-result v2

    add-int/2addr v1, v2

    iget-object v2, p0, Lorg/bitcoinj/wallet/Wallet;->pending:Ljava/util/Map;

    invoke-interface {v2}, Ljava/util/Map;->size()I

    move-result v2

    add-int/2addr v1, v2

    iget-object v2, p0, Lorg/bitcoinj/wallet/Wallet;->dead:Ljava/util/Map;

    invoke-interface {v2}, Ljava/util/Map;->size()I

    move-result v2

    add-int/2addr v1, v2

    .line 1560
    if-eq v0, v1, :cond_7c

    .line 1561
    new-instance v2, Ljava/lang/IllegalStateException;

    new-instance v3, Ljava/lang/StringBuilder;

    const-string v4, "Inconsistent wallet sizes: "

    invoke-direct {v3, v4}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V

    invoke-virtual {v3, v0}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;

    move-result-object v0

    const-string v3, ", "

    invoke-virtual {v0, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v0

    invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;

    move-result-object v0

    invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v0

    invoke-direct {v2, v0}, Ljava/lang/IllegalStateException;-><init>(Ljava/lang/String;)V

    throw v2

    .line 1564
    :cond_7c
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->unspent:Ljava/util/Map;

    invoke-interface {v0}, Ljava/util/Map;->values()Ljava/util/Collection;

    move-result-object v0

    invoke-interface {v0}, Ljava/util/Collection;->iterator()Ljava/util/Iterator;

    move-result-object v1

    :cond_86
    invoke-interface {v1}, Ljava/util/Iterator;->hasNext()Z

    move-result v0

    if-eqz v0, :cond_b2

    invoke-interface {v1}, Ljava/util/Iterator;->next()Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Lorg/bitcoinj/core/Transaction;

    .line 1565
    const/4 v2, 0x0

    invoke-virtual {p0, v0, v2}, Lorg/bitcoinj/wallet/Wallet;->isTxConsistent(Lorg/bitcoinj/core/Transaction;Z)Z

    move-result v2

    if-nez v2, :cond_86

    .line 1566
    new-instance v1, Ljava/lang/IllegalStateException;

    new-instance v2, Ljava/lang/StringBuilder;

    const-string v3, "Inconsistent unspent tx: "

    invoke-direct {v2, v3}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V

    invoke-virtual {v0}, Lorg/bitcoinj/core/Transaction;->getHashAsString()Ljava/lang/String;

    move-result-object v0

    invoke-virtual {v2, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v0

    invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v0

    invoke-direct {v1, v0}, Ljava/lang/IllegalStateException;-><init>(Ljava/lang/String;)V

    throw v1

    .line 1570
    :cond_b2
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->spent:Ljava/util/Map;

    invoke-interface {v0}, Ljava/util/Map;->values()Ljava/util/Collection;

    move-result-object v0

    invoke-interface {v0}, Ljava/util/Collection;->iterator()Ljava/util/Iterator;

    move-result-object v1

    :cond_bc
    invoke-interface {v1}, Ljava/util/Iterator;->hasNext()Z

    move-result v0

    if-eqz v0, :cond_e8

    invoke-interface {v1}, Ljava/util/Iterator;->next()Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Lorg/bitcoinj/core/Transaction;

    .line 1571
    const/4 v2, 0x1

    invoke-virtual {p0, v0, v2}, Lorg/bitcoinj/wallet/Wallet;->isTxConsistent(Lorg/bitcoinj/core/Transaction;Z)Z

    move-result v2

    if-nez v2, :cond_bc

    .line 1572
    new-instance v1, Ljava/lang/IllegalStateException;

    new-instance v2, Ljava/lang/StringBuilder;

    const-string v3, "Inconsistent spent tx: "

    invoke-direct {v2, v3}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V

    invoke-virtual {v0}, Lorg/bitcoinj/core/Transaction;->getHashAsString()Ljava/lang/String;

    move-result-object v0

    invoke-virtual {v2, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v0

    invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v0

    invoke-direct {v1, v0}, Ljava/lang/IllegalStateException;-><init>(Ljava/lang/String;)V

    throw v1
    :try_end_e8
    .catchall {:try_start_2e .. :try_end_e8} :catchall_27

    .line 1576
    :cond_e8
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    .line 1577
    return-void
.end method

.method public isDeterministicUpgradeRequired()Z
    .registers 3

    .prologue
    .line 563
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V

    .line 565
    :try_start_5
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroup:Lorg/bitcoinj/wallet/KeyChainGroup;

    invoke-virtual {v0}, Lorg/bitcoinj/wallet/KeyChainGroup;->isDeterministicUpgradeRequired()Z
    :try_end_a
    .catchall {:try_start_5 .. :try_end_a} :catchall_11

    move-result v0

    .line 567
    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    .line 565
    return v0

    .line 567
    :catchall_11
    move-exception v0

    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    throw v0
.end method

.method public isEncrypted()Z
    .registers 3

    .prologue
    .line 1250
    invoke-virtual {p0}, Lorg/bitcoinj/wallet/Wallet;->getEncryptionType()Lorg/bitcoinj/wallet/Protos$Wallet$EncryptionType;

    move-result-object v0

    sget-object v1, Lorg/bitcoinj/wallet/Protos$Wallet$EncryptionType;->UNENCRYPTED:Lorg/bitcoinj/wallet/Protos$Wallet$EncryptionType;

    if-eq v0, v1, :cond_a

    const/4 v0, 0x1

    :goto_9
    return v0

    :cond_a
    const/4 v0, 0x0

    goto :goto_9
.end method

.method public isKeyRotating(Lorg/bitcoinj/core/ECKey;)Z
    .registers 6

    .prologue
    .line 5121
    iget-wide v0, p0, Lorg/bitcoinj/wallet/Wallet;->vKeyRotationTimestamp:J

    .line 5122
    const-wide/16 v2, 0x0

    cmp-long v2, v0, v2

    if-eqz v2, :cond_12

    invoke-virtual {p1}, Lorg/bitcoinj/core/ECKey;->getCreationTimeSeconds()J

    move-result-wide v2

    cmp-long v0, v2, v0

    if-gez v0, :cond_12

    const/4 v0, 0x1

    :goto_11
    return v0

    :cond_12
    const/4 v0, 0x0

    goto :goto_11
.end method

.method public isPayToScriptHashMine([B)Z
    .registers 3

    .prologue
    .line 1057
    invoke-virtual {p0, p1}, Lorg/bitcoinj/wallet/Wallet;->findRedeemDataFromScriptHash([B)Lorg/bitcoinj/wallet/RedeemData;

    move-result-object v0

    if-eqz v0, :cond_8

    const/4 v0, 0x1

    :goto_7
    return v0

    :cond_8
    const/4 v0, 0x0

    goto :goto_7
.end method

.method public isPendingTransactionRelevant(Lorg/bitcoinj/core/Transaction;)Z
    .registers 6

    .prologue
    const/4 v0, 0x0

    .line 1765
    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V

    .line 1769
    :try_start_6
    invoke-virtual {p0, p1}, Lorg/bitcoinj/wallet/Wallet;->getContainingPools(Lorg/bitcoinj/core/Transaction;)Ljava/util/EnumSet;

    move-result-object v1

    .line 1770
    const-class v2, Lorg/bitcoinj/wallet/WalletTransaction$Pool;

    invoke-static {v2}, Ljava/util/EnumSet;->noneOf(Ljava/lang/Class;)Ljava/util/EnumSet;

    move-result-object v2

    invoke-virtual {v1, v2}, Ljava/util/EnumSet;->equals(Ljava/lang/Object;)Z

    move-result v1

    if-nez v1, :cond_34

    .line 1771
    sget-object v1, Lorg/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;

    new-instance v2, Ljava/lang/StringBuilder;

    const-string v3, "Received tx we already saw in a block or created ourselves: "

    invoke-direct {v2, v3}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V

    invoke-virtual {p1}, Lorg/bitcoinj/core/Transaction;->getHashAsString()Ljava/lang/String;

    move-result-object v3

    invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v2

    invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v2

    invoke-interface {v1, v2}, Lorg/slf4j/Logger;->debug(Ljava/lang/String;)V
    :try_end_2e
    .catchall {:try_start_6 .. :try_end_2e} :catchall_4e

    .line 1784
    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    .line 1782
    :goto_33
    return v0

    .line 1778
    :cond_34
    :try_start_34
    invoke-virtual {p0, p1}, Lorg/bitcoinj/wallet/Wallet;->isTransactionRelevant(Lorg/bitcoinj/core/Transaction;)Z

    move-result v1

    if-nez v1, :cond_47

    .line 1779
    sget-object v1, Lorg/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;

    const-string v2, "Received tx that isn\'t relevant to this wallet, discarding."

    invoke-interface {v1, v2}, Lorg/slf4j/Logger;->debug(Ljava/lang/String;)V
    :try_end_41
    .catchall {:try_start_34 .. :try_end_41} :catchall_4e

    .line 1784
    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    goto :goto_33

    :cond_47
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    .line 1782
    const/4 v0, 0x1

    goto :goto_33

    .line 1784
    :catchall_4e
    move-exception v0

    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    throw v0
.end method

.method public isPubKeyHashMine([B)Z
    .registers 3

    .prologue
    .line 1004
    invoke-virtual {p0, p1}, Lorg/bitcoinj/wallet/Wallet;->findKeyFromPubHash([B)Lorg/bitcoinj/core/ECKey;

    move-result-object v0

    if-eqz v0, :cond_8

    const/4 v0, 0x1

    :goto_7
    return v0

    :cond_8
    const/4 v0, 0x0

    goto :goto_7
.end method

.method public isPubKeyMine([B)Z
    .registers 3

    .prologue
    .line 1036
    invoke-virtual {p0, p1}, Lorg/bitcoinj/wallet/Wallet;->findKeyFromPubKey([B)Lorg/bitcoinj/core/ECKey;

    move-result-object v0

    if-eqz v0, :cond_8

    const/4 v0, 0x1

    :goto_7
    return v0

    :cond_8
    const/4 v0, 0x0

    goto :goto_7
.end method

.method public isRequiringUpdateAllBloomFilter()Z
    .registers 3

    .prologue
    .line 4624
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V

    .line 4626
    :try_start_5
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->watchedScripts:Ljava/util/Set;

    invoke-interface {v0}, Ljava/util/Set;->isEmpty()Z
    :try_end_a
    .catchall {:try_start_5 .. :try_end_a} :catchall_16

    move-result v0

    if-nez v0, :cond_14

    const/4 v0, 0x1

    .line 4628
    :goto_e
    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    .line 4626
    return v0

    :cond_14
    const/4 v0, 0x0

    goto :goto_e

    .line 4628
    :catchall_16
    move-exception v0

    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    throw v0
.end method

.method public isTransactionRelevant(Lorg/bitcoinj/core/Transaction;)Z
    .registers 4

    .prologue
    .line 1797
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V

    .line 1799
    :try_start_5
    invoke-virtual {p1, p0}, Lorg/bitcoinj/core/Transaction;->getValueSentFromMe(Lorg/bitcoinj/core/TransactionBag;)Lorg/bitcoinj/core/Coin;

    move-result-object v0

    invoke-virtual {v0}, Lorg/bitcoinj/core/Coin;->signum()I

    move-result v0

    if-gtz v0, :cond_25

    .line 1800
    invoke-virtual {p1, p0}, Lorg/bitcoinj/core/Transaction;->getValueSentToMe(Lorg/bitcoinj/core/TransactionBag;)Lorg/bitcoinj/core/Coin;

    move-result-object v0

    invoke-virtual {v0}, Lorg/bitcoinj/core/Coin;->signum()I

    move-result v0

    if-gtz v0, :cond_25

    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->transactions:Ljava/util/Map;

    .line 1801
    invoke-direct {p0, p1, v0}, Lorg/bitcoinj/wallet/Wallet;->findDoubleSpendsAgainst(Lorg/bitcoinj/core/Transaction;Ljava/util/Map;)Ljava/util/Set;

    move-result-object v0

    invoke-interface {v0}, Ljava/util/Set;->isEmpty()Z
    :try_end_22
    .catchall {:try_start_5 .. :try_end_22} :catchall_2e

    move-result v0

    if-nez v0, :cond_2c

    :cond_25
    const/4 v0, 0x1

    .line 1803
    :goto_26
    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    .line 1799
    return v0

    .line 1801
    :cond_2c
    const/4 v0, 0x0

    goto :goto_26

    .line 1803
    :catchall_2e
    move-exception v0

    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    throw v0
.end method

.method public isTransactionRisky(Lorg/bitcoinj/core/Transaction;Ljava/util/List;)Z
    .registers 6
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "(",
            "Lorg/bitcoinj/core/Transaction;",
            "Ljava/util/List",
            "<",
            "Lorg/bitcoinj/core/Transaction;",
            ">;)Z"
        }
    .end annotation

    .prologue
    .line 1727
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V

    .line 1729
    if-nez p2, :cond_b

    .line 1730
    :try_start_7
    invoke-static {}, Lcom/google/common/collect/ImmutableList;->of()Lcom/google/common/collect/ImmutableList;

    move-result-object p2

    .line 1731
    :cond_b
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->riskAnalyzer:Lorg/bitcoinj/wallet/RiskAnalysis$Analyzer;

    invoke-interface {v0, p0, p1, p2}, Lorg/bitcoinj/wallet/RiskAnalysis$Analyzer;->create(Lorg/bitcoinj/wallet/Wallet;Lorg/bitcoinj/core/Transaction;Ljava/util/List;)Lorg/bitcoinj/wallet/RiskAnalysis;

    move-result-object v0

    .line 1732
    invoke-interface {v0}, Lorg/bitcoinj/wallet/RiskAnalysis;->analyze()Lorg/bitcoinj/wallet/RiskAnalysis$Result;

    move-result-object v1

    .line 1733
    sget-object v2, Lorg/bitcoinj/wallet/RiskAnalysis$Result;->OK:Lorg/bitcoinj/wallet/RiskAnalysis$Result;

    if-eq v1, v2, :cond_27

    .line 1734
    sget-object v1, Lorg/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;

    const-string v2, "Pending transaction was considered risky: {}\n{}"

    invoke-interface {v1, v2, v0, p1}, Lorg/slf4j/Logger;->warn(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V
    :try_end_20
    .catchall {:try_start_7 .. :try_end_20} :catchall_2e

    .line 1739
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    .line 1735
    const/4 v0, 0x1

    .line 1737
    :goto_26
    return v0

    .line 1739
    :cond_27
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    .line 1737
    const/4 v0, 0x0

    goto :goto_26

    .line 1739
    :catchall_2e
    move-exception v0

    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    throw v0
.end method

.method isTxConsistent(Lorg/bitcoinj/core/Transaction;Z)Z
    .registers 9

    .prologue
    const/4 v2, 0x1

    const/4 v3, 0x0

    .line 1586
    .line 1587
    invoke-virtual {p1}, Lorg/bitcoinj/core/Transaction;->getOutputs()Ljava/util/List;

    move-result-object v0

    invoke-interface {v0}, Ljava/util/List;->iterator()Ljava/util/Iterator;

    move-result-object v4

    move v1, v2

    :goto_b
    invoke-interface {v4}, Ljava/util/Iterator;->hasNext()Z

    move-result v0

    if-eqz v0, :cond_43

    invoke-interface {v4}, Ljava/util/Iterator;->next()Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Lorg/bitcoinj/core/TransactionOutput;

    .line 1588
    invoke-virtual {v0}, Lorg/bitcoinj/core/TransactionOutput;->isAvailableForSpending()Z

    move-result v5

    if-eqz v5, :cond_32

    .line 1589
    invoke-virtual {v0, p0}, Lorg/bitcoinj/core/TransactionOutput;->isMineOrWatched(Lorg/bitcoinj/core/TransactionBag;)Z

    move-result v5

    if-eqz v5, :cond_24

    move v1, v3

    .line 1590
    :cond_24
    invoke-virtual {v0}, Lorg/bitcoinj/core/TransactionOutput;->getSpentBy()Lorg/bitcoinj/core/TransactionInput;

    move-result-object v0

    if-eqz v0, :cond_40

    .line 1591
    sget-object v0, Lorg/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;

    const-string v1, "isAvailableForSpending != spentBy"

    invoke-interface {v0, v1}, Lorg/slf4j/Logger;->error(Ljava/lang/String;)V

    .line 1601
    :cond_31
    :goto_31
    return v3

    .line 1595
    :cond_32
    invoke-virtual {v0}, Lorg/bitcoinj/core/TransactionOutput;->getSpentBy()Lorg/bitcoinj/core/TransactionInput;

    move-result-object v0

    if-nez v0, :cond_40

    .line 1596
    sget-object v0, Lorg/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;

    const-string v1, "isAvailableForSpending != spentBy"

    invoke-interface {v0, v1}, Lorg/slf4j/Logger;->error(Ljava/lang/String;)V

    goto :goto_31

    :cond_40
    move v0, v1

    move v1, v0

    .line 1600
    goto :goto_b

    .line 1601
    :cond_43
    if-ne v1, p2, :cond_31

    move v3, v2

    goto :goto_31
.end method

.method public isWatchedScript(Lorg/bitcoinj/script/Script;)Z
    .registers 4

    .prologue
    .line 1010
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V

    .line 1012
    :try_start_5
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->watchedScripts:Ljava/util/Set;

    invoke-interface {v0, p1}, Ljava/util/Set;->contains(Ljava/lang/Object;)Z
    :try_end_a
    .catchall {:try_start_5 .. :try_end_a} :catchall_11

    move-result v0

    .line 1014
    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    .line 1012
    return v0

    .line 1014
    :catchall_11
    move-exception v0

    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    throw v0
.end method

.method public isWatching()Z
    .registers 3

    .prologue
    .line 824
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V

    .line 826
    :try_start_5
    invoke-direct {p0}, Lorg/bitcoinj/wallet/Wallet;->maybeUpgradeToHD()V

    .line 827
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroup:Lorg/bitcoinj/wallet/KeyChainGroup;

    invoke-virtual {v0}, Lorg/bitcoinj/wallet/KeyChainGroup;->isWatching()Z
    :try_end_d
    .catchall {:try_start_5 .. :try_end_d} :catchall_14

    move-result v0

    .line 829
    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    .line 827
    return v0

    .line 829
    :catchall_14
    move-exception v0

    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    throw v0
.end method

.method public maybeCommitTx(Lorg/bitcoinj/core/Transaction;)Z
    .registers 9

    .prologue
    const/4 v1, 0x1

    const/4 v0, 0x0

    .line 2402
    invoke-virtual {p1}, Lorg/bitcoinj/core/Transaction;->verify()V

    .line 2403
    iget-object v2, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v2}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V

    .line 2405
    :try_start_a
    iget-object v2, p0, Lorg/bitcoinj/wallet/Wallet;->pending:Ljava/util/Map;

    invoke-virtual {p1}, Lorg/bitcoinj/core/Transaction;->getHash()Lorg/bitcoinj/core/Sha256Hash;

    move-result-object v3

    invoke-interface {v2, v3}, Ljava/util/Map;->containsKey(Ljava/lang/Object;)Z
    :try_end_13
    .catchall {:try_start_a .. :try_end_13} :catchall_13f

    move-result v2

    if-eqz v2, :cond_1c

    .line 2481
    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    .line 2483
    :goto_1b
    return v0

    .line 2407
    :cond_1c
    :try_start_1c
    sget-object v0, Lorg/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;

    const-string v2, "commitTx of {}"

    invoke-virtual {p1}, Lorg/bitcoinj/core/Transaction;->getHashAsString()Ljava/lang/String;

    move-result-object v3

    invoke-interface {v0, v2, v3}, Lorg/slf4j/Logger;->info(Ljava/lang/String;Ljava/lang/Object;)V

    .line 2408
    invoke-virtual {p0}, Lorg/bitcoinj/wallet/Wallet;->getBalance()Lorg/bitcoinj/core/Coin;

    move-result-object v3

    .line 2409
    invoke-static {}, Lorg/bitcoinj/core/Utils;->now()Ljava/util/Date;

    move-result-object v0

    invoke-virtual {p1, v0}, Lorg/bitcoinj/core/Transaction;->setUpdateTime(Ljava/util/Date;)V

    .line 2411
    sget-object v0, Lorg/bitcoinj/core/Coin;->ZERO:Lorg/bitcoinj/core/Coin;

    .line 2412
    invoke-virtual {p1}, Lorg/bitcoinj/core/Transaction;->getOutputs()Ljava/util/List;

    move-result-object v2

    invoke-interface {v2}, Ljava/util/List;->iterator()Ljava/util/Iterator;

    move-result-object v4

    move-object v2, v0

    :cond_3d
    :goto_3d
    invoke-interface {v4}, Ljava/util/Iterator;->hasNext()Z

    move-result v0

    if-eqz v0, :cond_59

    invoke-interface {v4}, Ljava/util/Iterator;->next()Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Lorg/bitcoinj/core/TransactionOutput;

    .line 2413
    invoke-virtual {v0, p0}, Lorg/bitcoinj/core/TransactionOutput;->isMineOrWatched(Lorg/bitcoinj/core/TransactionBag;)Z

    move-result v5

    if-eqz v5, :cond_3d

    .line 2414
    invoke-virtual {v0}, Lorg/bitcoinj/core/TransactionOutput;->getValue()Lorg/bitcoinj/core/Coin;

    move-result-object v0

    invoke-virtual {v2, v0}, Lorg/bitcoinj/core/Coin;->add(Lorg/bitcoinj/core/Coin;)Lorg/bitcoinj/core/Coin;

    move-result-object v0

    move-object v2, v0

    .line 2415
    goto :goto_3d

    .line 2419
    :cond_59
    const/4 v0, 0x0

    invoke-direct {p0, p1, v0}, Lorg/bitcoinj/wallet/Wallet;->updateForSpends(Lorg/bitcoinj/core/Transaction;Z)V

    .line 2421
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->pending:Ljava/util/Map;

    invoke-direct {p0, p1, v0}, Lorg/bitcoinj/wallet/Wallet;->findDoubleSpendsAgainst(Lorg/bitcoinj/core/Transaction;Ljava/util/Map;)Ljava/util/Set;

    move-result-object v0

    .line 2422
    iget-object v4, p0, Lorg/bitcoinj/wallet/Wallet;->unspent:Ljava/util/Map;

    invoke-direct {p0, p1, v4}, Lorg/bitcoinj/wallet/Wallet;->findDoubleSpendsAgainst(Lorg/bitcoinj/core/Transaction;Ljava/util/Map;)Ljava/util/Set;

    move-result-object v4

    .line 2423
    iget-object v5, p0, Lorg/bitcoinj/wallet/Wallet;->spent:Ljava/util/Map;

    invoke-direct {p0, p1, v5}, Lorg/bitcoinj/wallet/Wallet;->findDoubleSpendsAgainst(Lorg/bitcoinj/core/Transaction;Ljava/util/Map;)Ljava/util/Set;

    move-result-object v5

    .line 2425
    invoke-interface {v4}, Ljava/util/Set;->isEmpty()Z

    move-result v4

    if-eqz v4, :cond_83

    .line 2426
    invoke-interface {v5}, Ljava/util/Set;->isEmpty()Z

    move-result v4

    if-eqz v4, :cond_83

    sget-object v4, Lorg/bitcoinj/core/TransactionConfidence$ConfidenceType;->DEAD:Lorg/bitcoinj/core/TransactionConfidence$ConfidenceType;

    .line 2427
    invoke-direct {p0, p1, v4}, Lorg/bitcoinj/wallet/Wallet;->isNotSpendingTxnsInConfidenceType(Lorg/bitcoinj/core/Transaction;Lorg/bitcoinj/core/TransactionConfidence$ConfidenceType;)Z

    move-result v4

    if-nez v4, :cond_f5

    .line 2430
    :cond_83
    sget-object v0, Lorg/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;

    const-string v4, "->dead: {}"

    invoke-virtual {p1}, Lorg/bitcoinj/core/Transaction;->getHashAsString()Ljava/lang/String;

    move-result-object v5

    invoke-interface {v0, v4, v5}, Lorg/slf4j/Logger;->info(Ljava/lang/String;Ljava/lang/Object;)V

    .line 2431
    invoke-virtual {p1}, Lorg/bitcoinj/core/Transaction;->getConfidence()Lorg/bitcoinj/core/TransactionConfidence;

    move-result-object v0

    sget-object v4, Lorg/bitcoinj/core/TransactionConfidence$ConfidenceType;->DEAD:Lorg/bitcoinj/core/TransactionConfidence$ConfidenceType;

    invoke-virtual {v0, v4}, Lorg/bitcoinj/core/TransactionConfidence;->setConfidenceType(Lorg/bitcoinj/core/TransactionConfidence$ConfidenceType;)V

    .line 2432
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->confidenceChanged:Ljava/util/Map;

    sget-object v4, Lorg/bitcoinj/core/TransactionConfidence$Listener$ChangeReason;->TYPE:Lorg/bitcoinj/core/TransactionConfidence$Listener$ChangeReason;

    invoke-interface {v0, p1, v4}, Ljava/util/Map;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;

    .line 2433
    sget-object v0, Lorg/bitcoinj/wallet/WalletTransaction$Pool;->DEAD:Lorg/bitcoinj/wallet/WalletTransaction$Pool;

    invoke-direct {p0, v0, p1}, Lorg/bitcoinj/wallet/Wallet;->addWalletTransaction(Lorg/bitcoinj/wallet/WalletTransaction$Pool;Lorg/bitcoinj/core/Transaction;)V

    .line 2455
    :cond_a3
    :goto_a3
    sget-object v0, Lorg/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;

    invoke-interface {v0}, Lorg/slf4j/Logger;->isInfoEnabled()Z

    move-result v0

    if-eqz v0, :cond_bc

    .line 2456
    sget-object v0, Lorg/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;

    const-string v4, "Estimated balance is now: {}"

    sget-object v5, Lorg/bitcoinj/wallet/Wallet$BalanceType;->ESTIMATED:Lorg/bitcoinj/wallet/Wallet$BalanceType;

    invoke-virtual {p0, v5}, Lorg/bitcoinj/wallet/Wallet;->getBalance(Lorg/bitcoinj/wallet/Wallet$BalanceType;)Lorg/bitcoinj/core/Coin;

    move-result-object v5

    invoke-virtual {v5}, Lorg/bitcoinj/core/Coin;->toFriendlyString()Ljava/lang/String;

    move-result-object v5

    invoke-interface {v0, v4, v5}, Lorg/slf4j/Logger;->info(Ljava/lang/String;Ljava/lang/Object;)V

    .line 2460
    :cond_bc
    invoke-direct {p0, p1}, Lorg/bitcoinj/wallet/Wallet;->markKeysAsUsed(Lorg/bitcoinj/core/Transaction;)V
    :try_end_bf
    .catchall {:try_start_1c .. :try_end_bf} :catchall_13f

    .line 2462
    :try_start_bf
    invoke-virtual {p1, p0}, Lorg/bitcoinj/core/Transaction;->getValueSentFromMe(Lorg/bitcoinj/core/TransactionBag;)Lorg/bitcoinj/core/Coin;

    move-result-object v0

    .line 2463
    invoke-virtual {v3, v2}, Lorg/bitcoinj/core/Coin;->add(Lorg/bitcoinj/core/Coin;)Lorg/bitcoinj/core/Coin;

    move-result-object v4

    invoke-virtual {v4, v0}, Lorg/bitcoinj/core/Coin;->subtract(Lorg/bitcoinj/core/Coin;)Lorg/bitcoinj/core/Coin;

    move-result-object v4

    .line 2464
    invoke-virtual {v2}, Lorg/bitcoinj/core/Coin;->signum()I

    move-result v2

    if-lez v2, :cond_d8

    .line 2465
    const/4 v2, 0x0

    invoke-direct {p0, v2}, Lorg/bitcoinj/wallet/Wallet;->checkBalanceFuturesLocked(Lorg/bitcoinj/core/Coin;)V

    .line 2466
    invoke-virtual {p0, p1, v3, v4}, Lorg/bitcoinj/wallet/Wallet;->queueOnCoinsReceived(Lorg/bitcoinj/core/Transaction;Lorg/bitcoinj/core/Coin;Lorg/bitcoinj/core/Coin;)V

    .line 2468
    :cond_d8
    invoke-virtual {v0}, Lorg/bitcoinj/core/Coin;->signum()I

    move-result v0

    if-lez v0, :cond_e1

    .line 2469
    invoke-virtual {p0, p1, v3, v4}, Lorg/bitcoinj/wallet/Wallet;->queueOnCoinsSent(Lorg/bitcoinj/core/Transaction;Lorg/bitcoinj/core/Coin;Lorg/bitcoinj/core/Coin;)V

    .line 2471
    :cond_e1
    invoke-virtual {p0}, Lorg/bitcoinj/wallet/Wallet;->maybeQueueOnWalletChanged()V
    :try_end_e4
    .catch Lorg/bitcoinj/core/ScriptException; {:try_start_bf .. :try_end_e4} :catch_168
    .catchall {:try_start_bf .. :try_end_e4} :catchall_13f

    .line 2477
    :try_start_e4
    invoke-virtual {p0}, Lorg/bitcoinj/wallet/Wallet;->isConsistentOrThrow()V

    .line 2478
    invoke-direct {p0}, Lorg/bitcoinj/wallet/Wallet;->informConfidenceListenersIfNotReorganizing()V

    .line 2479
    invoke-virtual {p0}, Lorg/bitcoinj/wallet/Wallet;->saveNow()V
    :try_end_ed
    .catchall {:try_start_e4 .. :try_end_ed} :catchall_13f

    .line 2481
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    move v0, v1

    .line 2483
    goto/16 :goto_1b

    .line 2434
    :cond_f5
    :try_start_f5
    invoke-interface {v0}, Ljava/util/Set;->isEmpty()Z

    move-result v4

    if-eqz v4, :cond_103

    sget-object v4, Lorg/bitcoinj/core/TransactionConfidence$ConfidenceType;->IN_CONFLICT:Lorg/bitcoinj/core/TransactionConfidence$ConfidenceType;

    .line 2435
    invoke-direct {p0, p1, v4}, Lorg/bitcoinj/wallet/Wallet;->isNotSpendingTxnsInConfidenceType(Lorg/bitcoinj/core/Transaction;Lorg/bitcoinj/core/TransactionConfidence$ConfidenceType;)Z

    move-result v4

    if-nez v4, :cond_146

    .line 2439
    :cond_103
    sget-object v4, Lorg/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;

    const-string v5, "->pending (IN_CONFLICT): {}"

    invoke-virtual {p1}, Lorg/bitcoinj/core/Transaction;->getHashAsString()Ljava/lang/String;

    move-result-object v6

    invoke-interface {v4, v5, v6}, Lorg/slf4j/Logger;->info(Ljava/lang/String;Ljava/lang/Object;)V

    .line 2440
    sget-object v4, Lorg/bitcoinj/wallet/WalletTransaction$Pool;->PENDING:Lorg/bitcoinj/wallet/WalletTransaction$Pool;

    invoke-direct {p0, v4, p1}, Lorg/bitcoinj/wallet/Wallet;->addWalletTransaction(Lorg/bitcoinj/wallet/WalletTransaction$Pool;Lorg/bitcoinj/core/Transaction;)V

    .line 2441
    invoke-interface {v0, p1}, Ljava/util/Set;->add(Ljava/lang/Object;)Z

    .line 2442
    const/4 v4, 0x1

    invoke-virtual {p0, v4}, Lorg/bitcoinj/wallet/Wallet;->getTransactions(Z)Ljava/util/Set;

    move-result-object v4

    invoke-virtual {p0, v0, v4}, Lorg/bitcoinj/wallet/Wallet;->addTransactionsDependingOn(Ljava/util/Set;Ljava/util/Set;)V

    .line 2443
    invoke-interface {v0}, Ljava/util/Set;->iterator()Ljava/util/Iterator;

    move-result-object v4

    :goto_122
    invoke-interface {v4}, Ljava/util/Iterator;->hasNext()Z

    move-result v0

    if-eqz v0, :cond_a3

    invoke-interface {v4}, Ljava/util/Iterator;->next()Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Lorg/bitcoinj/core/Transaction;

    .line 2444
    invoke-virtual {v0}, Lorg/bitcoinj/core/Transaction;->getConfidence()Lorg/bitcoinj/core/TransactionConfidence;

    move-result-object v5

    sget-object v6, Lorg/bitcoinj/core/TransactionConfidence$ConfidenceType;->IN_CONFLICT:Lorg/bitcoinj/core/TransactionConfidence$ConfidenceType;

    invoke-virtual {v5, v6}, Lorg/bitcoinj/core/TransactionConfidence;->setConfidenceType(Lorg/bitcoinj/core/TransactionConfidence$ConfidenceType;)V

    .line 2445
    iget-object v5, p0, Lorg/bitcoinj/wallet/Wallet;->confidenceChanged:Ljava/util/Map;

    sget-object v6, Lorg/bitcoinj/core/TransactionConfidence$Listener$ChangeReason;->TYPE:Lorg/bitcoinj/core/TransactionConfidence$Listener$ChangeReason;

    invoke-interface {v5, v0, v6}, Ljava/util/Map;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
    :try_end_13e
    .catchall {:try_start_f5 .. :try_end_13e} :catchall_13f

    goto :goto_122

    .line 2481
    :catchall_13f
    move-exception v0

    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    throw v0

    .line 2450
    :cond_146
    :try_start_146
    sget-object v0, Lorg/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;

    const-string v4, "->pending: {}"

    invoke-virtual {p1}, Lorg/bitcoinj/core/Transaction;->getHashAsString()Ljava/lang/String;

    move-result-object v5

    invoke-interface {v0, v4, v5}, Lorg/slf4j/Logger;->info(Ljava/lang/String;Ljava/lang/Object;)V

    .line 2451
    invoke-virtual {p1}, Lorg/bitcoinj/core/Transaction;->getConfidence()Lorg/bitcoinj/core/TransactionConfidence;

    move-result-object v0

    sget-object v4, Lorg/bitcoinj/core/TransactionConfidence$ConfidenceType;->PENDING:Lorg/bitcoinj/core/TransactionConfidence$ConfidenceType;

    invoke-virtual {v0, v4}, Lorg/bitcoinj/core/TransactionConfidence;->setConfidenceType(Lorg/bitcoinj/core/TransactionConfidence$ConfidenceType;)V

    .line 2452
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->confidenceChanged:Ljava/util/Map;

    sget-object v4, Lorg/bitcoinj/core/TransactionConfidence$Listener$ChangeReason;->TYPE:Lorg/bitcoinj/core/TransactionConfidence$Listener$ChangeReason;

    invoke-interface {v0, p1, v4}, Ljava/util/Map;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;

    .line 2453
    sget-object v0, Lorg/bitcoinj/wallet/WalletTransaction$Pool;->PENDING:Lorg/bitcoinj/wallet/WalletTransaction$Pool;

    invoke-direct {p0, v0, p1}, Lorg/bitcoinj/wallet/Wallet;->addWalletTransaction(Lorg/bitcoinj/wallet/WalletTransaction$Pool;Lorg/bitcoinj/core/Transaction;)V

    goto/16 :goto_a3

    .line 2472
    :catch_168
    move-exception v0

    .line 2474
    new-instance v1, Ljava/lang/RuntimeException;

    invoke-direct {v1, v0}, Ljava/lang/RuntimeException;-><init>(Ljava/lang/Throwable;)V

    throw v1
    :try_end_16f
    .catchall {:try_start_146 .. :try_end_16f} :catchall_13f
.end method

.method public maybeDoMaintenance(Lorg/spongycastle/crypto/params/KeyParameter;Z)Lcom/google/common/util/concurrent/y;
    .registers 4
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "(",
            "Lorg/spongycastle/crypto/params/KeyParameter;",
            "Z)",
            "Lcom/google/common/util/concurrent/y",
            "<",
            "Ljava/util/List",
            "<",
            "Lorg/bitcoinj/core/Transaction;",
            ">;>;"
        }
    .end annotation

    .annotation runtime Ljava/lang/Deprecated;
    .end annotation

    .prologue
    .line 5128
    invoke-virtual {p0, p1, p2}, Lorg/bitcoinj/wallet/Wallet;->doMaintenance(Lorg/spongycastle/crypto/params/KeyParameter;Z)Lcom/google/common/util/concurrent/y;

    move-result-object v0

    return-object v0
.end method

.method protected maybeQueueOnWalletChanged()V
    .registers 5

    .prologue
    .line 2741
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->isHeldByCurrentThread()Z

    move-result v0

    invoke-static {v0}, Lcom/google/common/base/n;->checkState(Z)V

    .line 2742
    iget v0, p0, Lorg/bitcoinj/wallet/Wallet;->onWalletChangedSuppressions:I

    if-ltz v0, :cond_16

    const/4 v0, 0x1

    :goto_e
    invoke-static {v0}, Lcom/google/common/base/n;->checkState(Z)V

    .line 2743
    iget v0, p0, Lorg/bitcoinj/wallet/Wallet;->onWalletChangedSuppressions:I

    if-lez v0, :cond_18

    .line 2752
    :cond_15
    return-void

    .line 2742
    :cond_16
    const/4 v0, 0x0

    goto :goto_e

    .line 2744
    :cond_18
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->changeListeners:Ljava/util/concurrent/CopyOnWriteArrayList;

    invoke-virtual {v0}, Ljava/util/concurrent/CopyOnWriteArrayList;->iterator()Ljava/util/Iterator;

    move-result-object v1

    :goto_1e
    invoke-interface {v1}, Ljava/util/Iterator;->hasNext()Z

    move-result v0

    if-eqz v0, :cond_15

    invoke-interface {v1}, Ljava/util/Iterator;->next()Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Lorg/bitcoinj/utils/ListenerRegistration;

    .line 2745
    iget-object v2, v0, Lorg/bitcoinj/utils/ListenerRegistration;->executor:Ljava/util/concurrent/Executor;

    new-instance v3, Lorg/bitcoinj/wallet/Wallet$4;

    invoke-direct {v3, p0, v0}, Lorg/bitcoinj/wallet/Wallet$4;-><init>(Lorg/bitcoinj/wallet/Wallet;Lorg/bitcoinj/utils/ListenerRegistration;)V

    invoke-interface {v2, v3}, Ljava/util/concurrent/Executor;->execute(Ljava/lang/Runnable;)V

    goto :goto_1e
.end method

.method public notifyNewBestBlock(Lorg/bitcoinj/core/StoredBlock;)V
    .registers 7

    .prologue
    .line 2107
    invoke-virtual {p1}, Lorg/bitcoinj/core/StoredBlock;->getHeader()Lorg/bitcoinj/core/Block;

    move-result-object v0

    invoke-virtual {v0}, Lorg/bitcoinj/core/Block;->getHash()Lorg/bitcoinj/core/Sha256Hash;

    move-result-object v0

    .line 2108
    invoke-virtual {p0}, Lorg/bitcoinj/wallet/Wallet;->getLastBlockSeenHash()Lorg/bitcoinj/core/Sha256Hash;

    move-result-object v1

    invoke-virtual {v0, v1}, Lorg/bitcoinj/core/Sha256Hash;->equals(Ljava/lang/Object;)Z

    move-result v1

    if-eqz v1, :cond_13

    .line 2153
    :goto_12
    return-void

    .line 2110
    :cond_13
    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V

    .line 2113
    :try_start_18
    invoke-virtual {p0, v0}, Lorg/bitcoinj/wallet/Wallet;->setLastBlockSeenHash(Lorg/bitcoinj/core/Sha256Hash;)V

    .line 2114
    invoke-virtual {p1}, Lorg/bitcoinj/core/StoredBlock;->getHeight()I

    move-result v0

    invoke-virtual {p0, v0}, Lorg/bitcoinj/wallet/Wallet;->setLastBlockSeenHeight(I)V

    .line 2115
    invoke-virtual {p1}, Lorg/bitcoinj/core/StoredBlock;->getHeader()Lorg/bitcoinj/core/Block;

    move-result-object v0

    invoke-virtual {v0}, Lorg/bitcoinj/core/Block;->getTimeSeconds()J

    move-result-wide v0

    invoke-virtual {p0, v0, v1}, Lorg/bitcoinj/wallet/Wallet;->setLastBlockSeenTimeSecs(J)V

    .line 2118
    const/4 v0, 0x1

    invoke-virtual {p0, v0}, Lorg/bitcoinj/wallet/Wallet;->getTransactions(Z)Ljava/util/Set;

    move-result-object v0

    .line 2119
    invoke-interface {v0}, Ljava/util/Set;->iterator()Ljava/util/Iterator;

    move-result-object v1

    :cond_36
    :goto_36
    invoke-interface {v1}, Ljava/util/Iterator;->hasNext()Z

    move-result v0

    if-eqz v0, :cond_82

    invoke-interface {v1}, Ljava/util/Iterator;->next()Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Lorg/bitcoinj/core/Transaction;

    .line 2120
    iget-object v2, p0, Lorg/bitcoinj/wallet/Wallet;->ignoreNextNewBlock:Ljava/util/HashSet;

    invoke-virtual {v0}, Lorg/bitcoinj/core/Transaction;->getHash()Lorg/bitcoinj/core/Sha256Hash;

    move-result-object v3

    invoke-virtual {v2, v3}, Ljava/util/HashSet;->contains(Ljava/lang/Object;)Z

    move-result v2

    if-eqz v2, :cond_5f

    .line 2123
    iget-object v2, p0, Lorg/bitcoinj/wallet/Wallet;->ignoreNextNewBlock:Ljava/util/HashSet;

    invoke-virtual {v0}, Lorg/bitcoinj/core/Transaction;->getHash()Lorg/bitcoinj/core/Sha256Hash;

    move-result-object v0

    invoke-virtual {v2, v0}, Ljava/util/HashSet;->remove(Ljava/lang/Object;)Z
    :try_end_57
    .catchall {:try_start_18 .. :try_end_57} :catchall_58

    goto :goto_36

    .line 2152
    :catchall_58
    move-exception v0

    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    throw v0

    .line 2125
    :cond_5f
    :try_start_5f
    invoke-virtual {v0}, Lorg/bitcoinj/core/Transaction;->getConfidence()Lorg/bitcoinj/core/TransactionConfidence;

    move-result-object v2

    .line 2126
    invoke-virtual {v2}, Lorg/bitcoinj/core/TransactionConfidence;->getConfidenceType()Lorg/bitcoinj/core/TransactionConfidence$ConfidenceType;

    move-result-object v3

    sget-object v4, Lorg/bitcoinj/core/TransactionConfidence$ConfidenceType;->BUILDING:Lorg/bitcoinj/core/TransactionConfidence$ConfidenceType;

    if-ne v3, v4, :cond_36

    .line 2134
    invoke-virtual {v2}, Lorg/bitcoinj/core/TransactionConfidence;->incrementDepthInBlocks()I

    move-result v3

    iget-object v4, p0, Lorg/bitcoinj/wallet/Wallet;->context:Lorg/bitcoinj/core/Context;

    invoke-virtual {v4}, Lorg/bitcoinj/core/Context;->getEventHorizon()I

    move-result v4

    if-le v3, v4, :cond_7a

    .line 2135
    invoke-virtual {v2}, Lorg/bitcoinj/core/TransactionConfidence;->clearBroadcastBy()V

    .line 2136
    :cond_7a
    iget-object v2, p0, Lorg/bitcoinj/wallet/Wallet;->confidenceChanged:Ljava/util/Map;

    sget-object v3, Lorg/bitcoinj/core/TransactionConfidence$Listener$ChangeReason;->DEPTH:Lorg/bitcoinj/core/TransactionConfidence$Listener$ChangeReason;

    invoke-interface {v2, v0, v3}, Ljava/util/Map;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;

    goto :goto_36

    .line 2141
    :cond_82
    invoke-direct {p0}, Lorg/bitcoinj/wallet/Wallet;->informConfidenceListenersIfNotReorganizing()V

    .line 2142
    invoke-virtual {p0}, Lorg/bitcoinj/wallet/Wallet;->maybeQueueOnWalletChanged()V

    .line 2144
    iget-boolean v0, p0, Lorg/bitcoinj/wallet/Wallet;->hardSaveOnNextBlock:Z

    if-eqz v0, :cond_99

    .line 2145
    invoke-virtual {p0}, Lorg/bitcoinj/wallet/Wallet;->saveNow()V

    .line 2146
    const/4 v0, 0x0

    iput-boolean v0, p0, Lorg/bitcoinj/wallet/Wallet;->hardSaveOnNextBlock:Z
    :try_end_92
    .catchall {:try_start_5f .. :try_end_92} :catchall_58

    .line 2152
    :goto_92
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    goto/16 :goto_12

    .line 2149
    :cond_99
    :try_start_99
    invoke-virtual {p0}, Lorg/bitcoinj/wallet/Wallet;->saveLater()V
    :try_end_9c
    .catchall {:try_start_99 .. :try_end_9c} :catchall_58

    goto :goto_92
.end method

.method public notifyTransactionIsInBlock(Lorg/bitcoinj/core/Sha256Hash;Lorg/bitcoinj/core/StoredBlock;Lorg/bitcoinj/core/AbstractBlockChain$NewBlockType;I)Z
    .registers 9

    .prologue
    .line 1641
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V

    .line 1643
    :try_start_5
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->transactions:Ljava/util/Map;

    invoke-interface {v0, p1}, Ljava/util/Map;->get(Ljava/lang/Object;)Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Lorg/bitcoinj/core/Transaction;

    .line 1644
    if-nez v0, :cond_24

    .line 1645
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->riskDropped:Ljava/util/LinkedHashMap;

    invoke-virtual {v0, p1}, Ljava/util/LinkedHashMap;->get(Ljava/lang/Object;)Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Lorg/bitcoinj/core/Transaction;

    .line 1646
    if-eqz v0, :cond_2e

    .line 1648
    sget-object v1, Lorg/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;

    const-string v2, "Risk analysis dropped tx {} but was included in block anyway"

    invoke-virtual {v0}, Lorg/bitcoinj/core/Transaction;->getHash()Lorg/bitcoinj/core/Sha256Hash;

    move-result-object v3

    invoke-interface {v1, v2, v3}, Lorg/slf4j/Logger;->info(Ljava/lang/String;Ljava/lang/Object;)V

    .line 1654
    :cond_24
    invoke-direct {p0, v0, p2, p3, p4}, Lorg/bitcoinj/wallet/Wallet;->receive(Lorg/bitcoinj/core/Transaction;Lorg/bitcoinj/core/StoredBlock;Lorg/bitcoinj/core/AbstractBlockChain$NewBlockType;I)V
    :try_end_27
    .catchall {:try_start_5 .. :try_end_27} :catchall_35

    .line 1657
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    .line 1655
    const/4 v0, 0x1

    :goto_2d
    return v0

    .line 1657
    :cond_2e
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    .line 1651
    const/4 v0, 0x0

    goto :goto_2d

    .line 1657
    :catchall_35
    move-exception v0

    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    throw v0
.end method

.method public poolContainsTxHash(Lorg/bitcoinj/wallet/WalletTransaction$Pool;Lorg/bitcoinj/core/Sha256Hash;)Z
    .registers 5

    .prologue
    .line 3139
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V

    .line 3141
    :try_start_5
    sget-object v0, Lorg/bitcoinj/wallet/Wallet$11;->$SwitchMap$org$bitcoinj$wallet$WalletTransaction$Pool:[I

    invoke-virtual {p1}, Lorg/bitcoinj/wallet/WalletTransaction$Pool;->ordinal()I

    move-result v1

    aget v0, v0, v1

    packed-switch v0, :pswitch_data_50

    .line 3151
    new-instance v0, Ljava/lang/RuntimeException;

    const-string v1, "Unreachable"

    invoke-direct {v0, v1}, Ljava/lang/RuntimeException;-><init>(Ljava/lang/String;)V

    throw v0
    :try_end_18
    .catchall {:try_start_5 .. :try_end_18} :catchall_18

    .line 3153
    :catchall_18
    move-exception v0

    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    throw v0

    .line 3143
    :pswitch_1f
    :try_start_1f
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->unspent:Ljava/util/Map;

    invoke-interface {v0, p2}, Ljava/util/Map;->containsKey(Ljava/lang/Object;)Z
    :try_end_24
    .catchall {:try_start_1f .. :try_end_24} :catchall_18

    move-result v0

    .line 3153
    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    .line 3149
    :goto_2a
    return v0

    .line 3145
    :pswitch_2b
    :try_start_2b
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->spent:Ljava/util/Map;

    invoke-interface {v0, p2}, Ljava/util/Map;->containsKey(Ljava/lang/Object;)Z
    :try_end_30
    .catchall {:try_start_2b .. :try_end_30} :catchall_18

    move-result v0

    .line 3153
    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    goto :goto_2a

    .line 3147
    :pswitch_37
    :try_start_37
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->pending:Ljava/util/Map;

    invoke-interface {v0, p2}, Ljava/util/Map;->containsKey(Ljava/lang/Object;)Z
    :try_end_3c
    .catchall {:try_start_37 .. :try_end_3c} :catchall_18

    move-result v0

    .line 3153
    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    goto :goto_2a

    .line 3149
    :pswitch_43
    :try_start_43
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->dead:Ljava/util/Map;

    invoke-interface {v0, p2}, Ljava/util/Map;->containsKey(Ljava/lang/Object;)Z
    :try_end_48
    .catchall {:try_start_43 .. :try_end_48} :catchall_18

    move-result v0

    .line 3153
    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    goto :goto_2a

    .line 3141
    nop

    :pswitch_data_50
    .packed-switch 0x1
        :pswitch_1f
        :pswitch_2b
        :pswitch_37
        :pswitch_43
    .end packed-switch
.end method

.method protected queueOnCoinsReceived(Lorg/bitcoinj/core/Transaction;Lorg/bitcoinj/core/Coin;Lorg/bitcoinj/core/Coin;)V
    .registers 12

    .prologue
    .line 2755
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->isHeldByCurrentThread()Z

    move-result v0

    invoke-static {v0}, Lcom/google/common/base/n;->checkState(Z)V

    .line 2756
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->coinsReceivedListeners:Ljava/util/concurrent/CopyOnWriteArrayList;

    invoke-virtual {v0}, Ljava/util/concurrent/CopyOnWriteArrayList;->iterator()Ljava/util/Iterator;

    move-result-object v6

    :goto_f
    invoke-interface {v6}, Ljava/util/Iterator;->hasNext()Z

    move-result v0

    if-eqz v0, :cond_2a

    invoke-interface {v6}, Ljava/util/Iterator;->next()Ljava/lang/Object;

    move-result-object v2

    check-cast v2, Lorg/bitcoinj/utils/ListenerRegistration;

    .line 2757
    iget-object v7, v2, Lorg/bitcoinj/utils/ListenerRegistration;->executor:Ljava/util/concurrent/Executor;

    new-instance v0, Lorg/bitcoinj/wallet/Wallet$5;

    move-object v1, p0

    move-object v3, p1

    move-object v4, p2

    move-object v5, p3

    invoke-direct/range {v0 .. v5}, Lorg/bitcoinj/wallet/Wallet$5;-><init>(Lorg/bitcoinj/wallet/Wallet;Lorg/bitcoinj/utils/ListenerRegistration;Lorg/bitcoinj/core/Transaction;Lorg/bitcoinj/core/Coin;Lorg/bitcoinj/core/Coin;)V

    invoke-interface {v7, v0}, Ljava/util/concurrent/Executor;->execute(Ljava/lang/Runnable;)V

    goto :goto_f

    .line 2764
    :cond_2a
    return-void
.end method

.method protected queueOnCoinsSent(Lorg/bitcoinj/core/Transaction;Lorg/bitcoinj/core/Coin;Lorg/bitcoinj/core/Coin;)V
    .registers 12

    .prologue
    .line 2767
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->isHeldByCurrentThread()Z

    move-result v0

    invoke-static {v0}, Lcom/google/common/base/n;->checkState(Z)V

    .line 2768
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->coinsSentListeners:Ljava/util/concurrent/CopyOnWriteArrayList;

    invoke-virtual {v0}, Ljava/util/concurrent/CopyOnWriteArrayList;->iterator()Ljava/util/Iterator;

    move-result-object v6

    :goto_f
    invoke-interface {v6}, Ljava/util/Iterator;->hasNext()Z

    move-result v0

    if-eqz v0, :cond_2a

    invoke-interface {v6}, Ljava/util/Iterator;->next()Ljava/lang/Object;

    move-result-object v2

    check-cast v2, Lorg/bitcoinj/utils/ListenerRegistration;

    .line 2769
    iget-object v7, v2, Lorg/bitcoinj/utils/ListenerRegistration;->executor:Ljava/util/concurrent/Executor;

    new-instance v0, Lorg/bitcoinj/wallet/Wallet$6;

    move-object v1, p0

    move-object v3, p1

    move-object v4, p2

    move-object v5, p3

    invoke-direct/range {v0 .. v5}, Lorg/bitcoinj/wallet/Wallet$6;-><init>(Lorg/bitcoinj/wallet/Wallet;Lorg/bitcoinj/utils/ListenerRegistration;Lorg/bitcoinj/core/Transaction;Lorg/bitcoinj/core/Coin;Lorg/bitcoinj/core/Coin;)V

    invoke-interface {v7, v0}, Ljava/util/concurrent/Executor;->execute(Ljava/lang/Runnable;)V

    goto :goto_f

    .line 2776
    :cond_2a
    return-void
.end method

.method protected queueOnReorganize()V
    .registers 5

    .prologue
    .line 2779
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->isHeldByCurrentThread()Z

    move-result v0

    invoke-static {v0}, Lcom/google/common/base/n;->checkState(Z)V

    .line 2780
    iget-boolean v0, p0, Lorg/bitcoinj/wallet/Wallet;->insideReorg:Z

    invoke-static {v0}, Lcom/google/common/base/n;->checkState(Z)V

    .line 2781
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->reorganizeListeners:Ljava/util/concurrent/CopyOnWriteArrayList;

    invoke-virtual {v0}, Ljava/util/concurrent/CopyOnWriteArrayList;->iterator()Ljava/util/Iterator;

    move-result-object v1

    :goto_14
    invoke-interface {v1}, Ljava/util/Iterator;->hasNext()Z

    move-result v0

    if-eqz v0, :cond_2b

    invoke-interface {v1}, Ljava/util/Iterator;->next()Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Lorg/bitcoinj/utils/ListenerRegistration;

    .line 2782
    iget-object v2, v0, Lorg/bitcoinj/utils/ListenerRegistration;->executor:Ljava/util/concurrent/Executor;

    new-instance v3, Lorg/bitcoinj/wallet/Wallet$7;

    invoke-direct {v3, p0, v0}, Lorg/bitcoinj/wallet/Wallet$7;-><init>(Lorg/bitcoinj/wallet/Wallet;Lorg/bitcoinj/utils/ListenerRegistration;)V

    invoke-interface {v2, v3}, Ljava/util/concurrent/Executor;->execute(Ljava/lang/Runnable;)V

    goto :goto_14

    .line 2789
    :cond_2b
    return-void
.end method

.method protected queueOnScriptsChanged(Ljava/util/List;Z)V
    .registers 7
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "(",
            "Ljava/util/List",
            "<",
            "Lorg/bitcoinj/script/Script;",
            ">;Z)V"
        }
    .end annotation

    .prologue
    .line 2792
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->scriptChangeListeners:Ljava/util/concurrent/CopyOnWriteArrayList;

    invoke-virtual {v0}, Ljava/util/concurrent/CopyOnWriteArrayList;->iterator()Ljava/util/Iterator;

    move-result-object v1

    :goto_6
    invoke-interface {v1}, Ljava/util/Iterator;->hasNext()Z

    move-result v0

    if-eqz v0, :cond_1d

    invoke-interface {v1}, Ljava/util/Iterator;->next()Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Lorg/bitcoinj/utils/ListenerRegistration;

    .line 2793
    iget-object v2, v0, Lorg/bitcoinj/utils/ListenerRegistration;->executor:Ljava/util/concurrent/Executor;

    new-instance v3, Lorg/bitcoinj/wallet/Wallet$8;

    invoke-direct {v3, p0, v0, p1, p2}, Lorg/bitcoinj/wallet/Wallet$8;-><init>(Lorg/bitcoinj/wallet/Wallet;Lorg/bitcoinj/utils/ListenerRegistration;Ljava/util/List;Z)V

    invoke-interface {v2, v3}, Ljava/util/concurrent/Executor;->execute(Ljava/lang/Runnable;)V

    goto :goto_6

    .line 2800
    :cond_1d
    return-void
.end method

.method public receiveFromBlock(Lorg/bitcoinj/core/Transaction;Lorg/bitcoinj/core/StoredBlock;Lorg/bitcoinj/core/AbstractBlockChain$NewBlockType;I)V
    .registers 7

    .prologue
    .line 1883
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V

    .line 1885
    :try_start_5
    invoke-virtual {p0, p1}, Lorg/bitcoinj/wallet/Wallet;->isTransactionRelevant(Lorg/bitcoinj/core/Transaction;)Z
    :try_end_8
    .catchall {:try_start_5 .. :try_end_8} :catchall_1a

    move-result v0

    if-nez v0, :cond_11

    .line 1889
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    .line 1890
    :goto_10
    return-void

    .line 1887
    :cond_11
    :try_start_11
    invoke-direct {p0, p1, p2, p3, p4}, Lorg/bitcoinj/wallet/Wallet;->receive(Lorg/bitcoinj/core/Transaction;Lorg/bitcoinj/core/StoredBlock;Lorg/bitcoinj/core/AbstractBlockChain$NewBlockType;I)V
    :try_end_14
    .catchall {:try_start_11 .. :try_end_14} :catchall_1a

    .line 1889
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    goto :goto_10

    :catchall_1a
    move-exception v0

    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    throw v0
.end method

.method public receivePending(Lorg/bitcoinj/core/Transaction;Ljava/util/List;)V
    .registers 4
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "(",
            "Lorg/bitcoinj/core/Transaction;",
            "Ljava/util/List",
            "<",
            "Lorg/bitcoinj/core/Transaction;",
            ">;)V"
        }
    .end annotation

    .prologue
    .line 1755
    const/4 v0, 0x0

    invoke-virtual {p0, p1, p2, v0}, Lorg/bitcoinj/wallet/Wallet;->receivePending(Lorg/bitcoinj/core/Transaction;Ljava/util/List;Z)V

    .line 1756
    return-void
.end method

.method public receivePending(Lorg/bitcoinj/core/Transaction;Ljava/util/List;Z)V
    .registers 12
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "(",
            "Lorg/bitcoinj/core/Transaction;",
            "Ljava/util/List",
            "<",
            "Lorg/bitcoinj/core/Transaction;",
            ">;Z)V"
        }
    .end annotation

    .prologue
    .line 1678
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V

    .line 1680
    :try_start_5
    invoke-virtual {p1}, Lorg/bitcoinj/core/Transaction;->verify()V

    .line 1683
    invoke-virtual {p0, p1}, Lorg/bitcoinj/wallet/Wallet;->getContainingPools(Lorg/bitcoinj/core/Transaction;)Ljava/util/EnumSet;

    move-result-object v0

    .line 1684
    const-class v1, Lorg/bitcoinj/wallet/WalletTransaction$Pool;

    invoke-static {v1}, Ljava/util/EnumSet;->noneOf(Ljava/lang/Class;)Ljava/util/EnumSet;

    move-result-object v1

    invoke-virtual {v0, v1}, Ljava/util/EnumSet;->equals(Ljava/lang/Object;)Z

    move-result v0

    if-nez v0, :cond_36

    .line 1685
    sget-object v0, Lorg/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;

    new-instance v1, Ljava/lang/StringBuilder;

    const-string v2, "Received tx we already saw in a block or created ourselves: "

    invoke-direct {v1, v2}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V

    invoke-virtual {p1}, Lorg/bitcoinj/core/Transaction;->getHashAsString()Ljava/lang/String;

    move-result-object v2

    invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v1

    invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v1

    invoke-interface {v0, v1}, Lorg/slf4j/Logger;->debug(Ljava/lang/String;)V
    :try_end_30
    .catchall {:try_start_5 .. :try_end_30} :catchall_c4

    .line 1713
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    .line 1714
    :goto_35
    return-void

    .line 1690
    :cond_36
    if-nez p3, :cond_44

    :try_start_38
    invoke-virtual {p0, p1}, Lorg/bitcoinj/wallet/Wallet;->isPendingTransactionRelevant(Lorg/bitcoinj/core/Transaction;)Z
    :try_end_3b
    .catchall {:try_start_38 .. :try_end_3b} :catchall_c4

    move-result v0

    if-nez v0, :cond_44

    .line 1713
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    goto :goto_35

    .line 1692
    :cond_44
    :try_start_44
    invoke-virtual {p0, p1, p2}, Lorg/bitcoinj/wallet/Wallet;->isTransactionRisky(Lorg/bitcoinj/core/Transaction;Ljava/util/List;)Z

    move-result v0

    if-eqz v0, :cond_6e

    iget-boolean v0, p0, Lorg/bitcoinj/wallet/Wallet;->acceptRiskyTransactions:Z

    if-nez v0, :cond_6e

    .line 1694
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->riskDropped:Ljava/util/LinkedHashMap;

    invoke-virtual {p1}, Lorg/bitcoinj/core/Transaction;->getHash()Lorg/bitcoinj/core/Sha256Hash;

    move-result-object v1

    invoke-virtual {v0, v1, p1}, Ljava/util/LinkedHashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;

    .line 1695
    sget-object v0, Lorg/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;

    const-string v1, "There are now {} risk dropped transactions being kept in memory"

    iget-object v2, p0, Lorg/bitcoinj/wallet/Wallet;->riskDropped:Ljava/util/LinkedHashMap;

    invoke-virtual {v2}, Ljava/util/LinkedHashMap;->size()I

    move-result v2

    invoke-static {v2}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;

    move-result-object v2

    invoke-interface {v0, v1, v2}, Lorg/slf4j/Logger;->warn(Ljava/lang/String;Ljava/lang/Object;)V
    :try_end_68
    .catchall {:try_start_44 .. :try_end_68} :catchall_c4

    .line 1713
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    goto :goto_35

    .line 1698
    :cond_6e
    :try_start_6e
    invoke-virtual {p1, p0}, Lorg/bitcoinj/core/Transaction;->getValueSentToMe(Lorg/bitcoinj/core/TransactionBag;)Lorg/bitcoinj/core/Coin;

    move-result-object v0

    .line 1699
    invoke-virtual {p1, p0}, Lorg/bitcoinj/core/Transaction;->getValueSentFromMe(Lorg/bitcoinj/core/TransactionBag;)Lorg/bitcoinj/core/Coin;

    move-result-object v1

    .line 1700
    sget-object v2, Lorg/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;

    invoke-interface {v2}, Lorg/slf4j/Logger;->isInfoEnabled()Z

    move-result v2

    if-eqz v2, :cond_a3

    .line 1701
    sget-object v2, Lorg/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;

    sget-object v3, Ljava/util/Locale;->US:Ljava/util/Locale;

    const-string v4, "Received a pending transaction %s that spends %s from our own wallet, and sends us %s"

    const/4 v5, 0x3

    new-array v5, v5, [Ljava/lang/Object;

    const/4 v6, 0x0

    .line 1702
    invoke-virtual {p1}, Lorg/bitcoinj/core/Transaction;->getHashAsString()Ljava/lang/String;

    move-result-object v7

    aput-object v7, v5, v6

    const/4 v6, 0x1

    invoke-virtual {v1}, Lorg/bitcoinj/core/Coin;->toFriendlyString()Ljava/lang/String;

    move-result-object v1

    aput-object v1, v5, v6

    const/4 v1, 0x2

    .line 1703
    invoke-virtual {v0}, Lorg/bitcoinj/core/Coin;->toFriendlyString()Ljava/lang/String;

    move-result-object v0

    aput-object v0, v5, v1

    .line 1701
    invoke-static {v3, v4, v5}, Ljava/lang/String;->format(Ljava/util/Locale;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;

    move-result-object v0

    invoke-interface {v2, v0}, Lorg/slf4j/Logger;->info(Ljava/lang/String;)V

    .line 1705
    :cond_a3
    invoke-virtual {p1}, Lorg/bitcoinj/core/Transaction;->getConfidence()Lorg/bitcoinj/core/TransactionConfidence;

    move-result-object v0

    invoke-virtual {v0}, Lorg/bitcoinj/core/TransactionConfidence;->getSource()Lorg/bitcoinj/core/TransactionConfidence$Source;

    move-result-object v0

    sget-object v1, Lorg/bitcoinj/core/TransactionConfidence$Source;->UNKNOWN:Lorg/bitcoinj/core/TransactionConfidence$Source;

    invoke-virtual {v0, v1}, Lorg/bitcoinj/core/TransactionConfidence$Source;->equals(Ljava/lang/Object;)Z

    move-result v0

    if-eqz v0, :cond_ba

    .line 1706
    sget-object v0, Lorg/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;

    const-string v1, "Wallet received transaction with an unknown source. Consider tagging it!"

    invoke-interface {v0, v1}, Lorg/slf4j/Logger;->warn(Ljava/lang/String;)V

    .line 1711
    :cond_ba
    invoke-virtual {p0, p1}, Lorg/bitcoinj/wallet/Wallet;->commitTx(Lorg/bitcoinj/core/Transaction;)V
    :try_end_bd
    .catchall {:try_start_6e .. :try_end_bd} :catchall_c4

    .line 1713
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    goto/16 :goto_35

    :catchall_c4
    move-exception v0

    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    throw v0
.end method

.method public removeChangeEventListener(Lorg/bitcoinj/wallet/listeners/WalletChangeEventListener;)Z
    .registers 3

    .prologue
    .line 2671
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->changeListeners:Ljava/util/concurrent/CopyOnWriteArrayList;

    invoke-static {p1, v0}, Lorg/bitcoinj/utils/ListenerRegistration;->removeFromList(Ljava/lang/Object;Ljava/util/List;)Z

    move-result v0

    return v0
.end method

.method public removeCoinsReceivedEventListener(Lorg/bitcoinj/wallet/listeners/WalletCoinsReceivedEventListener;)Z
    .registers 3

    .prologue
    .line 2679
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->coinsReceivedListeners:Ljava/util/concurrent/CopyOnWriteArrayList;

    invoke-static {p1, v0}, Lorg/bitcoinj/utils/ListenerRegistration;->removeFromList(Ljava/lang/Object;Ljava/util/List;)Z

    move-result v0

    return v0
.end method

.method public removeCoinsSentEventListener(Lorg/bitcoinj/wallet/listeners/WalletCoinsSentEventListener;)Z
    .registers 3

    .prologue
    .line 2687
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->coinsSentListeners:Ljava/util/concurrent/CopyOnWriteArrayList;

    invoke-static {p1, v0}, Lorg/bitcoinj/utils/ListenerRegistration;->removeFromList(Ljava/lang/Object;Ljava/util/List;)Z

    move-result v0

    return v0
.end method

.method public removeEventListener(Lorg/bitcoinj/wallet/listeners/WalletEventListener;)Z
    .registers 3
    .annotation runtime Ljava/lang/Deprecated;
    .end annotation

    .prologue
    .line 2658
    invoke-virtual {p0, p1}, Lorg/bitcoinj/wallet/Wallet;->removeChangeEventListener(Lorg/bitcoinj/wallet/listeners/WalletChangeEventListener;)Z

    move-result v0

    if-nez v0, :cond_24

    .line 2659
    invoke-virtual {p0, p1}, Lorg/bitcoinj/wallet/Wallet;->removeCoinsReceivedEventListener(Lorg/bitcoinj/wallet/listeners/WalletCoinsReceivedEventListener;)Z

    move-result v0

    if-nez v0, :cond_24

    .line 2660
    invoke-virtual {p0, p1}, Lorg/bitcoinj/wallet/Wallet;->removeCoinsSentEventListener(Lorg/bitcoinj/wallet/listeners/WalletCoinsSentEventListener;)Z

    move-result v0

    if-nez v0, :cond_24

    .line 2661
    invoke-virtual {p0, p1}, Lorg/bitcoinj/wallet/Wallet;->removeKeyChainEventListener(Lorg/bitcoinj/wallet/listeners/KeyChainEventListener;)Z

    move-result v0

    if-nez v0, :cond_24

    .line 2662
    invoke-virtual {p0, p1}, Lorg/bitcoinj/wallet/Wallet;->removeReorganizeEventListener(Lorg/bitcoinj/wallet/listeners/WalletReorganizeEventListener;)Z

    move-result v0

    if-nez v0, :cond_24

    .line 2663
    invoke-virtual {p0, p1}, Lorg/bitcoinj/wallet/Wallet;->removeTransactionConfidenceEventListener(Lorg/bitcoinj/core/listeners/TransactionConfidenceEventListener;)Z

    move-result v0

    if-eqz v0, :cond_26

    :cond_24
    const/4 v0, 0x1

    :goto_25
    return v0

    :cond_26
    const/4 v0, 0x0

    .line 2658
    goto :goto_25
.end method

.method public removeKey(Lorg/bitcoinj/core/ECKey;)Z
    .registers 4

    .prologue
    .line 608
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V

    .line 610
    :try_start_5
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroup:Lorg/bitcoinj/wallet/KeyChainGroup;

    invoke-virtual {v0, p1}, Lorg/bitcoinj/wallet/KeyChainGroup;->removeImportedKey(Lorg/bitcoinj/core/ECKey;)Z
    :try_end_a
    .catchall {:try_start_5 .. :try_end_a} :catchall_11

    move-result v0

    .line 612
    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    .line 610
    return v0

    .line 612
    :catchall_11
    move-exception v0

    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    throw v0
.end method

.method public removeKeyChainEventListener(Lorg/bitcoinj/wallet/listeners/KeyChainEventListener;)Z
    .registers 3

    .prologue
    .line 2695
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroup:Lorg/bitcoinj/wallet/KeyChainGroup;

    invoke-virtual {v0, p1}, Lorg/bitcoinj/wallet/KeyChainGroup;->removeEventListener(Lorg/bitcoinj/wallet/listeners/KeyChainEventListener;)Z

    move-result v0

    return v0
.end method

.method public removeReorganizeEventListener(Lorg/bitcoinj/wallet/listeners/WalletReorganizeEventListener;)Z
    .registers 3

    .prologue
    .line 2703
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->reorganizeListeners:Ljava/util/concurrent/CopyOnWriteArrayList;

    invoke-static {p1, v0}, Lorg/bitcoinj/utils/ListenerRegistration;->removeFromList(Ljava/lang/Object;Ljava/util/List;)Z

    move-result v0

    return v0
.end method

.method public removeScriptChangeEventListener(Lorg/bitcoinj/wallet/listeners/ScriptsChangeEventListener;)Z
    .registers 3

    .prologue
    .line 2711
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->scriptChangeListeners:Ljava/util/concurrent/CopyOnWriteArrayList;

    invoke-static {p1, v0}, Lorg/bitcoinj/utils/ListenerRegistration;->removeFromList(Ljava/lang/Object;Ljava/util/List;)Z

    move-result v0

    return v0
.end method

.method public removeTransactionConfidenceEventListener(Lorg/bitcoinj/core/listeners/TransactionConfidenceEventListener;)Z
    .registers 3

    .prologue
    .line 2719
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->transactionConfidenceListeners:Ljava/util/concurrent/CopyOnWriteArrayList;

    invoke-static {p1, v0}, Lorg/bitcoinj/utils/ListenerRegistration;->removeFromList(Ljava/lang/Object;Ljava/util/List;)Z

    move-result v0

    return v0
.end method

.method public removeWatchedAddress(Lorg/bitcoinj/core/Address;)Z
    .registers 3

    .prologue
    .line 916
    invoke-static {p1}, Lcom/google/common/collect/ImmutableList;->of(Ljava/lang/Object;)Lcom/google/common/collect/ImmutableList;

    move-result-object v0

    invoke-virtual {p0, v0}, Lorg/bitcoinj/wallet/Wallet;->removeWatchedAddresses(Ljava/util/List;)Z

    move-result v0

    return v0
.end method

.method public removeWatchedAddresses(Ljava/util/List;)Z
    .registers 5
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "(",
            "Ljava/util/List",
            "<",
            "Lorg/bitcoinj/core/Address;",
            ">;)Z"
        }
    .end annotation

    .prologue
    .line 9088
    new-instance v1, Ljava/util/ArrayList;

    invoke-direct {v1}, Ljava/util/ArrayList;-><init>()V

    .line 927
    invoke-interface {p1}, Ljava/util/List;->iterator()Ljava/util/Iterator;

    move-result-object v2

    :goto_9
    invoke-interface {v2}, Ljava/util/Iterator;->hasNext()Z

    move-result v0

    if-eqz v0, :cond_1d

    invoke-interface {v2}, Ljava/util/Iterator;->next()Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Lorg/bitcoinj/core/Address;

    .line 928
    invoke-static {v0}, Lorg/bitcoinj/script/ScriptBuilder;->createOutputScript(Lorg/bitcoinj/core/Address;)Lorg/bitcoinj/script/Script;

    move-result-object v0

    .line 929
    invoke-interface {v1, v0}, Ljava/util/List;->add(Ljava/lang/Object;)Z

    goto :goto_9

    .line 932
    :cond_1d
    invoke-virtual {p0, v1}, Lorg/bitcoinj/wallet/Wallet;->removeWatchedScripts(Ljava/util/List;)Z

    move-result v0

    return v0
.end method

.method public removeWatchedScripts(Ljava/util/List;)Z
    .registers 5
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "(",
            "Ljava/util/List",
            "<",
            "Lorg/bitcoinj/script/Script;",
            ">;)Z"
        }
    .end annotation

    .prologue
    .line 941
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V

    .line 943
    :try_start_5
    invoke-interface {p1}, Ljava/util/List;->iterator()Ljava/util/Iterator;

    move-result-object v1

    :cond_9
    :goto_9
    invoke-interface {v1}, Ljava/util/Iterator;->hasNext()Z

    move-result v0

    if-eqz v0, :cond_2a

    invoke-interface {v1}, Ljava/util/Iterator;->next()Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Lorg/bitcoinj/script/Script;

    .line 944
    iget-object v2, p0, Lorg/bitcoinj/wallet/Wallet;->watchedScripts:Ljava/util/Set;

    invoke-interface {v2, v0}, Ljava/util/Set;->contains(Ljava/lang/Object;)Z

    move-result v2

    if-eqz v2, :cond_9

    .line 947
    iget-object v2, p0, Lorg/bitcoinj/wallet/Wallet;->watchedScripts:Ljava/util/Set;

    invoke-interface {v2, v0}, Ljava/util/Set;->remove(Ljava/lang/Object;)Z
    :try_end_22
    .catchall {:try_start_5 .. :try_end_22} :catchall_23

    goto :goto_9

    .line 954
    :catchall_23
    move-exception v0

    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    throw v0

    .line 950
    :cond_2a
    const/4 v0, 0x0

    :try_start_2b
    invoke-virtual {p0, p1, v0}, Lorg/bitcoinj/wallet/Wallet;->queueOnScriptsChanged(Ljava/util/List;Z)V

    .line 951
    invoke-virtual {p0}, Lorg/bitcoinj/wallet/Wallet;->saveNow()V
    :try_end_31
    .catchall {:try_start_2b .. :try_end_31} :catchall_23

    .line 954
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    .line 952
    const/4 v0, 0x1

    return v0
.end method

.method public reorganize(Lorg/bitcoinj/core/StoredBlock;Ljava/util/List;Ljava/util/List;)V
    .registers 16
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "(",
            "Lorg/bitcoinj/core/StoredBlock;",
            "Ljava/util/List",
            "<",
            "Lorg/bitcoinj/core/StoredBlock;",
            ">;",
            "Ljava/util/List",
            "<",
            "Lorg/bitcoinj/core/StoredBlock;",
            ">;)V"
        }
    .end annotation

    .prologue
    const/4 v2, 0x1

    const/4 v3, 0x0

    .line 4390
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V

    .line 4406
    :try_start_7
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->confidenceChanged:Ljava/util/Map;

    invoke-interface {v0}, Ljava/util/Map;->size()I

    move-result v0

    if-nez v0, :cond_7d

    move v0, v2

    :goto_10
    invoke-static {v0}, Lcom/google/common/base/n;->checkState(Z)V

    .line 4407
    iget-boolean v0, p0, Lorg/bitcoinj/wallet/Wallet;->insideReorg:Z

    if-nez v0, :cond_7f

    move v0, v2

    :goto_18
    invoke-static {v0}, Lcom/google/common/base/n;->checkState(Z)V

    .line 4408
    const/4 v0, 0x1

    iput-boolean v0, p0, Lorg/bitcoinj/wallet/Wallet;->insideReorg:Z

    .line 4409
    iget v0, p0, Lorg/bitcoinj/wallet/Wallet;->onWalletChangedSuppressions:I

    if-nez v0, :cond_81

    move v0, v2

    :goto_23
    invoke-static {v0}, Lcom/google/common/base/n;->checkState(Z)V

    .line 4410
    iget v0, p0, Lorg/bitcoinj/wallet/Wallet;->onWalletChangedSuppressions:I

    add-int/lit8 v0, v0, 0x1

    iput v0, p0, Lorg/bitcoinj/wallet/Wallet;->onWalletChangedSuppressions:I

    .line 4414
    invoke-static {}, Lcom/google/common/collect/ArrayListMultimap;->create()Lcom/google/common/collect/ArrayListMultimap;

    move-result-object v4

    .line 4415
    const/4 v0, 0x1

    invoke-virtual {p0, v0}, Lorg/bitcoinj/wallet/Wallet;->getTransactions(Z)Ljava/util/Set;

    move-result-object v0

    invoke-interface {v0}, Ljava/util/Set;->iterator()Ljava/util/Iterator;

    move-result-object v5

    :cond_39
    invoke-interface {v5}, Ljava/util/Iterator;->hasNext()Z

    move-result v0

    if-eqz v0, :cond_83

    invoke-interface {v5}, Ljava/util/Iterator;->next()Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Lorg/bitcoinj/core/Transaction;

    .line 4416
    invoke-virtual {v0}, Lorg/bitcoinj/core/Transaction;->getAppearsInHashes()Ljava/util/Map;

    move-result-object v1

    .line 4417
    if-eqz v1, :cond_39

    .line 4418
    invoke-interface {v1}, Ljava/util/Map;->entrySet()Ljava/util/Set;

    move-result-object v1

    invoke-interface {v1}, Ljava/util/Set;->iterator()Ljava/util/Iterator;

    move-result-object v6

    :goto_53
    invoke-interface {v6}, Ljava/util/Iterator;->hasNext()Z

    move-result v1

    if-eqz v1, :cond_39

    invoke-interface {v6}, Ljava/util/Iterator;->next()Ljava/lang/Object;

    move-result-object v1

    check-cast v1, Ljava/util/Map$Entry;

    .line 4419
    invoke-interface {v1}, Ljava/util/Map$Entry;->getKey()Ljava/lang/Object;

    move-result-object v7

    new-instance v8, Lorg/bitcoinj/wallet/Wallet$TxOffsetPair;

    invoke-interface {v1}, Ljava/util/Map$Entry;->getValue()Ljava/lang/Object;

    move-result-object v1

    check-cast v1, Ljava/lang/Integer;

    invoke-virtual {v1}, Ljava/lang/Integer;->intValue()I

    move-result v1

    invoke-direct {v8, v0, v1}, Lorg/bitcoinj/wallet/Wallet$TxOffsetPair;-><init>(Lorg/bitcoinj/core/Transaction;I)V

    invoke-virtual {v4, v7, v8}, Lcom/google/common/collect/ArrayListMultimap;->put(Ljava/lang/Object;Ljava/lang/Object;)Z
    :try_end_75
    .catchall {:try_start_7 .. :try_end_75} :catchall_76

    goto :goto_53

    .line 4531
    :catchall_76
    move-exception v0

    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    throw v0

    :cond_7d
    move v0, v3

    .line 4406
    goto :goto_10

    :cond_7f
    move v0, v3

    .line 4407
    goto :goto_18

    :cond_81
    move v0, v3

    .line 4409
    goto :goto_23

    .line 4421
    :cond_83
    :try_start_83
    invoke-virtual {v4}, Lcom/google/common/collect/ArrayListMultimap;->keySet()Ljava/util/Set;

    move-result-object v0

    invoke-interface {v0}, Ljava/util/Set;->iterator()Ljava/util/Iterator;

    move-result-object v1

    :goto_8b
    invoke-interface {v1}, Ljava/util/Iterator;->hasNext()Z

    move-result v0

    if-eqz v0, :cond_9f

    invoke-interface {v1}, Ljava/util/Iterator;->next()Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Lorg/bitcoinj/core/Sha256Hash;

    .line 4422
    invoke-virtual {v4, v0}, Lcom/google/common/collect/ArrayListMultimap;->get(Ljava/lang/Object;)Ljava/util/List;

    move-result-object v0

    invoke-static {v0}, Ljava/util/Collections;->sort(Ljava/util/List;)V

    goto :goto_8b

    .line 4424
    :cond_9f
    new-instance v1, Ljava/util/ArrayList;

    invoke-interface {p2}, Ljava/util/List;->size()I

    move-result v0

    invoke-direct {v1, v0}, Ljava/util/ArrayList;-><init>(I)V

    .line 4425
    sget-object v0, Lorg/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;

    const-string v5, "Old part of chain (top to bottom):"

    invoke-interface {v0, v5}, Lorg/slf4j/Logger;->info(Ljava/lang/String;)V

    .line 4426
    invoke-interface {p2}, Ljava/util/List;->iterator()Ljava/util/Iterator;

    move-result-object v5

    :goto_b3
    invoke-interface {v5}, Ljava/util/Iterator;->hasNext()Z

    move-result v0

    if-eqz v0, :cond_da

    invoke-interface {v5}, Ljava/util/Iterator;->next()Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Lorg/bitcoinj/core/StoredBlock;

    .line 4427
    sget-object v6, Lorg/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;

    const-string v7, "  {}"

    invoke-virtual {v0}, Lorg/bitcoinj/core/StoredBlock;->getHeader()Lorg/bitcoinj/core/Block;

    move-result-object v8

    invoke-virtual {v8}, Lorg/bitcoinj/core/Block;->getHashAsString()Ljava/lang/String;

    move-result-object v8

    invoke-interface {v6, v7, v8}, Lorg/slf4j/Logger;->info(Ljava/lang/String;Ljava/lang/Object;)V

    .line 4428
    invoke-virtual {v0}, Lorg/bitcoinj/core/StoredBlock;->getHeader()Lorg/bitcoinj/core/Block;

    move-result-object v0

    invoke-virtual {v0}, Lorg/bitcoinj/core/Block;->getHash()Lorg/bitcoinj/core/Sha256Hash;

    move-result-object v0

    invoke-interface {v1, v0}, Ljava/util/List;->add(Ljava/lang/Object;)Z

    goto :goto_b3

    .line 4430
    :cond_da
    sget-object v0, Lorg/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;

    const-string v5, "New part of chain (top to bottom):"

    invoke-interface {v0, v5}, Lorg/slf4j/Logger;->info(Ljava/lang/String;)V

    .line 4431
    invoke-interface {p3}, Ljava/util/List;->iterator()Ljava/util/Iterator;

    move-result-object v5

    :goto_e5
    invoke-interface {v5}, Ljava/util/Iterator;->hasNext()Z

    move-result v0

    if-eqz v0, :cond_101

    invoke-interface {v5}, Ljava/util/Iterator;->next()Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Lorg/bitcoinj/core/StoredBlock;

    .line 4432
    sget-object v6, Lorg/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;

    const-string v7, "  {}"

    invoke-virtual {v0}, Lorg/bitcoinj/core/StoredBlock;->getHeader()Lorg/bitcoinj/core/Block;

    move-result-object v0

    invoke-virtual {v0}, Lorg/bitcoinj/core/Block;->getHashAsString()Ljava/lang/String;

    move-result-object v0

    invoke-interface {v6, v7, v0}, Lorg/slf4j/Logger;->info(Ljava/lang/String;Ljava/lang/Object;)V

    goto :goto_e5

    .line 4435
    :cond_101
    invoke-static {p3}, Ljava/util/Collections;->reverse(Ljava/util/List;)V

    .line 12232
    new-instance v5, Ljava/util/LinkedList;

    invoke-direct {v5}, Ljava/util/LinkedList;-><init>()V

    .line 4439
    invoke-interface {v1}, Ljava/util/List;->iterator()Ljava/util/Iterator;

    move-result-object v1

    :cond_10d
    invoke-interface {v1}, Ljava/util/Iterator;->hasNext()Z

    move-result v0

    if-eqz v0, :cond_1a4

    invoke-interface {v1}, Ljava/util/Iterator;->next()Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Lorg/bitcoinj/core/Sha256Hash;

    .line 4440
    invoke-virtual {v4, v0}, Lcom/google/common/collect/ArrayListMultimap;->get(Ljava/lang/Object;)Ljava/util/List;

    move-result-object v0

    invoke-interface {v0}, Ljava/util/List;->iterator()Ljava/util/Iterator;

    move-result-object v6

    :goto_121
    invoke-interface {v6}, Ljava/util/Iterator;->hasNext()Z

    move-result v0

    if-eqz v0, :cond_10d

    invoke-interface {v6}, Ljava/util/Iterator;->next()Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Lorg/bitcoinj/wallet/Wallet$TxOffsetPair;

    .line 4441
    iget-object v7, v0, Lorg/bitcoinj/wallet/Wallet$TxOffsetPair;->tx:Lorg/bitcoinj/core/Transaction;

    .line 4442
    invoke-virtual {v7}, Lorg/bitcoinj/core/Transaction;->getHash()Lorg/bitcoinj/core/Sha256Hash;

    move-result-object v8

    .line 4443
    invoke-virtual {v7}, Lorg/bitcoinj/core/Transaction;->isCoinBase()Z

    move-result v0

    if-eqz v0, :cond_14d

    .line 4452
    sget-object v0, Lorg/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;

    const-string v8, "Coinbase killed by re-org: {}"

    invoke-virtual {v7}, Lorg/bitcoinj/core/Transaction;->getHashAsString()Ljava/lang/String;

    move-result-object v9

    invoke-interface {v0, v8, v9}, Lorg/slf4j/Logger;->warn(Ljava/lang/String;Ljava/lang/Object;)V

    .line 4453
    invoke-static {v7}, Lcom/google/common/collect/ImmutableSet;->of(Ljava/lang/Object;)Lcom/google/common/collect/ImmutableSet;

    move-result-object v0

    const/4 v7, 0x0

    invoke-direct {p0, v0, v7}, Lorg/bitcoinj/wallet/Wallet;->killTxns(Ljava/util/Set;Lorg/bitcoinj/core/Transaction;)V

    goto :goto_121

    .line 4455
    :cond_14d
    invoke-virtual {v7}, Lorg/bitcoinj/core/Transaction;->getOutputs()Ljava/util/List;

    move-result-object v0

    invoke-interface {v0}, Ljava/util/List;->iterator()Ljava/util/Iterator;

    move-result-object v9

    :cond_155
    :goto_155
    invoke-interface {v9}, Ljava/util/Iterator;->hasNext()Z

    move-result v0

    if-eqz v0, :cond_17a

    invoke-interface {v9}, Ljava/util/Iterator;->next()Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Lorg/bitcoinj/core/TransactionOutput;

    .line 4456
    invoke-virtual {v0}, Lorg/bitcoinj/core/TransactionOutput;->getSpentBy()Lorg/bitcoinj/core/TransactionInput;

    move-result-object v10

    .line 4457
    if-eqz v10, :cond_155

    .line 4458
    invoke-virtual {v0, p0}, Lorg/bitcoinj/core/TransactionOutput;->isMineOrWatched(Lorg/bitcoinj/core/TransactionBag;)Z

    move-result v11

    if-eqz v11, :cond_176

    .line 4459
    iget-object v11, p0, Lorg/bitcoinj/wallet/Wallet;->myUnspents:Ljava/util/HashSet;

    invoke-virtual {v11, v0}, Ljava/util/HashSet;->add(Ljava/lang/Object;)Z

    move-result v0

    invoke-static {v0}, Lcom/google/common/base/n;->checkState(Z)V

    .line 4460
    :cond_176
    invoke-virtual {v10}, Lorg/bitcoinj/core/TransactionInput;->disconnect()Z

    goto :goto_155

    .line 4463
    :cond_17a
    invoke-virtual {v5, v7}, Ljava/util/LinkedList;->add(Ljava/lang/Object;)Z

    .line 4464
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->unspent:Ljava/util/Map;

    invoke-interface {v0, v8}, Ljava/util/Map;->remove(Ljava/lang/Object;)Ljava/lang/Object;

    .line 4465
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->spent:Ljava/util/Map;

    invoke-interface {v0, v8}, Ljava/util/Map;->remove(Ljava/lang/Object;)Ljava/lang/Object;

    .line 4466
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->pending:Ljava/util/Map;

    invoke-interface {v0, v8}, Ljava/util/Map;->containsKey(Ljava/lang/Object;)Z

    move-result v0

    if-nez v0, :cond_1a0

    move v0, v2

    :goto_190
    invoke-static {v0}, Lcom/google/common/base/n;->checkState(Z)V

    .line 4467
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->dead:Ljava/util/Map;

    invoke-interface {v0, v8}, Ljava/util/Map;->containsKey(Ljava/lang/Object;)Z

    move-result v0

    if-nez v0, :cond_1a2

    move v0, v2

    :goto_19c
    invoke-static {v0}, Lcom/google/common/base/n;->checkState(Z)V

    goto :goto_121

    :cond_1a0
    move v0, v3

    .line 4466
    goto :goto_190

    :cond_1a2
    move v0, v3

    .line 4467
    goto :goto_19c

    .line 4473
    :cond_1a4
    invoke-virtual {v5}, Ljava/util/LinkedList;->iterator()Ljava/util/Iterator;

    move-result-object v1

    :cond_1a8
    :goto_1a8
    invoke-interface {v1}, Ljava/util/Iterator;->hasNext()Z

    move-result v0

    if-eqz v0, :cond_1df

    invoke-interface {v1}, Ljava/util/Iterator;->next()Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Lorg/bitcoinj/core/Transaction;

    .line 4476
    invoke-virtual {v0}, Lorg/bitcoinj/core/Transaction;->isCoinBase()Z

    move-result v2

    if-nez v2, :cond_1a8

    .line 4477
    sget-object v2, Lorg/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;

    const-string v3, "  ->pending {}"

    invoke-virtual {v0}, Lorg/bitcoinj/core/Transaction;->getHash()Lorg/bitcoinj/core/Sha256Hash;

    move-result-object v5

    invoke-interface {v2, v3, v5}, Lorg/slf4j/Logger;->info(Ljava/lang/String;Ljava/lang/Object;)V

    .line 4479
    invoke-virtual {v0}, Lorg/bitcoinj/core/Transaction;->getConfidence()Lorg/bitcoinj/core/TransactionConfidence;

    move-result-object v2

    sget-object v3, Lorg/bitcoinj/core/TransactionConfidence$ConfidenceType;->PENDING:Lorg/bitcoinj/core/TransactionConfidence$ConfidenceType;

    invoke-virtual {v2, v3}, Lorg/bitcoinj/core/TransactionConfidence;->setConfidenceType(Lorg/bitcoinj/core/TransactionConfidence$ConfidenceType;)V

    .line 4480
    iget-object v2, p0, Lorg/bitcoinj/wallet/Wallet;->confidenceChanged:Ljava/util/Map;

    sget-object v3, Lorg/bitcoinj/core/TransactionConfidence$Listener$ChangeReason;->TYPE:Lorg/bitcoinj/core/TransactionConfidence$Listener$ChangeReason;

    invoke-interface {v2, v0, v3}, Ljava/util/Map;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;

    .line 4481
    sget-object v2, Lorg/bitcoinj/wallet/WalletTransaction$Pool;->PENDING:Lorg/bitcoinj/wallet/WalletTransaction$Pool;

    invoke-direct {p0, v2, v0}, Lorg/bitcoinj/wallet/Wallet;->addWalletTransaction(Lorg/bitcoinj/wallet/WalletTransaction$Pool;Lorg/bitcoinj/core/Transaction;)V

    .line 4482
    const/4 v2, 0x0

    invoke-direct {p0, v0, v2}, Lorg/bitcoinj/wallet/Wallet;->updateForSpends(Lorg/bitcoinj/core/Transaction;Z)V

    goto :goto_1a8

    .line 4493
    :cond_1df
    invoke-interface {p2}, Ljava/util/List;->size()I

    move-result v0

    .line 4494
    sget-object v1, Lorg/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;

    new-instance v2, Ljava/lang/StringBuilder;

    const-string v3, "depthToSubtract = "

    invoke-direct {v2, v3}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V

    invoke-virtual {v2, v0}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;

    move-result-object v2

    invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v2

    invoke-interface {v1, v2}, Lorg/slf4j/Logger;->info(Ljava/lang/String;)V

    .line 4496
    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->spent:Ljava/util/Map;

    invoke-interface {v1}, Ljava/util/Map;->values()Ljava/util/Collection;

    move-result-object v1

    invoke-direct {p0, v0, v1}, Lorg/bitcoinj/wallet/Wallet;->subtractDepth(ILjava/util/Collection;)V

    .line 4497
    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->unspent:Ljava/util/Map;

    invoke-interface {v1}, Ljava/util/Map;->values()Ljava/util/Collection;

    move-result-object v1

    invoke-direct {p0, v0, v1}, Lorg/bitcoinj/wallet/Wallet;->subtractDepth(ILjava/util/Collection;)V

    .line 4498
    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->dead:Ljava/util/Map;

    invoke-interface {v1}, Ljava/util/Map;->values()Ljava/util/Collection;

    move-result-object v1

    invoke-direct {p0, v0, v1}, Lorg/bitcoinj/wallet/Wallet;->subtractDepth(ILjava/util/Collection;)V

    .line 4501
    invoke-virtual {p1}, Lorg/bitcoinj/core/StoredBlock;->getHeader()Lorg/bitcoinj/core/Block;

    move-result-object v0

    invoke-virtual {v0}, Lorg/bitcoinj/core/Block;->getHash()Lorg/bitcoinj/core/Sha256Hash;

    move-result-object v0

    invoke-virtual {p0, v0}, Lorg/bitcoinj/wallet/Wallet;->setLastBlockSeenHash(Lorg/bitcoinj/core/Sha256Hash;)V

    .line 4507
    invoke-interface {p3}, Ljava/util/List;->iterator()Ljava/util/Iterator;

    move-result-object v2

    :goto_221
    invoke-interface {v2}, Ljava/util/Iterator;->hasNext()Z

    move-result v0

    if-eqz v0, :cond_27a

    invoke-interface {v2}, Ljava/util/Iterator;->next()Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Lorg/bitcoinj/core/StoredBlock;

    .line 4508
    sget-object v1, Lorg/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;

    const-string v3, "Replaying block {}"

    invoke-virtual {v0}, Lorg/bitcoinj/core/StoredBlock;->getHeader()Lorg/bitcoinj/core/Block;

    move-result-object v5

    invoke-virtual {v5}, Lorg/bitcoinj/core/Block;->getHashAsString()Ljava/lang/String;

    move-result-object v5

    invoke-interface {v1, v3, v5}, Lorg/slf4j/Logger;->info(Ljava/lang/String;Ljava/lang/Object;)V

    .line 4509
    invoke-virtual {v0}, Lorg/bitcoinj/core/StoredBlock;->getHeader()Lorg/bitcoinj/core/Block;

    move-result-object v1

    invoke-virtual {v1}, Lorg/bitcoinj/core/Block;->getHash()Lorg/bitcoinj/core/Sha256Hash;

    move-result-object v1

    invoke-virtual {v4, v1}, Lcom/google/common/collect/ArrayListMultimap;->get(Ljava/lang/Object;)Ljava/util/List;

    move-result-object v1

    invoke-interface {v1}, Ljava/util/List;->iterator()Ljava/util/Iterator;

    move-result-object v3

    :goto_24c
    invoke-interface {v3}, Ljava/util/Iterator;->hasNext()Z

    move-result v1

    if-eqz v1, :cond_276

    invoke-interface {v3}, Ljava/util/Iterator;->next()Ljava/lang/Object;

    move-result-object v1

    check-cast v1, Lorg/bitcoinj/wallet/Wallet$TxOffsetPair;

    .line 4510
    sget-object v5, Lorg/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;

    const-string v6, "  tx {}"

    iget-object v7, v1, Lorg/bitcoinj/wallet/Wallet$TxOffsetPair;->tx:Lorg/bitcoinj/core/Transaction;

    invoke-virtual {v7}, Lorg/bitcoinj/core/Transaction;->getHash()Lorg/bitcoinj/core/Sha256Hash;

    move-result-object v7

    invoke-interface {v5, v6, v7}, Lorg/slf4j/Logger;->info(Ljava/lang/String;Ljava/lang/Object;)V
    :try_end_265
    .catchall {:try_start_83 .. :try_end_265} :catchall_76

    .line 4512
    :try_start_265
    iget-object v5, v1, Lorg/bitcoinj/wallet/Wallet$TxOffsetPair;->tx:Lorg/bitcoinj/core/Transaction;

    sget-object v6, Lorg/bitcoinj/core/AbstractBlockChain$NewBlockType;->BEST_CHAIN:Lorg/bitcoinj/core/AbstractBlockChain$NewBlockType;

    iget v1, v1, Lorg/bitcoinj/wallet/Wallet$TxOffsetPair;->offset:I

    invoke-direct {p0, v5, v0, v6, v1}, Lorg/bitcoinj/wallet/Wallet;->receive(Lorg/bitcoinj/core/Transaction;Lorg/bitcoinj/core/StoredBlock;Lorg/bitcoinj/core/AbstractBlockChain$NewBlockType;I)V
    :try_end_26e
    .catch Lorg/bitcoinj/core/ScriptException; {:try_start_265 .. :try_end_26e} :catch_26f
    .catchall {:try_start_265 .. :try_end_26e} :catchall_76

    goto :goto_24c

    .line 4513
    :catch_26f
    move-exception v0

    .line 4514
    :try_start_270
    new-instance v1, Ljava/lang/RuntimeException;

    invoke-direct {v1, v0}, Ljava/lang/RuntimeException;-><init>(Ljava/lang/Throwable;)V

    throw v1

    .line 4517
    :cond_276
    invoke-virtual {p0, v0}, Lorg/bitcoinj/wallet/Wallet;->notifyNewBestBlock(Lorg/bitcoinj/core/StoredBlock;)V

    goto :goto_221

    .line 4519
    :cond_27a
    invoke-virtual {p0}, Lorg/bitcoinj/wallet/Wallet;->isConsistentOrThrow()V

    .line 4520
    invoke-virtual {p0}, Lorg/bitcoinj/wallet/Wallet;->getBalance()Lorg/bitcoinj/core/Coin;

    move-result-object v0

    .line 4521
    sget-object v1, Lorg/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;

    const-string v2, "post-reorg balance is {}"

    invoke-virtual {v0}, Lorg/bitcoinj/core/Coin;->toFriendlyString()Ljava/lang/String;

    move-result-object v3

    invoke-interface {v1, v2, v3}, Lorg/slf4j/Logger;->info(Ljava/lang/String;Ljava/lang/Object;)V

    .line 4523
    invoke-virtual {p0}, Lorg/bitcoinj/wallet/Wallet;->queueOnReorganize()V

    .line 4524
    const/4 v1, 0x0

    iput-boolean v1, p0, Lorg/bitcoinj/wallet/Wallet;->insideReorg:Z

    .line 4525
    iget v1, p0, Lorg/bitcoinj/wallet/Wallet;->onWalletChangedSuppressions:I

    add-int/lit8 v1, v1, -0x1

    iput v1, p0, Lorg/bitcoinj/wallet/Wallet;->onWalletChangedSuppressions:I

    .line 4526
    invoke-virtual {p0}, Lorg/bitcoinj/wallet/Wallet;->maybeQueueOnWalletChanged()V

    .line 4527
    invoke-direct {p0, v0}, Lorg/bitcoinj/wallet/Wallet;->checkBalanceFuturesLocked(Lorg/bitcoinj/core/Coin;)V

    .line 4528
    invoke-direct {p0}, Lorg/bitcoinj/wallet/Wallet;->informConfidenceListenersIfNotReorganizing()V

    .line 4529
    invoke-virtual {p0}, Lorg/bitcoinj/wallet/Wallet;->saveLater()V
    :try_end_2a4
    .catchall {:try_start_270 .. :try_end_2a4} :catchall_76

    .line 4531
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    .line 4532
    return-void
.end method

.method public reset()V
    .registers 3

    .prologue
    .line 2977
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V

    .line 2979
    :try_start_5
    invoke-direct {p0}, Lorg/bitcoinj/wallet/Wallet;->clearTransactions()V

    .line 2980
    const/4 v0, 0x0

    iput-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lastBlockSeenHash:Lorg/bitcoinj/core/Sha256Hash;

    .line 2981
    const/4 v0, -0x1

    iput v0, p0, Lorg/bitcoinj/wallet/Wallet;->lastBlockSeenHeight:I

    .line 2982
    const-wide/16 v0, 0x0

    iput-wide v0, p0, Lorg/bitcoinj/wallet/Wallet;->lastBlockSeenTimeSecs:J

    .line 2983
    invoke-virtual {p0}, Lorg/bitcoinj/wallet/Wallet;->saveLater()V

    .line 2984
    invoke-virtual {p0}, Lorg/bitcoinj/wallet/Wallet;->maybeQueueOnWalletChanged()V
    :try_end_18
    .catchall {:try_start_5 .. :try_end_18} :catchall_1e

    .line 2986
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    .line 2987
    return-void

    .line 2986
    :catchall_1e
    move-exception v0

    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    throw v0
.end method

.method protected saveLater()V
    .registers 2

    .prologue
    .line 1456
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->vFileManager:Lorg/bitcoinj/wallet/WalletFiles;

    .line 1457
    if-eqz v0, :cond_7

    .line 1458
    invoke-virtual {v0}, Lorg/bitcoinj/wallet/WalletFiles;->saveLater()V

    .line 1459
    :cond_7
    return-void
.end method

.method protected saveNow()V
    .registers 4

    .prologue
    .line 1463
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->vFileManager:Lorg/bitcoinj/wallet/WalletFiles;

    .line 1464
    if-eqz v0, :cond_7

    .line 1466
    :try_start_4
    invoke-virtual {v0}, Lorg/bitcoinj/wallet/WalletFiles;->saveNow()V
    :try_end_7
    .catch Ljava/io/IOException; {:try_start_4 .. :try_end_7} :catch_8

    .line 1475
    :cond_7
    :goto_7
    return-void

    .line 1467
    :catch_8
    move-exception v0

    .line 1469
    sget-object v1, Lorg/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;

    const-string v2, "Failed to save wallet to disk!"

    invoke-interface {v1, v2, v0}, Lorg/slf4j/Logger;->error(Ljava/lang/String;Ljava/lang/Throwable;)V

    .line 1470
    sget-object v1, Lorg/bitcoinj/utils/Threading;->uncaughtExceptionHandler:Ljava/lang/Thread$UncaughtExceptionHandler;

    .line 1471
    if-eqz v1, :cond_7

    .line 1472
    invoke-static {}, Ljava/lang/Thread;->currentThread()Ljava/lang/Thread;

    move-result-object v2

    invoke-interface {v1, v2, v0}, Ljava/lang/Thread$UncaughtExceptionHandler;->uncaughtException(Ljava/lang/Thread;Ljava/lang/Throwable;)V

    goto :goto_7
.end method

.method public saveToFile(Ljava/io/File;)V
    .registers 5

    .prologue
    .line 1336
    invoke-virtual {p1}, Ljava/io/File;->getAbsoluteFile()Ljava/io/File;

    move-result-object v0

    invoke-virtual {v0}, Ljava/io/File;->getParentFile()Ljava/io/File;

    move-result-object v0

    .line 1337
    const-string v1, "wallet"

    const/4 v2, 0x0

    invoke-static {v1, v2, v0}, Ljava/io/File;->createTempFile(Ljava/lang/String;Ljava/lang/String;Ljava/io/File;)Ljava/io/File;

    move-result-object v0

    .line 1338
    invoke-virtual {p0, v0, p1}, Lorg/bitcoinj/wallet/Wallet;->saveToFile(Ljava/io/File;Ljava/io/File;)V

    .line 1339
    return-void
.end method

.method public saveToFile(Ljava/io/File;Ljava/io/File;)V
    .registers 8

    .prologue
    const/4 v1, 0x0

    .line 1294
    .line 1295
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V

    .line 1297
    :try_start_6
    new-instance v2, Ljava/io/FileOutputStream;

    invoke-direct {v2, p1}, Ljava/io/FileOutputStream;-><init>(Ljava/io/File;)V
    :try_end_b
    .catch Ljava/lang/RuntimeException; {:try_start_6 .. :try_end_b} :catch_39
    .catchall {:try_start_6 .. :try_end_b} :catchall_42

    .line 1298
    :try_start_b
    invoke-virtual {p0, v2}, Lorg/bitcoinj/wallet/Wallet;->saveToFileStream(Ljava/io/OutputStream;)V

    .line 1301
    invoke-virtual {v2}, Ljava/io/FileOutputStream;->flush()V

    .line 1302
    invoke-virtual {v2}, Ljava/io/FileOutputStream;->getFD()Ljava/io/FileDescriptor;

    move-result-object v0

    invoke-virtual {v0}, Ljava/io/FileDescriptor;->sync()V

    .line 1303
    invoke-virtual {v2}, Ljava/io/FileOutputStream;->close()V
    :try_end_1b
    .catch Ljava/lang/RuntimeException; {:try_start_b .. :try_end_1b} :catch_cf
    .catchall {:try_start_b .. :try_end_1b} :catchall_cb

    .line 1305
    :try_start_1b
    invoke-static {}, Lorg/bitcoinj/core/Utils;->isWindows()Z

    move-result v0

    if-eqz v0, :cond_93

    .line 1307
    invoke-virtual {p2}, Ljava/io/File;->getCanonicalFile()Ljava/io/File;

    move-result-object v0

    .line 1308
    invoke-virtual {v0}, Ljava/io/File;->exists()Z

    move-result v2

    if-eqz v2, :cond_5b

    invoke-virtual {v0}, Ljava/io/File;->delete()Z

    move-result v2

    if-nez v2, :cond_5b

    .line 1309
    new-instance v0, Ljava/io/IOException;

    const-string v2, "Failed to delete canonical wallet file for replacement with autosave"

    invoke-direct {v0, v2}, Ljava/io/IOException;-><init>(Ljava/lang/String;)V

    throw v0
    :try_end_39
    .catch Ljava/lang/RuntimeException; {:try_start_1b .. :try_end_39} :catch_39
    .catchall {:try_start_1b .. :try_end_39} :catchall_42

    .line 1316
    :catch_39
    move-exception v0

    .line 1317
    :goto_3a
    :try_start_3a
    sget-object v2, Lorg/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;

    const-string v3, "Failed whilst saving wallet"

    invoke-interface {v2, v3, v0}, Lorg/slf4j/Logger;->error(Ljava/lang/String;Ljava/lang/Throwable;)V

    .line 1318
    throw v0
    :try_end_42
    .catchall {:try_start_3a .. :try_end_42} :catchall_42

    .line 1320
    :catchall_42
    move-exception v0

    :goto_43
    iget-object v2, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v2}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    .line 1321
    if-eqz v1, :cond_4d

    .line 1322
    invoke-virtual {v1}, Ljava/io/FileOutputStream;->close()V

    .line 1324
    :cond_4d
    invoke-virtual {p1}, Ljava/io/File;->exists()Z

    move-result v1

    if-eqz v1, :cond_5a

    .line 1325
    sget-object v1, Lorg/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;

    const-string v2, "Temp file still exists after failed save."

    invoke-interface {v1, v2}, Lorg/slf4j/Logger;->warn(Ljava/lang/String;)V

    :cond_5a
    throw v0

    .line 1310
    :cond_5b
    :try_start_5b
    invoke-virtual {p1, v0}, Ljava/io/File;->renameTo(Ljava/io/File;)Z
    :try_end_5e
    .catch Ljava/lang/RuntimeException; {:try_start_5b .. :try_end_5e} :catch_39
    .catchall {:try_start_5b .. :try_end_5e} :catchall_42

    move-result v2

    if-eqz v2, :cond_74

    .line 1320
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    .line 1324
    invoke-virtual {p1}, Ljava/io/File;->exists()Z

    move-result v0

    if-eqz v0, :cond_73

    .line 1325
    sget-object v0, Lorg/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;

    const-string v1, "Temp file still exists after failed save."

    invoke-interface {v0, v1}, Lorg/slf4j/Logger;->warn(Ljava/lang/String;)V

    .line 1328
    :cond_73
    :goto_73
    return-void

    .line 1312
    :cond_74
    :try_start_74
    new-instance v2, Ljava/io/IOException;

    new-instance v3, Ljava/lang/StringBuilder;

    const-string v4, "Failed to rename "

    invoke-direct {v3, v4}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V

    invoke-virtual {v3, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;

    move-result-object v3

    const-string v4, " to "

    invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v3

    invoke-virtual {v3, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;

    move-result-object v0

    invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v0

    invoke-direct {v2, v0}, Ljava/io/IOException;-><init>(Ljava/lang/String;)V

    throw v2

    .line 1313
    :cond_93
    invoke-virtual {p1, p2}, Ljava/io/File;->renameTo(Ljava/io/File;)Z

    move-result v0

    if-nez v0, :cond_b8

    .line 1314
    new-instance v0, Ljava/io/IOException;

    new-instance v2, Ljava/lang/StringBuilder;

    const-string v3, "Failed to rename "

    invoke-direct {v2, v3}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V

    invoke-virtual {v2, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;

    move-result-object v2

    const-string v3, " to "

    invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v2

    invoke-virtual {v2, p2}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;

    move-result-object v2

    invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v2

    invoke-direct {v0, v2}, Ljava/io/IOException;-><init>(Ljava/lang/String;)V

    throw v0
    :try_end_b8
    .catch Ljava/lang/RuntimeException; {:try_start_74 .. :try_end_b8} :catch_39
    .catchall {:try_start_74 .. :try_end_b8} :catchall_42

    .line 1320
    :cond_b8
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    .line 1324
    invoke-virtual {p1}, Ljava/io/File;->exists()Z

    move-result v0

    if-eqz v0, :cond_73

    .line 1325
    sget-object v0, Lorg/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;

    const-string v1, "Temp file still exists after failed save."

    invoke-interface {v0, v1}, Lorg/slf4j/Logger;->warn(Ljava/lang/String;)V

    goto :goto_73

    .line 1320
    :catchall_cb
    move-exception v0

    move-object v1, v2

    goto/16 :goto_43

    .line 1316
    :catch_cf
    move-exception v0

    move-object v1, v2

    goto/16 :goto_3a
.end method

.method public saveToFileStream(Ljava/io/OutputStream;)V
    .registers 4

    .prologue
    .line 1482
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V

    .line 1484
    :try_start_5
    new-instance v0, Lorg/bitcoinj/wallet/WalletProtobufSerializer;

    invoke-direct {v0}, Lorg/bitcoinj/wallet/WalletProtobufSerializer;-><init>()V

    invoke-virtual {v0, p0, p1}, Lorg/bitcoinj/wallet/WalletProtobufSerializer;->writeWallet(Lorg/bitcoinj/wallet/Wallet;Ljava/io/OutputStream;)V
    :try_end_d
    .catchall {:try_start_5 .. :try_end_d} :catchall_13

    .line 1486
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    .line 1487
    return-void

    .line 1486
    :catchall_13
    move-exception v0

    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    throw v0
.end method

.method public sendCoins(Lorg/bitcoinj/core/Peer;Lorg/bitcoinj/wallet/SendRequest;)Lorg/bitcoinj/core/Transaction;
    .registers 4

    .prologue
    .line 3882
    invoke-virtual {p0, p2}, Lorg/bitcoinj/wallet/Wallet;->sendCoinsOffline(Lorg/bitcoinj/wallet/SendRequest;)Lorg/bitcoinj/core/Transaction;

    move-result-object v0

    .line 3883
    invoke-virtual {p1, v0}, Lorg/bitcoinj/core/Peer;->sendMessage(Lorg/bitcoinj/core/Message;)V

    .line 3884
    return-object v0
.end method

.method public sendCoins(Lorg/bitcoinj/core/TransactionBroadcaster;Lorg/bitcoinj/core/Address;Lorg/bitcoinj/core/Coin;)Lorg/bitcoinj/wallet/Wallet$SendResult;
    .registers 5

    .prologue
    .line 3802
    invoke-static {p2, p3}, Lorg/bitcoinj/wallet/SendRequest;->to(Lorg/bitcoinj/core/Address;Lorg/bitcoinj/core/Coin;)Lorg/bitcoinj/wallet/SendRequest;

    move-result-object v0

    .line 3803
    invoke-virtual {p0, p1, v0}, Lorg/bitcoinj/wallet/Wallet;->sendCoins(Lorg/bitcoinj/core/TransactionBroadcaster;Lorg/bitcoinj/wallet/SendRequest;)Lorg/bitcoinj/wallet/Wallet$SendResult;

    move-result-object v0

    return-object v0
.end method

.method public sendCoins(Lorg/bitcoinj/core/TransactionBroadcaster;Lorg/bitcoinj/wallet/SendRequest;)Lorg/bitcoinj/wallet/Wallet$SendResult;
    .registers 5

    .prologue
    .line 3830
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->isHeldByCurrentThread()Z

    move-result v0

    if-nez v0, :cond_26

    const/4 v0, 0x1

    :goto_9
    invoke-static {v0}, Lcom/google/common/base/n;->checkState(Z)V

    .line 3834
    invoke-virtual {p0, p2}, Lorg/bitcoinj/wallet/Wallet;->sendCoinsOffline(Lorg/bitcoinj/wallet/SendRequest;)Lorg/bitcoinj/core/Transaction;

    move-result-object v0

    .line 3835
    new-instance v1, Lorg/bitcoinj/wallet/Wallet$SendResult;

    invoke-direct {v1}, Lorg/bitcoinj/wallet/Wallet$SendResult;-><init>()V

    .line 3836
    iput-object v0, v1, Lorg/bitcoinj/wallet/Wallet$SendResult;->tx:Lorg/bitcoinj/core/Transaction;

    .line 3842
    invoke-interface {p1, v0}, Lorg/bitcoinj/core/TransactionBroadcaster;->broadcastTransaction(Lorg/bitcoinj/core/Transaction;)Lorg/bitcoinj/core/TransactionBroadcast;

    move-result-object v0

    iput-object v0, v1, Lorg/bitcoinj/wallet/Wallet$SendResult;->broadcast:Lorg/bitcoinj/core/TransactionBroadcast;

    .line 3843
    iget-object v0, v1, Lorg/bitcoinj/wallet/Wallet$SendResult;->broadcast:Lorg/bitcoinj/core/TransactionBroadcast;

    invoke-virtual {v0}, Lorg/bitcoinj/core/TransactionBroadcast;->future()Lcom/google/common/util/concurrent/y;

    move-result-object v0

    iput-object v0, v1, Lorg/bitcoinj/wallet/Wallet$SendResult;->broadcastComplete:Lcom/google/common/util/concurrent/y;

    .line 3844
    return-object v1

    .line 3830
    :cond_26
    const/4 v0, 0x0

    goto :goto_9
.end method

.method public sendCoins(Lorg/bitcoinj/wallet/SendRequest;)Lorg/bitcoinj/wallet/Wallet$SendResult;
    .registers 5

    .prologue
    .line 3862
    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->vTransactionBroadcaster:Lorg/bitcoinj/core/TransactionBroadcaster;

    .line 3863
    if-eqz v1, :cond_f

    const/4 v0, 0x1

    :goto_5
    const-string v2, "No transaction broadcaster is configured"

    invoke-static {v0, v2}, Lcom/google/common/base/n;->checkState(ZLjava/lang/Object;)V

    .line 3864
    invoke-virtual {p0, v1, p1}, Lorg/bitcoinj/wallet/Wallet;->sendCoins(Lorg/bitcoinj/core/TransactionBroadcaster;Lorg/bitcoinj/wallet/SendRequest;)Lorg/bitcoinj/wallet/Wallet$SendResult;

    move-result-object v0

    return-object v0

    .line 3863
    :cond_f
    const/4 v0, 0x0

    goto :goto_5
.end method

.method public sendCoinsOffline(Lorg/bitcoinj/wallet/SendRequest;)Lorg/bitcoinj/core/Transaction;
    .registers 4

    .prologue
    .line 3765
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V

    .line 3767
    :try_start_5
    invoke-virtual {p0, p1}, Lorg/bitcoinj/wallet/Wallet;->completeTx(Lorg/bitcoinj/wallet/SendRequest;)V

    .line 3768
    iget-object v0, p1, Lorg/bitcoinj/wallet/SendRequest;->tx:Lorg/bitcoinj/core/Transaction;

    invoke-virtual {p0, v0}, Lorg/bitcoinj/wallet/Wallet;->commitTx(Lorg/bitcoinj/core/Transaction;)V

    .line 3769
    iget-object v0, p1, Lorg/bitcoinj/wallet/SendRequest;->tx:Lorg/bitcoinj/core/Transaction;
    :try_end_f
    .catchall {:try_start_5 .. :try_end_f} :catchall_15

    .line 3771
    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    .line 3769
    return-object v0

    .line 3771
    :catchall_15
    move-exception v0

    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    throw v0
.end method

.method public serializeKeyChainGroupToProtobuf()Ljava/util/List;
    .registers 3
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "()",
            "Ljava/util/List",
            "<",
            "Lorg/bitcoinj/wallet/Protos$Key;",
            ">;"
        }
    .end annotation

    .prologue
    .line 1284
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V

    .line 1286
    :try_start_5
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroup:Lorg/bitcoinj/wallet/KeyChainGroup;

    invoke-virtual {v0}, Lorg/bitcoinj/wallet/KeyChainGroup;->serializeToProtobuf()Ljava/util/List;
    :try_end_a
    .catchall {:try_start_5 .. :try_end_a} :catchall_11

    move-result-object v0

    .line 1288
    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    .line 1286
    return-object v0

    .line 1288
    :catchall_11
    move-exception v0

    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    throw v0
.end method

.method public setAcceptRiskyTransactions(Z)V
    .registers 4

    .prologue
    .line 1352
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V

    .line 1354
    :try_start_5
    iput-boolean p1, p0, Lorg/bitcoinj/wallet/Wallet;->acceptRiskyTransactions:Z
    :try_end_7
    .catchall {:try_start_5 .. :try_end_7} :catchall_d

    .line 1356
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    .line 1357
    return-void

    .line 1356
    :catchall_d
    move-exception v0

    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    throw v0
.end method

.method public setCoinSelector(Lorg/bitcoinj/wallet/CoinSelector;)V
    .registers 4

    .prologue
    .line 4255
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V

    .line 4257
    :try_start_5
    invoke-static {p1}, Lcom/google/common/base/n;->checkNotNull(Ljava/lang/Object;)Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Lorg/bitcoinj/wallet/CoinSelector;

    iput-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->coinSelector:Lorg/bitcoinj/wallet/CoinSelector;
    :try_end_d
    .catchall {:try_start_5 .. :try_end_d} :catchall_13

    .line 4259
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    .line 4260
    return-void

    .line 4259
    :catchall_13
    move-exception v0

    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    throw v0
.end method

.method public setDescription(Ljava/lang/String;)V
    .registers 2

    .prologue
    .line 3425
    iput-object p1, p0, Lorg/bitcoinj/wallet/Wallet;->description:Ljava/lang/String;

    .line 3426
    return-void
.end method

.method public setKeyChainGroupLookaheadSize(I)V
    .registers 4

    .prologue
    .line 760
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V

    .line 762
    :try_start_5
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroup:Lorg/bitcoinj/wallet/KeyChainGroup;

    invoke-virtual {v0, p1}, Lorg/bitcoinj/wallet/KeyChainGroup;->setLookaheadSize(I)V
    :try_end_a
    .catchall {:try_start_5 .. :try_end_a} :catchall_10

    .line 764
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    .line 765
    return-void

    .line 764
    :catchall_10
    move-exception v0

    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    throw v0
.end method

.method public setKeyChainGroupLookaheadThreshold(I)V
    .registers 4

    .prologue
    .line 780
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V

    .line 782
    :try_start_5
    invoke-direct {p0}, Lorg/bitcoinj/wallet/Wallet;->maybeUpgradeToHD()V

    .line 783
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroup:Lorg/bitcoinj/wallet/KeyChainGroup;

    invoke-virtual {v0, p1}, Lorg/bitcoinj/wallet/KeyChainGroup;->setLookaheadThreshold(I)V
    :try_end_d
    .catchall {:try_start_5 .. :try_end_d} :catchall_13

    .line 785
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    .line 786
    return-void

    .line 785
    :catchall_13
    move-exception v0

    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    throw v0
.end method

.method public setKeyRotationTime(J)V
    .registers 10

    .prologue
    const/4 v1, 0x1

    const/4 v2, 0x0

    .line 5113
    invoke-static {}, Lorg/bitcoinj/core/Utils;->currentTimeSeconds()J

    move-result-wide v4

    cmp-long v0, p1, v4

    if-gtz v0, :cond_21

    move v0, v1

    :goto_b
    const-string v3, "Given time (%s) cannot be in the future."

    new-array v1, v1, [Ljava/lang/Object;

    const-wide/16 v4, 0x3e8

    mul-long/2addr v4, p1

    .line 5114
    invoke-static {v4, v5}, Lorg/bitcoinj/core/Utils;->dateTimeFormat(J)Ljava/lang/String;

    move-result-object v4

    aput-object v4, v1, v2

    .line 5113
    invoke-static {v0, v3, v1}, Lcom/google/common/base/n;->checkArgument(ZLjava/lang/String;[Ljava/lang/Object;)V

    .line 5115
    iput-wide p1, p0, Lorg/bitcoinj/wallet/Wallet;->vKeyRotationTimestamp:J

    .line 5116
    invoke-virtual {p0}, Lorg/bitcoinj/wallet/Wallet;->saveNow()V

    .line 5117
    return-void

    :cond_21
    move v0, v2

    .line 5113
    goto :goto_b
.end method

.method public setKeyRotationTime(Ljava/util/Date;)V
    .registers 6

    .prologue
    .line 5087
    invoke-virtual {p1}, Ljava/util/Date;->getTime()J

    move-result-wide v0

    const-wide/16 v2, 0x3e8

    div-long/2addr v0, v2

    invoke-virtual {p0, v0, v1}, Lorg/bitcoinj/wallet/Wallet;->setKeyRotationTime(J)V

    .line 5088
    return-void
.end method

.method public setLastBlockSeenHash(Lorg/bitcoinj/core/Sha256Hash;)V
    .registers 4

    .prologue
    .line 3333
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V

    .line 3335
    :try_start_5
    iput-object p1, p0, Lorg/bitcoinj/wallet/Wallet;->lastBlockSeenHash:Lorg/bitcoinj/core/Sha256Hash;
    :try_end_7
    .catchall {:try_start_5 .. :try_end_7} :catchall_d

    .line 3337
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    .line 3338
    return-void

    .line 3337
    :catchall_d
    move-exception v0

    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    throw v0
.end method

.method public setLastBlockSeenHeight(I)V
    .registers 4

    .prologue
    .line 3342
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V

    .line 3344
    :try_start_5
    iput p1, p0, Lorg/bitcoinj/wallet/Wallet;->lastBlockSeenHeight:I
    :try_end_7
    .catchall {:try_start_5 .. :try_end_7} :catchall_d

    .line 3346
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    .line 3347
    return-void

    .line 3346
    :catchall_d
    move-exception v0

    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    throw v0
.end method

.method public setLastBlockSeenTimeSecs(J)V
    .registers 6

    .prologue
    .line 3351
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V

    .line 3353
    :try_start_5
    iput-wide p1, p0, Lorg/bitcoinj/wallet/Wallet;->lastBlockSeenTimeSecs:J
    :try_end_7
    .catchall {:try_start_5 .. :try_end_7} :catchall_d

    .line 3355
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    .line 3356
    return-void

    .line 3355
    :catchall_d
    move-exception v0

    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    throw v0
.end method

.method public setRiskAnalyzer(Lorg/bitcoinj/wallet/RiskAnalysis$Analyzer;)V
    .registers 4

    .prologue
    .line 1378
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V

    .line 1380
    :try_start_5
    invoke-static {p1}, Lcom/google/common/base/n;->checkNotNull(Ljava/lang/Object;)Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Lorg/bitcoinj/wallet/RiskAnalysis$Analyzer;

    iput-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->riskAnalyzer:Lorg/bitcoinj/wallet/RiskAnalysis$Analyzer;
    :try_end_d
    .catchall {:try_start_5 .. :try_end_d} :catchall_13

    .line 1382
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    .line 1383
    return-void

    .line 1382
    :catchall_13
    move-exception v0

    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    throw v0
.end method

.method public setTag(Ljava/lang/String;Lcom/google/protobuf/ByteString;)V
    .registers 3

    .prologue
    .line 4801
    invoke-super {p0, p1, p2}, Lorg/bitcoinj/utils/BaseTaggableObject;->setTag(Ljava/lang/String;Lcom/google/protobuf/ByteString;)V

    .line 4802
    invoke-virtual {p0}, Lorg/bitcoinj/wallet/Wallet;->saveNow()V

    .line 4803
    return-void
.end method

.method public setTransactionBroadcaster(Lorg/bitcoinj/core/TransactionBroadcaster;)V
    .registers 12

    .prologue
    const/4 v3, 0x1

    const/4 v2, 0x0

    .line 5050
    new-array v0, v2, [Lorg/bitcoinj/core/Transaction;

    .line 5051
    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V

    .line 5053
    :try_start_9
    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->vTransactionBroadcaster:Lorg/bitcoinj/core/TransactionBroadcaster;
    :try_end_b
    .catchall {:try_start_9 .. :try_end_b} :catchall_60

    if-ne v1, p1, :cond_13

    .line 5060
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    .line 5076
    :cond_12
    :goto_12
    return-void

    .line 5055
    :cond_13
    :try_start_13
    iput-object p1, p0, Lorg/bitcoinj/wallet/Wallet;->vTransactionBroadcaster:Lorg/bitcoinj/core/TransactionBroadcaster;
    :try_end_15
    .catchall {:try_start_13 .. :try_end_15} :catchall_60

    .line 5056
    if-nez p1, :cond_1d

    .line 5060
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    goto :goto_12

    .line 5058
    :cond_1d
    :try_start_1d
    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->pending:Ljava/util/Map;

    invoke-interface {v1}, Ljava/util/Map;->values()Ljava/util/Collection;

    move-result-object v1

    invoke-interface {v1, v0}, Ljava/util/Collection;->toArray([Ljava/lang/Object;)[Ljava/lang/Object;

    move-result-object v0

    check-cast v0, [Lorg/bitcoinj/core/Transaction;
    :try_end_29
    .catchall {:try_start_1d .. :try_end_29} :catchall_60

    .line 5060
    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    .line 5065
    array-length v5, v0

    move v4, v2

    :goto_30
    if-ge v4, v5, :cond_12

    aget-object v6, v0, v4

    .line 5066
    invoke-virtual {v6}, Lorg/bitcoinj/core/Transaction;->getConfidence()Lorg/bitcoinj/core/TransactionConfidence;

    move-result-object v1

    invoke-virtual {v1}, Lorg/bitcoinj/core/TransactionConfidence;->getConfidenceType()Lorg/bitcoinj/core/TransactionConfidence$ConfidenceType;

    move-result-object v7

    .line 5067
    sget-object v1, Lorg/bitcoinj/core/TransactionConfidence$ConfidenceType;->PENDING:Lorg/bitcoinj/core/TransactionConfidence$ConfidenceType;

    if-eq v7, v1, :cond_44

    sget-object v1, Lorg/bitcoinj/core/TransactionConfidence$ConfidenceType;->IN_CONFLICT:Lorg/bitcoinj/core/TransactionConfidence$ConfidenceType;

    if-ne v7, v1, :cond_67

    :cond_44
    move v1, v3

    :goto_45
    const-string v8, "Expected PENDING or IN_CONFLICT, was %s."

    new-array v9, v3, [Ljava/lang/Object;

    aput-object v7, v9, v2

    invoke-static {v1, v8, v9}, Lcom/google/common/base/n;->checkState(ZLjava/lang/String;[Ljava/lang/Object;)V

    .line 5073
    sget-object v1, Lorg/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;

    const-string v7, "New broadcaster so uploading waiting tx {}"

    invoke-virtual {v6}, Lorg/bitcoinj/core/Transaction;->getHash()Lorg/bitcoinj/core/Sha256Hash;

    move-result-object v8

    invoke-interface {v1, v7, v8}, Lorg/slf4j/Logger;->info(Ljava/lang/String;Ljava/lang/Object;)V

    .line 5074
    invoke-interface {p1, v6}, Lorg/bitcoinj/core/TransactionBroadcaster;->broadcastTransaction(Lorg/bitcoinj/core/Transaction;)Lorg/bitcoinj/core/TransactionBroadcast;

    .line 5065
    add-int/lit8 v1, v4, 0x1

    move v4, v1

    goto :goto_30

    .line 5060
    :catchall_60
    move-exception v0

    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    throw v0

    :cond_67
    move v1, v2

    .line 5067
    goto :goto_45
.end method

.method public setUTXOProvider(Lorg/bitcoinj/core/UTXOProvider;)V
    .registers 4

    .prologue
    .line 4295
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V

    .line 4297
    if-eqz p1, :cond_13

    :try_start_7
    invoke-interface {p1}, Lorg/bitcoinj/core/UTXOProvider;->getParams()Lorg/bitcoinj/core/NetworkParameters;

    move-result-object v0

    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->params:Lorg/bitcoinj/core/NetworkParameters;

    invoke-virtual {v0, v1}, Lorg/bitcoinj/core/NetworkParameters;->equals(Ljava/lang/Object;)Z

    move-result v0

    if-eqz v0, :cond_1f

    :cond_13
    const/4 v0, 0x1

    :goto_14
    invoke-static {v0}, Lcom/google/common/base/n;->checkArgument(Z)V

    .line 4298
    iput-object p1, p0, Lorg/bitcoinj/wallet/Wallet;->vUTXOProvider:Lorg/bitcoinj/core/UTXOProvider;
    :try_end_19
    .catchall {:try_start_7 .. :try_end_19} :catchall_21

    .line 4300
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    .line 4301
    return-void

    .line 4297
    :cond_1f
    const/4 v0, 0x0

    goto :goto_14

    .line 4300
    :catchall_21
    move-exception v0

    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    throw v0
.end method

.method public setVersion(I)V
    .registers 2

    .prologue
    .line 3417
    iput p1, p0, Lorg/bitcoinj/wallet/Wallet;->version:I

    .line 3418
    return-void
.end method

.method public shutdownAutosaveAndWait()V
    .registers 4

    .prologue
    .line 1443
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V

    .line 1445
    :try_start_5
    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->vFileManager:Lorg/bitcoinj/wallet/WalletFiles;

    .line 1446
    const/4 v0, 0x0

    iput-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->vFileManager:Lorg/bitcoinj/wallet/WalletFiles;

    .line 1447
    if-eqz v1, :cond_1b

    const/4 v0, 0x1

    :goto_d
    const-string v2, "Auto saving not enabled."

    invoke-static {v0, v2}, Lcom/google/common/base/n;->checkState(ZLjava/lang/Object;)V

    .line 1448
    invoke-virtual {v1}, Lorg/bitcoinj/wallet/WalletFiles;->shutdownAndWait()V
    :try_end_15
    .catchall {:try_start_5 .. :try_end_15} :catchall_1d

    .line 1450
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    .line 1451
    return-void

    .line 1447
    :cond_1b
    const/4 v0, 0x0

    goto :goto_d

    .line 1450
    :catchall_1d
    move-exception v0

    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    throw v0
.end method

.method public signTransaction(Lorg/bitcoinj/wallet/SendRequest;)V
    .registers 13

    .prologue
    const/4 v1, 0x1

    const/4 v0, 0x0

    .line 4035
    iget-object v2, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v2}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V

    .line 4037
    :try_start_7
    iget-object v3, p1, Lorg/bitcoinj/wallet/SendRequest;->tx:Lorg/bitcoinj/core/Transaction;

    .line 4038
    invoke-virtual {v3}, Lorg/bitcoinj/core/Transaction;->getInputs()Ljava/util/List;

    move-result-object v2

    .line 4039
    invoke-virtual {v3}, Lorg/bitcoinj/core/Transaction;->getOutputs()Ljava/util/List;

    move-result-object v4

    .line 4040
    invoke-interface {v2}, Ljava/util/List;->size()I

    move-result v2

    if-lez v2, :cond_60

    move v2, v1

    :goto_18
    invoke-static {v2}, Lcom/google/common/base/n;->checkState(Z)V

    .line 4041
    invoke-interface {v4}, Ljava/util/List;->size()I

    move-result v2

    if-lez v2, :cond_62

    :goto_21
    invoke-static {v1}, Lcom/google/common/base/n;->checkState(Z)V

    .line 4043
    new-instance v2, Lorg/bitcoinj/wallet/DecryptingKeyBag;

    iget-object v1, p1, Lorg/bitcoinj/wallet/SendRequest;->aesKey:Lorg/spongycastle/crypto/params/KeyParameter;

    invoke-direct {v2, p0, v1}, Lorg/bitcoinj/wallet/DecryptingKeyBag;-><init>(Lorg/bitcoinj/wallet/KeyBag;Lorg/spongycastle/crypto/params/KeyParameter;)V

    .line 4045
    invoke-virtual {v3}, Lorg/bitcoinj/core/Transaction;->getInputs()Ljava/util/List;

    move-result-object v1

    invoke-interface {v1}, Ljava/util/List;->size()I

    move-result v4

    move v1, v0

    .line 4046
    :goto_34
    if-ge v1, v4, :cond_a5

    .line 4047
    int-to-long v6, v1

    invoke-virtual {v3, v6, v7}, Lorg/bitcoinj/core/Transaction;->getInput(J)Lorg/bitcoinj/core/TransactionInput;

    move-result-object v5

    .line 4048
    invoke-virtual {v5}, Lorg/bitcoinj/core/TransactionInput;->getConnectedOutput()Lorg/bitcoinj/core/TransactionOutput;
    :try_end_3e
    .catchall {:try_start_7 .. :try_end_3e} :catchall_9e

    move-result-object v0

    if-eqz v0, :cond_5c

    .line 4057
    :try_start_41
    invoke-virtual {v5}, Lorg/bitcoinj/core/TransactionInput;->getScriptSig()Lorg/bitcoinj/script/Script;

    move-result-object v0

    int-to-long v6, v1

    invoke-virtual {v5}, Lorg/bitcoinj/core/TransactionInput;->getConnectedOutput()Lorg/bitcoinj/core/TransactionOutput;

    move-result-object v8

    invoke-virtual {v8}, Lorg/bitcoinj/core/TransactionOutput;->getScriptPubKey()Lorg/bitcoinj/script/Script;

    move-result-object v8

    invoke-virtual {v0, v3, v6, v7, v8}, Lorg/bitcoinj/script/Script;->correctlySpends(Lorg/bitcoinj/core/Transaction;JLorg/bitcoinj/script/Script;)V

    .line 4058
    sget-object v0, Lorg/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;

    const-string v6, "Input {} already correctly spends output, assuming SIGHASH type used will be safe and skipping signing."

    invoke-static {v1}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;

    move-result-object v7

    invoke-interface {v0, v6, v7}, Lorg/slf4j/Logger;->warn(Ljava/lang/String;Ljava/lang/Object;)V
    :try_end_5c
    .catch Lorg/bitcoinj/core/ScriptException; {:try_start_41 .. :try_end_5c} :catch_64
    .catchall {:try_start_41 .. :try_end_5c} :catchall_9e

    .line 4046
    :cond_5c
    :goto_5c
    add-int/lit8 v0, v1, 0x1

    move v1, v0

    goto :goto_34

    :cond_60
    move v2, v0

    .line 4040
    goto :goto_18

    :cond_62
    move v1, v0

    .line 4041
    goto :goto_21

    .line 4060
    :catch_64
    move-exception v0

    .line 4061
    :try_start_65
    sget-object v6, Lorg/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;

    const-string v7, "Input contained an incorrect signature"

    invoke-interface {v6, v7, v0}, Lorg/slf4j/Logger;->debug(Ljava/lang/String;Ljava/lang/Throwable;)V

    .line 4065
    invoke-virtual {v5}, Lorg/bitcoinj/core/TransactionInput;->getConnectedOutput()Lorg/bitcoinj/core/TransactionOutput;

    move-result-object v0

    invoke-virtual {v0}, Lorg/bitcoinj/core/TransactionOutput;->getScriptPubKey()Lorg/bitcoinj/script/Script;

    move-result-object v6

    .line 4066
    invoke-virtual {v5, v2}, Lorg/bitcoinj/core/TransactionInput;->getConnectedRedeemData(Lorg/bitcoinj/wallet/KeyBag;)Lorg/bitcoinj/wallet/RedeemData;

    move-result-object v7

    .line 4067
    const-string v0, "Transaction exists in wallet that we cannot redeem: %s"

    const/4 v8, 0x1

    new-array v8, v8, [Ljava/lang/Object;

    const/4 v9, 0x0

    invoke-virtual {v5}, Lorg/bitcoinj/core/TransactionInput;->getOutpoint()Lorg/bitcoinj/core/TransactionOutPoint;

    move-result-object v10

    invoke-virtual {v10}, Lorg/bitcoinj/core/TransactionOutPoint;->getHash()Lorg/bitcoinj/core/Sha256Hash;

    move-result-object v10

    aput-object v10, v8, v9

    invoke-static {v7, v0, v8}, Lcom/google/common/base/n;->b(Ljava/lang/Object;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/Object;

    .line 4068
    iget-object v0, v7, Lorg/bitcoinj/wallet/RedeemData;->keys:Ljava/util/List;

    const/4 v8, 0x0

    invoke-interface {v0, v8}, Ljava/util/List;->get(I)Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Lorg/bitcoinj/core/ECKey;

    iget-object v7, v7, Lorg/bitcoinj/wallet/RedeemData;->redeemScript:Lorg/bitcoinj/script/Script;

    invoke-virtual {v6, v0, v7}, Lorg/bitcoinj/script/Script;->createEmptyInputScript(Lorg/bitcoinj/core/ECKey;Lorg/bitcoinj/script/Script;)Lorg/bitcoinj/script/Script;

    move-result-object v0

    invoke-virtual {v5, v0}, Lorg/bitcoinj/core/TransactionInput;->setScriptSig(Lorg/bitcoinj/script/Script;)V
    :try_end_9d
    .catchall {:try_start_65 .. :try_end_9d} :catchall_9e

    goto :goto_5c

    .line 4080
    :catchall_9e
    move-exception v0

    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    throw v0

    .line 4071
    :cond_a5
    :try_start_a5
    new-instance v1, Lorg/bitcoinj/signers/TransactionSigner$ProposedTransaction;

    invoke-direct {v1, v3}, Lorg/bitcoinj/signers/TransactionSigner$ProposedTransaction;-><init>(Lorg/bitcoinj/core/Transaction;)V

    .line 4072
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->signers:Ljava/util/List;

    invoke-interface {v0}, Ljava/util/List;->iterator()Ljava/util/Iterator;

    move-result-object v3

    :cond_b0
    :goto_b0
    invoke-interface {v3}, Ljava/util/Iterator;->hasNext()Z

    move-result v0

    if-eqz v0, :cond_d2

    invoke-interface {v3}, Ljava/util/Iterator;->next()Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Lorg/bitcoinj/signers/TransactionSigner;

    .line 4073
    invoke-interface {v0, v1, v2}, Lorg/bitcoinj/signers/TransactionSigner;->signInputs(Lorg/bitcoinj/signers/TransactionSigner$ProposedTransaction;Lorg/bitcoinj/wallet/KeyBag;)Z

    move-result v4

    if-nez v4, :cond_b0

    .line 4074
    sget-object v4, Lorg/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;

    const-string v5, "{} returned false for the tx"

    invoke-virtual {v0}, Ljava/lang/Object;->getClass()Ljava/lang/Class;

    move-result-object v0

    invoke-virtual {v0}, Ljava/lang/Class;->getName()Ljava/lang/String;

    move-result-object v0

    invoke-interface {v4, v5, v0}, Lorg/slf4j/Logger;->info(Ljava/lang/String;Ljava/lang/Object;)V

    goto :goto_b0

    .line 4078
    :cond_d2
    new-instance v0, Lorg/bitcoinj/signers/MissingSigResolutionSigner;

    iget-object v3, p1, Lorg/bitcoinj/wallet/SendRequest;->missingSigsMode:Lorg/bitcoinj/wallet/Wallet$MissingSigsMode;

    invoke-direct {v0, v3}, Lorg/bitcoinj/signers/MissingSigResolutionSigner;-><init>(Lorg/bitcoinj/wallet/Wallet$MissingSigsMode;)V

    invoke-virtual {v0, v1, v2}, Lorg/bitcoinj/signers/MissingSigResolutionSigner;->signInputs(Lorg/bitcoinj/signers/TransactionSigner$ProposedTransaction;Lorg/bitcoinj/wallet/KeyBag;)Z
    :try_end_dc
    .catchall {:try_start_a5 .. :try_end_dc} :catchall_9e

    .line 4080
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    .line 4081
    return-void
.end method

.method sortTxnsByDependency(Ljava/util/Set;)Ljava/util/List;
    .registers 8
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "(",
            "Ljava/util/Set",
            "<",
            "Lorg/bitcoinj/core/Transaction;",
            ">;)",
            "Ljava/util/List",
            "<",
            "Lorg/bitcoinj/core/Transaction;",
            ">;"
        }
    .end annotation

    .prologue
    const/4 v3, 0x0

    .line 2056
    new-instance v5, Ljava/util/ArrayList;

    invoke-direct {v5, p1}, Ljava/util/ArrayList;-><init>(Ljava/util/Collection;)V

    move v2, v3

    .line 2057
    :goto_7
    invoke-virtual {v5}, Ljava/util/ArrayList;->size()I

    move-result v0

    add-int/lit8 v0, v0, -0x1

    if-ge v2, v0, :cond_3e

    .line 2061
    :cond_f
    add-int/lit8 v0, v2, 0x1

    move v4, v0

    :goto_12
    invoke-virtual {v5}, Ljava/util/ArrayList;->size()I

    move-result v0

    if-ge v4, v0, :cond_3f

    .line 2062
    invoke-virtual {v5, v2}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Lorg/bitcoinj/core/Transaction;

    invoke-virtual {v5, v4}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;

    move-result-object v1

    check-cast v1, Lorg/bitcoinj/core/Transaction;

    invoke-virtual {p0, v0, v1}, Lorg/bitcoinj/wallet/Wallet;->spends(Lorg/bitcoinj/core/Transaction;Lorg/bitcoinj/core/Transaction;)Z

    move-result v0

    if-eqz v0, :cond_3a

    .line 2063
    invoke-virtual {v5, v2}, Ljava/util/ArrayList;->remove(I)Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Lorg/bitcoinj/core/Transaction;

    .line 2064
    invoke-virtual {v5, v4, v0}, Ljava/util/ArrayList;->add(ILjava/lang/Object;)V

    .line 2065
    const/4 v0, 0x1

    .line 2069
    :goto_34
    if-nez v0, :cond_f

    .line 2057
    add-int/lit8 v0, v2, 0x1

    move v2, v0

    goto :goto_7

    .line 2061
    :cond_3a
    add-int/lit8 v0, v4, 0x1

    move v4, v0

    goto :goto_12

    .line 2071
    :cond_3e
    return-object v5

    :cond_3f
    move v0, v3

    goto :goto_34
.end method

.method spends(Lorg/bitcoinj/core/Transaction;Lorg/bitcoinj/core/Transaction;)Z
    .registers 6

    .prologue
    .line 2076
    invoke-virtual {p1}, Lorg/bitcoinj/core/Transaction;->getInputs()Ljava/util/List;

    move-result-object v0

    invoke-interface {v0}, Ljava/util/List;->iterator()Ljava/util/Iterator;

    move-result-object v1

    :cond_8
    invoke-interface {v1}, Ljava/util/Iterator;->hasNext()Z

    move-result v0

    if-eqz v0, :cond_28

    invoke-interface {v1}, Ljava/util/Iterator;->next()Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Lorg/bitcoinj/core/TransactionInput;

    .line 2077
    invoke-virtual {v0}, Lorg/bitcoinj/core/TransactionInput;->getOutpoint()Lorg/bitcoinj/core/TransactionOutPoint;

    move-result-object v0

    invoke-virtual {v0}, Lorg/bitcoinj/core/TransactionOutPoint;->getHash()Lorg/bitcoinj/core/Sha256Hash;

    move-result-object v0

    invoke-virtual {p2}, Lorg/bitcoinj/core/Transaction;->getHash()Lorg/bitcoinj/core/Sha256Hash;

    move-result-object v2

    invoke-virtual {v0, v2}, Lorg/bitcoinj/core/Sha256Hash;->equals(Ljava/lang/Object;)Z

    move-result v0

    if-eqz v0, :cond_8

    .line 2078
    const/4 v0, 0x1

    .line 2081
    :goto_27
    return v0

    :cond_28
    const/4 v0, 0x0

    goto :goto_27
.end method

.method public toString()Ljava/lang/String;
    .registers 4

    .prologue
    const/4 v2, 0x1

    .line 3169
    const/4 v0, 0x0

    const/4 v1, 0x0

    invoke-virtual {p0, v0, v2, v2, v1}, Lorg/bitcoinj/wallet/Wallet;->toString(ZZZLorg/bitcoinj/core/AbstractBlockChain;)Ljava/lang/String;

    move-result-object v0

    return-object v0
.end method

.method public toString(ZZZLorg/bitcoinj/core/AbstractBlockChain;)Ljava/lang/String;
    .registers 11

    .prologue
    .line 3183
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V

    .line 3184
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V

    .line 3186
    :try_start_a
    new-instance v1, Ljava/lang/StringBuilder;

    invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V

    .line 3187
    sget-object v0, Lorg/bitcoinj/wallet/Wallet$BalanceType;->ESTIMATED:Lorg/bitcoinj/wallet/Wallet$BalanceType;

    invoke-virtual {p0, v0}, Lorg/bitcoinj/wallet/Wallet;->getBalance(Lorg/bitcoinj/wallet/Wallet$BalanceType;)Lorg/bitcoinj/core/Coin;

    move-result-object v0

    .line 3188
    sget-object v2, Lorg/bitcoinj/wallet/Wallet$BalanceType;->AVAILABLE_SPENDABLE:Lorg/bitcoinj/wallet/Wallet$BalanceType;

    invoke-virtual {p0, v2}, Lorg/bitcoinj/wallet/Wallet;->getBalance(Lorg/bitcoinj/wallet/Wallet$BalanceType;)Lorg/bitcoinj/core/Coin;

    move-result-object v2

    .line 3189
    const-string v3, "Wallet containing "

    invoke-virtual {v1, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v3

    invoke-virtual {v0}, Lorg/bitcoinj/core/Coin;->toFriendlyString()Ljava/lang/String;

    move-result-object v0

    invoke-virtual {v3, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v0

    const-string v3, " (spendable: "

    invoke-virtual {v0, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v0

    .line 3190
    invoke-virtual {v2}, Lorg/bitcoinj/core/Coin;->toFriendlyString()Ljava/lang/String;

    move-result-object v2

    invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v0

    const-string v2, ") in:\n"

    invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    .line 3191
    const-string v0, "  "

    invoke-virtual {v1, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v0

    iget-object v2, p0, Lorg/bitcoinj/wallet/Wallet;->pending:Ljava/util/Map;

    invoke-interface {v2}, Ljava/util/Map;->size()I

    move-result v2

    invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;

    move-result-object v0

    const-string v2, " pending transactions\n"

    invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    .line 3192
    const-string v0, "  "

    invoke-virtual {v1, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v0

    iget-object v2, p0, Lorg/bitcoinj/wallet/Wallet;->unspent:Ljava/util/Map;

    invoke-interface {v2}, Ljava/util/Map;->size()I

    move-result v2

    invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;

    move-result-object v0

    const-string v2, " unspent transactions\n"

    invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    .line 3193
    const-string v0, "  "

    invoke-virtual {v1, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v0

    iget-object v2, p0, Lorg/bitcoinj/wallet/Wallet;->spent:Ljava/util/Map;

    invoke-interface {v2}, Ljava/util/Map;->size()I

    move-result v2

    invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;

    move-result-object v0

    const-string v2, " spent transactions\n"

    invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    .line 3194
    const-string v0, "  "

    invoke-virtual {v1, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v0

    iget-object v2, p0, Lorg/bitcoinj/wallet/Wallet;->dead:Ljava/util/Map;

    invoke-interface {v2}, Ljava/util/Map;->size()I

    move-result v2

    invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;

    move-result-object v0

    const-string v2, " dead transactions\n"

    invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    .line 3195
    invoke-virtual {p0}, Lorg/bitcoinj/wallet/Wallet;->getLastBlockSeenTime()Ljava/util/Date;

    move-result-object v0

    .line 3196
    const-string v2, "Last seen best block: "

    invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v2

    invoke-virtual {p0}, Lorg/bitcoinj/wallet/Wallet;->getLastBlockSeenHeight()I

    move-result v3

    invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;

    move-result-object v2

    const-string v3, " ("

    invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v2

    if-nez v0, :cond_161

    const-string v0, "time unknown"

    .line 3197
    :goto_ac
    invoke-virtual {v2, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v0

    const-string v2, "): "

    .line 3198
    invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v0

    invoke-virtual {p0}, Lorg/bitcoinj/wallet/Wallet;->getLastBlockSeenHash()Lorg/bitcoinj/core/Sha256Hash;

    move-result-object v2

    invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;

    move-result-object v0

    const/16 v2, 0xa

    invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(C)Ljava/lang/StringBuilder;

    .line 3199
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroup:Lorg/bitcoinj/wallet/KeyChainGroup;

    invoke-virtual {v0}, Lorg/bitcoinj/wallet/KeyChainGroup;->getKeyCrypter()Lorg/bitcoinj/crypto/KeyCrypter;

    move-result-object v0

    .line 3200
    if-eqz v0, :cond_da

    .line 3201
    const-string v2, "Encryption: "

    invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v2

    invoke-virtual {v2, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;

    move-result-object v0

    const/16 v2, 0xa

    invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(C)Ljava/lang/StringBuilder;

    .line 3202
    :cond_da
    invoke-virtual {p0}, Lorg/bitcoinj/wallet/Wallet;->isWatching()Z

    move-result v0

    if-eqz v0, :cond_e5

    .line 3203
    const-string v0, "Wallet is watching.\n"

    invoke-virtual {v1, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    .line 3206
    :cond_e5
    const-string v0, "\nKeys:\n"

    invoke-virtual {v1, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    .line 3207
    const-string v0, "Earliest creation time: "

    invoke-virtual {v1, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v0

    invoke-virtual {p0}, Lorg/bitcoinj/wallet/Wallet;->getEarliestKeyCreationTime()J

    move-result-wide v2

    const-wide/16 v4, 0x3e8

    mul-long/2addr v2, v4

    invoke-static {v2, v3}, Lorg/bitcoinj/core/Utils;->dateTimeFormat(J)Ljava/lang/String;

    move-result-object v2

    invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v0

    const/16 v2, 0xa

    .line 3208
    invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(C)Ljava/lang/StringBuilder;

    .line 3209
    invoke-virtual {p0}, Lorg/bitcoinj/wallet/Wallet;->getKeyRotationTime()Ljava/util/Date;

    move-result-object v0

    .line 3210
    if-eqz v0, :cond_11d

    .line 3211
    const-string v2, "Key rotation time:      "

    invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v2

    invoke-static {v0}, Lorg/bitcoinj/core/Utils;->dateTimeFormat(Ljava/util/Date;)Ljava/lang/String;

    move-result-object v0

    invoke-virtual {v2, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v0

    const/16 v2, 0xa

    invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(C)Ljava/lang/StringBuilder;

    .line 3212
    :cond_11d
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroup:Lorg/bitcoinj/wallet/KeyChainGroup;

    invoke-virtual {v0, p1}, Lorg/bitcoinj/wallet/KeyChainGroup;->toString(Z)Ljava/lang/String;

    move-result-object v0

    invoke-virtual {v1, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    .line 3214
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->watchedScripts:Ljava/util/Set;

    invoke-interface {v0}, Ljava/util/Set;->isEmpty()Z

    move-result v0

    if-nez v0, :cond_167

    .line 3215
    const-string v0, "\nWatched scripts:\n"

    invoke-virtual {v1, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    .line 3216
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->watchedScripts:Ljava/util/Set;

    invoke-interface {v0}, Ljava/util/Set;->iterator()Ljava/util/Iterator;

    move-result-object v2

    :goto_139
    invoke-interface {v2}, Ljava/util/Iterator;->hasNext()Z

    move-result v0

    if-eqz v0, :cond_167

    invoke-interface {v2}, Ljava/util/Iterator;->next()Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Lorg/bitcoinj/script/Script;

    .line 3217
    const-string v3, "  "

    invoke-virtual {v1, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v3

    invoke-virtual {v3, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;

    move-result-object v0

    const-string v3, "\n"

    invoke-virtual {v0, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
    :try_end_154
    .catchall {:try_start_a .. :try_end_154} :catchall_155

    goto :goto_139

    .line 3248
    :catchall_155
    move-exception v0

    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    .line 3249
    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    throw v0

    .line 3197
    :cond_161
    :try_start_161
    invoke-static {v0}, Lorg/bitcoinj/core/Utils;->dateTimeFormat(Ljava/util/Date;)Ljava/lang/String;

    move-result-object v0

    goto/16 :goto_ac

    .line 3221
    :cond_167
    if-eqz p2, :cond_1b9

    .line 3223
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->pending:Ljava/util/Map;

    invoke-interface {v0}, Ljava/util/Map;->size()I

    move-result v0

    if-lez v0, :cond_17d

    .line 3224
    const-string v0, "\n>>> PENDING:\n"

    invoke-virtual {v1, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    .line 3225
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->pending:Ljava/util/Map;

    sget-object v2, Lorg/bitcoinj/core/Transaction;->SORT_TX_BY_UPDATE_TIME:Ljava/util/Comparator;

    invoke-direct {p0, v1, v0, p4, v2}, Lorg/bitcoinj/wallet/Wallet;->toStringHelper(Ljava/lang/StringBuilder;Ljava/util/Map;Lorg/bitcoinj/core/AbstractBlockChain;Ljava/util/Comparator;)V

    .line 3227
    :cond_17d
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->unspent:Ljava/util/Map;

    invoke-interface {v0}, Ljava/util/Map;->size()I

    move-result v0

    if-lez v0, :cond_191

    .line 3228
    const-string v0, "\n>>> UNSPENT:\n"

    invoke-virtual {v1, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    .line 3229
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->unspent:Ljava/util/Map;

    sget-object v2, Lorg/bitcoinj/core/Transaction;->SORT_TX_BY_HEIGHT:Ljava/util/Comparator;

    invoke-direct {p0, v1, v0, p4, v2}, Lorg/bitcoinj/wallet/Wallet;->toStringHelper(Ljava/lang/StringBuilder;Ljava/util/Map;Lorg/bitcoinj/core/AbstractBlockChain;Ljava/util/Comparator;)V

    .line 3231
    :cond_191
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->spent:Ljava/util/Map;

    invoke-interface {v0}, Ljava/util/Map;->size()I

    move-result v0

    if-lez v0, :cond_1a5

    .line 3232
    const-string v0, "\n>>> SPENT:\n"

    invoke-virtual {v1, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    .line 3233
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->spent:Ljava/util/Map;

    sget-object v2, Lorg/bitcoinj/core/Transaction;->SORT_TX_BY_HEIGHT:Ljava/util/Comparator;

    invoke-direct {p0, v1, v0, p4, v2}, Lorg/bitcoinj/wallet/Wallet;->toStringHelper(Ljava/lang/StringBuilder;Ljava/util/Map;Lorg/bitcoinj/core/AbstractBlockChain;Ljava/util/Comparator;)V

    .line 3235
    :cond_1a5
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->dead:Ljava/util/Map;

    invoke-interface {v0}, Ljava/util/Map;->size()I

    move-result v0

    if-lez v0, :cond_1b9

    .line 3236
    const-string v0, "\n>>> DEAD:\n"

    invoke-virtual {v1, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    .line 3237
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->dead:Ljava/util/Map;

    sget-object v2, Lorg/bitcoinj/core/Transaction;->SORT_TX_BY_UPDATE_TIME:Ljava/util/Comparator;

    invoke-direct {p0, v1, v0, p4, v2}, Lorg/bitcoinj/wallet/Wallet;->toStringHelper(Ljava/lang/StringBuilder;Ljava/util/Map;Lorg/bitcoinj/core/AbstractBlockChain;Ljava/util/Comparator;)V

    .line 3240
    :cond_1b9
    if-eqz p3, :cond_1e8

    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->extensions:Ljava/util/HashMap;

    invoke-virtual {v0}, Ljava/util/HashMap;->size()I

    move-result v0

    if-lez v0, :cond_1e8

    .line 3241
    const-string v0, "\n>>> EXTENSIONS:\n"

    invoke-virtual {v1, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    .line 3242
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->extensions:Ljava/util/HashMap;

    invoke-virtual {v0}, Ljava/util/HashMap;->values()Ljava/util/Collection;

    move-result-object v0

    invoke-interface {v0}, Ljava/util/Collection;->iterator()Ljava/util/Iterator;

    move-result-object v2

    :goto_1d2
    invoke-interface {v2}, Ljava/util/Iterator;->hasNext()Z

    move-result v0

    if-eqz v0, :cond_1e8

    invoke-interface {v2}, Ljava/util/Iterator;->next()Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Lorg/bitcoinj/wallet/WalletExtension;

    .line 3243
    invoke-virtual {v1, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;

    move-result-object v0

    const-string v3, "\n\n"

    invoke-virtual {v0, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    goto :goto_1d2

    .line 3246
    :cond_1e8
    invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
    :try_end_1eb
    .catchall {:try_start_161 .. :try_end_1eb} :catchall_155

    move-result-object v0

    .line 3248
    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    .line 3249
    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    .line 3246
    return-object v0
.end method

.method public upgradeToDeterministic(Lorg/spongycastle/crypto/params/KeyParameter;)V
    .registers 6

    .prologue
    .line 549
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V

    .line 551
    :try_start_5
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroup:Lorg/bitcoinj/wallet/KeyChainGroup;

    iget-wide v2, p0, Lorg/bitcoinj/wallet/Wallet;->vKeyRotationTimestamp:J

    invoke-virtual {v0, v2, v3, p1}, Lorg/bitcoinj/wallet/KeyChainGroup;->upgradeToDeterministic(JLorg/spongycastle/crypto/params/KeyParameter;)Lorg/bitcoinj/wallet/DeterministicKeyChain;
    :try_end_c
    .catchall {:try_start_5 .. :try_end_c} :catchall_12

    .line 553
    iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    .line 554
    return-void

    .line 553
    :catchall_12
    move-exception v0

    iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    throw v0
.end method