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