Wallet.smali

.class public Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/Wallet;
.super Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/c/a;
.source "Wallet.java"

# interfaces
.implements Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ah;
.implements Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/j;


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


# instance fields
.field private Pk:Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/NetworkParameters;

.field private RF:Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/k;

.field private RG:Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/b;

.field private volatile RH:Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/an;

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

.field private final extensions:Ljava/util/HashMap;
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "Ljava/util/HashMap",
            "<",
            "Ljava/lang/String;",
            "Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/as;",
            ">;"
        }
    .end annotation
.end field

.field private keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;

.field private lock:Ljava/util/concurrent/locks/ReentrantLock;

.field private myUnspents:Ljava/util/HashSet;
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "Ljava/util/HashSet",
            "<",
            "Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ak;",
            ">;"
        }
    .end annotation
.end field

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

.field private signers:Ljava/util/List;
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "Ljava/util/List",
            "<",
            "Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/signers/TransactionSigner;",
            ">;"
        }
    .end annotation
.end field

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

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

.field private volatile vKeyRotationTimestamp:J

.field private watchedScripts:Ljava/util/Set;
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "Ljava/util/Set",
            "<",
            "Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script;",
            ">;"
        }
    .end annotation
.end field


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

    .prologue
    .line 127
    const-class v0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/Wallet;

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

    move-result-object v0

    sput-object v0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;

    return-void
.end method

.method private constructor <init>(Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/NetworkParameters;Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/k;)V
    .registers 4

    .prologue
    .line 307
    invoke-static {p1}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/j;->a(Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/NetworkParameters;)Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/j;

    move-result-object v0

    invoke-direct {p0, v0, p2}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/Wallet;-><init>(Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/j;Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/k;)V

    .line 308
    return-void
.end method

.method private constructor <init>(Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/j;Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/k;)V
    .registers 5

    .prologue
    .line 310
    invoke-direct {p0}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/c/a;-><init>()V

    .line 132
    const-string v0, "wallet"

    invoke-static {v0}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/c/d;->lock(Ljava/lang/String;)Ljava/util/concurrent/locks/ReentrantLock;

    move-result-object v0

    iput-object v0, p0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

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

    invoke-static {v0}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/c/d;->lock(Ljava/lang/String;)Ljava/util/concurrent/locks/ReentrantLock;

    move-result-object v0

    iput-object v0, p0, Lcom/cmcm/safewallet/data/coinprovider/bch/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, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/Wallet;->myUnspents:Ljava/util/HashSet;

    .line 173
    new-instance v0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/Wallet$1;

    invoke-direct {v0, p0}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/Wallet$1;-><init>(Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/Wallet;)V

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

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

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

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

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

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

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

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

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

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

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

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

    .line 219
    sget-object v0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/e;->QR:Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/f;

    .line 234
    new-instance v0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/d;

    invoke-direct {v0}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/d;-><init>()V

    iput-object v0, p0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/Wallet;->RG:Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/b;

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

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

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

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

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

    const/4 v1, 0x0

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

    .line 7167
    iget-object v0, p1, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/j;->Pk:Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/NetworkParameters;

    .line 312
    iput-object v0, p0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/Wallet;->Pk:Lcom/cmcm/safewallet/data/coinprovider/bch/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, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/k;

    iput-object v0, p0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/Wallet;->RF:Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/k;

    .line 314
    iget-object v0, p0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/Wallet;->Pk:Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/NetworkParameters;

    invoke-virtual {v0}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/NetworkParameters;->getId()Ljava/lang/String;

    move-result-object v0

    const-string v1, "com.cmcm.safewallet.data.coinprovider.bch.bitcoinj.unittest"

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

    move-result v0

    if-eqz v0, :cond_75

    .line 315
    iget-object v0, p0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/Wallet;->RF:Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/k;

    invoke-virtual {v0}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/k;->gZ()V

    .line 319
    :cond_75
    iget-object v0, p0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/Wallet;->RF:Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/k;

    invoke-virtual {v0}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/k;->numKeys()I

    move-result v0

    if-nez v0, :cond_82

    .line 320
    iget-object v0, p0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/Wallet;->RF:Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/k;

    invoke-virtual {v0}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/k;->createAndActivateNewHDChain()V

    .line 8164
    :cond_82
    new-instance v0, Ljava/util/HashSet;

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

    .line 321
    iput-object v0, p0, Lcom/cmcm/safewallet/data/coinprovider/bch/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, Lcom/cmcm/safewallet/data/coinprovider/bch/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, Lcom/cmcm/safewallet/data/coinprovider/bch/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, Lcom/cmcm/safewallet/data/coinprovider/bch/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, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/Wallet;->dead:Ljava/util/Map;

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

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

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

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

    iput-object v0, p0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/Wallet;->extensions:Ljava/util/HashMap;

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

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

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

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

    iput-object v0, p0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/Wallet;->signers:Ljava/util/List;

    .line 331
    new-instance v0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/signers/a;

    invoke-direct {v0}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/signers/a;-><init>()V

    .line 8380
    iget-object v1, p0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

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

    .line 8383
    :try_start_c7
    iget-object v1, p0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/Wallet;->signers:Ljava/util/List;

    invoke-interface {v1, v0}, Ljava/util/List;->add(Ljava/lang/Object;)Z
    :try_end_cc
    .catchall {:try_start_c7 .. :try_end_cc} :catchall_d2

    .line 8387
    iget-object v0, p0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

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

    .line 8388
    return-void

    .line 8387
    :catchall_d2
    move-exception v0

    iget-object v1, p0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

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

    throw v0
.end method

.method private a(Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/a;)I
    .registers 10

    .prologue
    const/4 v4, 0x0

    const/4 v2, 0x0

    .line 5044
    .line 5045
    iget-object v0, p1, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/a;->gathered:Ljava/util/Collection;

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

    move-result-object v5

    move v1, v2

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

    move-result v0

    if-eqz v0, :cond_9e

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

    move-result-object v0

    check-cast v0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ak;

    .line 5047
    :try_start_15
    invoke-virtual {v0}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ak;->gF()Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script;

    move-result-object v6

    .line 5050
    invoke-virtual {v6}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script;->isSentToAddress()Z

    move-result v0

    if-eqz v0, :cond_4a

    .line 5051
    invoke-virtual {v6}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script;->getPubKeyHash()[B

    move-result-object v0

    invoke-virtual {p0, v0}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/Wallet;->n([B)Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ECKey;

    move-result-object v0

    .line 5052
    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, v4

    .line 37658
    :goto_2d
    invoke-virtual {v6}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script;->isPayToScriptHash()Z

    move-result v7

    if-eqz v7, :cond_64

    .line 37660
    if-eqz v3, :cond_62

    const/4 v0, 0x1

    :goto_36
    const-string v6, "P2SH script requires redeemScript to be spent"

    invoke-static {v0, v6}, Lcom/google/common/base/n;->checkArgument(ZLjava/lang/Object;)V

    .line 37661
    invoke-virtual {v3}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script;->getNumberOfSignaturesRequiredToSpend()I

    move-result v0

    mul-int/lit8 v0, v0, 0x4b

    invoke-virtual {v3}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script;->getProgram()[B

    move-result-object v3

    array-length v3, v3

    add-int/2addr v0, v3

    .line 5057
    :goto_47
    add-int/2addr v0, v1

    move v1, v0

    .line 5062
    goto :goto_9

    .line 5053
    :cond_4a
    invoke-virtual {v6}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script;->isPayToScriptHash()Z

    move-result v0

    if-eqz v0, :cond_9f

    .line 5054
    invoke-virtual {v6}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script;->getPubKeyHash()[B

    move-result-object v0

    invoke-virtual {p0, v0}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/Wallet;->p([B)Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/ap;

    move-result-object v0

    iget-object v0, v0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/ap;->RC:Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script;

    .line 5055
    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, v4

    goto :goto_2d

    :cond_62
    move v0, v2

    .line 37660
    goto :goto_36

    .line 37662
    :cond_64
    invoke-virtual {v6}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script;->isSentToMultiSig()Z

    move-result v3

    if-eqz v3, :cond_73

    .line 37664
    invoke-virtual {v6}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script;->getNumberOfSignaturesRequiredToSpend()I

    move-result v0

    mul-int/lit8 v0, v0, 0x4b

    add-int/lit8 v0, v0, 0x1

    goto :goto_47

    .line 37665
    :cond_73
    invoke-virtual {v6}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script;->isSentToRawPubKey()Z

    move-result v3

    if-eqz v3, :cond_7c

    .line 37667
    const/16 v0, 0x4b

    goto :goto_47

    .line 37668
    :cond_7c
    invoke-virtual {v6}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script;->isSentToAddress()Z

    move-result v3

    if-eqz v3, :cond_8f

    .line 37671
    if-eqz v0, :cond_8c

    invoke-virtual {v0}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ECKey;->getPubKey()[B

    move-result-object v0

    array-length v0, v0

    :goto_89
    add-int/lit8 v0, v0, 0x4b

    goto :goto_47

    :cond_8c
    const/16 v0, 0x41

    goto :goto_89

    .line 37673
    :cond_8f
    new-instance v0, Ljava/lang/IllegalStateException;

    const-string v1, "Unsupported script type"

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

    throw v0
    :try_end_97
    .catch Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException; {:try_start_15 .. :try_end_97} :catch_97

    .line 5058
    :catch_97
    move-exception v0

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

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

    throw v1

    .line 5064
    :cond_9e
    return v1

    :cond_9f
    move-object v3, v4

    move-object v0, v4

    goto :goto_2d
.end method

.method private a(Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/Wallet$BalanceType;)Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Coin;
    .registers 6

    .prologue
    const/4 v0, 0x1

    const/4 v1, 0x0

    .line 3499
    iget-object v2, p0, Lcom/cmcm/safewallet/data/coinprovider/bch/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, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/Wallet$BalanceType;->AVAILABLE:Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/Wallet$BalanceType;

    if-eq p1, v2, :cond_f

    sget-object v2, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/Wallet$BalanceType;->AVAILABLE_SPENDABLE:Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/Wallet$BalanceType;

    if-ne p1, v2, :cond_2a

    .line 3502
    :cond_f
    const/4 v2, 0x1

    sget-object v3, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/Wallet$BalanceType;->AVAILABLE_SPENDABLE:Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/Wallet$BalanceType;

    if-ne p1, v3, :cond_28

    :goto_14
    invoke-direct {p0, v2, v0}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/Wallet;->calculateAllSpendCandidates(ZZ)Ljava/util/List;

    move-result-object v0

    .line 3503
    iget-object v1, p0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/Wallet;->RG:Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/b;

    sget-object v2, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/NetworkParameters;->PR:Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Coin;

    invoke-interface {v1, v2, v0}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/b;->a(Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Coin;Ljava/util/List;)Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/a;

    move-result-object v0

    .line 3504
    iget-object v0, v0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/a;->QP:Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Coin;
    :try_end_22
    .catchall {:try_start_7 .. :try_end_22} :catchall_67

    .line 3514
    iget-object v1, p0, Lcom/cmcm/safewallet/data/coinprovider/bch/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, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/Wallet$BalanceType;->ESTIMATED:Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/Wallet$BalanceType;

    if-eq p1, v2, :cond_32

    sget-object v2, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/Wallet$BalanceType;->ESTIMATED_SPENDABLE:Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/Wallet$BalanceType;

    if-ne p1, v2, :cond_5f

    .line 3506
    :cond_32
    const/4 v2, 0x0

    sget-object v3, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/Wallet$BalanceType;->ESTIMATED_SPENDABLE:Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/Wallet$BalanceType;

    if-ne p1, v3, :cond_56

    :goto_37
    invoke-direct {p0, v2, v0}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/Wallet;->calculateAllSpendCandidates(ZZ)Ljava/util/List;

    move-result-object v0

    .line 3507
    sget-object v1, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Coin;->ZERO:Lcom/cmcm/safewallet/data/coinprovider/bch/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, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ak;

    invoke-virtual {v0}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ak;->gG()Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Coin;

    move-result-object v0

    invoke-virtual {v1, v0}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Coin;->add(Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Coin;)Lcom/cmcm/safewallet/data/coinprovider/bch/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, Lcom/cmcm/safewallet/data/coinprovider/bch/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, Lcom/cmcm/safewallet/data/coinprovider/bch/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 static a(Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/NetworkParameters;Ljava/util/List;)Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/Wallet;
    .registers 4
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "(",
            "Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/NetworkParameters;",
            "Ljava/util/List",
            "<",
            "Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ECKey;",
            ">;)",
            "Lcom/cmcm/safewallet/data/coinprovider/bch/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, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ECKey;

    .line 299
    instance-of v0, v0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/crypto/c;

    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, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/k;

    invoke-direct {v0, p0}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/k;-><init>(Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/NetworkParameters;)V

    .line 5305
    iget-object v1, v0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/k;->Ra:Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/BasicKeyChain;

    invoke-virtual {v1, p1}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/BasicKeyChain;->importKeys(Ljava/util/List;)I

    .line 303
    new-instance v1, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/Wallet;

    invoke-direct {v1, p0, v0}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/Wallet;-><init>(Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/NetworkParameters;Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/k;)V

    return-object v1
.end method

.method private a(Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/aq;Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Coin;Ljava/util/List;ZLjava/util/List;)Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/ar;
    .registers 27
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "(",
            "Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/aq;",
            "Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Coin;",
            "Ljava/util/List",
            "<",
            "Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ai;",
            ">;Z",
            "Ljava/util/List",
            "<",
            "Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ak;",
            ">;)",
            "Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/ar;"
        }
    .end annotation

    .prologue
    .line 4863
    move-object/from16 v0, p0

    iget-object v2, v0, Lcom/cmcm/safewallet/data/coinprovider/bch/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 4871
    const/4 v8, 0x0

    .line 4872
    const/4 v7, 0x0

    .line 4873
    const/4 v6, 0x0

    .line 4874
    const/4 v5, 0x0

    .line 4875
    const/4 v4, 0x0

    .line 4876
    const/4 v3, 0x0

    .line 4878
    const/4 v2, 0x0

    .line 4879
    const/16 v16, 0x0

    move-object v9, v8

    move-object v8, v7

    move-object v7, v6

    move-object v6, v5

    move-object v5, v4

    move-object v4, v3

    move v3, v2

    .line 4881
    :goto_1b
    move-object/from16 v0, p1

    move-object/from16 v1, p3

    invoke-static {v0, v1}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/Wallet;->a(Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/aq;Ljava/util/List;)V

    .line 4883
    move-object/from16 v0, p1

    iget-object v2, v0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/aq;->PD:Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Coin;

    int-to-long v10, v3

    invoke-virtual {v2, v10, v11}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Coin;->multiply(J)Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Coin;

    move-result-object v2

    const-wide/16 v10, 0x3e8

    invoke-virtual {v2, v10, v11}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Coin;->divide(J)Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Coin;

    move-result-object v2

    .line 4884
    if-eqz p4, :cond_3d

    sget-object v10, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Transaction;->PW:Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Coin;

    invoke-virtual {v2, v10}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Coin;->compareTo(Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Coin;)I

    move-result v10

    if-gez v10, :cond_3d

    .line 4885
    sget-object v2, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Transaction;->PW:Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Coin;

    .line 4887
    :cond_3d
    move-object/from16 v0, p2

    invoke-virtual {v0, v2}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Coin;->add(Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Coin;)Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Coin;

    move-result-object v10

    .line 4888
    if-eqz v9, :cond_49

    .line 4889
    invoke-virtual {v10, v9}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Coin;->add(Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Coin;)Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Coin;

    move-result-object v10

    .line 4893
    :cond_49
    move-object/from16 v0, p0

    iget-object v11, v0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/Wallet;->RG:Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/b;

    .line 4895
    new-instance v12, Ljava/util/LinkedList;

    move-object/from16 v0, p5

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

    invoke-interface {v11, v10, v12}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/b;->a(Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Coin;Ljava/util/List;)Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/a;

    move-result-object v17

    .line 4897
    move-object/from16 v0, v17

    iget-object v11, v0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/a;->QP:Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Coin;

    invoke-virtual {v11, v10}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Coin;->compareTo(Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Coin;)I

    move-result v11

    if-gez v11, :cond_8b

    .line 4898
    move-object/from16 v0, v17

    iget-object v2, v0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/a;->QP:Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Coin;

    invoke-virtual {v10, v2}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Coin;->subtract(Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Coin;)Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Coin;

    move-result-object v2

    .line 5000
    :goto_6a
    move-object/from16 v0, p1

    move-object/from16 v1, p3

    invoke-static {v0, v1}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/Wallet;->a(Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/aq;Ljava/util/List;)V

    .line 5002
    if-nez v8, :cond_21e

    if-nez v7, :cond_21e

    if-nez v5, :cond_21e

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

    .line 5004
    sget-object v3, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;

    const-string v4, "Insufficient value in wallet for send: needed {} more"

    invoke-virtual {v2}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Coin;->toFriendlyString()Ljava/lang/String;

    move-result-object v5

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

    .line 5005
    new-instance v3, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/InsufficientMoneyException;

    invoke-direct {v3, v2}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/InsufficientMoneyException;-><init>(Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Coin;)V

    throw v3

    .line 4901
    :cond_8b
    move-object/from16 v0, v17

    iget-object v11, v0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/a;->gathered:Ljava/util/Collection;

    invoke-interface {v11}, Ljava/util/Collection;->size()I

    move-result v11

    if-gtz v11, :cond_9b

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

    move-result v11

    if-lez v11, :cond_150

    :cond_9b
    const/4 v11, 0x1

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

    .line 4909
    const/4 v11, 0x0

    .line 4910
    const/4 v14, 0x0

    .line 4912
    move-object/from16 v0, v17

    iget-object v12, v0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/a;->QP:Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Coin;

    invoke-virtual {v12, v10}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Coin;->subtract(Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Coin;)Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Coin;

    move-result-object v10

    .line 4913
    if-eqz v9, :cond_af

    .line 4914
    invoke-virtual {v10, v9}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Coin;->add(Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Coin;)Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Coin;

    move-result-object v10

    .line 4917
    :cond_af
    move-object/from16 v0, p1

    iget-boolean v12, v0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/aq;->ensureMinRequiredFee:Z

    if-eqz v12, :cond_28a

    sget-object v12, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Coin;->ZERO:Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Coin;

    invoke-virtual {v10, v12}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Coin;->equals(Ljava/lang/Object;)Z

    move-result v12

    if-nez v12, :cond_28a

    sget-object v12, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Coin;->CENT:Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Coin;

    .line 4918
    invoke-virtual {v10, v12}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Coin;->compareTo(Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Coin;)I

    move-result v12

    if-gez v12, :cond_28a

    sget-object v12, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Transaction;->PW:Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Coin;

    invoke-virtual {v2, v12}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Coin;->compareTo(Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Coin;)I

    move-result v12

    if-gez v12, :cond_28a

    .line 4920
    const/4 v11, 0x1

    .line 4921
    sget-object v12, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Coin;->CENT:Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Coin;

    .line 4923
    sget-object v13, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Transaction;->PW:Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Coin;

    invoke-virtual {v13, v2}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Coin;->subtract(Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Coin;)Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Coin;

    move-result-object v2

    invoke-virtual {v10, v2}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Coin;->subtract(Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Coin;)Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Coin;

    move-result-object v10

    move-object v2, v12

    .line 4926
    :goto_db
    const/4 v15, 0x0

    .line 4927
    const/4 v12, 0x0

    .line 4928
    invoke-virtual {v10}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Coin;->signum()I

    move-result v13

    if-lez v13, :cond_190

    .line 4932
    move-object/from16 v0, p1

    iget-object v12, v0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/aq;->RE:Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Address;

    .line 4933
    if-nez v12, :cond_f1

    .line 34652
    sget-object v12, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/KeyChain$KeyPurpose;->CHANGE:Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/KeyChain$KeyPurpose;

    move-object/from16 v0, p0

    invoke-direct {v0, v12}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/Wallet;->b(Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/KeyChain$KeyPurpose;)Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Address;

    move-result-object v12

    .line 4935
    :cond_f1
    new-instance v13, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ak;

    move-object/from16 v0, p0

    iget-object v0, v0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/Wallet;->Pk:Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/NetworkParameters;

    move-object/from16 v18, v0

    move-object/from16 v0, p1

    iget-object v0, v0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/aq;->RD:Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Transaction;

    move-object/from16 v19, v0

    move-object/from16 v0, v18

    move-object/from16 v1, v19

    invoke-direct {v13, v0, v1, v10, v12}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ak;-><init>(Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/NetworkParameters;Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Transaction;Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Coin;Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Address;)V

    .line 4937
    move-object/from16 v0, p1

    iget-boolean v10, v0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/aq;->ensureMinRequiredFee:Z

    if-eqz v10, :cond_153

    invoke-virtual {v13}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ak;->isDust()Z

    move-result v10

    if-eqz v10, :cond_153

    .line 4939
    const/4 v2, 0x1

    .line 4940
    sget-object v10, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Transaction;->PW:Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Coin;

    .line 4941
    invoke-virtual {v13}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ak;->gH()Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Coin;

    move-result-object v12

    sget-object v14, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Coin;->SATOSHI:Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Coin;

    invoke-virtual {v12, v14}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Coin;->add(Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Coin;)Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Coin;

    move-result-object v12

    .line 4940
    invoke-virtual {v10, v12}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Coin;->add(Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Coin;)Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Coin;

    move-result-object v10

    move-object v12, v13

    move v14, v15

    move v13, v2

    .line 4957
    :goto_126
    move-object/from16 v0, v17

    iget-object v2, v0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/a;->gathered:Ljava/util/Collection;

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

    move-result-object v15

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

    move-result v2

    if-eqz v2, :cond_1a0

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

    move-result-object v2

    check-cast v2, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ak;

    .line 4958
    move-object/from16 v0, p1

    iget-object v0, v0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/aq;->RD:Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Transaction;

    move-object/from16 v18, v0

    move-object/from16 v0, v18

    invoke-virtual {v0, v2}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Transaction;->a(Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ak;)Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ai;

    move-result-object v2

    .line 37234
    iget-object v2, v2, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ai;->scriptBytes:[B

    .line 4960
    array-length v2, v2

    if-nez v2, :cond_19e

    const/4 v2, 0x1

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

    goto :goto_12e

    .line 4901
    :cond_150
    const/4 v11, 0x0

    goto/16 :goto_9c

    .line 4943
    :cond_153
    invoke-virtual {v13}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ak;->unsafeBitcoinSerialize()[B

    move-result-object v10

    array-length v10, v10

    move-object/from16 v0, p1

    iget-object v12, v0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/aq;->RD:Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Transaction;

    .line 35399
    iget-object v12, v12, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Transaction;->outputs:Ljava/util/ArrayList;

    invoke-static {v12}, Ljava/util/Collections;->unmodifiableList(Ljava/util/List;)Ljava/util/List;

    move-result-object v12

    .line 4943
    invoke-interface {v12}, Ljava/util/List;->size()I

    move-result v12

    int-to-long v0, v12

    move-wide/from16 v18, v0

    invoke-static/range {v18 .. v19}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ar;->sizeOf(J)I

    move-result v12

    add-int/2addr v10, v12

    move-object/from16 v0, p1

    iget-object v12, v0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/aq;->RD:Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Transaction;

    .line 36399
    iget-object v12, v12, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Transaction;->outputs:Ljava/util/ArrayList;

    invoke-static {v12}, Ljava/util/Collections;->unmodifiableList(Ljava/util/List;)Ljava/util/List;

    move-result-object v12

    .line 4943
    invoke-interface {v12}, Ljava/util/List;->size()I

    move-result v12

    add-int/lit8 v12, v12, -0x1

    int-to-long v0, v12

    move-wide/from16 v18, v0

    invoke-static/range {v18 .. v19}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ar;->sizeOf(J)I

    move-result v12

    sub-int/2addr v10, v12

    add-int/lit8 v10, v10, 0x0

    .line 4945
    if-nez v11, :cond_18b

    .line 4946
    const/4 v2, 0x0

    :cond_18b
    move-object v12, v13

    move v13, v14

    move v14, v10

    move-object v10, v2

    .line 4948
    goto :goto_126

    .line 4949
    :cond_190
    if-eqz v11, :cond_285

    .line 4951
    const/4 v2, 0x1

    .line 4952
    sget-object v10, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Transaction;->PW:Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Coin;

    sget-object v13, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Coin;->SATOSHI:Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Coin;

    invoke-virtual {v10, v13}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Coin;->add(Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Coin;)Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Coin;

    move-result-object v10

    move v13, v2

    move v14, v15

    goto :goto_126

    .line 4960
    :cond_19e
    const/4 v2, 0x0

    goto :goto_14c

    .line 4965
    :cond_1a0
    move-object/from16 v0, p1

    iget-object v2, v0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/aq;->RD:Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Transaction;

    invoke-virtual {v2}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Transaction;->unsafeBitcoinSerialize()[B

    move-result-object v2

    array-length v2, v2

    add-int/2addr v2, v14

    .line 4966
    move-object/from16 v0, p0

    move-object/from16 v1, v17

    invoke-direct {v0, v1}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/Wallet;->a(Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/a;)I

    move-result v14

    add-int/2addr v2, v14

    .line 4967
    if-le v2, v3, :cond_1c2

    move-object/from16 v0, p1

    iget-object v14, v0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/aq;->PD:Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Coin;

    invoke-virtual {v14}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Coin;->signum()I

    move-result v14

    if-lez v14, :cond_1c2

    move v3, v2

    .line 4971
    goto/16 :goto_1b

    .line 4974
    :cond_1c2
    if-eqz v13, :cond_1e2

    .line 4975
    if-nez v8, :cond_27e

    move-object v2, v4

    move-object v4, v5

    move-object v5, v6

    move-object v6, v7

    move-object/from16 v7, v17

    .line 4992
    :goto_1cc
    if-eqz v10, :cond_275

    .line 4993
    if-eqz v9, :cond_26d

    .line 4994
    invoke-virtual {v10, v9}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Coin;->compareTo(Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Coin;)I

    move-result v8

    if-lez v8, :cond_21c

    const/4 v8, 0x1

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

    move-object v8, v7

    move-object v9, v10

    move-object v7, v6

    move-object v6, v5

    move-object v5, v4

    move-object v4, v2

    goto/16 :goto_1b

    .line 4977
    :cond_1e2
    if-eqz v11, :cond_205

    .line 4980
    if-nez v7, :cond_203

    const/4 v2, 0x1

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

    .line 4981
    sget-object v2, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Coin;->CENT:Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Coin;

    invoke-virtual {v10, v2}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Coin;->equals(Ljava/lang/Object;)Z

    move-result v2

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

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

    move-result-object v2

    check-cast v2, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ak;

    move-object/from16 v6, v17

    move-object v7, v8

    move-object/from16 v20, v2

    move-object v2, v4

    move-object v4, v5

    move-object/from16 v5, v20

    goto :goto_1cc

    .line 4980
    :cond_203
    const/4 v2, 0x0

    goto :goto_1e7

    .line 4986
    :cond_205
    if-nez v5, :cond_218

    const/4 v2, 0x1

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

    .line 4987
    if-nez v10, :cond_21a

    const/4 v2, 0x1

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

    move-object v2, v12

    move-object/from16 v4, v17

    move-object v5, v6

    move-object v6, v7

    move-object v7, v8

    .line 4989
    goto :goto_1cc

    .line 4986
    :cond_218
    const/4 v2, 0x0

    goto :goto_208

    .line 4987
    :cond_21a
    const/4 v2, 0x0

    goto :goto_20e

    .line 4994
    :cond_21c
    const/4 v8, 0x0

    goto :goto_1d7

    .line 5008
    :cond_21e
    const/4 v3, 0x0

    .line 5009
    new-instance v9, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/ar;

    const/4 v2, 0x0

    invoke-direct {v9, v2}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/ar;-><init>(B)V

    .line 5010
    if-eqz v5, :cond_238

    .line 5011
    if-eqz v4, :cond_268

    .line 5012
    iget-object v2, v5, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/a;->QP:Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Coin;

    invoke-virtual {v4}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ak;->gG()Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Coin;

    move-result-object v3

    invoke-virtual {v2, v3}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Coin;->subtract(Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Coin;)Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Coin;

    move-result-object v2

    .line 5015
    :goto_233
    iput-object v5, v9, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/ar;->RK:Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/a;

    .line 5016
    iput-object v4, v9, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/ar;->RL:Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ak;

    move-object v3, v2

    .line 5019
    :cond_238
    if-eqz v7, :cond_26b

    .line 5020
    iget-object v4, v7, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/a;->QP:Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Coin;

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

    move-result-object v2

    check-cast v2, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ak;

    invoke-virtual {v2}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ak;->gG()Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Coin;

    move-result-object v2

    invoke-virtual {v4, v2}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Coin;->subtract(Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Coin;)Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Coin;

    move-result-object v2

    .line 5021
    if-eqz v3, :cond_252

    invoke-virtual {v2, v3}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Coin;->compareTo(Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Coin;)I

    move-result v4

    if-gez v4, :cond_26b

    .line 5023
    :cond_252
    iput-object v7, v9, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/ar;->RK:Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/a;

    .line 5024
    iput-object v6, v9, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/ar;->RL:Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ak;

    .line 5028
    :goto_256
    if-eqz v8, :cond_267

    .line 5029
    if-eqz v2, :cond_262

    iget-object v3, v8, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/a;->QP:Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Coin;

    invoke-virtual {v3, v2}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Coin;->compareTo(Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Coin;)I

    move-result v2

    if-gez v2, :cond_267

    .line 5030
    :cond_262
    iput-object v8, v9, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/ar;->RK:Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/a;

    .line 5031
    const/4 v2, 0x0

    iput-object v2, v9, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/ar;->RL:Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ak;

    .line 5034
    :cond_267
    return-object v9

    .line 5014
    :cond_268
    iget-object v2, v5, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/a;->QP:Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Coin;

    goto :goto_233

    :cond_26b
    move-object v2, v3

    goto :goto_256

    :cond_26d
    move-object v8, v7

    move-object v9, v10

    move-object v7, v6

    move-object v6, v5

    move-object v5, v4

    move-object v4, v2

    goto/16 :goto_1b

    :cond_275
    move-object v8, v7

    move-object v7, v6

    move-object v6, v5

    move-object v5, v4

    move-object v4, v2

    move-object/from16 v2, v16

    goto/16 :goto_6a

    :cond_27e
    move-object v2, v4

    move-object v4, v5

    move-object v5, v6

    move-object v6, v7

    move-object v7, v8

    goto/16 :goto_1cc

    :cond_285
    move v13, v14

    move-object v10, v2

    move v14, v15

    goto/16 :goto_126

    :cond_28a
    move-object v2, v9

    goto/16 :goto_db
.end method

.method private a(Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/aq;)V
    .registers 10

    .prologue
    const/4 v1, 0x0

    const/4 v4, 0x1

    .line 3958
    invoke-virtual {p1}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/aq;->iz()V

    .line 3959
    iget-object v0, p0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

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

    .line 3961
    :try_start_a
    iget-boolean v0, p1, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/aq;->completed:Z

    if-nez v0, :cond_42

    move v0, v4

    :goto_f
    const-string v2, "Given SendRequest has already been completed."

    invoke-static {v0, v2}, Lcom/google/common/base/n;->checkArgument(ZLjava/lang/Object;)V

    .line 19271
    iget-boolean v0, p1, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/aq;->QK:Z

    .line 3963
    if-eqz v0, :cond_1d

    .line 3964
    iget-object v0, p1, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/aq;->RD:Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Transaction;

    invoke-virtual {v0}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Transaction;->gy()V

    .line 3967
    :cond_1d
    sget-object v0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Coin;->ZERO:Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Coin;

    .line 3968
    iget-object v2, p1, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/aq;->RD:Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Transaction;

    .line 19399
    iget-object v2, v2, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Transaction;->outputs:Ljava/util/ArrayList;

    invoke-static {v2}, Ljava/util/Collections;->unmodifiableList(Ljava/util/List;)Ljava/util/List;

    move-result-object v2

    .line 3968
    invoke-interface {v2}, Ljava/util/List;->iterator()Ljava/util/Iterator;

    move-result-object v2

    move-object v3, v0

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

    move-result v0

    if-eqz v0, :cond_44

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

    move-result-object v0

    check-cast v0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ak;

    .line 3969
    invoke-virtual {v0}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ak;->gG()Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Coin;

    move-result-object v0

    invoke-virtual {v3, v0}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Coin;->add(Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Coin;)Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Coin;

    move-result-object v0

    move-object v3, v0

    .line 3970
    goto :goto_2c

    :cond_42
    move v0, v1

    .line 3961
    goto :goto_f

    .line 3972
    :cond_44
    sget-object v0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;

    const-string v2, "Completing send tx with {} outputs totalling {} and a fee of {}/kB"

    const/4 v5, 0x3

    new-array v5, v5, [Ljava/lang/Object;

    const/4 v6, 0x0

    iget-object v7, p1, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/aq;->RD:Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Transaction;

    .line 20399
    iget-object v7, v7, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Transaction;->outputs:Ljava/util/ArrayList;

    invoke-static {v7}, Ljava/util/Collections;->unmodifiableList(Ljava/util/List;)Ljava/util/List;

    move-result-object v7

    .line 3972
    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, v5, v6

    const/4 v6, 0x1

    .line 3973
    invoke-virtual {v3}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Coin;->toFriendlyString()Ljava/lang/String;

    move-result-object v7

    aput-object v7, v5, v6

    const/4 v6, 0x2

    iget-object v7, p1, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/aq;->PD:Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Coin;

    invoke-virtual {v7}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Coin;->toFriendlyString()Ljava/lang/String;

    move-result-object v7

    aput-object v7, v5, v6

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

    .line 3976
    sget-object v0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Coin;->ZERO:Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Coin;

    .line 3977
    iget-object v2, p1, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/aq;->RD:Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Transaction;

    .line 21394
    iget-object v2, v2, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Transaction;->inputs:Ljava/util/ArrayList;

    invoke-static {v2}, Ljava/util/Collections;->unmodifiableList(Ljava/util/List;)Ljava/util/List;

    move-result-object v2

    .line 3977
    invoke-interface {v2}, Ljava/util/List;->iterator()Ljava/util/Iterator;

    move-result-object v5

    move-object v2, v0

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

    move-result v0

    if-eqz v0, :cond_b3

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

    move-result-object v0

    check-cast v0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ai;

    .line 22224
    iget-object v6, v0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ai;->Ql:Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/aj;

    .line 21427
    invoke-virtual {v6}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/aj;->gE()Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ak;

    move-result-object v6

    .line 3978
    if-eqz v6, :cond_a4

    .line 23224
    iget-object v0, v0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ai;->Ql:Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/aj;

    .line 22427
    invoke-virtual {v0}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/aj;->gE()Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ak;

    move-result-object v0

    .line 3979
    invoke-virtual {v0}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ak;->gG()Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Coin;

    move-result-object v0

    invoke-virtual {v2, v0}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Coin;->add(Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Coin;)Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Coin;

    move-result-object v0

    move-object v2, v0

    goto :goto_80

    .line 3981
    :cond_a4
    sget-object v0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;

    const-string v6, "SendRequest transaction already has inputs but we don\'t know how much they are worth - they will be added to fee."

    invoke-interface {v0, v6}, Lorg/slf4j/Logger;->warn(Ljava/lang/String;)V
    :try_end_ab
    .catchall {:try_start_a .. :try_end_ab} :catchall_ac

    goto :goto_80

    .line 4068
    :catchall_ac
    move-exception v0

    iget-object v1, p0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

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

    throw v0

    .line 3982
    :cond_b3
    :try_start_b3
    invoke-virtual {v3, v2}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Coin;->subtract(Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Coin;)Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Coin;

    move-result-object v2

    .line 3984
    new-instance v3, Ljava/util/ArrayList;

    iget-object v0, p1, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/aq;->RD:Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Transaction;

    .line 23394
    iget-object v0, v0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Transaction;->inputs:Ljava/util/ArrayList;

    invoke-static {v0}, Ljava/util/Collections;->unmodifiableList(Ljava/util/List;)Ljava/util/List;

    move-result-object v0

    .line 3984
    invoke-direct {v3, v0}, Ljava/util/ArrayList;-><init>(Ljava/util/Collection;)V

    .line 3987
    iget-boolean v0, p1, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/aq;->ensureMinRequiredFee:Z

    if-eqz v0, :cond_102

    .line 3989
    iget-object v0, p1, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/aq;->RD:Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Transaction;

    .line 23399
    iget-object v0, v0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Transaction;->outputs:Ljava/util/ArrayList;

    invoke-static {v0}, Ljava/util/Collections;->unmodifiableList(Ljava/util/List;)Ljava/util/List;

    move-result-object v0

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

    move-result-object v5

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

    move-result v0

    if-eqz v0, :cond_fa

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

    move-result-object v0

    check-cast v0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ak;

    .line 3990
    invoke-virtual {v0}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ak;->isDust()Z

    move-result v6

    if-eqz v6, :cond_ec

    .line 3991
    new-instance v0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/Wallet$DustySendRequested;

    invoke-direct {v0}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/Wallet$DustySendRequested;-><init>()V

    throw v0

    .line 3992
    :cond_ec
    invoke-virtual {v0}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ak;->gF()Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script;

    move-result-object v0

    invoke-virtual {v0}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script;->isOpReturn()Z

    move-result v0

    if-eqz v0, :cond_19e

    .line 3993
    add-int/lit8 v0, v1, 0x1

    :goto_f8
    move v1, v0

    .line 3994
    goto :goto_d4

    .line 3995
    :cond_fa
    if-le v1, v4, :cond_102

    .line 3996
    new-instance v0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/Wallet$MultipleOpReturnRequested;

    invoke-direct {v0}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/Wallet$MultipleOpReturnRequested;-><init>()V

    throw v0

    .line 4004
    :cond_102
    new-instance v5, Ljava/util/ArrayList;

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

    .line 4005
    iget-object v0, p0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/Wallet;->myUnspents:Ljava/util/HashSet;

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

    move-result-object v1

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

    move-result v0

    if-eqz v0, :cond_11d

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

    move-result-object v0

    check-cast v0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ak;

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

    goto :goto_10d

    .line 4013
    :cond_11d
    iget-boolean v4, p1, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/aq;->ensureMinRequiredFee:Z

    move-object v0, p0

    move-object v1, p1

    invoke-direct/range {v0 .. v5}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/Wallet;->a(Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/aq;Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Coin;Ljava/util/List;ZLjava/util/List;)Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/ar;

    move-result-object v0

    .line 4014
    iget-object v1, v0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/ar;->RK:Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/a;

    .line 4015
    iget-object v2, v0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/ar;->RL:Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ak;

    .line 4027
    iget-object v0, v1, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/a;->gathered:Ljava/util/Collection;

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

    move-result-object v1

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

    move-result v0

    if-eqz v0, :cond_141

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

    move-result-object v0

    check-cast v0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ak;

    .line 4028
    iget-object v3, p1, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/aq;->RD:Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Transaction;

    invoke-virtual {v3, v0}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Transaction;->a(Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ak;)Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ai;

    goto :goto_12f

    .line 4036
    :cond_141
    if-eqz v2, :cond_157

    .line 4037
    iget-object v0, p1, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/aq;->RD:Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Transaction;

    invoke-virtual {v0, v2}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Transaction;->b(Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ak;)Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ak;

    .line 4038
    sget-object v0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;

    const-string v1, "  with {} change"

    invoke-virtual {v2}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ak;->gG()Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Coin;

    move-result-object v2

    invoke-virtual {v2}, Lcom/cmcm/safewallet/data/coinprovider/bch/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

    .line 4042
    :cond_157
    iget-boolean v0, p1, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/aq;->shuffleOutputs:Z

    if-eqz v0, :cond_162

    .line 4043
    iget-object v0, p1, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/aq;->RD:Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Transaction;

    .line 23422
    iget-object v0, v0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Transaction;->outputs:Ljava/util/ArrayList;

    invoke-static {v0}, Ljava/util/Collections;->shuffle(Ljava/util/List;)V

    .line 4046
    :cond_162
    iget-boolean v0, p1, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/aq;->signInputs:Z

    if-eqz v0, :cond_169

    .line 4047
    invoke-direct {p0, p1}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/Wallet;->b(Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/aq;)V

    .line 4050
    :cond_169
    iget-object v0, p1, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/aq;->RD:Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Transaction;

    invoke-virtual {v0}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Transaction;->unsafeBitcoinSerialize()[B

    move-result-object v0

    array-length v0, v0

    .line 4051
    const v1, 0x186a0

    if-le v0, v1, :cond_17b

    .line 4052
    new-instance v0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/Wallet$ExceededMaxTransactionSize;

    invoke-direct {v0}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/Wallet$ExceededMaxTransactionSize;-><init>()V

    throw v0

    .line 4057
    :cond_17b
    iget-object v0, p1, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/aq;->RD:Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Transaction;

    invoke-virtual {v0}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Transaction;->gz()Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/TransactionConfidence;

    move-result-object v0

    sget-object v1, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/TransactionConfidence$Source;->SELF:Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/TransactionConfidence$Source;

    invoke-virtual {v0, v1}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/TransactionConfidence;->a(Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/TransactionConfidence$Source;)V

    .line 4061
    iget-object v0, p1, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/aq;->RD:Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Transaction;

    sget-object v1, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Transaction$Purpose;->USER_PAYMENT:Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Transaction$Purpose;

    .line 23620
    iput-object v1, v0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Transaction;->Qa:Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Transaction$Purpose;

    .line 4065
    const/4 v0, 0x1

    iput-boolean v0, p1, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/aq;->completed:Z

    .line 4066
    sget-object v0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;

    const-string v1, "  completed: {}"

    iget-object v2, p1, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/aq;->RD:Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Transaction;

    invoke-interface {v0, v1, v2}, Lorg/slf4j/Logger;->info(Ljava/lang/String;Ljava/lang/Object;)V
    :try_end_198
    .catchall {:try_start_b3 .. :try_end_198} :catchall_ac

    .line 4068
    iget-object v0, p0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

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

    .line 4069
    return-void

    :cond_19e
    move v0, v1

    goto/16 :goto_f8
.end method

.method private static a(Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/aq;Ljava/util/List;)V
    .registers 5
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "(",
            "Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/aq;",
            "Ljava/util/List",
            "<",
            "Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ai;",
            ">;)V"
        }
    .end annotation

    .prologue
    .line 5038
    iget-object v0, p0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/aq;->RD:Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Transaction;

    invoke-virtual {v0}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Transaction;->clearInputs()V

    .line 5039
    invoke-interface {p1}, 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, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ai;

    .line 5040
    iget-object v2, p0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/aq;->RD:Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Transaction;

    invoke-virtual {v2, v0}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Transaction;->a(Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ai;)Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ai;

    goto :goto_9

    .line 5041
    :cond_1b
    return-void
.end method

.method private a(Ljava/lang/StringBuilder;Ljava/util/Map;Ljava/util/Comparator;)V
    .registers 8
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "(",
            "Ljava/lang/StringBuilder;",
            "Ljava/util/Map",
            "<",
            "Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Sha256Hash;",
            "Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Transaction;",
            ">;",
            "Ljava/util/Comparator",
            "<",
            "Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Transaction;",
            ">;)V"
        }
    .end annotation

    .prologue
    .line 3255
    iget-object v0, p0, Lcom/cmcm/safewallet/data/coinprovider/bch/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 p3, :cond_81

    .line 3259
    new-instance v0, Ljava/util/TreeSet;

    invoke-direct {v0, p3}, 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 v2

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

    move-result v0

    if-eqz v0, :cond_88

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

    move-result-object v0

    check-cast v0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Transaction;

    .line 3267
    :try_start_27
    invoke-virtual {v0, p0}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Transaction;->c(Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ah;)Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Coin;

    move-result-object v1

    invoke-virtual {v1}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Coin;->toFriendlyString()Ljava/lang/String;

    move-result-object v1

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

    .line 3268
    const-string v1, " total value (sends "

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

    .line 3269
    invoke-virtual {v0, p0}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Transaction;->b(Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ah;)Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Coin;

    move-result-object v1

    invoke-virtual {v1}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Coin;->toFriendlyString()Ljava/lang/String;

    move-result-object v1

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

    .line 3270
    const-string v1, " and receives "

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

    .line 3271
    invoke-virtual {v0, p0}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Transaction;->a(Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ah;)Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Coin;

    move-result-object v1

    invoke-virtual {v1}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Coin;->toFriendlyString()Ljava/lang/String;

    move-result-object v1

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

    .line 3272
    const-string v1, ")\n"

    invoke-virtual {p1, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
    :try_end_57
    .catch Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException; {:try_start_27 .. :try_end_57} :catch_89

    .line 17462
    :goto_57
    invoke-virtual {v0}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Transaction;->gz()Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/TransactionConfidence;

    move-result-object v1

    invoke-virtual {v1}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/TransactionConfidence;->gA()Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/TransactionConfidence$ConfidenceType;

    move-result-object v1

    sget-object v3, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/TransactionConfidence$ConfidenceType;->UNKNOWN:Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/TransactionConfidence$ConfidenceType;

    if-eq v1, v3, :cond_86

    const/4 v1, 0x1

    .line 3276
    :goto_64
    if-eqz v1, :cond_79

    .line 3277
    const-string v1, "  confidence: "

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

    move-result-object v1

    invoke-virtual {v0}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Transaction;->gz()Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/TransactionConfidence;

    move-result-object v3

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

    move-result-object v1

    const/16 v3, 0xa

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

    .line 3278
    :cond_79
    invoke-virtual {v0}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Transaction;->gx()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_81
    invoke-interface {p2}, Ljava/util/Map;->values()Ljava/util/Collection;

    move-result-object v0

    goto :goto_17

    .line 17462
    :cond_86
    const/4 v1, 0x0

    goto :goto_64

    .line 3280
    :cond_88
    return-void

    :catch_89
    move-exception v1

    goto :goto_57
.end method

.method private b(Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/KeyChain$KeyPurpose;)Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Address;
    .registers 5

    .prologue
    .line 433
    iget-object v0, p0, Lcom/cmcm/safewallet/data/coinprovider/bch/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}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/Wallet;->maybeUpgradeToHD()V

    .line 436
    iget-object v1, p0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/Wallet;->RF:Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/k;

    .line 9174
    invoke-virtual {v1}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/k;->gY()Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/g;

    .line 9175
    invoke-static {}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/g;->isMarried()Z

    .line 10157
    invoke-virtual {v1}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/k;->gY()Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/g;

    .line 10158
    invoke-static {}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/g;->isMarried()Z

    .line 10162
    iget-object v0, v1, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/k;->currentKeys:Ljava/util/EnumMap;

    invoke-virtual {v0, p1}, Ljava/util/EnumMap;->get(Ljava/lang/Object;)Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/crypto/c;

    .line 10163
    if-nez v0, :cond_37

    .line 10216
    invoke-virtual {v1}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/k;->gY()Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/g;

    move-result-object v0

    .line 10217
    invoke-static {}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/g;->isMarried()Z

    .line 10221
    invoke-virtual {v0, p1}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/g;->a(Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/KeyChain$KeyPurpose;)Ljava/util/List;

    move-result-object v0

    .line 10200
    const/4 v2, 0x0

    invoke-interface {v0, v2}, Ljava/util/List;->get(I)Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/crypto/c;

    .line 10165
    iget-object v2, v1, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/k;->currentKeys:Ljava/util/EnumMap;

    invoke-virtual {v2, p1, v0}, Ljava/util/EnumMap;->put(Ljava/lang/Enum;Ljava/lang/Object;)Ljava/lang/Object;

    .line 9183
    :cond_37
    iget-object v1, v1, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/k;->Pk:Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/NetworkParameters;

    invoke-virtual {v0, v1}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/crypto/c;->b(Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/NetworkParameters;)Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Address;
    :try_end_3c
    .catchall {:try_start_5 .. :try_end_3c} :catchall_43

    move-result-object v0

    .line 438
    iget-object v1, p0, Lcom/cmcm/safewallet/data/coinprovider/bch/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_43
    move-exception v0

    iget-object v1, p0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;

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

    throw v0
.end method

.method private b(Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/aq;)V
    .registers 15

    .prologue
    const/4 v8, 0x1

    const/4 v7, 0x0

    .line 4079
    invoke-virtual {p1}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/aq;->iz()V

    .line 4080
    iget-object v0, p0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

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

    .line 4082
    :try_start_a
    iget-object v1, p1, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/aq;->RD:Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Transaction;

    .line 24394
    iget-object v0, v1, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Transaction;->inputs:Ljava/util/ArrayList;

    invoke-static {v0}, Ljava/util/Collections;->unmodifiableList(Ljava/util/List;)Ljava/util/List;

    move-result-object v0

    .line 24399
    iget-object v2, v1, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Transaction;->outputs:Ljava/util/ArrayList;

    invoke-static {v2}, Ljava/util/Collections;->unmodifiableList(Ljava/util/List;)Ljava/util/List;

    move-result-object v2

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

    move-result v0

    if-lez v0, :cond_78

    move v0, v8

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

    .line 4086
    invoke-interface {v2}, Ljava/util/List;->size()I

    move-result v0

    if-lez v0, :cond_7a

    move v0, v8

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

    .line 4088
    new-instance v10, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/c;

    invoke-direct {v10, p0}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/c;-><init>(Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/j;)V

    .line 25394
    iget-object v0, v1, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Transaction;->inputs:Ljava/util/ArrayList;

    invoke-static {v0}, Ljava/util/Collections;->unmodifiableList(Ljava/util/List;)Ljava/util/List;

    move-result-object v0

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

    move-result v11

    move v9, v7

    .line 4091
    :goto_3c
    if-ge v9, v11, :cond_139

    .line 4092
    int-to-long v2, v9

    invoke-virtual {v1, v2, v3}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Transaction;->i(J)Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ai;

    move-result-object v12

    .line 26224
    iget-object v0, v12, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ai;->Ql:Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/aj;

    .line 25427
    invoke-virtual {v0}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/aj;->gE()Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ak;
    :try_end_48
    .catchall {:try_start_a .. :try_end_48} :catchall_d6

    move-result-object v0

    .line 4093
    if-eqz v0, :cond_74

    .line 4102
    :try_start_4b
    invoke-virtual {v12}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ai;->gC()Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script;

    move-result-object v0

    int-to-long v2, v9

    .line 27224
    iget-object v4, v12, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ai;->Ql:Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/aj;

    .line 26427
    invoke-virtual {v4}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/aj;->gE()Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ak;

    move-result-object v4

    .line 4102
    invoke-virtual {v4}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ak;->gF()Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script;

    move-result-object v4

    .line 28224
    iget-object v5, v12, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ai;->Ql:Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/aj;

    .line 27427
    invoke-virtual {v5}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/aj;->gE()Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ak;

    move-result-object v5

    .line 4102
    invoke-virtual {v5}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ak;->gG()Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Coin;

    move-result-object v5

    sget-object v6, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script;->ALL_VERIFY_FLAGS:Ljava/util/EnumSet;

    invoke-virtual/range {v0 .. v6}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script;->a(Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Transaction;JLcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script;Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Coin;Ljava/util/Set;)V

    .line 4103
    sget-object v0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;

    const-string v2, "Input {} already correctly spends output, assuming SIGHASH type used will be safe and skipping signing."

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

    move-result-object v3

    invoke-interface {v0, v2, v3}, Lorg/slf4j/Logger;->warn(Ljava/lang/String;Ljava/lang/Object;)V
    :try_end_74
    .catch Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException; {:try_start_4b .. :try_end_74} :catch_7c
    .catchall {:try_start_4b .. :try_end_74} :catchall_d6

    .line 4091
    :cond_74
    :goto_74
    add-int/lit8 v0, v9, 0x1

    move v9, v0

    goto :goto_3c

    :cond_78
    move v0, v7

    .line 4085
    goto :goto_1f

    :cond_7a
    move v0, v7

    .line 4086
    goto :goto_29

    .line 4105
    :catch_7c
    move-exception v0

    .line 4106
    :try_start_7d
    sget-object v2, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;

    const-string v3, "Input contained an incorrect signature"

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

    .line 29224
    iget-object v0, v12, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ai;->Ql:Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/aj;

    .line 28427
    invoke-virtual {v0}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/aj;->gE()Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ak;

    move-result-object v0

    .line 4110
    invoke-virtual {v0}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ak;->gF()Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script;

    move-result-object v2

    .line 4111
    invoke-virtual {v12, v10}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ai;->a(Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/j;)Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/ap;

    move-result-object v3

    .line 4112
    const-string v0, "Transaction exists in wallet that we cannot redeem: %s"

    const/4 v4, 0x1

    new-array v4, v4, [Ljava/lang/Object;

    const/4 v5, 0x0

    .line 30224
    iget-object v6, v12, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ai;->Ql:Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/aj;

    .line 31191
    iget-object v6, v6, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/aj;->Pv:Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Sha256Hash;

    .line 4112
    aput-object v6, v4, v5

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

    .line 4113
    iget-object v0, v3, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/ap;->keys:Ljava/util/List;

    const/4 v4, 0x0

    invoke-interface {v0, v4}, Ljava/util/List;->get(I)Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ECKey;

    iget-object v3, v3, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/ap;->RC:Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script;

    .line 31454
    invoke-virtual {v2}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script;->isSentToAddress()Z

    move-result v4

    if-eqz v4, :cond_df

    .line 31455
    if-eqz v0, :cond_dd

    move v2, v8

    :goto_b5
    const-string v3, "Key required to create pay-to-address input script"

    invoke-static {v2, v3}, Lcom/google/common/base/n;->checkArgument(ZLjava/lang/Object;)V

    .line 32248
    invoke-virtual {v0}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ECKey;->getPubKey()[B

    move-result-object v0

    .line 32249
    const/4 v2, 0x0

    new-array v2, v2, [B

    .line 32250
    new-instance v3, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/a;

    invoke-direct {v3}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/a;-><init>()V

    invoke-virtual {v3, v2}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/a;->m([B)Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/a;

    move-result-object v2

    invoke-virtual {v2, v0}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/a;->m([B)Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/a;

    move-result-object v0

    invoke-virtual {v0}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/a;->gT()Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script;

    move-result-object v0

    .line 4113
    :goto_d2
    invoke-virtual {v12, v0}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ai;->b(Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script;)V
    :try_end_d5
    .catchall {:try_start_7d .. :try_end_d5} :catchall_d6

    goto :goto_74

    .line 4125
    :catchall_d6
    move-exception v0

    iget-object v1, p0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

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

    throw v0

    :cond_dd
    move v2, v7

    .line 31455
    goto :goto_b5

    .line 31457
    :cond_df
    :try_start_df
    invoke-virtual {v2}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script;->isSentToRawPubKey()Z

    move-result v0

    if-eqz v0, :cond_f6

    .line 32258
    const/4 v0, 0x0

    new-array v0, v0, [B

    .line 32259
    new-instance v2, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/a;

    invoke-direct {v2}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/a;-><init>()V

    invoke-virtual {v2, v0}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/a;->m([B)Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/a;

    move-result-object v0

    invoke-virtual {v0}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/a;->gT()Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script;

    move-result-object v0

    goto :goto_d2

    .line 31459
    :cond_f6
    invoke-virtual {v2}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script;->isPayToScriptHash()Z

    move-result v0

    if-eqz v0, :cond_124

    .line 31460
    if-eqz v3, :cond_119

    move v0, v8

    :goto_ff
    const-string v2, "Redeem script required to create P2SH input script"

    invoke-static {v0, v2}, Lcom/google/common/base/n;->checkArgument(ZLjava/lang/Object;)V

    .line 32303
    new-instance v2, Ljava/util/ArrayList;

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

    .line 32306
    invoke-virtual {v3}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script;->getNumberOfSignaturesRequiredToSpend()I

    move-result v4

    move v0, v7

    .line 32307
    :goto_10e
    if-ge v0, v4, :cond_11b

    .line 32308
    const/4 v5, 0x0

    new-array v5, v5, [B

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

    .line 32307
    add-int/lit8 v0, v0, 0x1

    goto :goto_10e

    :cond_119
    move v0, v7

    .line 31460
    goto :goto_ff

    .line 32314
    :cond_11b
    invoke-virtual {v3}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script;->getProgram()[B

    move-result-object v0

    invoke-static {v2, v0}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/a;->a(Ljava/util/List;[B)Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script;

    move-result-object v0

    goto :goto_d2

    .line 31463
    :cond_124
    new-instance v0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;

    new-instance v1, Ljava/lang/StringBuilder;

    const-string v3, "Do not understand script type: "

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

    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}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;-><init>(Ljava/lang/String;)V

    throw v0

    .line 4116
    :cond_139
    new-instance v2, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/signers/d;

    .line 33271
    iget-boolean v0, p1, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/aq;->QK:Z

    .line 4116
    invoke-direct {v2, v1, v0}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/signers/d;-><init>(Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Transaction;Z)V

    .line 4117
    iget-object v0, p0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/Wallet;->signers:Ljava/util/List;

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

    move-result-object v1

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

    move-result v0

    if-eqz v0, :cond_156

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

    move-result-object v0

    check-cast v0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/signers/TransactionSigner;

    .line 4118
    invoke-interface {v0, v2, v10}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/signers/TransactionSigner;->a(Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/signers/d;Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/j;)Z

    goto :goto_146

    .line 4123
    :cond_156
    new-instance v0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/signers/b;

    iget-object v1, p1, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/aq;->QI:Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/Wallet$MissingSigsMode;

    invoke-direct {v0, v1}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/signers/b;-><init>(Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/Wallet$MissingSigsMode;)V

    invoke-virtual {v0, v2, v10}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/signers/b;->a(Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/signers/d;Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/j;)Z
    :try_end_160
    .catchall {:try_start_df .. :try_end_160} :catchall_d6

    .line 4125
    iget-object v0, p0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

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

    .line 4126
    return-void
.end method

.method private c(Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script;)Z
    .registers 9

    .prologue
    const/4 v2, 0x0

    const/4 v1, 0x1

    .line 4190
    invoke-virtual {p1}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script;->isSentToRawPubKey()Z

    move-result v0

    if-eqz v0, :cond_22

    .line 4191
    invoke-virtual {p1}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script;->getPubKey()[B

    move-result-object v0

    .line 4192
    invoke-virtual {p0, v0}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/Wallet;->o([B)Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ECKey;

    move-result-object v0

    .line 4193
    if-eqz v0, :cond_20

    invoke-virtual {v0}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ECKey;->isEncrypted()Z

    move-result v3

    if-nez v3, :cond_1e

    invoke-virtual {v0}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ECKey;->hasPrivKey()Z

    move-result v0

    if-eqz v0, :cond_20

    :cond_1e
    move v0, v1

    .line 4220
    :goto_1f
    return v0

    :cond_20
    move v0, v2

    .line 4193
    goto :goto_1f

    .line 4194
    :cond_22
    invoke-virtual {p1}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script;->isPayToScriptHash()Z

    move-result v0

    if-eqz v0, :cond_3e

    .line 4195
    invoke-virtual {p1}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script;->getPubKeyHash()[B

    move-result-object v0

    invoke-virtual {p0, v0}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/Wallet;->p([B)Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/ap;

    move-result-object v0

    .line 4196
    if-eqz v0, :cond_3c

    iget-object v0, v0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/ap;->RC:Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script;

    invoke-direct {p0, v0}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/Wallet;->c(Lcom/cmcm/safewallet/data/coinprovider/bch/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 4197
    :cond_3e
    invoke-virtual {p1}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script;->isSentToAddress()Z

    move-result v0

    if-eqz v0, :cond_5e

    .line 4198
    invoke-virtual {p1}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script;->getPubKeyHash()[B

    move-result-object v0

    invoke-virtual {p0, v0}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/Wallet;->n([B)Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ECKey;

    move-result-object v0

    .line 4199
    if-eqz v0, :cond_5c

    invoke-virtual {v0}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ECKey;->isEncrypted()Z

    move-result v3

    if-nez v3, :cond_5a

    invoke-virtual {v0}, Lcom/cmcm/safewallet/data/coinprovider/bch/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 4200
    :cond_5e
    invoke-virtual {p1}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script;->isSentToMultiSig()Z

    move-result v0

    if-eqz v0, :cond_d0

    .line 33530
    invoke-virtual {p1}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script;->isSentToMultiSig()Z

    move-result v0

    if-nez v0, :cond_72

    .line 33531
    new-instance v0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;

    const-string v1, "Only usable for multisig scripts."

    invoke-direct {v0, v1}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;-><init>(Ljava/lang/String;)V

    throw v0

    .line 34088
    :cond_72
    new-instance v4, Ljava/util/ArrayList;

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

    .line 33534
    iget-object v0, p1, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script;->chunks:Ljava/util/List;

    iget-object v3, p1, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script;->chunks:Ljava/util/List;

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

    move-result v3

    add-int/lit8 v3, v3, -0x2

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

    move-result-object v0

    check-cast v0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/b;

    iget v0, v0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/b;->opcode:I

    invoke-static {v0}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script;->decodeFromOpN(I)I

    move-result v5

    move v3, v2

    .line 33535
    :goto_8e
    if-ge v3, v5, :cond_a7

    .line 33536
    iget-object v0, p1, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script;->chunks:Ljava/util/List;

    add-int/lit8 v6, v3, 0x1

    invoke-interface {v0, v6}, Ljava/util/List;->get(I)Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/b;

    iget-object v0, v0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/b;->data:[B

    invoke-static {v0}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ECKey;->h([B)Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ECKey;

    move-result-object v0

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

    .line 33535
    add-int/lit8 v0, v3, 0x1

    move v3, v0

    goto :goto_8e

    .line 4201
    :cond_a7
    invoke-interface {v4}, Ljava/util/List;->iterator()Ljava/util/Iterator;

    move-result-object v3

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

    move-result v0

    if-eqz v0, :cond_14a

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

    move-result-object v0

    check-cast v0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ECKey;

    .line 4202
    invoke-virtual {v0}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ECKey;->getPubKey()[B

    move-result-object v0

    invoke-virtual {p0, v0}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/Wallet;->o([B)Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ECKey;

    move-result-object v0

    .line 4203
    if-eqz v0, :cond_ab

    invoke-virtual {v0}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ECKey;->isEncrypted()Z

    move-result v4

    if-nez v4, :cond_cd

    invoke-virtual {v0}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ECKey;->hasPrivKey()Z

    move-result v0

    if-eqz v0, :cond_ab

    :cond_cd
    move v0, v1

    .line 4204
    goto/16 :goto_1f

    .line 4206
    :cond_d0
    invoke-virtual {p1}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script;->isSentToCLTVPaymentChannel()Z

    move-result v0

    if-eqz v0, :cond_14a

    .line 34317
    invoke-virtual {p1}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script;->isSentToCLTVPaymentChannel()Z

    move-result v0

    if-nez v0, :cond_f1

    .line 34318
    new-instance v0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;

    new-instance v1, Ljava/lang/StringBuilder;

    const-string v2, "Script not a standard CHECKLOCKTIMVERIFY transaction: "

    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}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;-><init>(Ljava/lang/String;)V

    throw v0

    .line 34320
    :cond_f1
    iget-object v0, p1, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script;->chunks:Ljava/util/List;

    const/16 v3, 0x8

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

    move-result-object v0

    check-cast v0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/b;

    iget-object v0, v0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/b;->data:[B

    .line 4209
    invoke-virtual {p0, v0}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/Wallet;->o([B)Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ECKey;

    move-result-object v3

    .line 4210
    if-eqz v3, :cond_112

    invoke-virtual {v3}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ECKey;->isEncrypted()Z

    move-result v4

    if-nez v4, :cond_10f

    invoke-virtual {v3}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ECKey;->hasPrivKey()Z

    move-result v3

    if-eqz v3, :cond_112

    :cond_10f
    move v0, v1

    .line 4211
    goto/16 :goto_1f

    .line 34328
    :cond_112
    invoke-virtual {p1}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script;->isSentToCLTVPaymentChannel()Z

    move-result v3

    if-nez v3, :cond_12d

    .line 34329
    new-instance v0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;

    new-instance v1, Ljava/lang/StringBuilder;

    const-string v2, "Script not a standard CHECKLOCKTIMVERIFY transaction: "

    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}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;-><init>(Ljava/lang/String;)V

    throw v0

    .line 34331
    :cond_12d
    iget-object v3, p1, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script;->chunks:Ljava/util/List;

    invoke-interface {v3, v1}, Ljava/util/List;->get(I)Ljava/lang/Object;

    .line 4214
    invoke-virtual {p0, v0}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/Wallet;->o([B)Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ECKey;

    move-result-object v0

    .line 4215
    if-eqz v0, :cond_147

    invoke-virtual {v0}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ECKey;->isEncrypted()Z

    move-result v3

    if-nez v3, :cond_144

    invoke-virtual {v0}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ECKey;->hasPrivKey()Z

    move-result v0

    if-eqz v0, :cond_147

    :cond_144
    move v0, v1

    .line 4216
    goto/16 :goto_1f

    :cond_147
    move v0, v2

    .line 4218
    goto/16 :goto_1f

    :cond_14a
    move v0, v2

    .line 4220
    goto/16 :goto_1f
.end method

.method private calculateAllSpendCandidates(ZZ)Ljava/util/List;
    .registers 7
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "(ZZ)",
            "Ljava/util/List",
            "<",
            "Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ak;",
            ">;"
        }
    .end annotation

    .prologue
    .line 4164
    iget-object v0, p0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

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

    .line 4167
    :try_start_5
    iget-object v0, p0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/Wallet;->RH:Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/an;

    .line 4168
    new-instance v2, Ljava/util/ArrayList;

    iget-object v0, p0, Lcom/cmcm/safewallet/data/coinprovider/bch/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 4169
    iget-object v0, p0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/Wallet;->myUnspents:Ljava/util/HashSet;

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

    move-result-object v3

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

    move-result v0

    if-eqz v0, :cond_4d

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

    move-result-object v0

    check-cast v0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ak;

    .line 4170
    if-eqz p2, :cond_30

    invoke-virtual {v0}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ak;->gF()Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script;

    move-result-object v1

    invoke-direct {p0, v1}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/Wallet;->c(Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script;)Z

    move-result v1

    if-eqz v1, :cond_18

    .line 4171
    :cond_30
    invoke-virtual {v0}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ak;->gI()Lcom/cmcm/safewallet/data/coinprovider/bch/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, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Transaction;

    .line 4172
    if-eqz p1, :cond_42

    invoke-virtual {v1}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Transaction;->isMature()Z

    move-result v1

    if-eqz v1, :cond_18

    .line 4174
    :cond_42
    invoke-interface {v2, v0}, Ljava/util/List;->add(Ljava/lang/Object;)Z
    :try_end_45
    .catchall {:try_start_5 .. :try_end_45} :catchall_46

    goto :goto_18

    .line 4181
    :catchall_46
    move-exception v0

    iget-object v1, p0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

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

    throw v0

    :cond_4d
    iget-object v0, p0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

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

    .line 4179
    return-object v2
.end method

.method private getEarliestKeyCreationTime()J
    .registers 7

    .prologue
    .line 3308
    iget-object v0, p0, Lcom/cmcm/safewallet/data/coinprovider/bch/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, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/Wallet;->RF:Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/k;

    .line 17572
    iget-object v1, v0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/k;->Ra:Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/BasicKeyChain;

    invoke-virtual {v1}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/BasicKeyChain;->getEarliestKeyCreationTime()J

    move-result-wide v2

    .line 17573
    iget-object v0, v0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/k;->chains:Ljava/util/LinkedList;

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

    move-result-object v4

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

    move-result v0

    if-eqz v0, :cond_35

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

    move-result-object v0

    check-cast v0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/g;

    .line 17668
    iget-object v1, v0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/g;->QU:Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/h;

    if-eqz v1, :cond_2c

    .line 17669
    iget-object v0, v0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/g;->QU:Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/h;

    .line 18175
    iget-wide v0, v0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/h;->creationTimeSeconds:J

    .line 17574
    :goto_27
    invoke-static {v2, v3, v0, v1}, Ljava/lang/Math;->min(JJ)J

    move-result-wide v2

    goto :goto_13

    .line 17671
    :cond_2c
    invoke-virtual {v0}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/g;->gW()Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/crypto/c;

    move-result-object v0

    invoke-virtual {v0}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/crypto/c;->getCreationTimeSeconds()J

    move-result-wide v0

    goto :goto_27

    .line 3311
    :cond_35
    iget-object v0, p0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/Wallet;->watchedScripts:Ljava/util/Set;

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

    move-result-object v1

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

    move-result v0

    if-eqz v0, :cond_4e

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

    move-result-object v0

    check-cast v0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script;

    .line 19133
    iget-wide v4, v0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script;->creationTimeSeconds:J

    .line 3312
    invoke-static {v4, v5, v2, v3}, Ljava/lang/Math;->min(JJ)J

    move-result-wide v2

    goto :goto_3b

    .line 3313
    :cond_4e
    const-wide v0, 0x7fffffffffffffffL

    cmp-long v0, v2, v0

    if-nez v0, :cond_61

    .line 3314
    invoke-static {}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/aq;->currentTimeSeconds()J
    :try_end_5a
    .catchall {:try_start_5 .. :try_end_5a} :catchall_68

    move-result-wide v0

    .line 3317
    iget-object v2, p0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;

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

    .line 3315
    :goto_60
    return-wide v0

    .line 3317
    :cond_61
    iget-object v0, p0, Lcom/cmcm/safewallet/data/coinprovider/bch/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_60

    .line 3317
    :catchall_68
    move-exception v0

    iget-object v1, p0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;

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

    throw v0
.end method

.method private iA()Ljava/lang/String;
    .registers 11

    .prologue
    const/4 v0, 0x0

    const-wide/16 v8, 0x0

    .line 3183
    iget-object v1, p0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

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

    .line 3184
    iget-object v1, p0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;

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

    .line 3186
    :try_start_d
    new-instance v2, Ljava/lang/StringBuilder;

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

    .line 3187
    sget-object v1, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/Wallet$BalanceType;->ESTIMATED:Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/Wallet$BalanceType;

    invoke-direct {p0, v1}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/Wallet;->a(Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/Wallet$BalanceType;)Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Coin;

    move-result-object v1

    .line 3188
    sget-object v3, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/Wallet$BalanceType;->AVAILABLE_SPENDABLE:Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/Wallet$BalanceType;

    invoke-direct {p0, v3}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/Wallet;->a(Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/Wallet$BalanceType;)Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Coin;

    move-result-object v3

    .line 3189
    const-string v4, "Wallet containing "

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

    move-result-object v4

    invoke-virtual {v1}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Coin;->toFriendlyString()Ljava/lang/String;

    move-result-object v1

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

    move-result-object v1

    const-string v4, " (spendable: "

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

    move-result-object v1

    .line 3190
    invoke-virtual {v3}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Coin;->toFriendlyString()Ljava/lang/String;

    move-result-object v3

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

    move-result-object v1

    const-string v3, ") in:\n"

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

    .line 3191
    const-string v1, "  "

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

    move-result-object v1

    iget-object v3, p0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/Wallet;->pending:Ljava/util/Map;

    invoke-interface {v3}, Ljava/util/Map;->size()I

    move-result v3

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

    move-result-object v1

    const-string v3, " pending transactions\n"

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

    .line 3192
    const-string v1, "  "

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

    move-result-object v1

    iget-object v3, p0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/Wallet;->unspent:Ljava/util/Map;

    invoke-interface {v3}, Ljava/util/Map;->size()I

    move-result v3

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

    move-result-object v1

    const-string v3, " unspent transactions\n"

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

    .line 3193
    const-string v1, "  "

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

    move-result-object v1

    iget-object v3, p0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/Wallet;->spent:Ljava/util/Map;

    invoke-interface {v3}, Ljava/util/Map;->size()I

    move-result v3

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

    move-result-object v1

    const-string v3, " spent transactions\n"

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

    .line 3194
    const-string v1, "  "

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

    move-result-object v1

    iget-object v3, p0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/Wallet;->dead:Ljava/util/Map;

    invoke-interface {v3}, Ljava/util/Map;->size()I

    move-result v3

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

    move-result-object v1

    const-string v3, " dead transactions\n"

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

    .line 15367
    iget-object v1, p0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

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

    .line 15371
    iget-object v1, p0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

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

    .line 14385
    cmp-long v1, v8, v8

    if-nez v1, :cond_173

    move-object v1, v0

    .line 3196
    :goto_a2
    const-string v3, "Last seen best block: "

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

    move-result-object v3

    .line 15396
    iget-object v4, p0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

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

    .line 15400
    iget-object v4, p0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

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

    .line 15398
    const/4 v4, 0x0

    .line 3196
    invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;

    move-result-object v3

    const-string v4, " ("

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

    move-result-object v3

    if-nez v1, :cond_17c

    const-string v1, "time unknown"

    .line 3197
    :goto_c1
    invoke-virtual {v3, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v1

    const-string v3, "): "

    .line 3198
    invoke-virtual {v1, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v1

    .line 16324
    iget-object v3, p0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

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

    .line 16328
    iget-object v3, p0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

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

    .line 16326
    const/4 v3, 0x0

    .line 3198
    invoke-virtual {v1, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;

    move-result-object v1

    const/16 v3, 0xa

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

    .line 3199
    iget-object v1, p0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/Wallet;->RF:Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/k;

    .line 16562
    iget-object v1, v1, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/k;->QM:Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/crypto/KeyCrypter;

    .line 3202
    invoke-direct {p0}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/Wallet;->isWatching()Z

    move-result v1

    if-eqz v1, :cond_ee

    .line 3203
    const-string v1, "Wallet is watching.\n"

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

    .line 3206
    :cond_ee
    const-string v1, "\nKeys:\n"

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

    .line 3207
    const-string v1, "Earliest creation time: "

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

    move-result-object v1

    invoke-direct {p0}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/Wallet;->getEarliestKeyCreationTime()J

    move-result-wide v4

    const-wide/16 v6, 0x3e8

    mul-long/2addr v4, v6

    invoke-static {v4, v5}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/aq;->dateTimeFormat(J)Ljava/lang/String;

    move-result-object v3

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

    move-result-object v1

    const/16 v3, 0xa

    .line 3208
    invoke-virtual {v1, v3}, Ljava/lang/StringBuilder;->append(C)Ljava/lang/StringBuilder;

    .line 17139
    iget-wide v4, p0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/Wallet;->vKeyRotationTimestamp:J

    .line 17140
    cmp-long v1, v8, v8

    if-eqz v1, :cond_11a

    .line 17141
    new-instance v0, Ljava/util/Date;

    const-wide/16 v4, 0x0

    invoke-direct {v0, v4, v5}, Ljava/util/Date;-><init>(J)V

    .line 3210
    :cond_11a
    if-eqz v0, :cond_12f

    .line 3211
    const-string v1, "Key rotation time:      "

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

    move-result-object v1

    invoke-static {v0}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/aq;->dateTimeFormat(Ljava/util/Date;)Ljava/lang/String;

    move-result-object v0

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

    move-result-object v0

    const/16 v1, 0xa

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

    .line 3212
    :cond_12f
    iget-object v0, p0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/Wallet;->RF:Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/k;

    invoke-virtual {v0}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/k;->ha()Ljava/lang/String;

    move-result-object v0

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

    .line 3214
    iget-object v0, p0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/Wallet;->watchedScripts:Ljava/util/Set;

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

    move-result v0

    if-nez v0, :cond_182

    .line 3215
    const-string v0, "\nWatched scripts:\n"

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

    .line 3216
    iget-object v0, p0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/Wallet;->watchedScripts:Ljava/util/Set;

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

    move-result-object v1

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

    move-result v0

    if-eqz v0, :cond_182

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

    move-result-object v0

    check-cast v0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script;

    .line 3217
    const-string v3, "  "

    invoke-virtual {v2, 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_166
    .catchall {:try_start_d .. :try_end_166} :catchall_167

    goto :goto_14b

    .line 3248
    :catchall_167
    move-exception v0

    iget-object v1, p0, Lcom/cmcm/safewallet/data/coinprovider/bch/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, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;

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

    throw v0

    .line 14388
    :cond_173
    :try_start_173
    new-instance v1, Ljava/util/Date;

    const-wide/16 v4, 0x0

    invoke-direct {v1, v4, v5}, Ljava/util/Date;-><init>(J)V

    goto/16 :goto_a2

    .line 3197
    :cond_17c
    invoke-static {v1}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/aq;->dateTimeFormat(Ljava/util/Date;)Ljava/lang/String;

    move-result-object v1

    goto/16 :goto_c1

    .line 3223
    :cond_182
    iget-object v0, p0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/Wallet;->pending:Ljava/util/Map;

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

    move-result v0

    if-lez v0, :cond_196

    .line 3224
    const-string v0, "\n>>> PENDING:\n"

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

    .line 3225
    iget-object v0, p0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/Wallet;->pending:Ljava/util/Map;

    sget-object v1, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Transaction;->SORT_TX_BY_UPDATE_TIME:Ljava/util/Comparator;

    invoke-direct {p0, v2, v0, v1}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/Wallet;->a(Ljava/lang/StringBuilder;Ljava/util/Map;Ljava/util/Comparator;)V

    .line 3227
    :cond_196
    iget-object v0, p0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/Wallet;->unspent:Ljava/util/Map;

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

    move-result v0

    if-lez v0, :cond_1aa

    .line 3228
    const-string v0, "\n>>> UNSPENT:\n"

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

    .line 3229
    iget-object v0, p0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/Wallet;->unspent:Ljava/util/Map;

    sget-object v1, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Transaction;->SORT_TX_BY_HEIGHT:Ljava/util/Comparator;

    invoke-direct {p0, v2, v0, v1}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/Wallet;->a(Ljava/lang/StringBuilder;Ljava/util/Map;Ljava/util/Comparator;)V

    .line 3231
    :cond_1aa
    iget-object v0, p0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/Wallet;->spent:Ljava/util/Map;

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

    move-result v0

    if-lez v0, :cond_1be

    .line 3232
    const-string v0, "\n>>> SPENT:\n"

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

    .line 3233
    iget-object v0, p0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/Wallet;->spent:Ljava/util/Map;

    sget-object v1, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Transaction;->SORT_TX_BY_HEIGHT:Ljava/util/Comparator;

    invoke-direct {p0, v2, v0, v1}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/Wallet;->a(Ljava/lang/StringBuilder;Ljava/util/Map;Ljava/util/Comparator;)V

    .line 3235
    :cond_1be
    iget-object v0, p0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/Wallet;->dead:Ljava/util/Map;

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

    move-result v0

    if-lez v0, :cond_1d2

    .line 3236
    const-string v0, "\n>>> DEAD:\n"

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

    .line 3237
    iget-object v0, p0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/Wallet;->dead:Ljava/util/Map;

    sget-object v1, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Transaction;->SORT_TX_BY_UPDATE_TIME:Ljava/util/Comparator;

    invoke-direct {p0, v2, v0, v1}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/Wallet;->a(Ljava/lang/StringBuilder;Ljava/util/Map;Ljava/util/Comparator;)V

    .line 3240
    :cond_1d2
    iget-object v0, p0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/Wallet;->extensions:Ljava/util/HashMap;

    invoke-virtual {v0}, Ljava/util/HashMap;->size()I

    move-result v0

    if-lez v0, :cond_1ff

    .line 3241
    const-string v0, "\n>>> EXTENSIONS:\n"

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

    .line 3242
    iget-object v0, p0, Lcom/cmcm/safewallet/data/coinprovider/bch/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 v1

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

    move-result v0

    if-eqz v0, :cond_1ff

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

    move-result-object v0

    check-cast v0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/as;

    .line 3243
    invoke-virtual {v2, 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_1e9

    .line 3246
    :cond_1ff
    invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
    :try_end_202
    .catchall {:try_start_173 .. :try_end_202} :catchall_167

    move-result-object v0

    .line 3248
    iget-object v1, p0, Lcom/cmcm/safewallet/data/coinprovider/bch/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, Lcom/cmcm/safewallet/data/coinprovider/bch/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 private isWatching()Z
    .registers 7

    .prologue
    const/4 v0, 0x1

    const/4 v1, 0x0

    .line 824
    iget-object v2, p0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;

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

    .line 826
    :try_start_7
    invoke-direct {p0}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/Wallet;->maybeUpgradeToHD()V

    .line 827
    iget-object v3, p0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/Wallet;->RF:Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/k;

    .line 13540
    iget-object v2, v3, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/k;->Ra:Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/BasicKeyChain;

    invoke-virtual {v2}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/BasicKeyChain;->gU()Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/BasicKeyChain$State;

    move-result-object v4

    .line 13541
    sget-object v2, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/BasicKeyChain$State;->EMPTY:Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/BasicKeyChain$State;

    .line 13542
    iget-object v5, v3, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/k;->chains:Ljava/util/LinkedList;

    invoke-virtual {v5}, Ljava/util/LinkedList;->isEmpty()Z

    move-result v5

    if-nez v5, :cond_2c

    .line 13543
    invoke-virtual {v3}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/k;->gY()Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/g;

    move-result-object v2

    .line 13636
    invoke-virtual {v2}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/g;->gW()Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/crypto/c;

    move-result-object v2

    invoke-virtual {v2}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/crypto/c;->isWatching()Z

    move-result v2

    .line 13543
    if-eqz v2, :cond_43

    .line 13544
    sget-object v2, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/BasicKeyChain$State;->WATCHING:Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/BasicKeyChain$State;

    .line 13548
    :cond_2c
    :goto_2c
    sget-object v3, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/BasicKeyChain$State;->EMPTY:Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/BasicKeyChain$State;

    if-ne v4, v3, :cond_52

    .line 13549
    sget-object v3, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/BasicKeyChain$State;->EMPTY:Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/BasicKeyChain$State;

    if-ne v2, v3, :cond_46

    .line 13550
    new-instance v0, Ljava/lang/IllegalStateException;

    const-string v1, "Empty key chain group: cannot answer isWatching() query"

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

    throw v0
    :try_end_3c
    .catchall {:try_start_7 .. :try_end_3c} :catchall_3c

    .line 829
    :catchall_3c
    move-exception v0

    iget-object v1, p0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;

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

    throw v0

    .line 13546
    :cond_43
    :try_start_43
    sget-object v2, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/BasicKeyChain$State;->REGULAR:Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/BasicKeyChain$State;

    goto :goto_2c

    .line 13551
    :cond_46
    sget-object v3, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/BasicKeyChain$State;->WATCHING:Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/BasicKeyChain$State;
    :try_end_48
    .catchall {:try_start_43 .. :try_end_48} :catchall_3c

    if-ne v2, v3, :cond_50

    .line 829
    :cond_4a
    :goto_4a
    iget-object v1, p0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;

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

    .line 827
    return v0

    :cond_50
    move v0, v1

    .line 13551
    goto :goto_4a

    .line 13552
    :cond_52
    :try_start_52
    sget-object v3, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/BasicKeyChain$State;->EMPTY:Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/BasicKeyChain$State;

    if-ne v2, v3, :cond_5c

    .line 13553
    sget-object v2, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/BasicKeyChain$State;->WATCHING:Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/BasicKeyChain$State;

    if-eq v4, v2, :cond_4a

    move v0, v1

    goto :goto_4a

    .line 13555
    :cond_5c
    if-eq v2, v4, :cond_66

    .line 13556
    new-instance v0, Ljava/lang/IllegalStateException;

    const-string v1, "Mix of watching and non-watching keys in wallet"

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

    throw v0

    .line 13557
    :cond_66
    sget-object v3, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/BasicKeyChain$State;->WATCHING:Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/BasicKeyChain$State;
    :try_end_68
    .catchall {:try_start_52 .. :try_end_68} :catchall_3c

    if-eq v2, v3, :cond_4a

    move v0, v1

    goto :goto_4a
.end method

.method private maybeUpgradeToHD()V
    .registers 13

    .prologue
    const-wide/16 v10, 0x0

    const/16 v8, 0x10

    const/4 v1, 0x1

    const/4 v2, 0x0

    .line 572
    .line 10577
    iget-object v0, p0, Lcom/cmcm/safewallet/data/coinprovider/bch/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 10578
    iget-object v0, p0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/Wallet;->RF:Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/k;

    .line 10742
    iget-object v3, v0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/k;->Ra:Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/BasicKeyChain;

    .line 11231
    iget-object v3, v3, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/BasicKeyChain;->pubkeyToKeys:Ljava/util/LinkedHashMap;

    invoke-virtual {v3}, Ljava/util/LinkedHashMap;->size()I

    move-result v3

    .line 10742
    if-lez v3, :cond_6a

    iget-object v0, v0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/k;->chains:Ljava/util/LinkedList;

    invoke-virtual {v0}, Ljava/util/LinkedList;->isEmpty()Z

    move-result v0

    if-eqz v0, :cond_6a

    move v0, v1

    .line 10578
    :goto_24
    if-eqz v0, :cond_cc

    .line 10579
    sget-object v0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;

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

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

    .line 11549
    :try_start_2d
    iget-object v0, p0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V
    :try_end_32
    .catch Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/DeterministicUpgradeRequiresPassword; {:try_start_2d .. :try_end_32} :catch_61

    .line 11551
    :try_start_32
    iget-object v4, p0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/Wallet;->RF:Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/k;

    iget-wide v6, p0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/Wallet;->vKeyRotationTimestamp:J

    .line 11688
    iget-object v0, v4, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/k;->Ra:Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/BasicKeyChain;

    .line 12231
    iget-object v0, v0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/BasicKeyChain;->pubkeyToKeys:Ljava/util/LinkedHashMap;

    invoke-virtual {v0}, Ljava/util/LinkedHashMap;->size()I

    move-result v0

    .line 11688
    if-lez v0, :cond_6c

    move v0, v1

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

    .line 11689
    cmp-long v0, v10, v10

    if-ltz v0, :cond_6e

    move v0, v1

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

    .line 11692
    iget-object v0, v4, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/k;->Ra:Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/BasicKeyChain;

    invoke-virtual {v0}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/BasicKeyChain;->gV()Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ECKey;

    move-result-object v5

    .line 11693
    if-nez v5, :cond_70

    .line 11694
    new-instance v0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/AllRandomKeysRotating;

    invoke-direct {v0}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/AllRandomKeysRotating;-><init>()V

    throw v0
    :try_end_5a
    .catchall {:try_start_32 .. :try_end_5a} :catchall_5a

    .line 11553
    :catchall_5a
    move-exception v0

    :try_start_5b
    iget-object v1, p0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;

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

    throw v0
    :try_end_61
    .catch Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/DeterministicUpgradeRequiresPassword; {:try_start_5b .. :try_end_61} :catch_61

    .line 10582
    :catch_61
    move-exception v0

    .line 10583
    sget-object v1, Lcom/cmcm/safewallet/data/coinprovider/bch/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 10585
    throw v0

    :cond_6a
    move v0, v2

    .line 10742
    goto :goto_24

    :cond_6c
    move v0, v2

    .line 11688
    goto :goto_41

    :cond_6e
    move v0, v2

    .line 11689
    goto :goto_49

    .line 11696
    :cond_70
    :try_start_70
    invoke-virtual {v5}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ECKey;->isEncrypted()Z

    move-result v0

    if-eqz v0, :cond_7c

    .line 11710
    new-instance v0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/DeterministicUpgradeRequiresPassword;

    invoke-direct {v0}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/DeterministicUpgradeRequiresPassword;-><init>()V

    throw v0

    .line 11717
    :cond_7c
    iget-object v0, v4, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/k;->chains:Ljava/util/LinkedList;

    invoke-virtual {v0}, Ljava/util/LinkedList;->isEmpty()Z

    move-result v0

    if-eqz v0, :cond_cd

    .line 11718
    sget-object v0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/k;->log:Lorg/slf4j/Logger;

    const-string v3, "Auto-upgrading pre-HD wallet to HD!"

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

    .line 11722
    :goto_8b
    sget-object v0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/k;->log:Lorg/slf4j/Logger;

    const-string v3, "Instantiating new HD chain using oldest non-rotating private key (address: {})"

    iget-object v6, v4, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/k;->Pk:Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/NetworkParameters;

    invoke-virtual {v5, v6}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ECKey;->b(Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/NetworkParameters;)Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Address;

    move-result-object v6

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

    .line 11723
    invoke-virtual {v5}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ECKey;->getSecretBytes()[B

    move-result-object v0

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

    move-result-object v0

    check-cast v0, [B

    .line 11725
    array-length v3, v0

    if-lt v3, v8, :cond_d5

    move v3, v1

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

    .line 11729
    const/4 v3, 0x0

    const/16 v6, 0x10

    invoke-static {v0, v3, v6}, Ljava/util/Arrays;->copyOfRange([BII)[B

    move-result-object v3

    .line 11730
    array-length v0, v3

    if-ne v0, v8, :cond_d7

    move v0, v1

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

    .line 11731
    const-string v0, ""

    .line 11732
    new-instance v1, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/g;

    invoke-virtual {v5}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ECKey;->getCreationTimeSeconds()J

    move-result-wide v6

    invoke-direct {v1, v3, v0, v6, v7}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/g;-><init>([BLjava/lang/String;J)V

    .line 11736
    iget-object v0, v4, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/k;->chains:Ljava/util/LinkedList;

    invoke-virtual {v0, v1}, Ljava/util/LinkedList;->add(Ljava/lang/Object;)Z
    :try_end_c7
    .catchall {:try_start_70 .. :try_end_c7} :catchall_5a

    .line 11553
    :try_start_c7
    iget-object v0, p0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
    :try_end_cc
    .catch Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/DeterministicUpgradeRequiresPassword; {:try_start_c7 .. :try_end_cc} :catch_61

    .line 11554
    :cond_cc
    return-void

    .line 11720
    :cond_cd
    :try_start_cd
    sget-object v0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/k;->log:Lorg/slf4j/Logger;

    const-string v3, "Wallet with existing HD chain is being re-upgraded due to change in key rotation time."

    invoke-interface {v0, v3}, Lorg/slf4j/Logger;->info(Ljava/lang/String;)V
    :try_end_d4
    .catchall {:try_start_cd .. :try_end_d4} :catchall_5a

    goto :goto_8b

    :cond_d5
    move v3, v2

    .line 11725
    goto :goto_a6

    :cond_d7
    move v0, v2

    .line 11730
    goto :goto_b4
.end method


# virtual methods
.method public final a(Ljava/util/Map;Ljava/util/List;Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Address;Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Coin;)Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Transaction;
    .registers 11
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "(",
            "Ljava/util/Map",
            "<",
            "Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Address;",
            "Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Coin;",
            ">;",
            "Ljava/util/List",
            "<",
            "Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ak;",
            ">;",
            "Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Address;",
            "Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Coin;",
            ")",
            "Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Transaction;"
        }
    .end annotation

    .prologue
    .line 3815
    invoke-interface {p1}, Ljava/util/Map;->isEmpty()Z

    move-result v0

    if-nez v0, :cond_e

    if-eqz p2, :cond_e

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

    move-result v0

    if-eqz v0, :cond_16

    .line 3816
    :cond_e
    new-instance v0, Ljava/lang/IllegalArgumentException;

    const-string v1, "argumnet invalid"

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

    throw v0

    .line 3819
    :cond_16
    invoke-interface {p1}, 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

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

    move-result-object v0

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

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

    move-result-object v1

    check-cast v1, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Address;

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

    move-result-object v0

    check-cast v0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Coin;

    .line 19155
    new-instance v3, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/aq;

    invoke-direct {v3}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/aq;-><init>()V

    .line 19156
    invoke-virtual {v1}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Address;->getParameters()Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/NetworkParameters;

    move-result-object v4

    .line 19157
    const-string v5, "Address is for an unknown network"

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

    .line 19158
    new-instance v5, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Transaction;

    invoke-direct {v5, v4}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Transaction;-><init>(Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/NetworkParameters;)V

    iput-object v5, v3, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/aq;->RD:Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Transaction;

    .line 19159
    iget-object v4, v3, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/aq;->RD:Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Transaction;

    invoke-virtual {v4, v0, v1}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Transaction;->a(Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Coin;Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Address;)Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ak;

    .line 3822
    iput-object p4, v3, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/aq;->PD:Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Coin;

    .line 3823
    iput-object p3, v3, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/aq;->RE:Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Address;

    .line 3824
    :goto_4e
    invoke-interface {v2}, Ljava/util/Iterator;->hasNext()Z

    move-result v0

    if-eqz v0, :cond_6d

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

    move-result-object v0

    move-object v1, v0

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

    .line 3826
    iget-object v4, v3, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/aq;->RD:Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Transaction;

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

    move-result-object v0

    check-cast v0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Coin;

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

    move-result-object v1

    check-cast v1, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Address;

    invoke-virtual {v4, v0, v1}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Transaction;->a(Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Coin;Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Address;)Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ak;

    goto :goto_4e

    .line 3830
    :cond_6d
    iget-object v0, p0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/Wallet;->myUnspents:Ljava/util/HashSet;

    invoke-virtual {v0, p2}, Ljava/util/HashSet;->addAll(Ljava/util/Collection;)Z

    .line 3832
    invoke-direct {p0, v3}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/Wallet;->a(Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/aq;)V

    .line 3833
    iget-object v0, v3, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/aq;->RD:Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Transaction;

    return-object v0
.end method

.method public final a(Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/WalletTransaction$Pool;)Ljava/util/Map;
    .registers 5
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "(",
            "Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/WalletTransaction$Pool;",
            ")",
            "Ljava/util/Map",
            "<",
            "Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Sha256Hash;",
            "Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Transaction;",
            ">;"
        }
    .end annotation

    .prologue
    .line 2952
    iget-object v0, p0, Lcom/cmcm/safewallet/data/coinprovider/bch/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, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/Wallet$2;->RI:[I

    invoke-virtual {p1}, Lcom/cmcm/safewallet/data/coinprovider/bch/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, Lcom/cmcm/safewallet/data/coinprovider/bch/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, Lcom/cmcm/safewallet/data/coinprovider/bch/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, Lcom/cmcm/safewallet/data/coinprovider/bch/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, Lcom/cmcm/safewallet/data/coinprovider/bch/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, Lcom/cmcm/safewallet/data/coinprovider/bch/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, Lcom/cmcm/safewallet/data/coinprovider/bch/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, Lcom/cmcm/safewallet/data/coinprovider/bch/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, Lcom/cmcm/safewallet/data/coinprovider/bch/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, Lcom/cmcm/safewallet/data/coinprovider/bch/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 final a(Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script;)Z
    .registers 4

    .prologue
    .line 1010
    iget-object v0, p0, Lcom/cmcm/safewallet/data/coinprovider/bch/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, Lcom/cmcm/safewallet/data/coinprovider/bch/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, Lcom/cmcm/safewallet/data/coinprovider/bch/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, Lcom/cmcm/safewallet/data/coinprovider/bch/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 final isPayToScriptHashMine([B)Z
    .registers 3

    .prologue
    .line 1057
    invoke-virtual {p0, p1}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/Wallet;->p([B)Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/ap;

    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 final isPubKeyHashMine([B)Z
    .registers 3

    .prologue
    .line 1004
    invoke-virtual {p0, p1}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/Wallet;->n([B)Lcom/cmcm/safewallet/data/coinprovider/bch/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 final isPubKeyMine([B)Z
    .registers 3

    .prologue
    .line 1036
    invoke-virtual {p0, p1}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/Wallet;->o([B)Lcom/cmcm/safewallet/data/coinprovider/bch/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 final n([B)Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ECKey;
    .registers 4

    .prologue
    .line 983
    iget-object v0, p0, Lcom/cmcm/safewallet/data/coinprovider/bch/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, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/Wallet;->RF:Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/k;

    invoke-virtual {v0, p1}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/k;->n([B)Lcom/cmcm/safewallet/data/coinprovider/bch/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, Lcom/cmcm/safewallet/data/coinprovider/bch/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, Lcom/cmcm/safewallet/data/coinprovider/bch/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 final o([B)Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ECKey;
    .registers 4

    .prologue
    .line 1025
    iget-object v0, p0, Lcom/cmcm/safewallet/data/coinprovider/bch/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, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/Wallet;->RF:Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/k;

    invoke-virtual {v0, p1}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/k;->o([B)Lcom/cmcm/safewallet/data/coinprovider/bch/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, Lcom/cmcm/safewallet/data/coinprovider/bch/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, Lcom/cmcm/safewallet/data/coinprovider/bch/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 final p([B)Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/ap;
    .registers 4

    .prologue
    .line 1046
    iget-object v0, p0, Lcom/cmcm/safewallet/data/coinprovider/bch/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, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/Wallet;->RF:Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/k;

    invoke-virtual {v0, p1}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/k;->p([B)Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/ap;
    :try_end_a
    .catchall {:try_start_5 .. :try_end_a} :catchall_11

    move-result-object v0

    .line 1050
    iget-object v1, p0, Lcom/cmcm/safewallet/data/coinprovider/bch/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, Lcom/cmcm/safewallet/data/coinprovider/bch/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 toString()Ljava/lang/String;
    .registers 2

    .prologue
    .line 3169
    invoke-direct {p0}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/wallet/Wallet;->iA()Ljava/lang/String;

    move-result-object v0

    return-object v0
.end method